ZGlmZiAtLWdpdCBhL0xpYi9mb250VG9vbHMvX19pbml0X18ucHkgYi9MaWIvZm9udFRvb2xzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZm9udFRvb2xzL19faW5pdF9fLnB5CmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL2FmbUxpYi5weSBiL0xpYi9mb250VG9vbHMvYWZtTGliLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MjVlODMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZm9udFRvb2xzL2FmbUxpYi5weQpAQCAtMCwwICsxLDI2NSBAQAorIiIiTW9kdWxlIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIEFGTSBmaWxlcy4iIiIKKworIyBYWFggcmVhZHMgQUZNJ3MgZ2VuZXJhdGVkIGJ5IEZvZywgbm90IHRlc3RlZCB3aXRoIG11Y2ggZWxzZS4KKyMgSXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBmdWxsIHNwZWMgKEFkb2JlIFRlY2hub3RlIDUwMDQsIEFkb2JlIEZvbnQgTWV0cmljcworIyBGaWxlIEZvcm1hdCBTcGVjaWZpY2F0aW9uKS4gU3RpbGwsIGl0IHNob3VsZCByZWFkIG1vc3QgImNvbW1vbiIgQUZNIGZpbGVzLgorCitpbXBvcnQgcmUKK2ltcG9ydCBzdHJpbmcKK2ltcG9ydCB0eXBlcworCitfX3ZlcnNpb25fXyA9ICIkSWQ6IGFmbUxpYi5weSx2IDEuMSAxOTk5LTEyLTE2IDIxOjM0OjUxIEp1c3QgRXhwICQiCisKKworIyBldmVyeSBzaW5nbGUgbGluZSBzdGFydHMgd2l0aCBhICJ3b3JkIgoraWRlbnRpZmllclJFID0gcmUuY29tcGlsZSgiXihbQS1aYS16XSspLioiKQorCisjIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBwYXJzZSBjaGFyIGxpbmVzCitjaGFyUkUgPSByZS5jb21waWxlKAorCQkiKC0/XGQrKSIJCQkjIGNoYXJudW0KKwkJIlxzKjtccypXWFxzKyIJCSMgOyBXWCAKKwkJIihcZCspIgkJCSMgd2lkdGgKKwkJIlxzKjtccypOXHMrIgkJIyA7IE4gCisJCSIoXC4/W0EtWmEtejAtOV9dKykiCSMgY2hhcm5hbWUKKwkJIlxzKjtccypCXHMrIgkJIyA7IEIgCisJCSIoLT9cZCspIgkJCSMgbGVmdAorCQkiXHMrIgkJCQkjIAorCQkiKC0/XGQrKSIJCQkjIGJvdHRvbQorCQkiXHMrIgkJCQkjIAorCQkiKC0/XGQrKSIJCQkjIHJpZ2h0CisJCSJccysiCQkJCSMgCisJCSIoLT9cZCspIgkJCSMgdG9wCisJCSJccyo7XHMqIgkJCSMgOyAKKwkJKQorCisjIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBwYXJzZSBrZXJuaW5nIGxpbmVzCitrZXJuUkUgPSByZS5jb21waWxlKAorCQkiKFsuQS1aYS16MC05X10rKSIJIyBsZWZ0Y2hhcgorCQkiXHMrIgkJCQkjIAorCQkiKFsuQS1aYS16MC05X10rKSIJIyByaWdodGNoYXIKKwkJIlxzKyIJCQkJIyAKKwkJIigtP1xkKykiCQkJIyB2YWx1ZQorCQkiXHMqIgkJCQkjIAorCQkpCisKK2Vycm9yID0gIkFGTS5lcnJvciIKKworY2xhc3MgQUZNOgorCQorCV9rZXl3b3JkcyA9IFsnU3RhcnRGb250TWV0cmljcycsCisJCQknRW5kRm9udE1ldHJpY3MnLAorCQkJJ1N0YXJ0Q2hhck1ldHJpY3MnLAorCQkJJ0VuZENoYXJNZXRyaWNzJywKKwkJCSdTdGFydEtlcm5EYXRhJywKKwkJCSdTdGFydEtlcm5QYWlycycsCisJCQknRW5kS2VyblBhaXJzJywKKwkJCSdFbmRLZXJuRGF0YScsIF0KKwkKKwlkZWYgX19pbml0X18oc2VsZiwgcGF0aCA9IE5vbmUpOgorCQlzZWxmLl9hdHRycyA9IHt9CisJCXNlbGYuX2NoYXJzID0ge30KKwkJc2VsZi5fa2VybmluZyA9IHt9CisJCXNlbGYuX2luZGV4ID0ge30KKwkJc2VsZi5fY29tbWVudHMgPSBbXQorCQlpZiBwYXRoIGlzIG5vdCBOb25lOgorCQkJc2VsZi5yZWFkKHBhdGgpCisJCisJZGVmIHJlYWQoc2VsZiwgcGF0aCk6CisJCWxpbmVzID0gcmVhZGxpbmVzKHBhdGgpCisJCWZvciBsaW5lIGluIGxpbmVzOgorCQkJaWYgbm90IHN0cmluZy5zdHJpcChsaW5lKToKKwkJCQljb250aW51ZQorCQkJbSA9IGlkZW50aWZpZXJSRS5tYXRjaChsaW5lKQorCQkJaWYgbSBpcyBOb25lOgorCQkJCXJhaXNlIGVycm9yLCAic3ludGF4IGVycm9yIGluIEFGTSBmaWxlOiAiICsgYGxpbmVgCisJCQkKKwkJCXBvcyA9IG0ucmVnc1sxXVsxXQorCQkJd29yZCA9IGxpbmVbOnBvc10KKwkJCXJlc3QgPSBzdHJpbmcuc3RyaXAobGluZVtwb3M6XSkKKwkJCWlmIHdvcmQgaW4gc2VsZi5fa2V5d29yZHM6CisJCQkJY29udGludWUKKwkJCWlmIHdvcmQgPT0gJ0MnOgorCQkJCXNlbGYucGFyc2VjaGFyKHJlc3QpCisJCQllbGlmIHdvcmQgPT0gIktQWCI6CisJCQkJc2VsZi5wYXJzZWtlcm5wYWlyKHJlc3QpCisJCQllbHNlOgorCQkJCXNlbGYucGFyc2VhdHRyKHdvcmQsIHJlc3QpCisJCisJZGVmIHBhcnNlY2hhcihzZWxmLCByZXN0KToKKwkJbSA9IGNoYXJSRS5tYXRjaChyZXN0KQorCQlpZiBtIGlzIE5vbmU6CisJCQlyYWlzZSBlcnJvciwgInN5bnRheCBlcnJvciBpbiBBRk0gZmlsZTogIiArIGByZXN0YAorCQl0aGluZ3MgPSBbXQorCQlmb3IgZnIsIHRvIGluIG0ucmVnc1sxOl06CisJCQl0aGluZ3MuYXBwZW5kKHJlc3RbZnI6dG9dKQorCQljaGFybmFtZSA9IHRoaW5nc1syXQorCQlkZWwgdGhpbmdzWzJdCisJCWNoYXJudW0sIHdpZHRoLCBsLCBiLCByLCB0ID0gbWFwKHN0cmluZy5hdG9pLCB0aGluZ3MpCisJCXNlbGYuX2NoYXJzW2NoYXJuYW1lXSA9IGNoYXJudW0sIHdpZHRoLCAobCwgYiwgciwgdCkKKwkKKwlkZWYgcGFyc2VrZXJucGFpcihzZWxmLCByZXN0KToKKwkJbSA9IGtlcm5SRS5tYXRjaChyZXN0KQorCQlpZiBtIGlzIE5vbmU6CisJCQlyYWlzZSBlcnJvciwgInN5bnRheCBlcnJvciBpbiBBRk0gZmlsZTogIiArIGByZXN0YAorCQl0aGluZ3MgPSBbXQorCQlmb3IgZnIsIHRvIGluIG0ucmVnc1sxOl06CisJCQl0aGluZ3MuYXBwZW5kKHJlc3RbZnI6dG9dKQorCQlsZWZ0Y2hhciwgcmlnaHRjaGFyLCB2YWx1ZSA9IHRoaW5ncworCQl2YWx1ZSA9IHN0cmluZy5hdG9pKHZhbHVlKQorCQlzZWxmLl9rZXJuaW5nWyhsZWZ0Y2hhciwgcmlnaHRjaGFyKV0gPSB2YWx1ZQorCQorCWRlZiBwYXJzZWF0dHIoc2VsZiwgd29yZCwgcmVzdCk6CisJCWlmIHdvcmQgPT0gIkZvbnRCQm94IjoKKwkJCWwsIGIsIHIsIHQgPSBtYXAoc3RyaW5nLmF0b2ksIHN0cmluZy5zcGxpdChyZXN0KSkKKwkJCXNlbGYuX2F0dHJzW3dvcmRdID0gbCwgYiwgciwgdAorCQllbGlmIHdvcmQgPT0gIkNvbW1lbnQiOgorCQkJc2VsZi5fY29tbWVudHMuYXBwZW5kKHJlc3QpCisJCWVsc2U6CisJCQl0cnk6CisJCQkJdmFsdWUgPSBzdHJpbmcuYXRvaShyZXN0KQorCQkJZXhjZXB0IChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yKToKKwkJCQlzZWxmLl9hdHRyc1t3b3JkXSA9IHJlc3QKKwkJCWVsc2U6CisJCQkJc2VsZi5fYXR0cnNbd29yZF0gPSB2YWx1ZQorCQorCWRlZiB3cml0ZShzZWxmLCBwYXRoLCBzZXAgPSAnXHInKToKKwkJaW1wb3J0IHRpbWUKKwkJbGluZXMgPSBbCSJTdGFydEZvbnRNZXRyaWNzIDIuMCIsCisJCQkJIkNvbW1lbnQgR2VuZXJhdGVkIGJ5IGFmbUxpYiwgdmVyc2lvbiAlczsgYXQgJXMiICUgCisJCQkJCQkoc3RyaW5nLnNwbGl0KF9fdmVyc2lvbl9fKVsyXSwKKwkJCQkJCXRpbWUuc3RyZnRpbWUoIiVtLyVkLyVZICVIOiVNOiVTIiwgCisJCQkJCQl0aW1lLmxvY2FsdGltZSh0aW1lLnRpbWUoKSkpKV0KKwkJCisJCSMgd3JpdGUgYXR0cmlidXRlcworCQlpdGVtcyA9IHNlbGYuX2F0dHJzLml0ZW1zKCkKKwkJaXRlbXMuc29ydCgpCQkjIFhYWCBwcm9wZXIgb3JkZXJpbmc/Pz8KKwkJZm9yIGF0dHIsIHZhbHVlIGluIGl0ZW1zOgorCQkJaWYgYXR0ciA9PSAiRm9udEJCb3giOgorCQkJCXZhbHVlID0gc3RyaW5nLmpvaW4obWFwKHN0ciwgdmFsdWUpLCAiICIpCisJCQlsaW5lcy5hcHBlbmQoYXR0ciArICIgIiArIHN0cih2YWx1ZSkpCisJCQorCQkjIHdyaXRlIGNoYXIgbWV0cmljcworCQlsaW5lcy5hcHBlbmQoIlN0YXJ0Q2hhck1ldHJpY3MgIiArIGBsZW4oc2VsZi5fY2hhcnMpYCkKKwkJaXRlbXMgPSBtYXAobGFtYmRhIChjaGFybmFtZSwgKGNoYXJudW0sIHdpZHRoLCBib3gpKToKKwkJCShjaGFybnVtLCAoY2hhcm5hbWUsIHdpZHRoLCBib3gpKSwKKwkJCXNlbGYuX2NoYXJzLml0ZW1zKCkpCisJCQorCQlkZWYgbXlDbXAoYSwgYik6CisJCQkiIiJDdXN0b20gY29tcGFyZSBmdW5jdGlvbiB0byBtYWtlIHN1cmUgdW5lbmNvZGVkIGNoYXJzICgtMSkgCisJCQllbmQgdXAgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCBhZnRlciBzb3J0aW5nLiIiIgorCQkJaWYgYVswXSA9PSAtMToKKwkJCQlhID0gKDB4ZmZmZiwpICsgYVsxOl0gICMgMHhmZmZmIGlzIGFuIGFyYml0cmFyeSBsYXJnZSBudW1iZXIKKwkJCWlmIGJbMF0gPT0gLTE6CisJCQkJYiA9ICgweGZmZmYsKSArIGJbMTpdCisJCQlyZXR1cm4gY21wKGEsIGIpCisJCWl0ZW1zLnNvcnQobXlDbXApCisJCQorCQlmb3IgY2hhcm51bSwgKGNoYXJuYW1lLCB3aWR0aCwgKGwsIGIsIHIsIHQpKSBpbiBpdGVtczoKKwkJCWxpbmVzLmFwcGVuZCgiQyAlZCA7IFdYICVkIDsgTiAlcyA7IEIgJWQgJWQgJWQgJWQgOyIgJQorCQkJCQkoY2hhcm51bSwgd2lkdGgsIGNoYXJuYW1lLCBsLCBiLCByLCB0KSkKKwkJbGluZXMuYXBwZW5kKCJFbmRDaGFyTWV0cmljcyIpCisJCQorCQkjIHdyaXRlIGtlcm5pbmcgaW5mbworCQlsaW5lcy5hcHBlbmQoIlN0YXJ0S2VybkRhdGEiKQorCQlsaW5lcy5hcHBlbmQoIlN0YXJ0S2VyblBhaXJzICIgKyBgbGVuKHNlbGYuX2tlcm5pbmcpYCkKKwkJaXRlbXMgPSBzZWxmLl9rZXJuaW5nLml0ZW1zKCkKKwkJaXRlbXMuc29ydCgpCQkjIFhYWCBpcyBvcmRlciBpbXBvcnRhbnQ/CisJCWZvciAobGVmdGNoYXIsIHJpZ2h0Y2hhciksIHZhbHVlIGluIGl0ZW1zOgorCQkJbGluZXMuYXBwZW5kKCJLUFggJXMgJXMgJWQiICUgKGxlZnRjaGFyLCByaWdodGNoYXIsIHZhbHVlKSkKKwkJCisJCWxpbmVzLmFwcGVuZCgiRW5kS2VyblBhaXJzIikKKwkJbGluZXMuYXBwZW5kKCJFbmRLZXJuRGF0YSIpCisJCWxpbmVzLmFwcGVuZCgiRW5kRm9udE1ldHJpY3MiKQorCQkKKwkJd3JpdGVsaW5lcyhwYXRoLCBsaW5lcywgc2VwKQorCQorCWRlZiBoYXNfa2VybnBhaXIoc2VsZiwgcGFpcik6CisJCXJldHVybiBzZWxmLl9rZXJuaW5nLmhhc19rZXkocGFpcikKKwkKKwlkZWYga2VybnBhaXJzKHNlbGYpOgorCQlyZXR1cm4gc2VsZi5fa2VybmluZy5rZXlzKCkKKwkKKwlkZWYgaGFzX2NoYXIoc2VsZiwgY2hhcik6CisJCXJldHVybiBzZWxmLl9jaGFycy5oYXNfa2V5KGNoYXIpCisJCisJZGVmIGNoYXJzKHNlbGYpOgorCQlyZXR1cm4gc2VsZi5fY2hhcnMua2V5cygpCisJCisJZGVmIGNvbW1lbnRzKHNlbGYpOgorCQlyZXR1cm4gc2VsZi5fY29tbWVudHMKKwkKKwlkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6CisJCWlmIHNlbGYuX2F0dHJzLmhhc19rZXkoYXR0cik6CisJCQlyZXR1cm4gc2VsZi5fYXR0cnNbYXR0cl0KKwkJZWxzZToKKwkJCXJhaXNlIEF0dHJpYnV0ZUVycm9yLCBhdHRyCisJCisJZGVmIF9fc2V0YXR0cl9fKHNlbGYsIGF0dHIsIHZhbHVlKToKKwkJIyBhbGwgYXR0cnMgKm5vdCogc3RhcnRpbmcgd2l0aCAiXyIgYXJlIGNvbnNpZGVyIHRvIGJlIEFGTSBrZXl3b3JkcworCQlpZiBhdHRyWzoxXSA9PSAiXyI6CisJCQlzZWxmLl9fZGljdF9fW2F0dHJdID0gdmFsdWUKKwkJZWxzZToKKwkJCXNlbGYuX2F0dHJzW2F0dHJdID0gdmFsdWUKKwkKKwlkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKKwkJaWYgdHlwZShrZXkpID09IHR5cGVzLlR1cGxlVHlwZToKKwkJCSMga2V5IGlzIGEgdHVwbGUsIHJldHVybiB0aGUga2VybnBhaXIKKwkJCWlmIHNlbGYuX2tlcm5pbmcuaGFzX2tleShrZXkpOgorCQkJCXJldHVybiBzZWxmLl9rZXJuaW5nW2tleV0KKwkJCWVsc2U6CisJCQkJcmFpc2UgS2V5RXJyb3IsICJubyBrZXJuaW5nIHBhaXI6ICIgKyBzdHIoa2V5KQorCQllbHNlOgorCQkJIyByZXR1cm4gdGhlIG1ldHJpY3MgaW5zdGVhZAorCQkJaWYgc2VsZi5fY2hhcnMuaGFzX2tleShrZXkpOgorCQkJCXJldHVybiBzZWxmLl9jaGFyc1trZXldCisJCQllbHNlOgorCQkJCXJhaXNlIEtleUVycm9yLCAibWV0cmljcyBpbmRleCAiICsgc3RyKGtleSkgKyAiIG91dCBvZiByYW5nZSIKKwkKKwlkZWYgX19yZXByX18oc2VsZik6CisJCWlmIGhhc2F0dHIoc2VsZiwgIkZ1bGxOYW1lIik6CisJCQlyZXR1cm4gJzxBRk0gb2JqZWN0IGZvciAlcz4nICUgc2VsZi5GdWxsTmFtZQorCQllbHNlOgorCQkJcmV0dXJuICc8QUZNIG9iamVjdCBhdCAleD4nICUgaWQoc2VsZikKKworCitkZWYgcmVhZGxpbmVzKHBhdGgpOgorCWYgPSBvcGVuKHBhdGgsICdyYicpCisJZGF0YSA9IGYucmVhZCgpCisJZi5jbG9zZSgpCisJIyByZWFkIGFueSB0ZXh0IGZpbGUsIHJlZ2FyZGxlc3Mgd2hldGhlciBpdCdzIGZvcm1hdHRlZCBmb3IgTWFjLCBVbml4IG9yIERvcworCXNlcCA9ICIiCisJaWYgJ1xyJyBpbiBkYXRhOgorCQlzZXAgPSBzZXAgKyAnXHInCSMgbWFjIG9yIGRvcworCWlmICdcbicgaW4gZGF0YToKKwkJc2VwID0gc2VwICsgJ1xuJwkjIHVuaXggb3IgZG9zCisJcmV0dXJuIHN0cmluZy5zcGxpdChkYXRhLCBzZXApCisKK2RlZiB3cml0ZWxpbmVzKHBhdGgsIGxpbmVzLCBzZXAgPSAnXHInKToKKwlmID0gb3BlbihwYXRoLCAnd2InKQorCWZvciBsaW5lIGluIGxpbmVzOgorCQlmLndyaXRlKGxpbmUgKyBzZXApCisJZi5jbG9zZSgpCisJCisJCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisJaW1wb3J0IG1hY2ZzCisJZnNzLCBvayA9IG1hY2ZzLlN0YW5kYXJkR2V0RmlsZSgnVEVYVCcpCisJaWYgb2s6CisJCXBhdGggPSBmc3MuYXNfcGF0aG5hbWUoKQorCQlhZm0gPSBBRk0ocGF0aCkKKwkJY2hhciA9ICdBJworCQlpZiBhZm0uaGFzX2NoYXIoY2hhcik6CisJCQlwcmludCBhZm1bY2hhcl0JIyBwcmludCBjaGFybnVtLCB3aWR0aCBhbmQgYm91bmRpbmdib3gKKwkJcGFpciA9ICgnQScsICdWJykKKwkJaWYgYWZtLmhhc19rZXJucGFpcihwYWlyKToKKwkJCXByaW50IGFmbVtwYWlyXQkjIHByaW50IGtlcm5pbmcgdmFsdWUgZm9yIHBhaXIKKwkJcHJpbnQgYWZtLlZlcnNpb24JIyB2YXJpb3VzIG90aGVyIGFmbSBlbnRyaWVzIGhhdmUgYmVjb21lIGF0dHJpYnV0ZXMKKwkJcHJpbnQgYWZtLldlaWdodAorCQkjIGFmbS5jb21tZW50cygpIHJldHVybnMgYSBsaXN0IG9mIGFsbCBDb21tZW50IGxpbmVzIGZvdW5kIGluIHRoZSBBRk0KKwkJcHJpbnQgYWZtLmNvbW1lbnRzKCkKKwkJI3ByaW50IGFmbS5jaGFycygpCisJCSNwcmludCBhZm0ua2VybnBhaXJzKCkKKwkJcHJpbnQgYWZtCisJCWFmbS53cml0ZShwYXRoICsgIi54eHgiKQorCmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL2FnbC5weSBiL0xpYi9mb250VG9vbHMvYWdsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkZGMxZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZm9udFRvb2xzL2FnbC5weQpAQCAtMCwwICsxLDExODkgQEAKK19hZ2xUZXh0ID0gIiIiXAorIworIyBOYW1lOiAgICAgICAgICBBZG9iZSBHbHlwaCBMaXN0CisjIFRhYmxlIHZlcnNpb246IDEuMgorIyBEYXRlOiAgICAgICAgICAyMiBPY3QgMTk5OAorIworIyBEZXNjcmlwdGlvbjoKKyMKKyMgICBUaGUgQWRvYmUgR2x5cGggTGlzdCAoQUdMKSBsaXN0IHJlbGF0ZXMgVW5pY29kZSB2YWx1ZXMgKFVWcykgdG8gZ2x5cGgKKyMgICBuYW1lcywgYW5kIHNob3VsZCBiZSB1c2VkIG9ubHkgYXMgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudCAiVW5pY29kZSBhbmQKKyMgICBHbHlwaCBOYW1lcywiIGF0CisjICAgaHR0cDovL3d3dy5hZG9iZS5jb20vc3VwcG9ydHNlcnZpY2UvZGV2cmVsYXRpb25zL3R5cGVmb3J1bS91bmljb2RlZ24uaHRtbCAuCisjCisjICAgVGhlIGdseXBoIG5hbWUgdG8gVVYgcmVsYXRpb24gaXMgb25lIHRvIG1hbnkuIDEyIGdseXBoIG5hbWVzIGFyZSBtYXBwZWQgdG8KKyMgICB0d28gVVZzIGVhY2g7IGVhY2ggVVYgaGFzIGEgc2VwYXJhdGUgZW50cnkuIEFsbCBvdGhlciBnbHlwaCBuYW1lcyBhcmUKKyMgICBtYXBwZWQgdG8gb25lIFVWIGVhY2guCisjCisjICAgVGhlIFVuaWNvZGUgU3RhbmRhcmQgdmVyc2lvbiAyLjEgaXMgdXNlZCBmb3IgYWxsIFVWcyBvdXRzaWRlIG9mIHRoZSBQcml2YXRlCisjICAgVXNlIGFyZWEsIGV4Y2VwdCBmb3IgNCBlbnRyaWVzIChzZWUgUmV2aXNpb24gSGlzdG9yeSBmb3IgMS4yIGJlbG93KS4KKyMKKyMgICBUaGVyZSBhcmUgMTA1MSBlbnRyaWVzIGluIHRoaXMgbGlzdCwgMTcxIG9mIHdoaWNoIGFyZSBpbiB0aGUgQ29ycG9yYXRlIFVzZQorIyAgIHN1YmFyZWEgKENVUykuIFJlZmVyIHRvIHRoZSBkb2N1bWVudCAiVW5pY29kZSBDb3Jwb3JhdGUgVXNlIFN1YmFyZWEgYXMgdXNlZAorIyAgIGJ5IEFkb2JlIFN5c3RlbXMsIiBhdAorIyAgIGh0dHA6Ly93d3cuYWRvYmUuY29tL3N1cHBvcnRzZXJ2aWNlL2RldnJlbGF0aW9ucy90eXBlZm9ydW0vY29ycG9yYXRldXNlLnR4dAorIyAgIGZvciBjb21wYXRpYmlsaXR5IGRlY29tcG9zaXRpb25zIGZvciB0aGVzZSBjaGFyYWN0ZXJzLCBhbmQgdG8gdGhlIGRvY3VtZW50CisjICAgIlVuaWNvZGUgYW5kIEdseXBoIE5hbWVzIiBmb3IgbW9yZSBpbmZvcm1hdGlvbiB0aGUgQ1VTLgorIworIyBGb3JtYXQ6IFNlbWljb2xvbi1kZWxpbWl0ZWQgZmllbGRzOgorIworIyAgICgxKSBTdGFuZGFyZCBVViBvciBDVVMgVVYuICg0IHVwcGVyY2FzZSBoZXhhZGVjaW1hbCBkaWdpdHMpCisjCisjICAgKDIpIEdseXBoIG5hbWUuICh1cHBlci0gYW5kIGxvd2VyY2FzZSBsZXR0ZXJzLCBkaWdpdHMpCisjCisjICAgKDMpIENoYXJhY3RlciBuYW1lczogVW5pY29kZSBjaGFyYWN0ZXIgbmFtZXMgZm9yIHN0YW5kYXJkIFVWcywgYW5kCisjICAgICAgIGRlc2NyaXB0aXZlIG5hbWVzIGZvciBDVVMgVVZzLiAodXBwZXJjYXNlIGxldHRlcnMsIGh5cGhlbiwgc3BhY2UpCisjCisjICAgKDQpIFtvcHRpb25hbF0gQ29tbWVudC4gQSBjb21tZW50IG9mICJEdXBsaWNhdGUiIGluZGljYXRlcyBvbmUgb2YgdHdvCisjICAgICAgIFVWcyBvZiBhIGRvdWJsZS1tYXBwaW5nLiBJdCBpcyB0aGUgVVYgdGhhdCBtYXkgYmUgZ2l2ZW4gYSB1bmk8Q09ERT4KKyMgICAgICAgb3ZlcnJpZGUsIG9yIHRoZSBVViB0aGF0IGlzIGluIHRoZSBDVVMsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZG9jdW1lbnQKKyMgICAgICAgIlVuaWNvZGUgYW5kIEdseXBoIE5hbWVzLiIKKyMKKyMgICBUaGUgZW50cmllcyBhcmUgc29ydGVkIGJ5IGdseXBoIG5hbWUgaW4gaW5jcmVhc2luZyBBU0NJSSBvcmRlcjsgZW50cmllcworIyAgIHdpdGggdGhlIHNhbWUgZ2x5cGggbmFtZSBhcmUgc29ydGVkIGluIGRlY3JlYXNpbmcgcHJpb3JpdHkgb3JkZXIuCisjCisjICAgTGluZXMgc3RhcnRpbmcgd2l0aCAiIyIgYXJlIGNvbW1lbnRzOyBibGFuayBsaW5lcyBzaG91bGQgYmUgaWdub3JlZC4KKyMKKyMgUmV2aXNpb24gSGlzdG9yeToKKyMKKyMgICAxLjIgIFsyMiBPY3QgMTk5OF0KKyMKKyMgICAgIFNvbWUgQ2VudHJhbCBFdXJvcGVhbiBnbHlwaCBuYW1lcyB3ZXJlIHJlbWFwcGVkIGFuZCB0aGUgZ2x5cGggImRvdGxlc3NqIgorIyAgICAgd2FzIGFkZGVkLiBTb21lIGVudHJpZXMgaW4gdGhlIHRhYmxlIGJlbG93IGhhdmUgbm90IGNoYW5nZWQgYnV0IGFyZQorIyAgICAgaW5jbHVkZWQgdG8gcHJvdmlkZSBhIGNvbXBsZXRlIGNvbnRleHQgZm9yIG90aGVyIGdseXBocyB0aGF0IGhhdmUgYmVlbgorIyAgICAgcmVtYXBwZWQgb3IgZG91YmxlLW1hcHBlZC4gIi0iIG1lYW5zIHRoYXQgdGhlIGVudHJ5IGZvciB0aGF0IFVWIGRvZXMgbm90CisjICAgICBleGlzdCBpbiB0aGUgQUdMLgorIworIyAgICAgICAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0KKyMgICAgICAgVVYgICAgICAgQ2hhcmFjdGVyIG5hbWUgICAgICAgICBBR0wgMS4xICAgICAgICAgIEFHTCAxLjIKKyMgICAgICAgICAgICAgICAgKHNob3J0ZW5lZCkgICAgICAgICAgICBnbHlwaCBuYW1lICAgICAgIGdseXBoIG5hbWUKKyMgICAgICAgLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tCisjICAgICAgIDAxNUUvRiAgIFMvcyB3aXRoIGNlZGlsbGEgICAgICAgUy9zY29tbWFhY2NlbnQgICBTL3NjZWRpbGxhCisjICAgICAgIDAxNjIvMyAgIFQvdCB3aXRoIGNlZGlsbGEgICAgICAgVC90Y29tbWFhY2NlbnQgICBUL3Rjb21tYWFjY2VudAorIyAgICAgICAwMjE4LzkgICBTL3Mgd2l0aCBjb21tYSBiZWxvdyAgIC0gICAgICAgICAgICAgICAgUy9zY29tbWFhY2NlbnQKKyMgICAgICAgMDIxQS9CICAgVC90IHdpdGggY29tbWEgYmVsb3cgICAtICAgICAgICAgICAgICAgIFQvdGNvbW1hYWNjZW50CisjICAgICAgIDFFOUUvRiAgIFMvcyB3aXRoIGNvbW1hIGJlbG93ICAgUy9zY2VkaWxsYSAgICAgICAtCisjICAgICAgIEY2QzEvMiAgIFMvcyB3aXRoIGNlZGlsbGEgICAgICAgUy9zY2VkaWxsYSAgICAgICBTL3NjZWRpbGxhCisjICAgICAgIEY2QkUgICAgIGRvdGxlc3MgaiAgICAgICAgICAgICAgLSAgICAgICAgICAgICAgICBkb3RsZXNzagorIyAgICAgICAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0KKyMKKyMgICAgIFRoZSBjaGFyYWN0ZXJzIGF0IFUrMUU5RS9GIGluIEFHTCAxLjEsIExBVElOIENBUElUQUwvU01BTEwgTEVUVEVSIFMgV0lUSAorIyAgICAgQ09NTUEgQkVMT1csIHdoaWNoIGFyZSBwcm9wb3NlZCBuZXcgY2hhcmFjdGVycyAoc2VlIChiKSBpbiB0aGUgbm90ZXMgZm9yCisjICAgICBBR0wgMS4xIGJlbG93KSwgaGF2ZSBzaW5jZSBiZWVuIHJlYXNzaWduZWQgYnkgdGhlIFVuaWNvZGUgU3RhbmRhcmQgdG8gbmV3CisjICAgICBwcm9wb3NlZCB2YWx1ZXMgb2YgVSswMjE4LzkuIFRoZXNlIGNoYXJhY3RlcnMsIGFzIHdlbGwgYXMgVSswMjFBL0IsIExBVElOCisjICAgICBDQVBJVEFML1NNQUxMIExFVFRFUiBUIFdJVEggQ09NTUEgQkVMT1csIGFyZSBub3QgaW4gdGhlIFVuaWNvZGUgU3RhbmRhcmQKKyMgICAgIDIuMS4KKyMKKyMgICAgIEVudHJpZXMgd2l0aCB0aGUgc2FtZSBnbHlwaCBuYW1lIGFyZSBub3cgc29ydGVkIGluIGRlY3JlYXNpbmcgcHJpb3JpdHkKKyMgICAgIG9yZGVyIGluc3RlYWQgb2YgaW4gaW5jcmVhc2luZyBVViBvcmRlci4KKyMKKyMgICAxLjEgIFsyNCBOb3YgMTk5N10KKyMKKyMgICAgIGEuIFRoZSAiRXVybyIgZ2x5cGgncyBVViBhc3NpZ25tZW50IGlzIGNoYW5nZWQgZnJvbSBVKzIwQTAgKEVVUk8tQ1VSUkVOQ1kKKyMgICAgICAgIFNJR04pIHRvIFUrMjBBQyAoRVVSTyBTSUdOKS4gV2hpbGUgVSsyMEFDIGlzIG5vdCBkZWZpbmVkIGluIHRoZQorIyAgICAgICAgVW5pY29kZSBTdGFuZGFyZCAyLjAsIGl0IGhhcyBiZWVuIGFjY2VwdGVkIGJ5IHRoZSBVbmljb2RlIFRlY2huaWNhbAorIyAgICAgICAgQ29tbWl0dGVlIGZvciB0aGUgbmV4dCB2ZXJzaW9uIG9mIHRoZSBTdGFuZGFyZDsgaXQgaGFzIG5vdCB5ZXQgcGFzc2VkCisjICAgICAgICB0aGUgSVNPIGFwcHJvdmFsIHByb2Nlc3MgYXMgb2YgNyBOb3ZlbWJlciAnOTcuCisjCisjICAgICBiLiBHbHlwaHMgIlNjZWRpbGxhIiBhbmQgInNjZWRpbGxhIiwgd2hpY2ggd2VyZSBhc3NpZ25lZCBpbiB0aGUgQ29ycG9yYXRlCisjICAgICAgICBVc2UgU3ViYXJlYSBpbiBBR0wgMS4wLCBhcmUgbm93IGFkZGl0aW9uYWxseSBtYXBwZWQgdG8gVSsxRTlFIGFuZAorIyAgICAgICAgVSsxRTlGIHJlc3BlY3RpdmVseS4gVGhlc2UgdHdvIFVWcyBzaGFyZSB0aGUgc2FtZSBVbmljb2RlIGFwcHJvdmFsCisjICAgICAgICBzdGF0dXMgYXMgdGhlIEV1cm8gZ2x5cGggKHNlZSBhLiBhYm92ZSkuCisjCisjICAgICBjLiBUaGUgImZyYWN0aW9uIiBnbHlwaCBpcyBub3cgYWRkaXRpb25hbGx5IG1hcHBlZCB0byBVKzIyMTUsIHRvIG1hdGNoCisjICAgICAgICBXaW5kb3dzIEdseXBoIExpc3QgNC4KKyMKKyMgICAgIGQuIFRoZSBkZXNjcmlwdGl2ZSBuYW1lIGZvciBnbHlwaCAib25lZml0dGVkIiwgaW4gdGhlIENvcnBvcmF0ZSBVc2UKKyMgICAgICAgIHN1YmFyZWEsIGlzIGNoYW5nZWQgZnJvbSAiVEFCVUxBUiBESUdJVCBPTkUiIHRvICJQUk9QT1JUSU9OQUwgRElHSVQKKyMgICAgICAgIE9ORSIuCisjCisjICAgMS4wICBbMTcgSnVsIDE5OTddICBPcmlnaW5hbCB2ZXJzaW9uCisjCiswMDQxO0E7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQQorMDBDNjtBRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBRQorMDFGQztBRWFjdXRlO0xBVElOIENBUElUQUwgTEVUVEVSIEFFIFdJVEggQUNVVEUKK0Y3RTY7QUVzbWFsbDtMQVRJTiBTTUFMTCBDQVBJVEFMIExFVFRFUiBBRQorMDBDMTtBYWN1dGU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCitGN0UxO0FhY3V0ZXNtYWxsO0xBVElOIFNNQUxMIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQorMDEwMjtBYnJldmU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFCiswMEMyO0FjaXJjdW1mbGV4O0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCitGN0UyO0FjaXJjdW1mbGV4c21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKK0Y2Qzk7QWN1dGU7Q0FQSVRBTCBBQ1VURSBBQ0NFTlQKK0Y3QjQ7QWN1dGVzbWFsbDtTTUFMTCBDQVBJVEFMIEFDVVRFIEFDQ0VOVAorMDBDNDtBZGllcmVzaXM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUworRjdFNDtBZGllcmVzaXNzbWFsbDtMQVRJTiBTTUFMTCBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiswMEMwO0FncmF2ZTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKK0Y3RTA7QWdyYXZlc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCiswMzkxO0FscGhhO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBCiswMzg2O0FscGhhdG9ub3M7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBUT05PUworMDEwMDtBbWFjcm9uO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBNQUNST04KKzAxMDQ7QW9nb25laztMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggT0dPTkVLCiswMEM1O0FyaW5nO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiswMUZBO0FyaW5nYWN1dGU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUgQU5EIEFDVVRFCitGN0U1O0FyaW5nc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKK0Y3NjE7QXNtYWxsO0xBVElOIFNNQUxMIENBUElUQUwgTEVUVEVSIEEKKzAwQzM7QXRpbGRlO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBUSUxERQorRjdFMztBdGlsZGVzbWFsbDtMQVRJTiBTTUFMTCBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKKzAwNDI7QjtMQVRJTiBDQVBJVEFMIExFVFRFUiBCCiswMzkyO0JldGE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQkVUQQorRjZGNDtCcmV2ZXNtYWxsO1NNQUxMIENBUElUQUwgQlJFVkUKK0Y3NjI7QnNtYWxsO0xBVElOIFNNQUxMIENBUElUQUwgTEVUVEVSIEIKKzAwNDM7QztMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiswMTA2O0NhY3V0ZTtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQUNVVEUKK0Y2Q0E7Q2Fyb247Q0FQSVRBTCBDQVJPTgorRjZGNTtDYXJvbnNtYWxsO1NNQUxMIENBUElUQUwgQ0FST04KKzAxMEM7Q2Nhcm9uO0xBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDQVJPTgorMDBDNztDY2VkaWxsYTtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQorRjdFNztDY2VkaWxsYXNtYWxsO0xBVElOIFNNQUxMIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCiswMTA4O0NjaXJjdW1mbGV4O0xBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDSVJDVU1GTEVYCiswMTBBO0Nkb3RhY2NlbnQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIERPVCBBQk9WRQorRjdCODtDZWRpbGxhc21hbGw7U01BTEwgQ0FQSVRBTCBDRURJTExBCiswM0E3O0NoaTtHUkVFSyBDQVBJVEFMIExFVFRFUiBDSEkKK0Y2RjY7Q2lyY3VtZmxleHNtYWxsO1NNQUxMIENBUElUQUwgTU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVggQUNDRU5UCitGNzYzO0NzbWFsbDtMQVRJTiBTTUFMTCBDQVBJVEFMIExFVFRFUiBDCiswMDQ0O0Q7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRAorMDEwRTtEY2Fyb247TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIENBUk9OCiswMTEwO0Rjcm9hdDtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggU1RST0tFCisyMjA2O0RlbHRhO0lOQ1JFTUVOVAorMDM5NDtEZWx0YTtHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQTtEdXBsaWNhdGUKK0Y2Q0I7RGllcmVzaXM7Q0FQSVRBTCBESUFFUkVTSVMKK0Y2Q0M7RGllcmVzaXNBY3V0ZTtDQVBJVEFMIERJQUVSRVNJUyBBQ1VURSBBQ0NFTlQKK0Y2Q0Q7RGllcmVzaXNHcmF2ZTtDQVBJVEFMIERJQUVSRVNJUyBHUkFWRSBBQ0NFTlQKK0Y3QTg7RGllcmVzaXNzbWFsbDtTTUFMTCBDQVBJVEFMIERJQUVSRVNJUworRjZGNztEb3RhY2NlbnRzbWFsbDtTTUFMTCBDQVBJVEFMIERPVCBBQk9WRQorRjc2NDtEc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgRAorMDA0NTtFO0xBVElOIENBUElUQUwgTEVUVEVSIEUKKzAwQzk7RWFjdXRlO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQorRjdFOTtFYWN1dGVzbWFsbDtMQVRJTiBTTUFMTCBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKKzAxMTQ7RWJyZXZlO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBCUkVWRQorMDExQTtFY2Fyb247TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENBUk9OCiswMENBO0VjaXJjdW1mbGV4O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCitGN0VBO0VjaXJjdW1mbGV4c21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKKzAwQ0I7RWRpZXJlc2lzO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKK0Y3RUI7RWRpZXJlc2lzc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUworMDExNjtFZG90YWNjZW50O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBET1QgQUJPVkUKKzAwQzg7RWdyYXZlO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQorRjdFODtFZ3JhdmVzbWFsbDtMQVRJTiBTTUFMTCBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKKzAxMTI7RW1hY3JvbjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggTUFDUk9OCiswMTRBO0VuZztMQVRJTiBDQVBJVEFMIExFVFRFUiBFTkcKKzAxMTg7RW9nb25laztMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggT0dPTkVLCiswMzk1O0Vwc2lsb247R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTgorMDM4ODtFcHNpbG9udG9ub3M7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIFRPTk9TCitGNzY1O0VzbWFsbDtMQVRJTiBTTUFMTCBDQVBJVEFMIExFVFRFUiBFCiswMzk3O0V0YTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEKKzAzODk7RXRhdG9ub3M7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggVE9OT1MKKzAwRDA7RXRoO0xBVElOIENBUElUQUwgTEVUVEVSIEVUSAorRjdGMDtFdGhzbWFsbDtMQVRJTiBTTUFMTCBDQVBJVEFMIExFVFRFUiBFVEgKKzIwQUM7RXVybztFVVJPIFNJR04KKzAwNDY7RjtMQVRJTiBDQVBJVEFMIExFVFRFUiBGCitGNzY2O0ZzbWFsbDtMQVRJTiBTTUFMTCBDQVBJVEFMIExFVFRFUiBGCiswMDQ3O0c7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRworMDM5MztHYW1tYTtHUkVFSyBDQVBJVEFMIExFVFRFUiBHQU1NQQorMDExRTtHYnJldmU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIEJSRVZFCiswMUU2O0djYXJvbjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQ0FST04KKzAxMUM7R2NpcmN1bWZsZXg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIENJUkNVTUZMRVgKKzAxMjI7R2NvbW1hYWNjZW50O0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBDRURJTExBCiswMTIwO0dkb3RhY2NlbnQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIERPVCBBQk9WRQorRjZDRTtHcmF2ZTtDQVBJVEFMIEdSQVZFIEFDQ0VOVAorRjc2MDtHcmF2ZXNtYWxsO1NNQUxMIENBUElUQUwgR1JBVkUgQUNDRU5UCitGNzY3O0dzbWFsbDtMQVRJTiBTTUFMTCBDQVBJVEFMIExFVFRFUiBHCiswMDQ4O0g7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSAorMjVDRjtIMTg1MzM7QkxBQ0sgQ0lSQ0xFCisyNUFBO0gxODU0MztCTEFDSyBTTUFMTCBTUVVBUkUKKzI1QUI7SDE4NTUxO1dISVRFIFNNQUxMIFNRVUFSRQorMjVBMTtIMjIwNzM7V0hJVEUgU1FVQVJFCiswMTI2O0hiYXI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIFNUUk9LRQorMDEyNDtIY2lyY3VtZmxleDtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggQ0lSQ1VNRkxFWAorRjc2ODtIc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgSAorRjZDRjtIdW5nYXJ1bWxhdXQ7Q0FQSVRBTCBET1VCTEUgQUNVVEUgQUNDRU5UCitGNkY4O0h1bmdhcnVtbGF1dHNtYWxsO1NNQUxMIENBUElUQUwgRE9VQkxFIEFDVVRFIEFDQ0VOVAorMDA0OTtJO0xBVElOIENBUElUQUwgTEVUVEVSIEkKKzAxMzI7SUo7TEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBJSgorMDBDRDtJYWN1dGU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCitGN0VEO0lhY3V0ZXNtYWxsO0xBVElOIFNNQUxMIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQorMDEyQztJYnJldmU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEJSRVZFCiswMENFO0ljaXJjdW1mbGV4O0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCitGN0VFO0ljaXJjdW1mbGV4c21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKKzAwQ0Y7SWRpZXJlc2lzO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKK0Y3RUY7SWRpZXJlc2lzc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUworMDEzMDtJZG90YWNjZW50O0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBET1QgQUJPVkUKKzIxMTE7SWZyYWt0dXI7QkxBQ0stTEVUVEVSIENBUElUQUwgSQorMDBDQztJZ3JhdmU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCitGN0VDO0lncmF2ZXNtYWxsO0xBVElOIFNNQUxMIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRQorMDEyQTtJbWFjcm9uO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST04KKzAxMkU7SW9nb25laztMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggT0dPTkVLCiswMzk5O0lvdGE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQQorMDNBQTtJb3RhZGllcmVzaXM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQQorMDM4QTtJb3RhdG9ub3M7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFRPTk9TCitGNzY5O0lzbWFsbDtMQVRJTiBTTUFMTCBDQVBJVEFMIExFVFRFUiBJCiswMTI4O0l0aWxkZTtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggVElMREUKKzAwNEE7SjtMQVRJTiBDQVBJVEFMIExFVFRFUiBKCiswMTM0O0pjaXJjdW1mbGV4O0xBVElOIENBUElUQUwgTEVUVEVSIEogV0lUSCBDSVJDVU1GTEVYCitGNzZBO0pzbWFsbDtMQVRJTiBTTUFMTCBDQVBJVEFMIExFVFRFUiBKCiswMDRCO0s7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSworMDM5QTtLYXBwYTtHUkVFSyBDQVBJVEFMIExFVFRFUiBLQVBQQQorMDEzNjtLY29tbWFhY2NlbnQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIENFRElMTEEKK0Y3NkI7S3NtYWxsO0xBVElOIFNNQUxMIENBUElUQUwgTEVUVEVSIEsKKzAwNEM7TDtMQVRJTiBDQVBJVEFMIExFVFRFUiBMCitGNkJGO0xMO0xBVElOIENBUElUQUwgTEVUVEVSIExMCiswMTM5O0xhY3V0ZTtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQUNVVEUKKzAzOUI7TGFtYmRhO0dSRUVLIENBUElUQUwgTEVUVEVSIExBTURBCiswMTNEO0xjYXJvbjtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0FST04KKzAxM0I7TGNvbW1hYWNjZW50O0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDRURJTExBCiswMTNGO0xkb3Q7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIE1JRERMRSBET1QKKzAxNDE7THNsYXNoO0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBTVFJPS0UKK0Y2Rjk7THNsYXNoc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgTCBXSVRIIFNUUk9LRQorRjc2QztMc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgTAorMDA0RDtNO0xBVElOIENBUElUQUwgTEVUVEVSIE0KK0Y2RDA7TWFjcm9uO0NBUElUQUwgTUFDUk9OCitGN0FGO01hY3JvbnNtYWxsO1NNQUxMIENBUElUQUwgTUFDUk9OCitGNzZEO01zbWFsbDtMQVRJTiBTTUFMTCBDQVBJVEFMIExFVFRFUiBNCiswMzlDO011O0dSRUVLIENBUElUQUwgTEVUVEVSIE1VCiswMDRFO047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTgorMDE0MztOYWN1dGU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIEFDVVRFCiswMTQ3O05jYXJvbjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0FST04KKzAxNDU7TmNvbW1hYWNjZW50O0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDRURJTExBCitGNzZFO05zbWFsbDtMQVRJTiBTTUFMTCBDQVBJVEFMIExFVFRFUiBOCiswMEQxO050aWxkZTtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKK0Y3RjE7TnRpbGRlc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCiswMzlEO051O0dSRUVLIENBUElUQUwgTEVUVEVSIE5VCiswMDRGO087TEFUSU4gQ0FQSVRBTCBMRVRURVIgTworMDE1MjtPRTtMQVRJTiBDQVBJVEFMIExJR0FUVVJFIE9FCitGNkZBO09Fc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMSUdBVFVSRSBPRQorMDBEMztPYWN1dGU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCitGN0YzO09hY3V0ZXNtYWxsO0xBVElOIFNNQUxMIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQorMDE0RTtPYnJldmU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEJSRVZFCiswMEQ0O09jaXJjdW1mbGV4O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCitGN0Y0O09jaXJjdW1mbGV4c21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKKzAwRDY7T2RpZXJlc2lzO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKK0Y3RjY7T2RpZXJlc2lzc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUworRjZGQjtPZ29uZWtzbWFsbDtTTUFMTCBDQVBJVEFMIE9HT05FSworMDBEMjtPZ3JhdmU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCitGN0YyO09ncmF2ZXNtYWxsO0xBVElOIFNNQUxMIENBUElUQUwgTEVUVEVSIE8gV0lUSCBHUkFWRQorMDFBMDtPaG9ybjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSE9STgorMDE1MDtPaHVuZ2FydW1sYXV0O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKKzAxNEM7T21hY3JvbjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUFDUk9OCisyMTI2O09tZWdhO09ITSBTSUdOCiswM0E5O09tZWdhO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBO0R1cGxpY2F0ZQorMDM4RjtPbWVnYXRvbm9zO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggVE9OT1MKKzAzOUY7T21pY3JvbjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OCiswMzhDO09taWNyb250b25vcztHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggVE9OT1MKKzAwRDg7T3NsYXNoO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKKzAxRkU7T3NsYXNoYWN1dGU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRSBBTkQgQUNVVEUKK0Y3Rjg7T3NsYXNoc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQorRjc2RjtPc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgTworMDBENTtPdGlsZGU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCitGN0Y1O090aWxkZXNtYWxsO0xBVElOIFNNQUxMIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQorMDA1MDtQO0xBVElOIENBUElUQUwgTEVUVEVSIFAKKzAzQTY7UGhpO0dSRUVLIENBUElUQUwgTEVUVEVSIFBISQorMDNBMDtQaTtHUkVFSyBDQVBJVEFMIExFVFRFUiBQSQorMDNBODtQc2k7R1JFRUsgQ0FQSVRBTCBMRVRURVIgUFNJCitGNzcwO1BzbWFsbDtMQVRJTiBTTUFMTCBDQVBJVEFMIExFVFRFUiBQCiswMDUxO1E7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUQorRjc3MTtRc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgUQorMDA1MjtSO0xBVElOIENBUElUQUwgTEVUVEVSIFIKKzAxNTQ7UmFjdXRlO0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBBQ1VURQorMDE1ODtSY2Fyb247TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENBUk9OCiswMTU2O1Jjb21tYWFjY2VudDtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQ0VESUxMQQorMjExQztSZnJha3R1cjtCTEFDSy1MRVRURVIgQ0FQSVRBTCBSCiswM0ExO1JobztHUkVFSyBDQVBJVEFMIExFVFRFUiBSSE8KK0Y2RkM7UmluZ3NtYWxsO1NNQUxMIENBUElUQUwgUklORyBBQk9WRQorRjc3MjtSc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgUgorMDA1MztTO0xBVElOIENBUElUQUwgTEVUVEVSIFMKKzI1MEM7U0YwMTAwMDA7Qk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUCisyNTE0O1NGMDIwMDAwO0JPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgUklHSFQKKzI1MTA7U0YwMzAwMDA7Qk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIExFRlQKKzI1MTg7U0YwNDAwMDA7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUCisyNTNDO1NGMDUwMDAwO0JPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTAorMjUyQztTRjA2MDAwMDtCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTAorMjUzNDtTRjA3MDAwMDtCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhPUklaT05UQUwKKzI1MUM7U0YwODAwMDA7Qk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVAorMjUyNDtTRjA5MDAwMDtCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKKzI1MDA7U0YxMDAwMDA7Qk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUwKKzI1MDI7U0YxMTAwMDA7Qk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMCisyNTYxO1NGMTkwMDAwO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCisyNTYyO1NGMjAwMDAwO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIExFRlQgU0lOR0xFCisyNTU2O1NGMjEwMDAwO0JPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKKzI1NTU7U0YyMjAwMDA7Qk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBMRUZUIERPVUJMRQorMjU2MztTRjIzMDAwMDtCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBMRUZUCisyNTUxO1NGMjQwMDAwO0JPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKKzI1NTc7U0YyNTAwMDA7Qk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCisyNTVEO1NGMjYwMDAwO0JPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQKKzI1NUM7U0YyNzAwMDA7Qk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKKzI1NUI7U0YyODAwMDA7Qk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKKzI1NUU7U0YzNjAwMDA7Qk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCisyNTVGO1NGMzcwMDAwO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRQorMjU1QTtTRjM4MDAwMDtCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBSSUdIVAorMjU1NDtTRjM5MDAwMDtCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIFJJR0hUCisyNTY5O1NGNDAwMDAwO0JPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIEhPUklaT05UQUwKKzI1NjY7U0Y0MTAwMDA7Qk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMCisyNTYwO1NGNDIwMDAwO0JPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCisyNTUwO1NGNDMwMDAwO0JPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTAorMjU2QztTRjQ0MDAwMDtCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCisyNTY3O1NGNDUwMDAwO0JPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCisyNTY4O1NGNDYwMDAwO0JPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCisyNTY0O1NGNDcwMDAwO0JPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEUKKzI1NjU7U0Y0ODAwMDA7Qk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQorMjU1OTtTRjQ5MDAwMDtCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKKzI1NTg7U0Y1MDAwMDA7Qk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCisyNTUyO1NGNTEwMDAwO0JPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFCisyNTUzO1NGNTIwMDAwO0JPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCisyNTZCO1NGNTMwMDAwO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCisyNTZBO1NGNTQwMDAwO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCiswMTVBO1NhY3V0ZTtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQUNVVEUKKzAxNjA7U2Nhcm9uO0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgorRjZGRDtTY2Fyb25zbWFsbDtMQVRJTiBTTUFMTCBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KKzAxNUU7U2NlZGlsbGE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENFRElMTEEKK0Y2QzE7U2NlZGlsbGE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENFRElMTEE7RHVwbGljYXRlCiswMTVDO1NjaXJjdW1mbGV4O0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDSVJDVU1GTEVYCiswMjE4O1Njb21tYWFjY2VudDtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ09NTUEgQkVMT1cKKzAzQTM7U2lnbWE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgU0lHTUEKK0Y3NzM7U3NtYWxsO0xBVElOIFNNQUxMIENBUElUQUwgTEVUVEVSIFMKKzAwNTQ7VDtMQVRJTiBDQVBJVEFMIExFVFRFUiBUCiswM0E0O1RhdTtHUkVFSyBDQVBJVEFMIExFVFRFUiBUQVUKKzAxNjY7VGJhcjtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggU1RST0tFCiswMTY0O1RjYXJvbjtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggQ0FST04KKzAxNjI7VGNvbW1hYWNjZW50O0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDRURJTExBCiswMjFBO1Rjb21tYWFjY2VudDtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggQ09NTUEgQkVMT1c7RHVwbGljYXRlCiswMzk4O1RoZXRhO0dSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBCiswMERFO1Rob3JuO0xBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOCitGN0ZFO1Rob3Juc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgVEhPUk4KK0Y2RkU7VGlsZGVzbWFsbDtTTUFMTCBDQVBJVEFMIFNNQUxMIFRJTERFCitGNzc0O1RzbWFsbDtMQVRJTiBTTUFMTCBDQVBJVEFMIExFVFRFUiBUCiswMDU1O1U7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVQorMDBEQTtVYWN1dGU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCitGN0ZBO1VhY3V0ZXNtYWxsO0xBVElOIFNNQUxMIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQorMDE2QztVYnJldmU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEJSRVZFCiswMERCO1VjaXJjdW1mbGV4O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCitGN0ZCO1VjaXJjdW1mbGV4c21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKKzAwREM7VWRpZXJlc2lzO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKK0Y3RkM7VWRpZXJlc2lzc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUworMDBEOTtVZ3JhdmU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCitGN0Y5O1VncmF2ZXNtYWxsO0xBVElOIFNNQUxMIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQorMDFBRjtVaG9ybjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9STgorMDE3MDtVaHVuZ2FydW1sYXV0O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEUKKzAxNkE7VW1hY3JvbjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OCiswMTcyO1VvZ29uZWs7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE9HT05FSworMDNBNTtVcHNpbG9uO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04KKzAzRDI7VXBzaWxvbjE7R1JFRUsgVVBTSUxPTiBXSVRIIEhPT0sgU1lNQk9MCiswM0FCO1Vwc2lsb25kaWVyZXNpcztHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBCiswMzhFO1Vwc2lsb250b25vcztHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggVE9OT1MKKzAxNkU7VXJpbmc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIFJJTkcgQUJPVkUKK0Y3NzU7VXNtYWxsO0xBVElOIFNNQUxMIENBUElUQUwgTEVUVEVSIFUKKzAxNjg7VXRpbGRlO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBUSUxERQorMDA1NjtWO0xBVElOIENBUElUQUwgTEVUVEVSIFYKK0Y3NzY7VnNtYWxsO0xBVElOIFNNQUxMIENBUElUQUwgTEVUVEVSIFYKKzAwNTc7VztMQVRJTiBDQVBJVEFMIExFVFRFUiBXCisxRTgyO1dhY3V0ZTtMQVRJTiBDQVBJVEFMIExFVFRFUiBXIFdJVEggQUNVVEUKKzAxNzQ7V2NpcmN1bWZsZXg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIENJUkNVTUZMRVgKKzFFODQ7V2RpZXJlc2lzO0xBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBESUFFUkVTSVMKKzFFODA7V2dyYXZlO0xBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBHUkFWRQorRjc3NztXc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgVworMDA1ODtYO0xBVElOIENBUElUQUwgTEVUVEVSIFgKKzAzOUU7WGk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgWEkKK0Y3Nzg7WHNtYWxsO0xBVElOIFNNQUxMIENBUElUQUwgTEVUVEVSIFgKKzAwNTk7WTtMQVRJTiBDQVBJVEFMIExFVFRFUiBZCiswMEREO1lhY3V0ZTtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKK0Y3RkQ7WWFjdXRlc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCiswMTc2O1ljaXJjdW1mbGV4O0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBDSVJDVU1GTEVYCiswMTc4O1lkaWVyZXNpcztMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCitGN0ZGO1lkaWVyZXNpc3NtYWxsO0xBVElOIFNNQUxMIENBUElUQUwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKKzFFRjI7WWdyYXZlO0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBHUkFWRQorRjc3OTtZc21hbGw7TEFUSU4gU01BTEwgQ0FQSVRBTCBMRVRURVIgWQorMDA1QTtaO0xBVElOIENBUElUQUwgTEVUVEVSIFoKKzAxNzk7WmFjdXRlO0xBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBBQ1VURQorMDE3RDtaY2Fyb247TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENBUk9OCitGNkZGO1pjYXJvbnNtYWxsO0xBVElOIFNNQUxMIENBUElUQUwgTEVUVEVSIFogV0lUSCBDQVJPTgorMDE3QjtaZG90YWNjZW50O0xBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKKzAzOTY7WmV0YTtHUkVFSyBDQVBJVEFMIExFVFRFUiBaRVRBCitGNzdBO1pzbWFsbDtMQVRJTiBTTUFMTCBDQVBJVEFMIExFVFRFUiBaCiswMDYxO2E7TEFUSU4gU01BTEwgTEVUVEVSIEEKKzAwRTE7YWFjdXRlO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKKzAxMDM7YWJyZXZlO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkUKKzAwRTI7YWNpcmN1bWZsZXg7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiswMEI0O2FjdXRlO0FDVVRFIEFDQ0VOVAorMDMwMTthY3V0ZWNvbWI7Q09NQklOSU5HIEFDVVRFIEFDQ0VOVAorMDBFNDthZGllcmVzaXM7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKzAwRTY7YWU7TEFUSU4gU01BTEwgTEVUVEVSIEFFCiswMUZEO2FlYWN1dGU7TEFUSU4gU01BTEwgTEVUVEVSIEFFIFdJVEggQUNVVEUKKzIwMTU7YWZpaTAwMjA4O0hPUklaT05UQUwgQkFSCiswNDEwO2FmaWkxMDAxNztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBCiswNDExO2FmaWkxMDAxODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQorMDQxMjthZmlpMTAwMTk7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkUKKzA0MTM7YWZpaTEwMDIwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRQorMDQxNDthZmlpMTAwMjE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREUKKzA0MTU7YWZpaTEwMDIyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElFCiswNDAxO2FmaWkxMDAyMztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJTworMDQxNjthZmlpMTAwMjQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFCiswNDE3O2FmaWkxMDAyNTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRQorMDQxODthZmlpMTAwMjY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQorMDQxOTthZmlpMTAwMjc7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgSQorMDQxQTthZmlpMTAwMjg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EKKzA0MUI7YWZpaTEwMDI5O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVMCiswNDFDO2FmaWkxMDAzMDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTQorMDQxRDthZmlpMTAwMzE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4KKzA0MUU7YWZpaTEwMDMyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIE8KKzA0MUY7YWZpaTEwMDMzO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFBFCiswNDIwO2FmaWkxMDAzNDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUgorMDQyMTthZmlpMTAwMzU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMKKzA0MjI7YWZpaTEwMDM2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFRFCiswNDIzO2FmaWkxMDAzNztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVCiswNDI0O2FmaWkxMDAzODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFRgorMDQyNTthZmlpMTAwMzk7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEKKzA0MjY7YWZpaTEwMDQwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFRTRQorMDQyNzthZmlpMTAwNDE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFCiswNDI4O2FmaWkxMDA0MjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSEEKKzA0Mjk7YWZpaTEwMDQzO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCiswNDJBO2FmaWkxMDA0NDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQVJEIFNJR04KKzA0MkI7YWZpaTEwMDQ1O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFlFUlUKKzA0MkM7YWZpaTEwMDQ2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNPRlQgU0lHTgorMDQyRDthZmlpMTAwNDc7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRQorMDQyRTthZmlpMTAwNDg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWVUKKzA0MkY7YWZpaTEwMDQ5O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFlBCiswNDkwO2FmaWkxMDA1MDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUgV0lUSCBVUFRVUk4KKzA0MDI7YWZpaTEwMDUxO0NZUklMTElDIENBUElUQUwgTEVUVEVSIERKRQorMDQwMzthZmlpMTAwNTI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0pFCiswNDA0O2FmaWkxMDA1MztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVS1JBSU5JQU4gSUUKKzA0MDU7YWZpaTEwMDU0O0NZUklMTElDIENBUElUQUwgTEVUVEVSIERaRQorMDQwNjthZmlpMTAwNTU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCiswNDA3O2FmaWkxMDA1NjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZSQorMDQwODthZmlpMTAwNTc7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSkUKKzA0MDk7YWZpaTEwMDU4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIExKRQorMDQwQTthZmlpMTAwNTk7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTkpFCiswNDBCO2FmaWkxMDA2MDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0hFCiswNDBDO2FmaWkxMDA2MTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLSkUKKzA0MEU7YWZpaTEwMDYyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIFUKK0Y2QzQ7YWZpaTEwMDYzO0NZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgVkFSSUFOVAorRjZDNTthZmlpMTAwNjQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFIFZBUklBTlQKKzA0MzA7YWZpaTEwMDY1O0NZUklMTElDIFNNQUxMIExFVFRFUiBBCiswNDMxO2FmaWkxMDA2NjtDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKKzA0MzI7YWZpaTEwMDY3O0NZUklMTElDIFNNQUxMIExFVFRFUiBWRQorMDQzMzthZmlpMTAwNjg7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRQorMDQzNDthZmlpMTAwNjk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCiswNDM1O2FmaWkxMDA3MDtDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKKzA0NTE7YWZpaTEwMDcxO0NZUklMTElDIFNNQUxMIExFVFRFUiBJTworMDQzNjthZmlpMTAwNzI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRQorMDQzNzthZmlpMTAwNzM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCiswNDM4O2FmaWkxMDA3NDtDWVJJTExJQyBTTUFMTCBMRVRURVIgSQorMDQzOTthZmlpMTAwNzU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKKzA0M0E7YWZpaTEwMDc2O0NZUklMTElDIFNNQUxMIExFVFRFUiBLQQorMDQzQjthZmlpMTAwNzc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCiswNDNDO2FmaWkxMDA3ODtDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KKzA0M0Q7YWZpaTEwMDc5O0NZUklMTElDIFNNQUxMIExFVFRFUiBFTgorMDQzRTthZmlpMTAwODA7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKzA0M0Y7YWZpaTEwMDgxO0NZUklMTElDIFNNQUxMIExFVFRFUiBQRQorMDQ0MDthZmlpMTAwODI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCiswNDQxO2FmaWkxMDA4MztDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKKzA0NDI7YWZpaTEwMDg0O0NZUklMTElDIFNNQUxMIExFVFRFUiBURQorMDQ0MzthZmlpMTAwODU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKKzA0NDQ7YWZpaTEwMDg2O0NZUklMTElDIFNNQUxMIExFVFRFUiBFRgorMDQ0NTthZmlpMTAwODc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBCiswNDQ2O2FmaWkxMDA4ODtDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFCiswNDQ3O2FmaWkxMDA4OTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFCiswNDQ4O2FmaWkxMDA5MDtDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hBCiswNDQ5O2FmaWkxMDA5MTtDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hDSEEKKzA0NEE7YWZpaTEwMDkyO0NZUklMTElDIFNNQUxMIExFVFRFUiBIQVJEIFNJR04KKzA0NEI7YWZpaTEwMDkzO0NZUklMTElDIFNNQUxMIExFVFRFUiBZRVJVCiswNDRDO2FmaWkxMDA5NDtDWVJJTExJQyBTTUFMTCBMRVRURVIgU09GVCBTSUdOCiswNDREO2FmaWkxMDA5NTtDWVJJTExJQyBTTUFMTCBMRVRURVIgRQorMDQ0RTthZmlpMTAwOTY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlVCiswNDRGO2FmaWkxMDA5NztDWVJJTExJQyBTTUFMTCBMRVRURVIgWUEKKzA0OTE7YWZpaTEwMDk4O0NZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBVUFRVUk4KKzA0NTI7YWZpaTEwMDk5O0NZUklMTElDIFNNQUxMIExFVFRFUiBESkUKKzA0NTM7YWZpaTEwMTAwO0NZUklMTElDIFNNQUxMIExFVFRFUiBHSkUKKzA0NTQ7YWZpaTEwMTAxO0NZUklMTElDIFNNQUxMIExFVFRFUiBVS1JBSU5JQU4gSUUKKzA0NTU7YWZpaTEwMTAyO0NZUklMTElDIFNNQUxMIExFVFRFUiBEWkUKKzA0NTY7YWZpaTEwMTAzO0NZUklMTElDIFNNQUxMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKKzA0NTc7YWZpaTEwMTA0O0NZUklMTElDIFNNQUxMIExFVFRFUiBZSQorMDQ1ODthZmlpMTAxMDU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEpFCiswNDU5O2FmaWkxMDEwNjtDWVJJTExJQyBTTUFMTCBMRVRURVIgTEpFCiswNDVBO2FmaWkxMDEwNztDWVJJTExJQyBTTUFMTCBMRVRURVIgTkpFCiswNDVCO2FmaWkxMDEwODtDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNIRQorMDQ1QzthZmlpMTAxMDk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtKRQorMDQ1RTthZmlpMTAxMTA7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIFUKKzA0MEY7YWZpaTEwMTQ1O0NZUklMTElDIENBUElUQUwgTEVUVEVSIERaSEUKKzA0NjI7YWZpaTEwMTQ2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFlBVAorMDQ3MjthZmlpMTAxNDc7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRklUQQorMDQ3NDthZmlpMTAxNDg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSVpISVRTQQorRjZDNjthZmlpMTAxOTI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIERFIFZBUklBTlQKKzA0NUY7YWZpaTEwMTkzO0NZUklMTElDIFNNQUxMIExFVFRFUiBEWkhFCiswNDYzO2FmaWkxMDE5NDtDWVJJTExJQyBTTUFMTCBMRVRURVIgWUFUCiswNDczO2FmaWkxMDE5NTtDWVJJTExJQyBTTUFMTCBMRVRURVIgRklUQQorMDQ3NTthZmlpMTAxOTY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElaSElUU0EKK0Y2Qzc7YWZpaTEwODMxO0NZUklMTElDIFNNQUxMIExFVFRFUiBQRSBWQVJJQU5UCitGNkM4O2FmaWkxMDgzMjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUgVkFSSUFOVAorMDREOTthZmlpMTA4NDY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNDSFdBCisyMDBFO2FmaWkyOTk7TEVGVC1UTy1SSUdIVCBNQVJLCisyMDBGO2FmaWkzMDA7UklHSFQtVE8tTEVGVCBNQVJLCisyMDBEO2FmaWkzMDE7WkVSTyBXSURUSCBKT0lORVIKKzA2NkE7YWZpaTU3MzgxO0FSQUJJQyBQRVJDRU5UIFNJR04KKzA2MEM7YWZpaTU3Mzg4O0FSQUJJQyBDT01NQQorMDY2MDthZmlpNTczOTI7QVJBQklDLUlORElDIERJR0lUIFpFUk8KKzA2NjE7YWZpaTU3MzkzO0FSQUJJQy1JTkRJQyBESUdJVCBPTkUKKzA2NjI7YWZpaTU3Mzk0O0FSQUJJQy1JTkRJQyBESUdJVCBUV08KKzA2NjM7YWZpaTU3Mzk1O0FSQUJJQy1JTkRJQyBESUdJVCBUSFJFRQorMDY2NDthZmlpNTczOTY7QVJBQklDLUlORElDIERJR0lUIEZPVVIKKzA2NjU7YWZpaTU3Mzk3O0FSQUJJQy1JTkRJQyBESUdJVCBGSVZFCiswNjY2O2FmaWk1NzM5ODtBUkFCSUMtSU5ESUMgRElHSVQgU0lYCiswNjY3O2FmaWk1NzM5OTtBUkFCSUMtSU5ESUMgRElHSVQgU0VWRU4KKzA2Njg7YWZpaTU3NDAwO0FSQUJJQy1JTkRJQyBESUdJVCBFSUdIVAorMDY2OTthZmlpNTc0MDE7QVJBQklDLUlORElDIERJR0lUIE5JTkUKKzA2MUI7YWZpaTU3NDAzO0FSQUJJQyBTRU1JQ09MT04KKzA2MUY7YWZpaTU3NDA3O0FSQUJJQyBRVUVTVElPTiBNQVJLCiswNjIxO2FmaWk1NzQwOTtBUkFCSUMgTEVUVEVSIEhBTVpBCiswNjIyO2FmaWk1NzQxMDtBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBNQUREQSBBQk9WRQorMDYyMzthZmlpNTc0MTE7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkUKKzA2MjQ7YWZpaTU3NDEyO0FSQUJJQyBMRVRURVIgV0FXIFdJVEggSEFNWkEgQUJPVkUKKzA2MjU7YWZpaTU3NDEzO0FSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEJFTE9XCiswNjI2O2FmaWk1NzQxNDtBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFCiswNjI3O2FmaWk1NzQxNTtBUkFCSUMgTEVUVEVSIEFMRUYKKzA2Mjg7YWZpaTU3NDE2O0FSQUJJQyBMRVRURVIgQkVICiswNjI5O2FmaWk1NzQxNztBUkFCSUMgTEVUVEVSIFRFSCBNQVJCVVRBCiswNjJBO2FmaWk1NzQxODtBUkFCSUMgTEVUVEVSIFRFSAorMDYyQjthZmlpNTc0MTk7QVJBQklDIExFVFRFUiBUSEVICiswNjJDO2FmaWk1NzQyMDtBUkFCSUMgTEVUVEVSIEpFRU0KKzA2MkQ7YWZpaTU3NDIxO0FSQUJJQyBMRVRURVIgSEFICiswNjJFO2FmaWk1NzQyMjtBUkFCSUMgTEVUVEVSIEtIQUgKKzA2MkY7YWZpaTU3NDIzO0FSQUJJQyBMRVRURVIgREFMCiswNjMwO2FmaWk1NzQyNDtBUkFCSUMgTEVUVEVSIFRIQUwKKzA2MzE7YWZpaTU3NDI1O0FSQUJJQyBMRVRURVIgUkVICiswNjMyO2FmaWk1NzQyNjtBUkFCSUMgTEVUVEVSIFpBSU4KKzA2MzM7YWZpaTU3NDI3O0FSQUJJQyBMRVRURVIgU0VFTgorMDYzNDthZmlpNTc0Mjg7QVJBQklDIExFVFRFUiBTSEVFTgorMDYzNTthZmlpNTc0Mjk7QVJBQklDIExFVFRFUiBTQUQKKzA2MzY7YWZpaTU3NDMwO0FSQUJJQyBMRVRURVIgREFECiswNjM3O2FmaWk1NzQzMTtBUkFCSUMgTEVUVEVSIFRBSAorMDYzODthZmlpNTc0MzI7QVJBQklDIExFVFRFUiBaQUgKKzA2Mzk7YWZpaTU3NDMzO0FSQUJJQyBMRVRURVIgQUlOCiswNjNBO2FmaWk1NzQzNDtBUkFCSUMgTEVUVEVSIEdIQUlOCiswNjQwO2FmaWk1NzQ0MDtBUkFCSUMgVEFUV0VFTAorMDY0MTthZmlpNTc0NDE7QVJBQklDIExFVFRFUiBGRUgKKzA2NDI7YWZpaTU3NDQyO0FSQUJJQyBMRVRURVIgUUFGCiswNjQzO2FmaWk1NzQ0MztBUkFCSUMgTEVUVEVSIEtBRgorMDY0NDthZmlpNTc0NDQ7QVJBQklDIExFVFRFUiBMQU0KKzA2NDU7YWZpaTU3NDQ1O0FSQUJJQyBMRVRURVIgTUVFTQorMDY0NjthZmlpNTc0NDY7QVJBQklDIExFVFRFUiBOT09OCiswNjQ4O2FmaWk1NzQ0ODtBUkFCSUMgTEVUVEVSIFdBVworMDY0OTthZmlpNTc0NDk7QVJBQklDIExFVFRFUiBBTEVGIE1BS1NVUkEKKzA2NEE7YWZpaTU3NDUwO0FSQUJJQyBMRVRURVIgWUVICiswNjRCO2FmaWk1NzQ1MTtBUkFCSUMgRkFUSEFUQU4KKzA2NEM7YWZpaTU3NDUyO0FSQUJJQyBEQU1NQVRBTgorMDY0RDthZmlpNTc0NTM7QVJBQklDIEtBU1JBVEFOCiswNjRFO2FmaWk1NzQ1NDtBUkFCSUMgRkFUSEEKKzA2NEY7YWZpaTU3NDU1O0FSQUJJQyBEQU1NQQorMDY1MDthZmlpNTc0NTY7QVJBQklDIEtBU1JBCiswNjUxO2FmaWk1NzQ1NztBUkFCSUMgU0hBRERBCiswNjUyO2FmaWk1NzQ1ODtBUkFCSUMgU1VLVU4KKzA2NDc7YWZpaTU3NDcwO0FSQUJJQyBMRVRURVIgSEVICiswNkE0O2FmaWk1NzUwNTtBUkFCSUMgTEVUVEVSIFZFSAorMDY3RTthZmlpNTc1MDY7QVJBQklDIExFVFRFUiBQRUgKKzA2ODY7YWZpaTU3NTA3O0FSQUJJQyBMRVRURVIgVENIRUgKKzA2OTg7YWZpaTU3NTA4O0FSQUJJQyBMRVRURVIgSkVICiswNkFGO2FmaWk1NzUwOTtBUkFCSUMgTEVUVEVSIEdBRgorMDY3OTthZmlpNTc1MTE7QVJBQklDIExFVFRFUiBUVEVICiswNjg4O2FmaWk1NzUxMjtBUkFCSUMgTEVUVEVSIEREQUwKKzA2OTE7YWZpaTU3NTEzO0FSQUJJQyBMRVRURVIgUlJFSAorMDZCQTthZmlpNTc1MTQ7QVJBQklDIExFVFRFUiBOT09OIEdIVU5OQQorMDZEMjthZmlpNTc1MTk7QVJBQklDIExFVFRFUiBZRUggQkFSUkVFCiswNkQ1O2FmaWk1NzUzNDtBUkFCSUMgTEVUVEVSIEFFCisyMEFBO2FmaWk1NzYzNjtORVcgU0hFUUVMIFNJR04KKzA1QkU7YWZpaTU3NjQ1O0hFQlJFVyBQVU5DVFVBVElPTiBNQVFBRgorMDVDMzthZmlpNTc2NTg7SEVCUkVXIFBVTkNUVUFUSU9OIFNPRiBQQVNVUQorMDVEMDthZmlpNTc2NjQ7SEVCUkVXIExFVFRFUiBBTEVGCiswNUQxO2FmaWk1NzY2NTtIRUJSRVcgTEVUVEVSIEJFVAorMDVEMjthZmlpNTc2NjY7SEVCUkVXIExFVFRFUiBHSU1FTAorMDVEMzthZmlpNTc2Njc7SEVCUkVXIExFVFRFUiBEQUxFVAorMDVENDthZmlpNTc2Njg7SEVCUkVXIExFVFRFUiBIRQorMDVENTthZmlpNTc2Njk7SEVCUkVXIExFVFRFUiBWQVYKKzA1RDY7YWZpaTU3NjcwO0hFQlJFVyBMRVRURVIgWkFZSU4KKzA1RDc7YWZpaTU3NjcxO0hFQlJFVyBMRVRURVIgSEVUCiswNUQ4O2FmaWk1NzY3MjtIRUJSRVcgTEVUVEVSIFRFVAorMDVEOTthZmlpNTc2NzM7SEVCUkVXIExFVFRFUiBZT0QKKzA1REE7YWZpaTU3Njc0O0hFQlJFVyBMRVRURVIgRklOQUwgS0FGCiswNURCO2FmaWk1NzY3NTtIRUJSRVcgTEVUVEVSIEtBRgorMDVEQzthZmlpNTc2NzY7SEVCUkVXIExFVFRFUiBMQU1FRAorMDVERDthZmlpNTc2Nzc7SEVCUkVXIExFVFRFUiBGSU5BTCBNRU0KKzA1REU7YWZpaTU3Njc4O0hFQlJFVyBMRVRURVIgTUVNCiswNURGO2FmaWk1NzY3OTtIRUJSRVcgTEVUVEVSIEZJTkFMIE5VTgorMDVFMDthZmlpNTc2ODA7SEVCUkVXIExFVFRFUiBOVU4KKzA1RTE7YWZpaTU3NjgxO0hFQlJFVyBMRVRURVIgU0FNRUtICiswNUUyO2FmaWk1NzY4MjtIRUJSRVcgTEVUVEVSIEFZSU4KKzA1RTM7YWZpaTU3NjgzO0hFQlJFVyBMRVRURVIgRklOQUwgUEUKKzA1RTQ7YWZpaTU3Njg0O0hFQlJFVyBMRVRURVIgUEUKKzA1RTU7YWZpaTU3Njg1O0hFQlJFVyBMRVRURVIgRklOQUwgVFNBREkKKzA1RTY7YWZpaTU3Njg2O0hFQlJFVyBMRVRURVIgVFNBREkKKzA1RTc7YWZpaTU3Njg3O0hFQlJFVyBMRVRURVIgUU9GCiswNUU4O2FmaWk1NzY4ODtIRUJSRVcgTEVUVEVSIFJFU0gKKzA1RTk7YWZpaTU3Njg5O0hFQlJFVyBMRVRURVIgU0hJTgorMDVFQTthZmlpNTc2OTA7SEVCUkVXIExFVFRFUiBUQVYKK0ZCMkE7YWZpaTU3Njk0O0hFQlJFVyBMRVRURVIgU0hJTiBXSVRIIFNISU4gRE9UCitGQjJCO2FmaWk1NzY5NTtIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBTSU4gRE9UCitGQjRCO2FmaWk1NzcwMDtIRUJSRVcgTEVUVEVSIFZBViBXSVRIIEhPTEFNCitGQjFGO2FmaWk1NzcwNTtIRUJSRVcgTElHQVRVUkUgWUlERElTSCBZT0QgWU9EIFBBVEFICiswNUYwO2FmaWk1NzcxNjtIRUJSRVcgTElHQVRVUkUgWUlERElTSCBET1VCTEUgVkFWCiswNUYxO2FmaWk1NzcxNztIRUJSRVcgTElHQVRVUkUgWUlERElTSCBWQVYgWU9ECiswNUYyO2FmaWk1NzcxODtIRUJSRVcgTElHQVRVUkUgWUlERElTSCBET1VCTEUgWU9ECitGQjM1O2FmaWk1NzcyMztIRUJSRVcgTEVUVEVSIFZBViBXSVRIIERBR0VTSAorMDVCNDthZmlpNTc3OTM7SEVCUkVXIFBPSU5UIEhJUklRCiswNUI1O2FmaWk1Nzc5NDtIRUJSRVcgUE9JTlQgVFNFUkUKKzA1QjY7YWZpaTU3Nzk1O0hFQlJFVyBQT0lOVCBTRUdPTAorMDVCQjthZmlpNTc3OTY7SEVCUkVXIFBPSU5UIFFVQlVUUworMDVCODthZmlpNTc3OTc7SEVCUkVXIFBPSU5UIFFBTUFUUworMDVCNzthZmlpNTc3OTg7SEVCUkVXIFBPSU5UIFBBVEFICiswNUIwO2FmaWk1Nzc5OTtIRUJSRVcgUE9JTlQgU0hFVkEKKzA1QjI7YWZpaTU3ODAwO0hFQlJFVyBQT0lOVCBIQVRBRiBQQVRBSAorMDVCMTthZmlpNTc4MDE7SEVCUkVXIFBPSU5UIEhBVEFGIFNFR09MCiswNUIzO2FmaWk1NzgwMjtIRUJSRVcgUE9JTlQgSEFUQUYgUUFNQVRTCiswNUMyO2FmaWk1NzgwMztIRUJSRVcgUE9JTlQgU0lOIERPVAorMDVDMTthZmlpNTc4MDQ7SEVCUkVXIFBPSU5UIFNISU4gRE9UCiswNUI5O2FmaWk1NzgwNjtIRUJSRVcgUE9JTlQgSE9MQU0KKzA1QkM7YWZpaTU3ODA3O0hFQlJFVyBQT0lOVCBEQUdFU0ggT1IgTUFQSVEKKzA1QkQ7YWZpaTU3ODM5O0hFQlJFVyBQT0lOVCBNRVRFRworMDVCRjthZmlpNTc4NDE7SEVCUkVXIFBPSU5UIFJBRkUKKzA1QzA7YWZpaTU3ODQyO0hFQlJFVyBQVU5DVFVBVElPTiBQQVNFUQorMDJCQzthZmlpNTc5Mjk7TU9ESUZJRVIgTEVUVEVSIEFQT1NUUk9QSEUKKzIxMDU7YWZpaTYxMjQ4O0NBUkUgT0YKKzIxMTM7YWZpaTYxMjg5O1NDUklQVCBTTUFMTCBMCisyMTE2O2FmaWk2MTM1MjtOVU1FUk8gU0lHTgorMjAyQzthZmlpNjE1NzM7UE9QIERJUkVDVElPTkFMIEZPUk1BVFRJTkcKKzIwMkQ7YWZpaTYxNTc0O0xFRlQtVE8tUklHSFQgT1ZFUlJJREUKKzIwMkU7YWZpaTYxNTc1O1JJR0hULVRPLUxFRlQgT1ZFUlJJREUKKzIwMEM7YWZpaTYxNjY0O1pFUk8gV0lEVEggTk9OLUpPSU5FUgorMDY2RDthZmlpNjMxNjc7QVJBQklDIEZJVkUgUE9JTlRFRCBTVEFSCiswMkJEO2FmaWk2NDkzNztNT0RJRklFUiBMRVRURVIgUkVWRVJTRUQgQ09NTUEKKzAwRTA7YWdyYXZlO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKKzIxMzU7YWxlcGg7QUxFRiBTWU1CT0wKKzAzQjE7YWxwaGE7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBCiswM0FDO2FscGhhdG9ub3M7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVE9OT1MKKzAxMDE7YW1hY3JvbjtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIE1BQ1JPTgorMDAyNjthbXBlcnNhbmQ7QU1QRVJTQU5ECitGNzI2O2FtcGVyc2FuZHNtYWxsO1NNQUxMIENBUElUQUwgQU1QRVJTQU5ECisyMjIwO2FuZ2xlO0FOR0xFCisyMzI5O2FuZ2xlbGVmdDtMRUZULVBPSU5USU5HIEFOR0xFIEJSQUNLRVQKKzIzMkE7YW5nbGVyaWdodDtSSUdIVC1QT0lOVElORyBBTkdMRSBCUkFDS0VUCiswMzg3O2Fub3RlbGVpYTtHUkVFSyBBTk8gVEVMRUlBCiswMTA1O2FvZ29uZWs7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBPR09ORUsKKzIyNDg7YXBwcm94ZXF1YWw7QUxNT1NUIEVRVUFMIFRPCiswMEU1O2FyaW5nO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQorMDFGQjthcmluZ2FjdXRlO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRSBBTkQgQUNVVEUKKzIxOTQ7YXJyb3dib3RoO0xFRlQgUklHSFQgQVJST1cKKzIxRDQ7YXJyb3dkYmxib3RoO0xFRlQgUklHSFQgRE9VQkxFIEFSUk9XCisyMUQzO2Fycm93ZGJsZG93bjtET1dOV0FSRFMgRE9VQkxFIEFSUk9XCisyMUQwO2Fycm93ZGJsbGVmdDtMRUZUV0FSRFMgRE9VQkxFIEFSUk9XCisyMUQyO2Fycm93ZGJscmlnaHQ7UklHSFRXQVJEUyBET1VCTEUgQVJST1cKKzIxRDE7YXJyb3dkYmx1cDtVUFdBUkRTIERPVUJMRSBBUlJPVworMjE5MzthcnJvd2Rvd247RE9XTldBUkRTIEFSUk9XCitGOEU3O2Fycm93aG9yaXpleDtIT1JJWk9OVEFMIEFSUk9XIEVYVEVOREVSCisyMTkwO2Fycm93bGVmdDtMRUZUV0FSRFMgQVJST1cKKzIxOTI7YXJyb3dyaWdodDtSSUdIVFdBUkRTIEFSUk9XCisyMTkxO2Fycm93dXA7VVBXQVJEUyBBUlJPVworMjE5NTthcnJvd3VwZG47VVAgRE9XTiBBUlJPVworMjFBODthcnJvd3VwZG5ic2U7VVAgRE9XTiBBUlJPVyBXSVRIIEJBU0UKK0Y4RTY7YXJyb3d2ZXJ0ZXg7VkVSVElDQUwgQVJST1cgRVhURU5ERVIKKzAwNUU7YXNjaWljaXJjdW07Q0lSQ1VNRkxFWCBBQ0NFTlQKKzAwN0U7YXNjaWl0aWxkZTtUSUxERQorMDAyQTthc3RlcmlzaztBU1RFUklTSworMjIxNzthc3Rlcmlza21hdGg7QVNURVJJU0sgT1BFUkFUT1IKK0Y2RTk7YXN1cGVyaW9yO1NVUEVSU0NSSVBUIExBVElOIFNNQUxMIExFVFRFUiBBCiswMDQwO2F0O0NPTU1FUkNJQUwgQVQKKzAwRTM7YXRpbGRlO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggVElMREUKKzAwNjI7YjtMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA1QztiYWNrc2xhc2g7UkVWRVJTRSBTT0xJRFVTCiswMDdDO2JhcjtWRVJUSUNBTCBMSU5FCiswM0IyO2JldGE7R1JFRUsgU01BTEwgTEVUVEVSIEJFVEEKKzI1ODg7YmxvY2s7RlVMTCBCTE9DSworRjhGNDticmFjZWV4O0NVUkxZIEJSQUNLRVQgRVhURU5ERVIKKzAwN0I7YnJhY2VsZWZ0O0xFRlQgQ1VSTFkgQlJBQ0tFVAorRjhGMzticmFjZWxlZnRidDtMRUZUIENVUkxZIEJSQUNLRVQgQk9UVE9NCitGOEYyO2JyYWNlbGVmdG1pZDtMRUZUIENVUkxZIEJSQUNLRVQgTUlECitGOEYxO2JyYWNlbGVmdHRwO0xFRlQgQ1VSTFkgQlJBQ0tFVCBUT1AKKzAwN0Q7YnJhY2VyaWdodDtSSUdIVCBDVVJMWSBCUkFDS0VUCitGOEZFO2JyYWNlcmlnaHRidDtSSUdIVCBDVVJMWSBCUkFDS0VUIEJPVFRPTQorRjhGRDticmFjZXJpZ2h0bWlkO1JJR0hUIENVUkxZIEJSQUNLRVQgTUlECitGOEZDO2JyYWNlcmlnaHR0cDtSSUdIVCBDVVJMWSBCUkFDS0VUIFRPUAorMDA1QjticmFja2V0bGVmdDtMRUZUIFNRVUFSRSBCUkFDS0VUCitGOEYwO2JyYWNrZXRsZWZ0YnQ7TEVGVCBTUVVBUkUgQlJBQ0tFVCBCT1RUT00KK0Y4RUY7YnJhY2tldGxlZnRleDtMRUZUIFNRVUFSRSBCUkFDS0VUIEVYVEVOREVSCitGOEVFO2JyYWNrZXRsZWZ0dHA7TEVGVCBTUVVBUkUgQlJBQ0tFVCBUT1AKKzAwNUQ7YnJhY2tldHJpZ2h0O1JJR0hUIFNRVUFSRSBCUkFDS0VUCitGOEZCO2JyYWNrZXRyaWdodGJ0O1JJR0hUIFNRVUFSRSBCUkFDS0VUIEJPVFRPTQorRjhGQTticmFja2V0cmlnaHRleDtSSUdIVCBTUVVBUkUgQlJBQ0tFVCBFWFRFTkRFUgorRjhGOTticmFja2V0cmlnaHR0cDtSSUdIVCBTUVVBUkUgQlJBQ0tFVCBUT1AKKzAyRDg7YnJldmU7QlJFVkUKKzAwQTY7YnJva2VuYmFyO0JST0tFTiBCQVIKK0Y2RUE7YnN1cGVyaW9yO1NVUEVSU0NSSVBUIExBVElOIFNNQUxMIExFVFRFUiBCCisyMDIyO2J1bGxldDtCVUxMRVQKKzAwNjM7YztMQVRJTiBTTUFMTCBMRVRURVIgQworMDEwNztjYWN1dGU7TEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBBQ1VURQorMDJDNztjYXJvbjtDQVJPTgorMjFCNTtjYXJyaWFnZXJldHVybjtET1dOV0FSRFMgQVJST1cgV0lUSCBDT1JORVIgTEVGVFdBUkRTCiswMTBEO2NjYXJvbjtMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENBUk9OCiswMEU3O2NjZWRpbGxhO0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQorMDEwOTtjY2lyY3VtZmxleDtMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENJUkNVTUZMRVgKKzAxMEI7Y2RvdGFjY2VudDtMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIERPVCBBQk9WRQorMDBCODtjZWRpbGxhO0NFRElMTEEKKzAwQTI7Y2VudDtDRU5UIFNJR04KK0Y2REY7Y2VudGluZmVyaW9yO1NVQlNDUklQVCBDRU5UIFNJR04KK0Y3QTI7Y2VudG9sZHN0eWxlO09MRFNUWUxFIENFTlQgU0lHTgorRjZFMDtjZW50c3VwZXJpb3I7U1VQRVJTQ1JJUFQgQ0VOVCBTSUdOCiswM0M3O2NoaTtHUkVFSyBTTUFMTCBMRVRURVIgQ0hJCisyNUNCO2NpcmNsZTtXSElURSBDSVJDTEUKKzIyOTc7Y2lyY2xlbXVsdGlwbHk7Q0lSQ0xFRCBUSU1FUworMjI5NTtjaXJjbGVwbHVzO0NJUkNMRUQgUExVUworMDJDNjtjaXJjdW1mbGV4O01PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVAorMjY2MztjbHViO0JMQUNLIENMVUIgU1VJVAorMDAzQTtjb2xvbjtDT0xPTgorMjBBMTtjb2xvbm1vbmV0YXJ5O0NPTE9OIFNJR04KKzAwMkM7Y29tbWE7Q09NTUEKK0Y2QzM7Y29tbWFhY2NlbnQ7Q09NTUEgQkVMT1cKK0Y2RTE7Y29tbWFpbmZlcmlvcjtTVUJTQ1JJUFQgQ09NTUEKK0Y2RTI7Y29tbWFzdXBlcmlvcjtTVVBFUlNDUklQVCBDT01NQQorMjI0NTtjb25ncnVlbnQ7QVBQUk9YSU1BVEVMWSBFUVVBTCBUTworMDBBOTtjb3B5cmlnaHQ7Q09QWVJJR0hUIFNJR04KK0Y4RTk7Y29weXJpZ2h0c2FucztDT1BZUklHSFQgU0lHTiBTQU5TIFNFUklGCitGNkQ5O2NvcHlyaWdodHNlcmlmO0NPUFlSSUdIVCBTSUdOIFNFUklGCiswMEE0O2N1cnJlbmN5O0NVUlJFTkNZIFNJR04KK0Y2RDE7Y3lyQnJldmU7Q0FQSVRBTCBDWVJJTExJQyBCUkVWRQorRjZEMjtjeXJGbGV4O0NBUElUQUwgQ1lSSUxMSUMgQ0lSQ1VNRkxFWAorRjZENDtjeXJicmV2ZTtDWVJJTExJQyBCUkVWRQorRjZENTtjeXJmbGV4O0NZUklMTElDIENJUkNVTUZMRVgKKzAwNjQ7ZDtMQVRJTiBTTUFMTCBMRVRURVIgRAorMjAyMDtkYWdnZXI7REFHR0VSCisyMDIxO2RhZ2dlcmRibDtET1VCTEUgREFHR0VSCitGNkQzO2RibEdyYXZlO0NBUElUQUwgRE9VQkxFIEdSQVZFIEFDQ0VOVAorRjZENjtkYmxncmF2ZTtET1VCTEUgR1JBVkUgQUNDRU5UCiswMTBGO2RjYXJvbjtMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIENBUk9OCiswMTExO2Rjcm9hdDtMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIFNUUk9LRQorMDBCMDtkZWdyZWU7REVHUkVFIFNJR04KKzAzQjQ7ZGVsdGE7R1JFRUsgU01BTEwgTEVUVEVSIERFTFRBCisyNjY2O2RpYW1vbmQ7QkxBQ0sgRElBTU9ORCBTVUlUCiswMEE4O2RpZXJlc2lzO0RJQUVSRVNJUworRjZENztkaWVyZXNpc2FjdXRlO0RJQUVSRVNJUyBBQ1VURSBBQ0NFTlQKK0Y2RDg7ZGllcmVzaXNncmF2ZTtESUFFUkVTSVMgR1JBVkUgQUNDRU5UCiswMzg1O2RpZXJlc2lzdG9ub3M7R1JFRUsgRElBTFlUSUtBIFRPTk9TCiswMEY3O2RpdmlkZTtESVZJU0lPTiBTSUdOCisyNTkzO2Rrc2hhZGU7REFSSyBTSEFERQorMjU4NDtkbmJsb2NrO0xPV0VSIEhBTEYgQkxPQ0sKKzAwMjQ7ZG9sbGFyO0RPTExBUiBTSUdOCitGNkUzO2RvbGxhcmluZmVyaW9yO1NVQlNDUklQVCBET0xMQVIgU0lHTgorRjcyNDtkb2xsYXJvbGRzdHlsZTtPTERTVFlMRSBET0xMQVIgU0lHTgorRjZFNDtkb2xsYXJzdXBlcmlvcjtTVVBFUlNDUklQVCBET0xMQVIgU0lHTgorMjBBQjtkb25nO0RPTkcgU0lHTgorMDJEOTtkb3RhY2NlbnQ7RE9UIEFCT1ZFCiswMzIzO2RvdGJlbG93Y29tYjtDT01CSU5JTkcgRE9UIEJFTE9XCiswMTMxO2RvdGxlc3NpO0xBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEkKK0Y2QkU7ZG90bGVzc2o7TEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSgorMjJDNTtkb3RtYXRoO0RPVCBPUEVSQVRPUgorRjZFQjtkc3VwZXJpb3I7U1VQRVJTQ1JJUFQgTEFUSU4gU01BTEwgTEVUVEVSIEQKKzAwNjU7ZTtMQVRJTiBTTUFMTCBMRVRURVIgRQorMDBFOTtlYWN1dGU7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQorMDExNTtlYnJldmU7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBCUkVWRQorMDExQjtlY2Fyb247TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDQVJPTgorMDBFQTtlY2lyY3VtZmxleDtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKKzAwRUI7ZWRpZXJlc2lzO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiswMTE3O2Vkb3RhY2NlbnQ7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1QgQUJPVkUKKzAwRTg7ZWdyYXZlO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKKzAwMzg7ZWlnaHQ7RElHSVQgRUlHSFQKKzIwODg7ZWlnaHRpbmZlcmlvcjtTVUJTQ1JJUFQgRUlHSFQKK0Y3Mzg7ZWlnaHRvbGRzdHlsZTtPTERTVFlMRSBESUdJVCBFSUdIVAorMjA3ODtlaWdodHN1cGVyaW9yO1NVUEVSU0NSSVBUIEVJR0hUCisyMjA4O2VsZW1lbnQ7RUxFTUVOVCBPRgorMjAyNjtlbGxpcHNpcztIT1JJWk9OVEFMIEVMTElQU0lTCiswMTEzO2VtYWNyb247TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBNQUNST04KKzIwMTQ7ZW1kYXNoO0VNIERBU0gKKzIyMDU7ZW1wdHlzZXQ7RU1QVFkgU0VUCisyMDEzO2VuZGFzaDtFTiBEQVNICiswMTRCO2VuZztMQVRJTiBTTUFMTCBMRVRURVIgRU5HCiswMTE5O2VvZ29uZWs7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBPR09ORUsKKzAzQjU7ZXBzaWxvbjtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTgorMDNBRDtlcHNpbG9udG9ub3M7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBUT05PUworMDAzRDtlcXVhbDtFUVVBTFMgU0lHTgorMjI2MTtlcXVpdmFsZW5jZTtJREVOVElDQUwgVE8KKzIxMkU7ZXN0aW1hdGVkO0VTVElNQVRFRCBTWU1CT0wKK0Y2RUM7ZXN1cGVyaW9yO1NVUEVSU0NSSVBUIExBVElOIFNNQUxMIExFVFRFUiBFCiswM0I3O2V0YTtHUkVFSyBTTUFMTCBMRVRURVIgRVRBCiswM0FFO2V0YXRvbm9zO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBUT05PUworMDBGMDtldGg7TEFUSU4gU01BTEwgTEVUVEVSIEVUSAorMDAyMTtleGNsYW07RVhDTEFNQVRJT04gTUFSSworMjAzQztleGNsYW1kYmw7RE9VQkxFIEVYQ0xBTUFUSU9OIE1BUksKKzAwQTE7ZXhjbGFtZG93bjtJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCitGN0ExO2V4Y2xhbWRvd25zbWFsbDtTTUFMTCBDQVBJVEFMIElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKK0Y3MjE7ZXhjbGFtc21hbGw7U01BTEwgQ0FQSVRBTCBFWENMQU1BVElPTiBNQVJLCisyMjAzO2V4aXN0ZW50aWFsO1RIRVJFIEVYSVNUUworMDA2NjtmO0xBVElOIFNNQUxMIExFVFRFUiBGCisyNjQwO2ZlbWFsZTtGRU1BTEUgU0lHTgorRkIwMDtmZjtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGRgorRkIwMztmZmk7TEFUSU4gU01BTEwgTElHQVRVUkUgRkZJCitGQjA0O2ZmbDtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGRkwKK0ZCMDE7Zmk7TEFUSU4gU01BTEwgTElHQVRVUkUgRkkKKzIwMTI7ZmlndXJlZGFzaDtGSUdVUkUgREFTSAorMjVBMDtmaWxsZWRib3g7QkxBQ0sgU1FVQVJFCisyNUFDO2ZpbGxlZHJlY3Q7QkxBQ0sgUkVDVEFOR0xFCiswMDM1O2ZpdmU7RElHSVQgRklWRQorMjE1RDtmaXZlZWlnaHRocztWVUxHQVIgRlJBQ1RJT04gRklWRSBFSUdIVEhTCisyMDg1O2ZpdmVpbmZlcmlvcjtTVUJTQ1JJUFQgRklWRQorRjczNTtmaXZlb2xkc3R5bGU7T0xEU1RZTEUgRElHSVQgRklWRQorMjA3NTtmaXZlc3VwZXJpb3I7U1VQRVJTQ1JJUFQgRklWRQorRkIwMjtmbDtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGTAorMDE5MjtmbG9yaW47TEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCiswMDM0O2ZvdXI7RElHSVQgRk9VUgorMjA4NDtmb3VyaW5mZXJpb3I7U1VCU0NSSVBUIEZPVVIKK0Y3MzQ7Zm91cm9sZHN0eWxlO09MRFNUWUxFIERJR0lUIEZPVVIKKzIwNzQ7Zm91cnN1cGVyaW9yO1NVUEVSU0NSSVBUIEZPVVIKKzIwNDQ7ZnJhY3Rpb247RlJBQ1RJT04gU0xBU0gKKzIyMTU7ZnJhY3Rpb247RElWSVNJT04gU0xBU0g7RHVwbGljYXRlCisyMEEzO2ZyYW5jO0ZSRU5DSCBGUkFOQyBTSUdOCiswMDY3O2c7TEFUSU4gU01BTEwgTEVUVEVSIEcKKzAzQjM7Z2FtbWE7R1JFRUsgU01BTEwgTEVUVEVSIEdBTU1BCiswMTFGO2dicmV2ZTtMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIEJSRVZFCiswMUU3O2djYXJvbjtMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIENBUk9OCiswMTFEO2djaXJjdW1mbGV4O0xBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQ0lSQ1VNRkxFWAorMDEyMztnY29tbWFhY2NlbnQ7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBDRURJTExBCiswMTIxO2dkb3RhY2NlbnQ7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBET1QgQUJPVkUKKzAwREY7Z2VybWFuZGJscztMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUworMjIwNztncmFkaWVudDtOQUJMQQorMDA2MDtncmF2ZTtHUkFWRSBBQ0NFTlQKKzAzMDA7Z3JhdmVjb21iO0NPTUJJTklORyBHUkFWRSBBQ0NFTlQKKzAwM0U7Z3JlYXRlcjtHUkVBVEVSLVRIQU4gU0lHTgorMjI2NTtncmVhdGVyZXF1YWw7R1JFQVRFUi1USEFOIE9SIEVRVUFMIFRPCiswMEFCO2d1aWxsZW1vdGxlZnQ7TEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKzAwQkI7Z3VpbGxlbW90cmlnaHQ7UklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisyMDM5O2d1aWxzaW5nbGxlZnQ7U0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKKzIwM0E7Z3VpbHNpbmdscmlnaHQ7U0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCiswMDY4O2g7TEFUSU4gU01BTEwgTEVUVEVSIEgKKzAxMjc7aGJhcjtMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIFNUUk9LRQorMDEyNTtoY2lyY3VtZmxleDtMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIENJUkNVTUZMRVgKKzI2NjU7aGVhcnQ7QkxBQ0sgSEVBUlQgU1VJVAorMDMwOTtob29rYWJvdmVjb21iO0NPTUJJTklORyBIT09LIEFCT1ZFCisyMzAyO2hvdXNlO0hPVVNFCiswMkREO2h1bmdhcnVtbGF1dDtET1VCTEUgQUNVVEUgQUNDRU5UCiswMDJEO2h5cGhlbjtIWVBIRU4tTUlOVVMKKzAwQUQ7aHlwaGVuO1NPRlQgSFlQSEVOO0R1cGxpY2F0ZQorRjZFNTtoeXBoZW5pbmZlcmlvcjtTVUJTQ1JJUFQgSFlQSEVOLU1JTlVTCitGNkU2O2h5cGhlbnN1cGVyaW9yO1NVUEVSU0NSSVBUIEhZUEhFTi1NSU5VUworMDA2OTtpO0xBVElOIFNNQUxMIExFVFRFUiBJCiswMEVEO2lhY3V0ZTtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCiswMTJEO2licmV2ZTtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEJSRVZFCiswMEVFO2ljaXJjdW1mbGV4O0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAorMDBFRjtpZGllcmVzaXM7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKKzAwRUM7aWdyYXZlO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKKzAxMzM7aWo7TEFUSU4gU01BTEwgTElHQVRVUkUgSUoKKzAxMkI7aW1hY3JvbjtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgorMjIxRTtpbmZpbml0eTtJTkZJTklUWQorMjIyQjtpbnRlZ3JhbDtJTlRFR1JBTAorMjMyMTtpbnRlZ3JhbGJ0O0JPVFRPTSBIQUxGIElOVEVHUkFMCitGOEY1O2ludGVncmFsZXg7SU5URUdSQUwgRVhURU5ERVIKKzIzMjA7aW50ZWdyYWx0cDtUT1AgSEFMRiBJTlRFR1JBTAorMjIyOTtpbnRlcnNlY3Rpb247SU5URVJTRUNUSU9OCisyNUQ4O2ludmJ1bGxldDtJTlZFUlNFIEJVTExFVAorMjVEOTtpbnZjaXJjbGU7SU5WRVJTRSBXSElURSBDSVJDTEUKKzI2M0I7aW52c21pbGVmYWNlO0JMQUNLIFNNSUxJTkcgRkFDRQorMDEyRjtpb2dvbmVrO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggT0dPTkVLCiswM0I5O2lvdGE7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEKKzAzQ0E7aW90YWRpZXJlc2lzO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBCiswMzkwO2lvdGFkaWVyZXNpc3Rvbm9zO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBUT05PUworMDNBRjtpb3RhdG9ub3M7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBUT05PUworRjZFRDtpc3VwZXJpb3I7U1VQRVJTQ1JJUFQgTEFUSU4gU01BTEwgTEVUVEVSIEkKKzAxMjk7aXRpbGRlO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggVElMREUKKzAwNkE7ajtMQVRJTiBTTUFMTCBMRVRURVIgSgorMDEzNTtqY2lyY3VtZmxleDtMQVRJTiBTTUFMTCBMRVRURVIgSiBXSVRIIENJUkNVTUZMRVgKKzAwNkI7aztMQVRJTiBTTUFMTCBMRVRURVIgSworMDNCQTtrYXBwYTtHUkVFSyBTTUFMTCBMRVRURVIgS0FQUEEKKzAxMzc7a2NvbW1hYWNjZW50O0xBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggQ0VESUxMQQorMDEzODtrZ3JlZW5sYW5kaWM7TEFUSU4gU01BTEwgTEVUVEVSIEtSQQorMDA2QztsO0xBVElOIFNNQUxMIExFVFRFUiBMCiswMTNBO2xhY3V0ZTtMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIEFDVVRFCiswM0JCO2xhbWJkYTtHUkVFSyBTTUFMTCBMRVRURVIgTEFNREEKKzAxM0U7bGNhcm9uO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0FST04KKzAxM0M7bGNvbW1hYWNjZW50O0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0VESUxMQQorMDE0MDtsZG90O0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggTUlERExFIERPVAorMDAzQztsZXNzO0xFU1MtVEhBTiBTSUdOCisyMjY0O2xlc3NlcXVhbDtMRVNTLVRIQU4gT1IgRVFVQUwgVE8KKzI1OEM7bGZibG9jaztMRUZUIEhBTEYgQkxPQ0sKKzIwQTQ7bGlyYTtMSVJBIFNJR04KK0Y2QzA7bGw7TEFUSU4gU01BTEwgTEVUVEVSIExMCisyMjI3O2xvZ2ljYWxhbmQ7TE9HSUNBTCBBTkQKKzAwQUM7bG9naWNhbG5vdDtOT1QgU0lHTgorMjIyODtsb2dpY2Fsb3I7TE9HSUNBTCBPUgorMDE3Rjtsb25ncztMQVRJTiBTTUFMTCBMRVRURVIgTE9ORyBTCisyNUNBO2xvemVuZ2U7TE9aRU5HRQorMDE0Mjtsc2xhc2g7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBTVFJPS0UKK0Y2RUU7bHN1cGVyaW9yO1NVUEVSU0NSSVBUIExBVElOIFNNQUxMIExFVFRFUiBMCisyNTkxO2x0c2hhZGU7TElHSFQgU0hBREUKKzAwNkQ7bTtMQVRJTiBTTUFMTCBMRVRURVIgTQorMDBBRjttYWNyb247TUFDUk9OCiswMkM5O21hY3JvbjtNT0RJRklFUiBMRVRURVIgTUFDUk9OO0R1cGxpY2F0ZQorMjY0MjttYWxlO01BTEUgU0lHTgorMjIxMjttaW51cztNSU5VUyBTSUdOCisyMDMyO21pbnV0ZTtQUklNRQorRjZFRjttc3VwZXJpb3I7U1VQRVJTQ1JJUFQgTEFUSU4gU01BTEwgTEVUVEVSIE0KKzAwQjU7bXU7TUlDUk8gU0lHTgorMDNCQzttdTtHUkVFSyBTTUFMTCBMRVRURVIgTVU7RHVwbGljYXRlCiswMEQ3O211bHRpcGx5O01VTFRJUExJQ0FUSU9OIFNJR04KKzI2NkE7bXVzaWNhbG5vdGU7RUlHSFRIIE5PVEUKKzI2NkI7bXVzaWNhbG5vdGVkYmw7QkVBTUVEIEVJR0hUSCBOT1RFUworMDA2RTtuO0xBVElOIFNNQUxMIExFVFRFUiBOCiswMTQ0O25hY3V0ZTtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIEFDVVRFCiswMTQ5O25hcG9zdHJvcGhlO0xBVElOIFNNQUxMIExFVFRFUiBOIFBSRUNFREVEIEJZIEFQT1NUUk9QSEUKKzAxNDg7bmNhcm9uO0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0FST04KKzAxNDY7bmNvbW1hYWNjZW50O0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0VESUxMQQorMDAzOTtuaW5lO0RJR0lUIE5JTkUKKzIwODk7bmluZWluZmVyaW9yO1NVQlNDUklQVCBOSU5FCitGNzM5O25pbmVvbGRzdHlsZTtPTERTVFlMRSBESUdJVCBOSU5FCisyMDc5O25pbmVzdXBlcmlvcjtTVVBFUlNDUklQVCBOSU5FCisyMjA5O25vdGVsZW1lbnQ7Tk9UIEFOIEVMRU1FTlQgT0YKKzIyNjA7bm90ZXF1YWw7Tk9UIEVRVUFMIFRPCisyMjg0O25vdHN1YnNldDtOT1QgQSBTVUJTRVQgT0YKKzIwN0Y7bnN1cGVyaW9yO1NVUEVSU0NSSVBUIExBVElOIFNNQUxMIExFVFRFUiBOCiswMEYxO250aWxkZTtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCiswM0JEO251O0dSRUVLIFNNQUxMIExFVFRFUiBOVQorMDAyMztudW1iZXJzaWduO05VTUJFUiBTSUdOCiswMDZGO287TEFUSU4gU01BTEwgTEVUVEVSIE8KKzAwRjM7b2FjdXRlO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKKzAxNEY7b2JyZXZlO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQlJFVkUKKzAwRjQ7b2NpcmN1bWZsZXg7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiswMEY2O29kaWVyZXNpcztMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUworMDE1MztvZTtMQVRJTiBTTUFMTCBMSUdBVFVSRSBPRQorMDJEQjtvZ29uZWs7T0dPTkVLCiswMEYyO29ncmF2ZTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFCiswMUExO29ob3JuO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9STgorMDE1MTtvaHVuZ2FydW1sYXV0O0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9VQkxFIEFDVVRFCiswMTREO29tYWNyb247TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST04KKzAzQzk7b21lZ2E7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBCiswM0Q2O29tZWdhMTtHUkVFSyBQSSBTWU1CT0wKKzAzQ0U7b21lZ2F0b25vcztHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBUT05PUworMDNCRjtvbWljcm9uO0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OCiswM0NDO29taWNyb250b25vcztHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIFRPTk9TCiswMDMxO29uZTtESUdJVCBPTkUKKzIwMjQ7b25lZG90ZW5sZWFkZXI7T05FIERPVCBMRUFERVIKKzIxNUI7b25lZWlnaHRoO1ZVTEdBUiBGUkFDVElPTiBPTkUgRUlHSFRICitGNkRDO29uZWZpdHRlZDtQUk9QT1JUSU9OQUwgRElHSVQgT05FCiswMEJEO29uZWhhbGY7VlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCisyMDgxO29uZWluZmVyaW9yO1NVQlNDUklQVCBPTkUKK0Y3MzE7b25lb2xkc3R5bGU7T0xEU1RZTEUgRElHSVQgT05FCiswMEJDO29uZXF1YXJ0ZXI7VlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCiswMEI5O29uZXN1cGVyaW9yO1NVUEVSU0NSSVBUIE9ORQorMjE1MztvbmV0aGlyZDtWVUxHQVIgRlJBQ1RJT04gT05FIFRISVJECisyNUU2O29wZW5idWxsZXQ7V0hJVEUgQlVMTEVUCiswMEFBO29yZGZlbWluaW5lO0ZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCiswMEJBO29yZG1hc2N1bGluZTtNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKKzIyMUY7b3J0aG9nb25hbDtSSUdIVCBBTkdMRQorMDBGODtvc2xhc2g7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKKzAxRkY7b3NsYXNoYWN1dGU7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UgQU5EIEFDVVRFCitGNkYwO29zdXBlcmlvcjtTVVBFUlNDUklQVCBMQVRJTiBTTUFMTCBMRVRURVIgTworMDBGNTtvdGlsZGU7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERQorMDA3MDtwO0xBVElOIFNNQUxMIExFVFRFUiBQCiswMEI2O3BhcmFncmFwaDtQSUxDUk9XIFNJR04KKzAwMjg7cGFyZW5sZWZ0O0xFRlQgUEFSRU5USEVTSVMKK0Y4RUQ7cGFyZW5sZWZ0YnQ7TEVGVCBQQVJFTiBCT1RUT00KK0Y4RUM7cGFyZW5sZWZ0ZXg7TEVGVCBQQVJFTiBFWFRFTkRFUgorMjA4RDtwYXJlbmxlZnRpbmZlcmlvcjtTVUJTQ1JJUFQgTEVGVCBQQVJFTlRIRVNJUworMjA3RDtwYXJlbmxlZnRzdXBlcmlvcjtTVVBFUlNDUklQVCBMRUZUIFBBUkVOVEhFU0lTCitGOEVCO3BhcmVubGVmdHRwO0xFRlQgUEFSRU4gVE9QCiswMDI5O3BhcmVucmlnaHQ7UklHSFQgUEFSRU5USEVTSVMKK0Y4Rjg7cGFyZW5yaWdodGJ0O1JJR0hUIFBBUkVOIEJPVFRPTQorRjhGNztwYXJlbnJpZ2h0ZXg7UklHSFQgUEFSRU4gRVhURU5ERVIKKzIwOEU7cGFyZW5yaWdodGluZmVyaW9yO1NVQlNDUklQVCBSSUdIVCBQQVJFTlRIRVNJUworMjA3RTtwYXJlbnJpZ2h0c3VwZXJpb3I7U1VQRVJTQ1JJUFQgUklHSFQgUEFSRU5USEVTSVMKK0Y4RjY7cGFyZW5yaWdodHRwO1JJR0hUIFBBUkVOIFRPUAorMjIwMjtwYXJ0aWFsZGlmZjtQQVJUSUFMIERJRkZFUkVOVElBTAorMDAyNTtwZXJjZW50O1BFUkNFTlQgU0lHTgorMDAyRTtwZXJpb2Q7RlVMTCBTVE9QCiswMEI3O3BlcmlvZGNlbnRlcmVkO01JRERMRSBET1QKKzIyMTk7cGVyaW9kY2VudGVyZWQ7QlVMTEVUIE9QRVJBVE9SO0R1cGxpY2F0ZQorRjZFNztwZXJpb2RpbmZlcmlvcjtTVUJTQ1JJUFQgRlVMTCBTVE9QCitGNkU4O3BlcmlvZHN1cGVyaW9yO1NVUEVSU0NSSVBUIEZVTEwgU1RPUAorMjJBNTtwZXJwZW5kaWN1bGFyO1VQIFRBQ0sKKzIwMzA7cGVydGhvdXNhbmQ7UEVSIE1JTExFIFNJR04KKzIwQTc7cGVzZXRhO1BFU0VUQSBTSUdOCiswM0M2O3BoaTtHUkVFSyBTTUFMTCBMRVRURVIgUEhJCiswM0Q1O3BoaTE7R1JFRUsgUEhJIFNZTUJPTAorMDNDMDtwaTtHUkVFSyBTTUFMTCBMRVRURVIgUEkKKzAwMkI7cGx1cztQTFVTIFNJR04KKzAwQjE7cGx1c21pbnVzO1BMVVMtTUlOVVMgU0lHTgorMjExRTtwcmVzY3JpcHRpb247UFJFU0NSSVBUSU9OIFRBS0UKKzIyMEY7cHJvZHVjdDtOLUFSWSBQUk9EVUNUCisyMjgyO3Byb3BlcnN1YnNldDtTVUJTRVQgT0YKKzIyODM7cHJvcGVyc3VwZXJzZXQ7U1VQRVJTRVQgT0YKKzIyMUQ7cHJvcG9ydGlvbmFsO1BST1BPUlRJT05BTCBUTworMDNDODtwc2k7R1JFRUsgU01BTEwgTEVUVEVSIFBTSQorMDA3MTtxO0xBVElOIFNNQUxMIExFVFRFUiBRCiswMDNGO3F1ZXN0aW9uO1FVRVNUSU9OIE1BUksKKzAwQkY7cXVlc3Rpb25kb3duO0lOVkVSVEVEIFFVRVNUSU9OIE1BUksKK0Y3QkY7cXVlc3Rpb25kb3duc21hbGw7U01BTEwgQ0FQSVRBTCBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCitGNzNGO3F1ZXN0aW9uc21hbGw7U01BTEwgQ0FQSVRBTCBRVUVTVElPTiBNQVJLCiswMDIyO3F1b3RlZGJsO1FVT1RBVElPTiBNQVJLCisyMDFFO3F1b3RlZGJsYmFzZTtET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKKzIwMUM7cXVvdGVkYmxsZWZ0O0xFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisyMDFEO3F1b3RlZGJscmlnaHQ7UklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisyMDE4O3F1b3RlbGVmdDtMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworMjAxQjtxdW90ZXJldmVyc2VkO1NJTkdMRSBISUdILVJFVkVSU0VELTkgUVVPVEFUSU9OIE1BUksKKzIwMTk7cXVvdGVyaWdodDtSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKzIwMUE7cXVvdGVzaW5nbGJhc2U7U0lOR0xFIExPVy05IFFVT1RBVElPTiBNQVJLCiswMDI3O3F1b3Rlc2luZ2xlO0FQT1NUUk9QSEUKKzAwNzI7cjtMQVRJTiBTTUFMTCBMRVRURVIgUgorMDE1NTtyYWN1dGU7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBBQ1VURQorMjIxQTtyYWRpY2FsO1NRVUFSRSBST09UCitGOEU1O3JhZGljYWxleDtSQURJQ0FMIEVYVEVOREVSCiswMTU5O3JjYXJvbjtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENBUk9OCiswMTU3O3Jjb21tYWFjY2VudDtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENFRElMTEEKKzIyODY7cmVmbGV4c3Vic2V0O1NVQlNFVCBPRiBPUiBFUVVBTCBUTworMjI4NztyZWZsZXhzdXBlcnNldDtTVVBFUlNFVCBPRiBPUiBFUVVBTCBUTworMDBBRTtyZWdpc3RlcmVkO1JFR0lTVEVSRUQgU0lHTgorRjhFODtyZWdpc3RlcnNhbnM7UkVHSVNURVJFRCBTSUdOIFNBTlMgU0VSSUYKK0Y2REE7cmVnaXN0ZXJzZXJpZjtSRUdJU1RFUkVEIFNJR04gU0VSSUYKKzIzMTA7cmV2bG9naWNhbG5vdDtSRVZFUlNFRCBOT1QgU0lHTgorMDNDMTtyaG87R1JFRUsgU01BTEwgTEVUVEVSIFJITworMDJEQTtyaW5nO1JJTkcgQUJPVkUKK0Y2RjE7cnN1cGVyaW9yO1NVUEVSU0NSSVBUIExBVElOIFNNQUxMIExFVFRFUiBSCisyNTkwO3J0YmxvY2s7UklHSFQgSEFMRiBCTE9DSworRjZERDtydXBpYWg7UlVQSUFIIFNJR04KKzAwNzM7cztMQVRJTiBTTUFMTCBMRVRURVIgUworMDE1QjtzYWN1dGU7TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBBQ1VURQorMDE2MTtzY2Fyb247TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgorMDE1RjtzY2VkaWxsYTtMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENFRElMTEEKK0Y2QzI7c2NlZGlsbGE7TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDRURJTExBO0R1cGxpY2F0ZQorMDE1RDtzY2lyY3VtZmxleDtMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENJUkNVTUZMRVgKKzAyMTk7c2NvbW1hYWNjZW50O0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ09NTUEgQkVMT1cKKzIwMzM7c2Vjb25kO0RPVUJMRSBQUklNRQorMDBBNztzZWN0aW9uO1NFQ1RJT04gU0lHTgorMDAzQjtzZW1pY29sb247U0VNSUNPTE9OCiswMDM3O3NldmVuO0RJR0lUIFNFVkVOCisyMTVFO3NldmVuZWlnaHRocztWVUxHQVIgRlJBQ1RJT04gU0VWRU4gRUlHSFRIUworMjA4NztzZXZlbmluZmVyaW9yO1NVQlNDUklQVCBTRVZFTgorRjczNztzZXZlbm9sZHN0eWxlO09MRFNUWUxFIERJR0lUIFNFVkVOCisyMDc3O3NldmVuc3VwZXJpb3I7U1VQRVJTQ1JJUFQgU0VWRU4KKzI1OTI7c2hhZGU7TUVESVVNIFNIQURFCiswM0MzO3NpZ21hO0dSRUVLIFNNQUxMIExFVFRFUiBTSUdNQQorMDNDMjtzaWdtYTE7R1JFRUsgU01BTEwgTEVUVEVSIEZJTkFMIFNJR01BCisyMjNDO3NpbWlsYXI7VElMREUgT1BFUkFUT1IKKzAwMzY7c2l4O0RJR0lUIFNJWAorMjA4NjtzaXhpbmZlcmlvcjtTVUJTQ1JJUFQgU0lYCitGNzM2O3NpeG9sZHN0eWxlO09MRFNUWUxFIERJR0lUIFNJWAorMjA3NjtzaXhzdXBlcmlvcjtTVVBFUlNDUklQVCBTSVgKKzAwMkY7c2xhc2g7U09MSURVUworMjYzQTtzbWlsZWZhY2U7V0hJVEUgU01JTElORyBGQUNFCiswMDIwO3NwYWNlO1NQQUNFCiswMEEwO3NwYWNlO05PLUJSRUFLIFNQQUNFO0R1cGxpY2F0ZQorMjY2MDtzcGFkZTtCTEFDSyBTUEFERSBTVUlUCitGNkYyO3NzdXBlcmlvcjtTVVBFUlNDUklQVCBMQVRJTiBTTUFMTCBMRVRURVIgUworMDBBMztzdGVybGluZztQT1VORCBTSUdOCisyMjBCO3N1Y2h0aGF0O0NPTlRBSU5TIEFTIE1FTUJFUgorMjIxMTtzdW1tYXRpb247Ti1BUlkgU1VNTUFUSU9OCisyNjNDO3N1bjtXSElURSBTVU4gV0lUSCBSQVlTCiswMDc0O3Q7TEFUSU4gU01BTEwgTEVUVEVSIFQKKzAzQzQ7dGF1O0dSRUVLIFNNQUxMIExFVFRFUiBUQVUKKzAxNjc7dGJhcjtMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIFNUUk9LRQorMDE2NTt0Y2Fyb247TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBDQVJPTgorMDE2Mzt0Y29tbWFhY2NlbnQ7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBDRURJTExBCiswMjFCO3Rjb21tYWFjY2VudDtMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIENPTU1BIEJFTE9XO0R1cGxpY2F0ZQorMjIzNDt0aGVyZWZvcmU7VEhFUkVGT1JFCiswM0I4O3RoZXRhO0dSRUVLIFNNQUxMIExFVFRFUiBUSEVUQQorMDNEMTt0aGV0YTE7R1JFRUsgVEhFVEEgU1lNQk9MCiswMEZFO3Rob3JuO0xBVElOIFNNQUxMIExFVFRFUiBUSE9STgorMDAzMzt0aHJlZTtESUdJVCBUSFJFRQorMjE1Qzt0aHJlZWVpZ2h0aHM7VlVMR0FSIEZSQUNUSU9OIFRIUkVFIEVJR0hUSFMKKzIwODM7dGhyZWVpbmZlcmlvcjtTVUJTQ1JJUFQgVEhSRUUKK0Y3MzM7dGhyZWVvbGRzdHlsZTtPTERTVFlMRSBESUdJVCBUSFJFRQorMDBCRTt0aHJlZXF1YXJ0ZXJzO1ZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUworRjZERTt0aHJlZXF1YXJ0ZXJzZW1kYXNoO1RIUkVFIFFVQVJURVJTIEVNIERBU0gKKzAwQjM7dGhyZWVzdXBlcmlvcjtTVVBFUlNDUklQVCBUSFJFRQorMDJEQzt0aWxkZTtTTUFMTCBUSUxERQorMDMwMzt0aWxkZWNvbWI7Q09NQklOSU5HIFRJTERFCiswMzg0O3Rvbm9zO0dSRUVLIFRPTk9TCisyMTIyO3RyYWRlbWFyaztUUkFERSBNQVJLIFNJR04KK0Y4RUE7dHJhZGVtYXJrc2FucztUUkFERSBNQVJLIFNJR04gU0FOUyBTRVJJRgorRjZEQjt0cmFkZW1hcmtzZXJpZjtUUkFERSBNQVJLIFNJR04gU0VSSUYKKzI1QkM7dHJpYWdkbjtCTEFDSyBET1dOLVBPSU5USU5HIFRSSUFOR0xFCisyNUM0O3RyaWFnbGY7QkxBQ0sgTEVGVC1QT0lOVElORyBQT0lOVEVSCisyNUJBO3RyaWFncnQ7QkxBQ0sgUklHSFQtUE9JTlRJTkcgUE9JTlRFUgorMjVCMjt0cmlhZ3VwO0JMQUNLIFVQLVBPSU5USU5HIFRSSUFOR0xFCitGNkYzO3RzdXBlcmlvcjtTVVBFUlNDUklQVCBMQVRJTiBTTUFMTCBMRVRURVIgVAorMDAzMjt0d287RElHSVQgVFdPCisyMDI1O3R3b2RvdGVubGVhZGVyO1RXTyBET1QgTEVBREVSCisyMDgyO3R3b2luZmVyaW9yO1NVQlNDUklQVCBUV08KK0Y3MzI7dHdvb2xkc3R5bGU7T0xEU1RZTEUgRElHSVQgVFdPCiswMEIyO3R3b3N1cGVyaW9yO1NVUEVSU0NSSVBUIFRXTworMjE1NDt0d290aGlyZHM7VlVMR0FSIEZSQUNUSU9OIFRXTyBUSElSRFMKKzAwNzU7dTtMQVRJTiBTTUFMTCBMRVRURVIgVQorMDBGQTt1YWN1dGU7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQorMDE2RDt1YnJldmU7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBCUkVWRQorMDBGQjt1Y2lyY3VtZmxleDtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKKzAwRkM7dWRpZXJlc2lzO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiswMEY5O3VncmF2ZTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiswMUIwO3Vob3JuO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9STgorMDE3MTt1aHVuZ2FydW1sYXV0O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCiswMTZCO3VtYWNyb247TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04KKzAwNUY7dW5kZXJzY29yZTtMT1cgTElORQorMjAxNzt1bmRlcnNjb3JlZGJsO0RPVUJMRSBMT1cgTElORQorMjIyQTt1bmlvbjtVTklPTgorMjIwMDt1bml2ZXJzYWw7Rk9SIEFMTAorMDE3Mzt1b2dvbmVrO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggT0dPTkVLCisyNTgwO3VwYmxvY2s7VVBQRVIgSEFMRiBCTE9DSworMDNDNTt1cHNpbG9uO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OCiswM0NCO3Vwc2lsb25kaWVyZXNpcztHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQQorMDNCMDt1cHNpbG9uZGllcmVzaXN0b25vcztHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgVE9OT1MKKzAzQ0Q7dXBzaWxvbnRvbm9zO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggVE9OT1MKKzAxNkY7dXJpbmc7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCiswMTY5O3V0aWxkZTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIFRJTERFCiswMDc2O3Y7TEFUSU4gU01BTEwgTEVUVEVSIFYKKzAwNzc7dztMQVRJTiBTTUFMTCBMRVRURVIgVworMUU4Mzt3YWN1dGU7TEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBBQ1VURQorMDE3NTt3Y2lyY3VtZmxleDtMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIENJUkNVTUZMRVgKKzFFODU7d2RpZXJlc2lzO0xBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggRElBRVJFU0lTCisyMTE4O3dlaWVyc3RyYXNzO1NDUklQVCBDQVBJVEFMIFAKKzFFODE7d2dyYXZlO0xBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggR1JBVkUKKzAwNzg7eDtMQVRJTiBTTUFMTCBMRVRURVIgWAorMDNCRTt4aTtHUkVFSyBTTUFMTCBMRVRURVIgWEkKKzAwNzk7eTtMQVRJTiBTTUFMTCBMRVRURVIgWQorMDBGRDt5YWN1dGU7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQorMDE3Nzt5Y2lyY3VtZmxleDtMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIENJUkNVTUZMRVgKKzAwRkY7eWRpZXJlc2lzO0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCiswMEE1O3llbjtZRU4gU0lHTgorMUVGMzt5Z3JhdmU7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBHUkFWRQorMDA3QTt6O0xBVElOIFNNQUxMIExFVFRFUiBaCiswMTdBO3phY3V0ZTtMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIEFDVVRFCiswMTdFO3pjYXJvbjtMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OCiswMTdDO3pkb3RhY2NlbnQ7TEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKKzAwMzA7emVybztESUdJVCBaRVJPCisyMDgwO3plcm9pbmZlcmlvcjtTVUJTQ1JJUFQgWkVSTworRjczMDt6ZXJvb2xkc3R5bGU7T0xEU1RZTEUgRElHSVQgWkVSTworMjA3MDt6ZXJvc3VwZXJpb3I7U1VQRVJTQ1JJUFQgWkVSTworMDNCNjt6ZXRhO0dSRUVLIFNNQUxMIExFVFRFUiBaRVRBCisiIiIKKworCitBR0xFcnJvciA9ICJBR0xFcnJvciIKKworQUdMMlVWID0ge30KK1VWMkFHTCA9IHt9CisKK2RlZiBfYnVpbGRkaWN0cygpOgorCWltcG9ydCByZQorCWltcG9ydCBzdHJpbmcKKwkKKwlsaW5lcyA9IHN0cmluZy5zcGxpdChfYWdsVGV4dCwgIlxuIikKKwkKKwlwYXJzZUFHTF9SRSA9IHJlLmNvbXBpbGUoIihbMC05QS1GXXs0fSk7KFtBLVphLXpfMC05Ll0rKTsuKj8kIikKKwkKKwlmb3IgbGluZSBpbiBsaW5lczoKKwkJaWYgbm90IGxpbmU6CisJCQlicmVhaworCQlpZiBsaW5lWzoxXSA9PSAnIyc6CisJCQljb250aW51ZQorCQltID0gcGFyc2VBR0xfUkUubWF0Y2gobGluZSkKKwkJaWYgbm90IG06CisJCQlyYWlzZSBBR0xFcnJvciwgInN5bnRheCBlcnJvciBpbiBnbHlwaGxpc3QudHh0OiAlcyIgJSByZXByKGxpbmVbOjIwXSkKKwkJdW5pY29kZSA9IG0uZ3JvdXAoMSkKKwkJYXNzZXJ0IGxlbih1bmljb2RlKSA9PSA0CisJCXVuaWNvZGUgPSBzdHJpbmcuYXRvaSh1bmljb2RlLCAxNikKKwkJZ2x5cGhOYW1lID0gbS5ncm91cCgyKQorCQlpZiBBR0wyVVYuaGFzX2tleShnbHlwaE5hbWUpOgorCQkJYXNzZXJ0IHR5cGUoQUdMMlVWW2dseXBoTmFtZV0pID09IHR5cGUoMCkKKwkJCUFHTDJVVltnbHlwaE5hbWVdID0gQUdMMlVWW2dseXBoTmFtZV0sIHVuaWNvZGUKKwkJZWxzZToKKwkJCUFHTDJVVltnbHlwaE5hbWVdID0gdW5pY29kZQorCQlVVjJBR0xbdW5pY29kZV0gPSBnbHlwaE5hbWUKKwkKK19idWlsZGRpY3RzKCkKKwpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy9jZmZMaWIucHkgYi9MaWIvZm9udFRvb2xzL2NmZkxpYi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjQ3NmMzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2ZvbnRUb29scy9jZmZMaWIucHkKQEAgLTAsMCArMSw0NTkgQEAKKyIiImNmZkxpYi5weSAtLSByZWFkL3dyaXRlIHRvb2xzIGZvciBBZG9iZSBDRkYgZm9udHMuIiIiCisKK19fdmVyc2lvbl9fID0gIjEuMGIxIgorX19hdXRob3JfXyA9ICJqdnIiCisKK2ltcG9ydCBzdHJ1Y3QsIHNzdHJ1Y3QKK2ltcG9ydCBzdHJpbmcKK2ltcG9ydCB0eXBlcworaW1wb3J0IHBzQ2hhclN0cmluZ3MKKworCitjZmZIZWFkZXJGb3JtYXQgPSAiIiIKKwltYWpvcjogICBCCisJbWlub3I6ICAgQgorCWhkclNpemU6IEIKKwlvZmZTaXplOiBCCisiIiIKKworY2xhc3MgQ0ZGRm9udFNldDoKKwkKKwlkZWYgX19pbml0X18oc2VsZik6CisJCXNlbGYuZm9udHMgPSB7fQorCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgZGF0YSk6CisJCXNzdHJ1Y3QudW5wYWNrKGNmZkhlYWRlckZvcm1hdCwgZGF0YVs6NF0sIHNlbGYpCisJCWFzc2VydCBzZWxmLm1ham9yID09IDEgYW5kIHNlbGYubWlub3IgPT0gMCwgXAorCQkJCSJ1bmtub3duIENGRiBmb3JtYXQ6ICVkLiVkIiAlIChzZWxmLm1ham9yLCBzZWxmLm1pbm9yKQorCQlyZXN0ZGF0YSA9IGRhdGFbc2VsZi5oZHJTaXplOl0KKwkJCisJCXNlbGYuZm9udE5hbWVzLCByZXN0ZGF0YSA9IHJlYWRJTkRFWChyZXN0ZGF0YSkKKwkJdG9wRGljdHMsIHJlc3RkYXRhID0gcmVhZElOREVYKHJlc3RkYXRhKQorCQlzdHJpbmdzLCByZXN0ZGF0YSA9IHJlYWRJTkRFWChyZXN0ZGF0YSkKKwkJc3RyaW5ncyA9IEluZGV4ZWRTdHJpbmdzKHN0cmluZ3MpCisJCWdsb2JhbFN1YnJzLCByZXN0ZGF0YSA9IHJlYWRJTkRFWChyZXN0ZGF0YSkKKwkJc2VsZi5HbG9iYWxTdWJycyA9IG1hcChwc0NoYXJTdHJpbmdzLlQyQ2hhclN0cmluZywgZ2xvYmFsU3VicnMpCisJCQorCQlmb3IgaSBpbiByYW5nZShsZW4odG9wRGljdHMpKToKKwkJCWZvbnQgPSBzZWxmLmZvbnRzW3NlbGYuZm9udE5hbWVzW2ldXSA9IENGRkZvbnQoKQorCQkJZm9udC5HbG9iYWxTdWJycyA9IHNlbGYuR2xvYmFsU3VicnMgICMgSG1tLgorCQkJZm9udC5kZWNvbXBpbGUoZGF0YSwgdG9wRGljdHNbaV0sIHN0cmluZ3MsIHNlbGYpICAjIG1heWJlIG9ubHkgJ29uIGRlbWFuZCc/CisJCQkKKwkKKwlkZWYgY29tcGlsZShzZWxmKToKKwkJc3RyaW5ncyA9IEluZGV4ZWRTdHJpbmdzKCkKKwkJWFhYWAorCQorCWRlZiB0b1hNTChzZWxmLCB4bWxXcml0ZXIsIHByb2dyZXNzPU5vbmUpOgorCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCWZvciBmb250TmFtZSBpbiBzZWxmLmZvbnROYW1lczoKKwkJCXhtbFdyaXRlci5iZWdpbnRhZygiQ0ZGRm9udCIsIG5hbWU9Zm9udE5hbWUpCisJCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCQlmb250ID0gc2VsZi5mb250c1tmb250TmFtZV0KKwkJCWZvbnQudG9YTUwoeG1sV3JpdGVyLCBwcm9ncmVzcykKKwkJCXhtbFdyaXRlci5lbmR0YWcoIkNGRkZvbnQiKQorCQkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCXhtbFdyaXRlci5iZWdpbnRhZygiR2xvYmFsU3VicnMiKQorCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCWZvciBpIGluIHJhbmdlKGxlbihzZWxmLkdsb2JhbFN1YnJzKSk6CisJCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCQl4bWxXcml0ZXIuYmVnaW50YWcoIkNoYXJTdHJpbmciLCBpZD1pKQorCQkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQkJc2VsZi5HbG9iYWxTdWJyc1tpXS50b1hNTCh4bWxXcml0ZXIpCisJCQl4bWxXcml0ZXIuZW5kdGFnKCJDaGFyU3RyaW5nIikKKwkJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQl4bWxXcml0ZXIuZW5kdGFnKCJHbG9iYWxTdWJycyIpCisJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCkpOgorCQl4eHgKKworCitjbGFzcyBJbmRleGVkU3RyaW5nczoKKwkKKwlkZWYgX19pbml0X18oc2VsZiwgc3RyaW5ncz1Ob25lKToKKwkJaWYgc3RyaW5ncyBpcyBOb25lOgorCQkJc3RyaW5ncyA9IFtdCisJCXNlbGYuc3RyaW5ncyA9IHN0cmluZ3MKKwkKKwlkZWYgX19nZXRpdGVtX18oc2VsZiwgU0lEKToKKwkJaWYgU0lEIDwgY2ZmU3RhbmRhcmRTdHJpbmdDb3VudDoKKwkJCXJldHVybiBjZmZTdGFuZGFyZFN0cmluZ3NbU0lEXQorCQllbHNlOgorCQkJcmV0dXJuIHNlbGYuc3RyaW5nc1tTSUQgLSBjZmZTdGFuZGFyZFN0cmluZ0NvdW50XQorCQorCWRlZiBnZXRTSUQoc2VsZiwgcyk6CisJCWlmIG5vdCBoYXNhdHRyKHNlbGYsICJzdHJpbmdNYXBwaW5nIik6CisJCQlzZWxmLmJ1aWxkU3RyaW5nTWFwcGluZygpCisJCWlmIGNmZlN0YW5kYXJkU3RyaW5nTWFwcGluZy5oYXNfa2V5KHMpOgorCQkJU0lEID0gY2ZmU3RhbmRhcmRTdHJpbmdNYXBwaW5nW3NdCisJCWlmIHNlbGYuc3RyaW5nTWFwcGluZy5oYXNfa2V5KHMpOgorCQkJU0lEID0gc2VsZi5zdHJpbmdNYXBwaW5nW3NdCisJCWVsc2U6CisJCQlTSUQgPSBsZW4oc2VsZi5zdHJpbmdzKSArIGNmZlN0YW5kYXJkU3RyaW5nQ291bnQKKwkJCXNlbGYuc3RyaW5ncy5hcHBlbmQocykKKwkJCXNlbGYuc3RyaW5nTWFwcGluZ1tzXSA9IFNJRAorCQlyZXR1cm4gU0lECisJCisJZGVmIGdldFN0cmluZ3Moc2VsZik6CisJCXJldHVybiBzZWxmLnN0cmluZ3MKKwkKKwlkZWYgYnVpbGRTdHJpbmdNYXBwaW5nKHNlbGYpOgorCQlzZWxmLnN0cmluZ01hcHBpbmcgPSB7fQorCQlmb3IgaW5kZXggaW4gcmFuZ2UobGVuKHNlbGYuc3RyaW5ncykpOgorCQkJc2VsZi5zdHJpbmdNYXBwaW5nW3NlbGYuc3RyaW5nc1tpbmRleF1dID0gaW5kZXggKyBjZmZTdGFuZGFyZFN0cmluZ0NvdW50CisKKworY2xhc3MgQ0ZGRm9udDoKKwkKKwlkZWZhdWx0cyA9IHBzQ2hhclN0cmluZ3MudG9wRGljdERlZmF1bHRzCisJCisJZGVmIF9faW5pdF9fKHNlbGYpOgorCQlwYXNzCisJCisJZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgorCQlpZiBub3Qgc2VsZi5kZWZhdWx0cy5oYXNfa2V5KGF0dHIpOgorCQkJcmFpc2UgQXR0cmlidXRlRXJyb3IsIGF0dHIKKwkJcmV0dXJuIHNlbGYuZGVmYXVsdHNbYXR0cl0KKwkKKwlkZWYgZnJvbURpY3Qoc2VsZiwgZGljdCk6CisJCXNlbGYuX19kaWN0X18udXBkYXRlKGRpY3QpCisJCisJZGVmIGRlY29tcGlsZShzZWxmLCBkYXRhLCB0b3BEaWN0RGF0YSwgc3RyaW5ncywgZm9udFNldCk6CisJCXRvcCA9IHBzQ2hhclN0cmluZ3MuVG9wRGljdERlY29tcGlsZXIoc3RyaW5ncykKKwkJdG9wLmRlY29tcGlsZSh0b3BEaWN0RGF0YSkKKwkJc2VsZi5mcm9tRGljdCh0b3AuZ2V0RGljdCgpKQorCQkKKwkJIyBnZXQgcHJpdmF0ZSBkaWN0CisJCXNpemUsIG9mZnNldCA9IHNlbGYuUHJpdmF0ZQorCQkjcHJpbnQgIllZWSBQcml2YXRlIChzaXplLCBvZmZzZXQpOiIsIHNpemUsIG9mZnNldAorCQlwcml2YXRlRGF0YSA9IGRhdGFbb2Zmc2V0Om9mZnNldCtzaXplXQorCQlzZWxmLlByaXZhdGUgPSBQcml2YXRlRGljdCgpCisJCXNlbGYuUHJpdmF0ZS5kZWNvbXBpbGUoZGF0YVtvZmZzZXQ6XSwgcHJpdmF0ZURhdGEsIHN0cmluZ3MpCisJCQorCQkjIGdldCByYXcgY2hhcnN0cmluZ3MKKwkJI3ByaW50ICJZWVlZIENoYXJTdHJpbmdzIG9mZnNldDoiLCBzZWxmLkNoYXJTdHJpbmdzCisJCXJhd0NoYXJTdHJpbmdzLCByZXN0ZGF0YSA9IHJlYWRJTkRFWChkYXRhW3NlbGYuQ2hhclN0cmluZ3M6XSkKKwkJbkdseXBocyA9IGxlbihyYXdDaGFyU3RyaW5ncykKKwkJCisJCSMgZ2V0IGNoYXJzZXQgKG9yIHJhdGhlcjogZ2V0IGdseXBoTmFtZXMpCisJCWNoYXJzZXRPZmZzZXQgPSBzZWxmLmNoYXJzZXQKKwkJaWYgY2hhcnNldE9mZnNldCA9PSAwOgorCQkJeHh4ICAjIHN0YW5kYXJkIGNoYXJzZXQKKwkJZWxzZToKKwkJCSNwcmludCAiWVlZWVkgY2hhcnNldE9mZnNldDoiLCBjaGFyc2V0T2Zmc2V0CisJCQlmb3JtYXQgPSBvcmQoZGF0YVtjaGFyc2V0T2Zmc2V0XSkKKwkJCWlmIGZvcm1hdCA9PSAwOgorCQkJCXh4eAorCQkJZWxpZiBmb3JtYXQgPT0gMToKKwkJCQljaGFyU2V0ID0gcGFyc2VDaGFyc2V0Rm9ybWF0MShuR2x5cGhzLCAKKwkJCQkJCWRhdGFbY2hhcnNldE9mZnNldCsxOl0sIHN0cmluZ3MpCisJCQllbGlmIGZvcm1hdCA9PSAyOgorCQkJCWNoYXJTZXQgPSBwYXJzZUNoYXJzZXRGb3JtYXQyKG5HbHlwaHMsIAorCQkJCQkJZGF0YVtjaGFyc2V0T2Zmc2V0KzE6XSwgc3RyaW5ncykKKwkJCWVsaWYgZm9ybWF0ID09IDM6CisJCQkJeHh4CisJCQllbHNlOgorCQkJCXh4eAorCQlzZWxmLmNoYXJzZXQgPSBjaGFyU2V0CisJCQorCQlhc3NlcnQgbGVuKGNoYXJTZXQpID09IG5HbHlwaHMKKwkJc2VsZi5DaGFyU3RyaW5ncyA9IGNoYXJTdHJpbmdzID0ge30KKwkJaWYgc2VsZi5DaGFyc3RyaW5nVHlwZSA9PSAyOgorCQkJIyBUeXBlIDIgQ2hhclN0cmluZ3MKKwkJCWNoYXJTdHJpbmdDbGFzcyA9IHBzQ2hhclN0cmluZ3MuVDJDaGFyU3RyaW5nCisJCWVsc2U6CisJCQkjIFR5cGUgMSBDaGFyU3RyaW5ncworCQkJY2hhclN0cmluZ0NsYXNzID0gcHNDaGFyU3RyaW5ncy5UMUNoYXJTdHJpbmcKKwkJZm9yIGkgaW4gcmFuZ2UobkdseXBocyk6CisJCQljaGFyU3RyaW5nc1tjaGFyU2V0W2ldXSA9IGNoYXJTdHJpbmdDbGFzcyhyYXdDaGFyU3RyaW5nc1tpXSkKKwkJYXNzZXJ0IGxlbihjaGFyU3RyaW5ncykgPT0gbkdseXBocworCQkKKwkJIyBYWFggRW5jb2RpbmchCisJCWVuY29kaW5nID0gc2VsZi5FbmNvZGluZworCQlpZiBlbmNvZGluZyBub3QgaW4gKDAsIDEpOgorCQkJIyBlbmNvZGluZyBpcyBhbiBfb2Zmc2V0XyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgJ2RhdGEnIHRvIGFuIGVuY29kaW5nIHN1YnRhYmxlCisJCQlYWFgKKwkJCXNlbGYuRW5jb2RpbmcgPSBlbmNvZGluZworCQorCWRlZiBnZXRHbHlwaE9yZGVyKHNlbGYpOgorCQlyZXR1cm4gc2VsZi5jaGFyc2V0CisJCisJZGVmIHNldEdseXBoT3JkZXIoc2VsZiwgZ2x5cGhPcmRlcik6CisJCXNlbGYuY2hhcnNldCA9IGdseXBoT3JkZXIKKwkKKwlkZWYgZGVjb21waWxlQWxsQ2hhclN0cmluZ3Moc2VsZik6CisJCWlmIHNlbGYuQ2hhcnN0cmluZ1R5cGUgPT0gMjoKKwkJCSMgVHlwZSAyIENoYXJTdHJpbmdzCisJCQlkZWNvbXBpbGVyID0gcHNDaGFyU3RyaW5ncy5TaW1wbGVUMkRlY29tcGlsZXIoc2VsZi5Qcml2YXRlLlN1YnJzLCBzZWxmLkdsb2JhbFN1YnJzKQorCQkJZm9yIGNoYXJTdHJpbmcgaW4gc2VsZi5DaGFyU3RyaW5ncy52YWx1ZXMoKToKKwkJCQlpZiBjaGFyU3RyaW5nLm5lZWRzRGVjb21waWxhdGlvbigpOgorCQkJCQlkZWNvbXBpbGVyLnJlc2V0KCkKKwkJCQkJZGVjb21waWxlci5leGVjdXRlKGNoYXJTdHJpbmcpCisJCWVsc2U6CisJCQkjIFR5cGUgMSBDaGFyU3RyaW5ncworCQkJZm9yIGNoYXJTdHJpbmcgaW4gc2VsZi5DaGFyU3RyaW5ncy52YWx1ZXMoKToKKwkJCQljaGFyU3RyaW5nLmRlY29tcGlsZSgpCisJCisJZGVmIHRvWE1MKHNlbGYsIHhtbFdyaXRlciwgcHJvZ3Jlc3M9Tm9uZSk6CisJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkJIyBmaXJzdCBkdW1wIHRoZSBzaW1wbGUgdmFsdWVzCisJCXNlbGYudG9YTUxTaW1wbGVWYWx1ZXMoeG1sV3JpdGVyKQorCQkKKwkJIyBkdW1wIGNoYXJzZXQKKwkJIyBYWFgKKwkJCisJCSMgZGVjb21waWxlIGFsbCBjaGFyc3RyaW5ncworCQlpZiBwcm9ncmVzczoKKwkJCXByb2dyZXNzLnNldGxhYmVsKCJEZWNvbXBpbGluZyBDaGFyU3RyaW5ncy4uLiIpCisJCXNlbGYuZGVjb21waWxlQWxsQ2hhclN0cmluZ3MoKQorCQkKKwkJIyBkdW1wIHByaXZhdGUgZGljdAorCQl4bWxXcml0ZXIuYmVnaW50YWcoIlByaXZhdGUiKQorCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCXNlbGYuUHJpdmF0ZS50b1hNTCh4bWxXcml0ZXIpCisJCXhtbFdyaXRlci5lbmR0YWcoIlByaXZhdGUiKQorCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCQorCQlzZWxmLnRvWE1MQ2hhclN0cmluZ3MoeG1sV3JpdGVyLCBwcm9ncmVzcykKKwkKKwlkZWYgdG9YTUxTaW1wbGVWYWx1ZXMoc2VsZiwgeG1sV3JpdGVyKToKKwkJa2V5cyA9IHNlbGYuX19kaWN0X18ua2V5cygpCisJCWtleXMucmVtb3ZlKCJDaGFyU3RyaW5ncyIpCisJCWtleXMucmVtb3ZlKCJQcml2YXRlIikKKwkJa2V5cy5yZW1vdmUoImNoYXJzZXQiKQorCQlrZXlzLnJlbW92ZSgiR2xvYmFsU3VicnMiKQorCQlrZXlzLnNvcnQoKQorCQlmb3Iga2V5IGluIGtleXM6CisJCQl2YWx1ZSA9IGdldGF0dHIoc2VsZiwga2V5KQorCQkJaWYga2V5ID09ICJFbmNvZGluZyI6CisJCQkJaWYgdmFsdWUgPT0gMDoKKwkJCQkJIyBlbmNvZGluZyBpcyAoQWRvYmUpIFN0YW5kYXJkIEVuY29kaW5nCisJCQkJCXZhbHVlID0gIlN0YW5kYXJkRW5jb2RpbmciCisJCQkJZWxpZiB2YWx1ZSA9PSAxOgorCQkJCQkjIGVuY29kaW5nIGlzIEV4cGVydCBFbmNvZGluZworCQkJCQl2YWx1ZSA9ICJFeHBlcnRFbmNvZGluZyIKKwkJCWlmIHR5cGUodmFsdWUpID09IHR5cGVzLkxpc3RUeXBlOgorCQkJCXZhbHVlID0gc3RyaW5nLmpvaW4obWFwKHN0ciwgdmFsdWUpLCAiICIpCisJCQllbHNlOgorCQkJCXZhbHVlID0gc3RyKHZhbHVlKQorCQkJeG1sV3JpdGVyLmJlZ2ludGFnKGtleSkKKwkJCWlmIGhhc2F0dHIodmFsdWUsICJ0b1hNTCIpOgorCQkJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkJCQl2YWx1ZS50b1hNTCh4bWxXcml0ZXIpCisJCQkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQkJZWxzZToKKwkJCQl4bWxXcml0ZXIud3JpdGUodmFsdWUpCisJCQl4bWxXcml0ZXIuZW5kdGFnKGtleSkKKwkJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiB0b1hNTENoYXJTdHJpbmdzKHNlbGYsIHhtbFdyaXRlciwgcHJvZ3Jlc3M9Tm9uZSk6CisJCWNoYXJTdHJpbmdzID0gc2VsZi5DaGFyU3RyaW5ncworCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCXhtbFdyaXRlci5iZWdpbnRhZygiQ2hhclN0cmluZ3MiKQorCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCWdseXBoTmFtZXMgPSBjaGFyU3RyaW5ncy5rZXlzKCkKKwkJZ2x5cGhOYW1lcy5zb3J0KCkKKwkJZm9yIGdseXBoTmFtZSBpbiBnbHlwaE5hbWVzOgorCQkJaWYgcHJvZ3Jlc3M6CisJCQkJcHJvZ3Jlc3Muc2V0bGFiZWwoIkR1bXBpbmcgJ0NGRiAnIHRhYmxlLi4uICglcykiICUgZ2x5cGhOYW1lKQorCQkJCXByb2dyZXNzLmluY3JlbWVudCgpCisJCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCQljaGFyU3RyaW5nID0gY2hhclN0cmluZ3NbZ2x5cGhOYW1lXQorCQkJeG1sV3JpdGVyLmJlZ2ludGFnKCJDaGFyU3RyaW5nIiwgbmFtZT1nbHlwaE5hbWUpCisJCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCQljaGFyU3RyaW5nLnRvWE1MKHhtbFdyaXRlcikKKwkJCXhtbFdyaXRlci5lbmR0YWcoIkNoYXJTdHJpbmciKQorCQkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCXhtbFdyaXRlci5lbmR0YWcoIkNoYXJTdHJpbmdzIikKKwkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCisKK2NsYXNzIFByaXZhdGVEaWN0OgorCQorCWRlZmF1bHRzID0gcHNDaGFyU3RyaW5ncy5wcml2YXRlRGljdERlZmF1bHRzCisJCisJZGVmIF9faW5pdF9fKHNlbGYpOgorCQlwYXNzCisJCisJZGVmIGRlY29tcGlsZShzZWxmLCBkYXRhLCBwcml2YXRlRGF0YSwgc3RyaW5ncyk6CisJCXAgPSBwc0NoYXJTdHJpbmdzLlByaXZhdGVEaWN0RGVjb21waWxlcihzdHJpbmdzKQorCQlwLmRlY29tcGlsZShwcml2YXRlRGF0YSkKKwkJc2VsZi5mcm9tRGljdChwLmdldERpY3QoKSkKKwkJCisJCSMgZ2V0IGxvY2FsIHN1YnJzCisJCSNwcmludCAiWVlZIFByaXZhdGUuU3VicnM6Iiwgc2VsZi5TdWJycworCQljaHVuayA9IGRhdGFbc2VsZi5TdWJyczpdCisJCWxvY2FsU3VicnMsIHJlc3RkYXRhID0gcmVhZElOREVYKGNodW5rKQorCQlzZWxmLlN1YnJzID0gbWFwKHBzQ2hhclN0cmluZ3MuVDJDaGFyU3RyaW5nLCBsb2NhbFN1YnJzKQorCQorCWRlZiB0b1hNTChzZWxmLCB4bWxXcml0ZXIpOgorCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCWtleXMgPSBzZWxmLl9fZGljdF9fLmtleXMoKQorCQlrZXlzLnJlbW92ZSgiU3VicnMiKQorCQlmb3Iga2V5IGluIGtleXM6CisJCQl2YWx1ZSA9IGdldGF0dHIoc2VsZiwga2V5KQorCQkJaWYgdHlwZSh2YWx1ZSkgPT0gdHlwZXMuTGlzdFR5cGU6CisJCQkJdmFsdWUgPSBzdHJpbmcuam9pbihtYXAoc3RyLCB2YWx1ZSksICIgIikKKwkJCWVsc2U6CisJCQkJdmFsdWUgPSBzdHIodmFsdWUpCisJCQl4bWxXcml0ZXIuYmVnaW50YWcoa2V5KQorCQkJeG1sV3JpdGVyLndyaXRlKHZhbHVlKQorCQkJeG1sV3JpdGVyLmVuZHRhZyhrZXkpCisJCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCSMgd3JpdGUgc3Vicm91dGluZXMKKwkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQl4bWxXcml0ZXIuYmVnaW50YWcoIlN1YnJzIikKKwkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQlmb3IgaSBpbiByYW5nZShsZW4oc2VsZi5TdWJycykpOgorCQkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQkJeG1sV3JpdGVyLmJlZ2ludGFnKCJDaGFyU3RyaW5nIiwgaWQ9aSkKKwkJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkJCXNlbGYuU3VicnNbaV0udG9YTUwoeG1sV3JpdGVyKQorCQkJeG1sV3JpdGVyLmVuZHRhZygiQ2hhclN0cmluZyIpCisJCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkJeG1sV3JpdGVyLmVuZHRhZygiU3VicnMiKQorCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkKKwlkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6CisJCWlmIG5vdCBzZWxmLmRlZmF1bHRzLmhhc19rZXkoYXR0cik6CisJCQlyYWlzZSBBdHRyaWJ1dGVFcnJvciwgYXR0cgorCQlyZXR1cm4gc2VsZi5kZWZhdWx0c1thdHRyXQorCQorCWRlZiBmcm9tRGljdChzZWxmLCBkaWN0KToKKwkJc2VsZi5fX2RpY3RfXy51cGRhdGUoZGljdCkKKworCitkZWYgcmVhZElOREVYKGRhdGEpOgorCWNvdW50LCA9IHN0cnVjdC51bnBhY2soIj5IIiwgZGF0YVs6Ml0pCisJY291bnQgPSBpbnQoY291bnQpCisJb2ZmU2l6ZSA9IG9yZChkYXRhWzJdKQorCWRhdGEgPSBkYXRhWzM6XQorCW9mZnNldHMgPSBbXQorCWZvciBpbmRleCBpbiByYW5nZShjb3VudCsxKToKKwkJY2h1bmsgPSBkYXRhW2luZGV4ICogb2ZmU2l6ZTogKGluZGV4KzEpICogb2ZmU2l6ZV0KKwkJY2h1bmsgPSAnXDAnICogKDQgLSBvZmZTaXplKSArIGNodW5rCisJCW9mZnNldCwgPSBzdHJ1Y3QudW5wYWNrKCI+TCIsIGNodW5rKQorCQlvZmZzZXQgPSBpbnQob2Zmc2V0KQorCQlvZmZzZXRzLmFwcGVuZChvZmZzZXQpCisJZGF0YSA9IGRhdGFbKGNvdW50KzEpICogb2ZmU2l6ZTpdCisJcHJldiA9IG9mZnNldHNbMF0KKwlzdHVmZiA9IFtdCisJZm9yIG5leHQgaW4gb2Zmc2V0c1sxOl06CisJCWNodW5rID0gZGF0YVtwcmV2LTE6bmV4dC0xXQorCQlhc3NlcnQgbGVuKGNodW5rKSA9PSBuZXh0IC0gcHJldgorCQlzdHVmZi5hcHBlbmQoY2h1bmspCisJCXByZXYgPSBuZXh0CisJZGF0YSA9IGRhdGFbbmV4dC0xOl0KKwlyZXR1cm4gc3R1ZmYsIGRhdGEKKworCitkZWYgcGFyc2VDaGFyc2V0Rm9ybWF0MShuR2x5cGhzLCBkYXRhLCBzdHJpbmdzKToKKwljaGFyU2V0ID0gWycubm90ZGVmJ10KKwljb3VudCA9IDEKKwl3aGlsZSBjb3VudCA8IG5HbHlwaHM6CisJCWZpcnN0ID0gaW50KHN0cnVjdC51bnBhY2soIj5IIiwgZGF0YVs6Ml0pWzBdKQorCQluTGVmdCA9IG9yZChkYXRhWzJdKQorCQlkYXRhID0gZGF0YVszOl0KKwkJZm9yIFNJRCBpbiByYW5nZShmaXJzdCwgZmlyc3QrbkxlZnQrMSk6CisJCQljaGFyU2V0LmFwcGVuZChzdHJpbmdzW1NJRF0pCisJCWNvdW50ID0gY291bnQgKyBuTGVmdCArIDEKKwlyZXR1cm4gY2hhclNldAorCisKK2RlZiBwYXJzZUNoYXJzZXRGb3JtYXQyKG5HbHlwaHMsIGRhdGEsIHN0cmluZ3MpOgorCWNoYXJTZXQgPSBbJy5ub3RkZWYnXQorCWNvdW50ID0gMQorCXdoaWxlIGNvdW50IDwgbkdseXBoczoKKwkJZmlyc3QgPSBpbnQoc3RydWN0LnVucGFjaygiPkgiLCBkYXRhWzoyXSlbMF0pCisJCW5MZWZ0ID0gaW50KHN0cnVjdC51bnBhY2soIj5IIiwgZGF0YVsyOjRdKVswXSkKKwkJZGF0YSA9IGRhdGFbNDpdCisJCWZvciBTSUQgaW4gcmFuZ2UoZmlyc3QsIGZpcnN0K25MZWZ0KzEpOgorCQkJY2hhclNldC5hcHBlbmQoc3RyaW5nc1tTSURdKQorCQljb3VudCA9IGNvdW50ICsgbkxlZnQgKyAxCisJcmV0dXJuIGNoYXJTZXQKKworCisjIFRoZSAzOTEgU3RhbmRhcmQgU3RyaW5ncyBhcyB1c2VkIGluIHRoZSBDRkYgZm9ybWF0LgorIyBmcm9tIEFkb2JlIFRlY2huaWNhbCBOb25lICM1MTc2LCB2ZXJzaW9uIDEuMCwgMTggTWFyY2ggMTk5OAorCitjZmZTdGFuZGFyZFN0cmluZ3MgPSBbJy5ub3RkZWYnLCAnc3BhY2UnLCAnZXhjbGFtJywgJ3F1b3RlZGJsJywgJ251bWJlcnNpZ24nLCAKKwkJJ2RvbGxhcicsICdwZXJjZW50JywgJ2FtcGVyc2FuZCcsICdxdW90ZXJpZ2h0JywgJ3BhcmVubGVmdCcsICdwYXJlbnJpZ2h0JywgCisJCSdhc3RlcmlzaycsICdwbHVzJywgJ2NvbW1hJywgJ2h5cGhlbicsICdwZXJpb2QnLCAnc2xhc2gnLCAnemVybycsICdvbmUnLCAKKwkJJ3R3bycsICd0aHJlZScsICdmb3VyJywgJ2ZpdmUnLCAnc2l4JywgJ3NldmVuJywgJ2VpZ2h0JywgJ25pbmUnLCAnY29sb24nLCAKKwkJJ3NlbWljb2xvbicsICdsZXNzJywgJ2VxdWFsJywgJ2dyZWF0ZXInLCAncXVlc3Rpb24nLCAnYXQnLCAnQScsICdCJywgJ0MnLCAKKwkJJ0QnLCAnRScsICdGJywgJ0cnLCAnSCcsICdJJywgJ0onLCAnSycsICdMJywgJ00nLCAnTicsICdPJywgJ1AnLCAnUScsICdSJywgCisJCSdTJywgJ1QnLCAnVScsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onLCAnYnJhY2tldGxlZnQnLCAnYmFja3NsYXNoJywgCisJCSdicmFja2V0cmlnaHQnLCAnYXNjaWljaXJjdW0nLCAndW5kZXJzY29yZScsICdxdW90ZWxlZnQnLCAnYScsICdiJywgJ2MnLCAKKwkJJ2QnLCAnZScsICdmJywgJ2cnLCAnaCcsICdpJywgJ2onLCAnaycsICdsJywgJ20nLCAnbicsICdvJywgJ3AnLCAncScsICdyJywgCisJCSdzJywgJ3QnLCAndScsICd2JywgJ3cnLCAneCcsICd5JywgJ3onLCAnYnJhY2VsZWZ0JywgJ2JhcicsICdicmFjZXJpZ2h0JywgCisJCSdhc2NpaXRpbGRlJywgJ2V4Y2xhbWRvd24nLCAnY2VudCcsICdzdGVybGluZycsICdmcmFjdGlvbicsICd5ZW4nLCAnZmxvcmluJywgCisJCSdzZWN0aW9uJywgJ2N1cnJlbmN5JywgJ3F1b3Rlc2luZ2xlJywgJ3F1b3RlZGJsbGVmdCcsICdndWlsbGVtb3RsZWZ0JywgCisJCSdndWlsc2luZ2xsZWZ0JywgJ2d1aWxzaW5nbHJpZ2h0JywgJ2ZpJywgJ2ZsJywgJ2VuZGFzaCcsICdkYWdnZXInLCAKKwkJJ2RhZ2dlcmRibCcsICdwZXJpb2RjZW50ZXJlZCcsICdwYXJhZ3JhcGgnLCAnYnVsbGV0JywgJ3F1b3Rlc2luZ2xiYXNlJywgCisJCSdxdW90ZWRibGJhc2UnLCAncXVvdGVkYmxyaWdodCcsICdndWlsbGVtb3RyaWdodCcsICdlbGxpcHNpcycsICdwZXJ0aG91c2FuZCcsIAorCQkncXVlc3Rpb25kb3duJywgJ2dyYXZlJywgJ2FjdXRlJywgJ2NpcmN1bWZsZXgnLCAndGlsZGUnLCAnbWFjcm9uJywgJ2JyZXZlJywgCisJCSdkb3RhY2NlbnQnLCAnZGllcmVzaXMnLCAncmluZycsICdjZWRpbGxhJywgJ2h1bmdhcnVtbGF1dCcsICdvZ29uZWsnLCAnY2Fyb24nLCAKKwkJJ2VtZGFzaCcsICdBRScsICdvcmRmZW1pbmluZScsICdMc2xhc2gnLCAnT3NsYXNoJywgJ09FJywgJ29yZG1hc2N1bGluZScsICdhZScsIAorCQknZG90bGVzc2knLCAnbHNsYXNoJywgJ29zbGFzaCcsICdvZScsICdnZXJtYW5kYmxzJywgJ29uZXN1cGVyaW9yJywgCisJCSdsb2dpY2Fsbm90JywgJ211JywgJ3RyYWRlbWFyaycsICdFdGgnLCAnb25laGFsZicsICdwbHVzbWludXMnLCAnVGhvcm4nLCAKKwkJJ29uZXF1YXJ0ZXInLCAnZGl2aWRlJywgJ2Jyb2tlbmJhcicsICdkZWdyZWUnLCAndGhvcm4nLCAndGhyZWVxdWFydGVycycsIAorCQkndHdvc3VwZXJpb3InLCAncmVnaXN0ZXJlZCcsICdtaW51cycsICdldGgnLCAnbXVsdGlwbHknLCAndGhyZWVzdXBlcmlvcicsIAorCQknY29weXJpZ2h0JywgJ0FhY3V0ZScsICdBY2lyY3VtZmxleCcsICdBZGllcmVzaXMnLCAnQWdyYXZlJywgJ0FyaW5nJywgCisJCSdBdGlsZGUnLCAnQ2NlZGlsbGEnLCAnRWFjdXRlJywgJ0VjaXJjdW1mbGV4JywgJ0VkaWVyZXNpcycsICdFZ3JhdmUnLCAKKwkJJ0lhY3V0ZScsICdJY2lyY3VtZmxleCcsICdJZGllcmVzaXMnLCAnSWdyYXZlJywgJ050aWxkZScsICdPYWN1dGUnLCAKKwkJJ09jaXJjdW1mbGV4JywgJ09kaWVyZXNpcycsICdPZ3JhdmUnLCAnT3RpbGRlJywgJ1NjYXJvbicsICdVYWN1dGUnLCAKKwkJJ1VjaXJjdW1mbGV4JywgJ1VkaWVyZXNpcycsICdVZ3JhdmUnLCAnWWFjdXRlJywgJ1lkaWVyZXNpcycsICdaY2Fyb24nLCAKKwkJJ2FhY3V0ZScsICdhY2lyY3VtZmxleCcsICdhZGllcmVzaXMnLCAnYWdyYXZlJywgJ2FyaW5nJywgJ2F0aWxkZScsICdjY2VkaWxsYScsIAorCQknZWFjdXRlJywgJ2VjaXJjdW1mbGV4JywgJ2VkaWVyZXNpcycsICdlZ3JhdmUnLCAnaWFjdXRlJywgJ2ljaXJjdW1mbGV4JywgCisJCSdpZGllcmVzaXMnLCAnaWdyYXZlJywgJ250aWxkZScsICdvYWN1dGUnLCAnb2NpcmN1bWZsZXgnLCAnb2RpZXJlc2lzJywgCisJCSdvZ3JhdmUnLCAnb3RpbGRlJywgJ3NjYXJvbicsICd1YWN1dGUnLCAndWNpcmN1bWZsZXgnLCAndWRpZXJlc2lzJywgJ3VncmF2ZScsIAorCQkneWFjdXRlJywgJ3lkaWVyZXNpcycsICd6Y2Fyb24nLCAnZXhjbGFtc21hbGwnLCAnSHVuZ2FydW1sYXV0c21hbGwnLCAKKwkJJ2RvbGxhcm9sZHN0eWxlJywgJ2RvbGxhcnN1cGVyaW9yJywgJ2FtcGVyc2FuZHNtYWxsJywgJ0FjdXRlc21hbGwnLCAKKwkJJ3BhcmVubGVmdHN1cGVyaW9yJywgJ3BhcmVucmlnaHRzdXBlcmlvcicsICd0d29kb3RlbmxlYWRlcicsICdvbmVkb3RlbmxlYWRlcicsIAorCQknemVyb29sZHN0eWxlJywgJ29uZW9sZHN0eWxlJywgJ3R3b29sZHN0eWxlJywgJ3RocmVlb2xkc3R5bGUnLCAnZm91cm9sZHN0eWxlJywgCisJCSdmaXZlb2xkc3R5bGUnLCAnc2l4b2xkc3R5bGUnLCAnc2V2ZW5vbGRzdHlsZScsICdlaWdodG9sZHN0eWxlJywgCisJCSduaW5lb2xkc3R5bGUnLCAnY29tbWFzdXBlcmlvcicsICd0aHJlZXF1YXJ0ZXJzZW1kYXNoJywgJ3BlcmlvZHN1cGVyaW9yJywgCisJCSdxdWVzdGlvbnNtYWxsJywgJ2FzdXBlcmlvcicsICdic3VwZXJpb3InLCAnY2VudHN1cGVyaW9yJywgJ2RzdXBlcmlvcicsIAorCQknZXN1cGVyaW9yJywgJ2lzdXBlcmlvcicsICdsc3VwZXJpb3InLCAnbXN1cGVyaW9yJywgJ25zdXBlcmlvcicsICdvc3VwZXJpb3InLCAKKwkJJ3JzdXBlcmlvcicsICdzc3VwZXJpb3InLCAndHN1cGVyaW9yJywgJ2ZmJywgJ2ZmaScsICdmZmwnLCAncGFyZW5sZWZ0aW5mZXJpb3InLCAKKwkJJ3BhcmVucmlnaHRpbmZlcmlvcicsICdDaXJjdW1mbGV4c21hbGwnLCAnaHlwaGVuc3VwZXJpb3InLCAnR3JhdmVzbWFsbCcsIAorCQknQXNtYWxsJywgJ0JzbWFsbCcsICdDc21hbGwnLCAnRHNtYWxsJywgJ0VzbWFsbCcsICdGc21hbGwnLCAnR3NtYWxsJywgJ0hzbWFsbCcsIAorCQknSXNtYWxsJywgJ0pzbWFsbCcsICdLc21hbGwnLCAnTHNtYWxsJywgJ01zbWFsbCcsICdOc21hbGwnLCAnT3NtYWxsJywgJ1BzbWFsbCcsIAorCQknUXNtYWxsJywgJ1JzbWFsbCcsICdTc21hbGwnLCAnVHNtYWxsJywgJ1VzbWFsbCcsICdWc21hbGwnLCAnV3NtYWxsJywgJ1hzbWFsbCcsIAorCQknWXNtYWxsJywgJ1pzbWFsbCcsICdjb2xvbm1vbmV0YXJ5JywgJ29uZWZpdHRlZCcsICdydXBpYWgnLCAnVGlsZGVzbWFsbCcsIAorCQknZXhjbGFtZG93bnNtYWxsJywgJ2NlbnRvbGRzdHlsZScsICdMc2xhc2hzbWFsbCcsICdTY2Fyb25zbWFsbCcsICdaY2Fyb25zbWFsbCcsIAorCQknRGllcmVzaXNzbWFsbCcsICdCcmV2ZXNtYWxsJywgJ0Nhcm9uc21hbGwnLCAnRG90YWNjZW50c21hbGwnLCAnTWFjcm9uc21hbGwnLCAKKwkJJ2ZpZ3VyZWRhc2gnLCAnaHlwaGVuaW5mZXJpb3InLCAnT2dvbmVrc21hbGwnLCAnUmluZ3NtYWxsJywgJ0NlZGlsbGFzbWFsbCcsIAorCQkncXVlc3Rpb25kb3duc21hbGwnLCAnb25lZWlnaHRoJywgJ3RocmVlZWlnaHRocycsICdmaXZlZWlnaHRocycsICdzZXZlbmVpZ2h0aHMnLCAKKwkJJ29uZXRoaXJkJywgJ3R3b3RoaXJkcycsICd6ZXJvc3VwZXJpb3InLCAnZm91cnN1cGVyaW9yJywgJ2ZpdmVzdXBlcmlvcicsIAorCQknc2l4c3VwZXJpb3InLCAnc2V2ZW5zdXBlcmlvcicsICdlaWdodHN1cGVyaW9yJywgJ25pbmVzdXBlcmlvcicsICd6ZXJvaW5mZXJpb3InLCAKKwkJJ29uZWluZmVyaW9yJywgJ3R3b2luZmVyaW9yJywgJ3RocmVlaW5mZXJpb3InLCAnZm91cmluZmVyaW9yJywgJ2ZpdmVpbmZlcmlvcicsIAorCQknc2l4aW5mZXJpb3InLCAnc2V2ZW5pbmZlcmlvcicsICdlaWdodGluZmVyaW9yJywgJ25pbmVpbmZlcmlvcicsICdjZW50aW5mZXJpb3InLCAKKwkJJ2RvbGxhcmluZmVyaW9yJywgJ3BlcmlvZGluZmVyaW9yJywgJ2NvbW1haW5mZXJpb3InLCAnQWdyYXZlc21hbGwnLCAKKwkJJ0FhY3V0ZXNtYWxsJywgJ0FjaXJjdW1mbGV4c21hbGwnLCAnQXRpbGRlc21hbGwnLCAnQWRpZXJlc2lzc21hbGwnLCAnQXJpbmdzbWFsbCcsIAorCQknQUVzbWFsbCcsICdDY2VkaWxsYXNtYWxsJywgJ0VncmF2ZXNtYWxsJywgJ0VhY3V0ZXNtYWxsJywgJ0VjaXJjdW1mbGV4c21hbGwnLCAKKwkJJ0VkaWVyZXNpc3NtYWxsJywgJ0lncmF2ZXNtYWxsJywgJ0lhY3V0ZXNtYWxsJywgJ0ljaXJjdW1mbGV4c21hbGwnLCAKKwkJJ0lkaWVyZXNpc3NtYWxsJywgJ0V0aHNtYWxsJywgJ050aWxkZXNtYWxsJywgJ09ncmF2ZXNtYWxsJywgJ09hY3V0ZXNtYWxsJywgCisJCSdPY2lyY3VtZmxleHNtYWxsJywgJ090aWxkZXNtYWxsJywgJ09kaWVyZXNpc3NtYWxsJywgJ09Fc21hbGwnLCAnT3NsYXNoc21hbGwnLCAKKwkJJ1VncmF2ZXNtYWxsJywgJ1VhY3V0ZXNtYWxsJywgJ1VjaXJjdW1mbGV4c21hbGwnLCAnVWRpZXJlc2lzc21hbGwnLCAKKwkJJ1lhY3V0ZXNtYWxsJywgJ1Rob3Juc21hbGwnLCAnWWRpZXJlc2lzc21hbGwnLCAnMDAxLjAwMCcsICcwMDEuMDAxJywgJzAwMS4wMDInLCAKKwkJJzAwMS4wMDMnLCAnQmxhY2snLCAnQm9sZCcsICdCb29rJywgJ0xpZ2h0JywgJ01lZGl1bScsICdSZWd1bGFyJywgJ1JvbWFuJywgCisJCSdTZW1pYm9sZCcKK10KKworY2ZmU3RhbmRhcmRTdHJpbmdDb3VudCA9IDM5MQorYXNzZXJ0IGxlbihjZmZTdGFuZGFyZFN0cmluZ3MpID09IGNmZlN0YW5kYXJkU3RyaW5nQ291bnQKKyMgYnVpbGQgcmV2ZXJzZSBtYXBwaW5nCitjZmZTdGFuZGFyZFN0cmluZ01hcHBpbmcgPSB7fQorZm9yIF9pIGluIHJhbmdlKGNmZlN0YW5kYXJkU3RyaW5nQ291bnQpOgorCWNmZlN0YW5kYXJkU3RyaW5nTWFwcGluZ1tjZmZTdGFuZGFyZFN0cmluZ3NbX2ldXSA9IF9pCisKKwpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy9mb25kTGliLnB5IGIvTGliL2ZvbnRUb29scy9mb25kTGliLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NDY4Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZm9udFRvb2xzL2ZvbmRMaWIucHkKQEAgLTAsMCArMSw1NTMgQEAKK2ltcG9ydCBvcworaW1wb3J0IFJlcworaW1wb3J0IHN0cnVjdCwgc3N0cnVjdAoraW1wb3J0IHN0cmluZworCitfX3ZlcnNpb25fXyA9ICIxLjBiMiIKK19fYXV0aG9yX18gPSAianZyIgorCitlcnJvciA9ICJmb25kTGliLmVycm9yIgorCitERUJVRyA9IDAKKworaGVhZGVyZm9ybWF0ID0gIiIiCisJZmZGbGFnczoJaAorCWZmRmFtSUQ6CWgKKwlmZkZpcnN0Q2hhcjoJaAorCWZmTGFzdENoYXI6CWgKKwlmZkFzY2VudDoJaAorCWZmRGVzY2VudDoJaAorCWZmTGVhZGluZzoJaAorCWZmV2lkTWF4OgloCisJZmZXVGFiT2ZmOglsCisJZmZLZXJuT2ZmOglsCisJZmZTdHlsT2ZmOglsCisiIiIKKworRk9ORGhlYWRlcnNpemUgPSA1MgorCitjbGFzcyBGb250RmFtaWx5OgorCQorCWRlZiBfX2luaXRfXyhzZWxmLCB0aGVSZXMsIG1vZGUgPSAncicpOgorCQlzZWxmLklELCB0eXBlLCBzZWxmLm5hbWUgPSB0aGVSZXMuR2V0UmVzSW5mbygpCisJCWlmIHR5cGUgPD4gJ0ZPTkQnOgorCQkJcmFpc2UgVmFsdWVFcnJvciwgIkZPTkQgcmVzb3VyY2UgcmVxdWlyZWQiCisJCXNlbGYuRk9ORCA9IHRoZVJlcworCQlzZWxmLm1vZGUgPSBtb2RlCisJCXNlbGYuY2hhbmdlZCA9IDAKKwkJCisJCWlmIERFQlVHOgorCQkJc2VsZi5wYXJzZWR0aGluZ3MgPSBbXQorCQorCWRlZiBwYXJzZShzZWxmKToKKwkJc2VsZi5fZ2V0aGVhZGVyKCkKKwkJc2VsZi5fZ2V0Zm9udGFzc29jaWF0aW9udGFibGUoKQorCQlzZWxmLl9nZXRvZmZzZXR0YWJsZSgpCisJCXNlbGYuX2dldGJvdW5kaW5nYm94dGFibGUoKQorCQlzZWxmLl9nZXRnbHlwaHdpZHRodGFibGUoKQorCQlzZWxmLl9nZXRzdHlsZW1hcHBpbmd0YWJsZSgpCisJCXNlbGYuX2dldGdseXBoZW5jb2RpbmdzdWJ0YWJsZSgpCisJCXNlbGYuX2dldGtlcm5pbmd0YWJsZXMoKQorCQorCWRlZiBtaW5pbWFscGFyc2Uoc2VsZik6CisJCXNlbGYuX2dldGhlYWRlcigpCisJCXNlbGYuX2dldGdseXBod2lkdGh0YWJsZSgpCisJCXNlbGYuX2dldHN0eWxlbWFwcGluZ3RhYmxlKCkKKwkKKwlkZWYgX19yZXByX18oc2VsZik6CisJCXJldHVybiAiPEZvbnRGYW1pbHkgaW5zdGFuY2Ugb2YgJXM+IiAlIHNlbGYubmFtZQorCQorCWRlZiBnZXRmbGFncyhzZWxmKToKKwkJcmV0dXJuIHNlbGYuZm9uZENsYXNzCisJCisJZGVmIHNldGZsYWdzKHNlbGYsIGZsYWdzKToKKwkJc2VsZi5jaGFuZ2VkID0gMQorCQlzZWxmLmZvbmRDbGFzcyA9IGZsYWdzCisJCisJZGVmIHNhdmUoc2VsZiwgZGVzdHJlc2ZpbGUgPSBOb25lKToKKwkJaWYgc2VsZi5tb2RlIDw+ICd3JzoKKwkJCXJhaXNlIGVycm9yLCAiY2FuJ3Qgc2F2ZSBmb250OiBubyB3cml0ZSBwZXJtaXNzaW9uIgorCQlzZWxmLl9idWlsZGZvbnRhc3NvY2lhdGlvbnRhYmxlKCkKKwkJc2VsZi5fYnVpbGRvZmZzZXR0YWJsZSgpCisJCXNlbGYuX2J1aWxkYm91bmRpbmdib3h0YWJsZSgpCisJCXNlbGYuX2J1aWxkZ2x5cGh3aWR0aHRhYmxlKCkKKwkJc2VsZi5fYnVpbGRrZXJuaW5ndGFibGVzKCkKKwkJc2VsZi5fYnVpbGRzdHlsZW1hcHBpbmd0YWJsZSgpCisJCXNlbGYuX2J1aWxkZ2x5cGhlbmNvZGluZ3N1YnRhYmxlKCkKKwkJcmF3bmFtZXMgPSBbCSJfcmF3aGVhZGVyIiwgCisJCQkJCSJfcmF3Zm9udGFzc29jaWF0aW9udGFibGUiLCAKKwkJCQkJIl9yYXdvZmZzZXR0YWJsZSIsIAorCQkJCQkiX3Jhd2dseXBod2lkdGh0YWJsZSIsIAorCQkJCQkiX3Jhd3N0eWxlbWFwcGluZ3RhYmxlIiwgCisJCQkJCSJfcmF3Z2x5cGhlbmNvZGluZ3N1YnRhYmxlIiwKKwkJCQkJIl9yYXdrZXJuaW5ndGFibGVzIgorCQkJCV0KKwkJZm9yIG5hbWUgaW4gcmF3bmFtZXNbMTpdOgkjIHNraXAgaGVhZGVyCisJCQlkYXRhID0gZ2V0YXR0cihzZWxmLCBuYW1lKQorCQkJaWYgbGVuKGRhdGEpICYgMToKKwkJCQlzZXRhdHRyKHNlbGYsIG5hbWUsIGRhdGEgKyAnXDAnKQorCQkKKwkJc2VsZi5mZldUYWJPZmYgPSBGT05EaGVhZGVyc2l6ZSArIGxlbihzZWxmLl9yYXdmb250YXNzb2NpYXRpb250YWJsZSkgKyBsZW4oc2VsZi5fcmF3b2Zmc2V0dGFibGUpCisJCXNlbGYuZmZTdHlsT2ZmID0gc2VsZi5mZldUYWJPZmYgKyBsZW4oc2VsZi5fcmF3Z2x5cGh3aWR0aHRhYmxlKQorCQlzZWxmLmZmS2Vybk9mZiA9IHNlbGYuZmZTdHlsT2ZmICsgbGVuKHNlbGYuX3Jhd3N0eWxlbWFwcGluZ3RhYmxlKSArIGxlbihzZWxmLl9yYXdnbHlwaGVuY29kaW5nc3VidGFibGUpCisJCXNlbGYuZ2x5cGhUYWJsZU9mZnNldCA9IGxlbihzZWxmLl9yYXdzdHlsZW1hcHBpbmd0YWJsZSkKKwkJCisJCWlmIG5vdCBzZWxmLl9yYXdnbHlwaHdpZHRodGFibGU6CisJCQlzZWxmLmZmV1RhYk9mZiA9IDAKKwkJaWYgbm90IHNlbGYuX3Jhd3N0eWxlbWFwcGluZ3RhYmxlOgorCQkJc2VsZi5mZlN0eWxPZmYgPSAwCisJCWlmIG5vdCBzZWxmLl9yYXdnbHlwaGVuY29kaW5nc3VidGFibGU6CisJCQlzZWxmLmdseXBoVGFibGVPZmZzZXQgPSAwCisJCWlmIG5vdCBzZWxmLl9yYXdrZXJuaW5ndGFibGVzOgorCQkJc2VsZi5mZktlcm5PZmYgPSAwCisJCQorCQlzZWxmLl9idWlsZGhlYWRlcigpCisJCQorCQkjIGdseXBoVGFibGVPZmZzZXQgaGFzIG9ubHkganVzdCBiZWVuIGNhbGN1bGF0ZWQKKwkJc2VsZi5fdXBkYXRlc3R5bGVtYXBwaW5ndGFibGUoKQorCQkKKwkJbmV3ZGF0YSA9ICIiCisJCWZvciBuYW1lIGluIHJhd25hbWVzOgorCQkJbmV3ZGF0YSA9IG5ld2RhdGEgKyBnZXRhdHRyKHNlbGYsIG5hbWUpCisJCWlmIGRlc3RyZXNmaWxlIGlzIE5vbmU6CisJCQlzZWxmLkZPTkQuZGF0YSA9IG5ld2RhdGEKKwkJCXNlbGYuRk9ORC5DaGFuZ2VkUmVzb3VyY2UoKQorCQkJc2VsZi5GT05ELldyaXRlUmVzb3VyY2UoKQorCQllbHNlOgorCQkJSUQsIHR5cGUsIG5hbWUgPSBzZWxmLkZPTkQuR2V0UmVzSW5mbygpCisJCQlzZWxmLkZPTkQuRGV0YWNoUmVzb3VyY2UoKQorCQkJc2VsZi5GT05ELmRhdGEgPSBuZXdkYXRhCisJCQlzYXZlcmVmID0gUmVzLkN1clJlc0ZpbGUoKQorCQkJUmVzLlVzZVJlc0ZpbGUoZGVzdHJlc2ZpbGUpCisJCQlzZWxmLkZPTkQuQWRkUmVzb3VyY2UodHlwZSwgSUQsIG5hbWUpCisJCQlSZXMuVXNlUmVzRmlsZShzYXZlcmVmKQorCQlzZWxmLmNoYW5nZWQgPSAwCisJCisJZGVmIF9nZXRoZWFkZXIoc2VsZik6CisJCWRhdGEgPSBzZWxmLkZPTkQuZGF0YQorCQlzc3RydWN0LnVucGFjayhoZWFkZXJmb3JtYXQsIGRhdGFbOjI4XSwgc2VsZikKKwkJc2VsZi5mZlByb3BlcnR5ID0gc3RydWN0LnVucGFjaygiOWgiLCBkYXRhWzI4OjQ2XSkKKwkJc2VsZi5mZkludGwgPSBzdHJ1Y3QudW5wYWNrKCJoaCIsIGRhdGFbNDY6NTBdKQorCQlzZWxmLmZmVmVyc2lvbiwgPSBzdHJ1Y3QudW5wYWNrKCJoIiwgZGF0YVs1MDpGT05EaGVhZGVyc2l6ZV0pCisJCQorCQlpZiBERUJVRzoKKwkJCXNlbGYuX3Jhd2hlYWRlciA9IGRhdGFbOkZPTkRoZWFkZXJzaXplXQorCQkJc2VsZi5wYXJzZWR0aGluZ3MuYXBwZW5kKCgwLCBGT05EaGVhZGVyc2l6ZSwgJ2hlYWRlcicpKQorCQorCWRlZiBfYnVpbGRoZWFkZXIoc2VsZik6CisJCWhlYWRlciA9IHNzdHJ1Y3QucGFjayhoZWFkZXJmb3JtYXQsIHNlbGYpCisJCWhlYWRlciA9IGhlYWRlciArIGFwcGx5KHN0cnVjdC5wYWNrLCAoIjloIiwpICsgc2VsZi5mZlByb3BlcnR5KQorCQloZWFkZXIgPSBoZWFkZXIgKyBhcHBseShzdHJ1Y3QucGFjaywgKCJoaCIsKSArIHNlbGYuZmZJbnRsKQorCQloZWFkZXIgPSBoZWFkZXIgKyBzdHJ1Y3QucGFjaygiaCIsIHNlbGYuZmZWZXJzaW9uKQorCQlpZiBERUJVRzoKKwkJCXByaW50ICJoZWFkZXIgaXMgdGhlIHNhbWU/Iiwgc2VsZi5fcmF3aGVhZGVyID09IGhlYWRlciBhbmQgJ3llcy4nIG9yICduby4nCisJCQlpZiBzZWxmLl9yYXdoZWFkZXIgPD4gaGVhZGVyOgorCQkJCXByaW50IGxlbihzZWxmLl9yYXdoZWFkZXIpLCBsZW4oaGVhZGVyKQorCQlzZWxmLl9yYXdoZWFkZXIgPSBoZWFkZXIKKwkKKwlkZWYgX2dldGZvbnRhc3NvY2lhdGlvbnRhYmxlKHNlbGYpOgorCQlkYXRhID0gc2VsZi5GT05ELmRhdGEKKwkJb2Zmc2V0ID0gRk9ORGhlYWRlcnNpemUKKwkJbnVtYmVyb2ZlbnRyaWVzLCA9IHN0cnVjdC51bnBhY2soImgiLCBkYXRhW29mZnNldDpvZmZzZXQrMl0pCisJCW51bWJlcm9mZW50cmllcyA9IG51bWJlcm9mZW50cmllcyArIDEKKwkJc2l6ZSA9IG51bWJlcm9mZW50cmllcyAqIDYKKwkJc2VsZi5mb250QXNzb2MgPSBbXQorCQlmb3IgaSBpbiByYW5nZShvZmZzZXQgKyAyLCBvZmZzZXQgKyBzaXplLCA2KToKKwkJCXNlbGYuZm9udEFzc29jLmFwcGVuZChzdHJ1Y3QudW5wYWNrKCIzaCIsIGRhdGFbaTppKzZdKSkKKwkJCisJCXNlbGYuX2VuZG9mZm9udGFzc29jaWF0aW9udGFibGUgPSBvZmZzZXQgKyBzaXplICsgMgorCQlpZiBERUJVRzoKKwkJCXNlbGYuX3Jhd2ZvbnRhc3NvY2lhdGlvbnRhYmxlID0gZGF0YVtvZmZzZXQ6c2VsZi5fZW5kb2Zmb250YXNzb2NpYXRpb250YWJsZV0KKwkJCXNlbGYucGFyc2VkdGhpbmdzLmFwcGVuZCgob2Zmc2V0LCBzZWxmLl9lbmRvZmZvbnRhc3NvY2lhdGlvbnRhYmxlLCAnZm9udGFzc29jaWF0aW9udGFibGUnKSkKKwkKKwlkZWYgX2J1aWxkZm9udGFzc29jaWF0aW9udGFibGUoc2VsZik6CisJCWRhdGEgPSBzdHJ1Y3QucGFjaygiaCIsIGxlbihzZWxmLmZvbnRBc3NvYykgLSAxKQorCQlmb3Igc2l6ZSwgc3R5cGUsIElEIGluIHNlbGYuZm9udEFzc29jOgorCQkJZGF0YSA9IGRhdGEgKyBzdHJ1Y3QucGFjaygiM2giLCBzaXplLCBzdHlwZSwgSUQpCisJCQorCQlpZiBERUJVRzoKKwkJCXByaW50ICJmb250IGFzc29jaWF0aW9uIHRhYmxlIGlzIHRoZSBzYW1lPyIsIHNlbGYuX3Jhd2ZvbnRhc3NvY2lhdGlvbnRhYmxlID09IGRhdGEgYW5kICd5ZXMuJyBvciAnbm8uJworCQkJaWYgc2VsZi5fcmF3Zm9udGFzc29jaWF0aW9udGFibGUgPD4gZGF0YToKKwkJCQlwcmludCBsZW4oc2VsZi5fcmF3Zm9udGFzc29jaWF0aW9udGFibGUpLCBsZW4oZGF0YSkKKwkJc2VsZi5fcmF3Zm9udGFzc29jaWF0aW9udGFibGUgPSBkYXRhCisJCisJZGVmIF9nZXRvZmZzZXR0YWJsZShzZWxmKToKKwkJaWYgc2VsZi5mZldUYWJPZmYgPT0gMDoKKwkJCXNlbGYuX3Jhd29mZnNldHRhYmxlID0gIiIKKwkJCXJldHVybgorCQlkYXRhID0gc2VsZi5GT05ELmRhdGEKKwkJIyBRdWljayduJ0RpcnR5LiBXaGF0J3MgdGhlIHNwZWMgYW55d2F5PyBDYW4ndCBmaW5kIGl0Li4uCisJCW9mZnNldCA9IHNlbGYuX2VuZG9mZm9udGFzc29jaWF0aW9udGFibGUKKwkJY291bnQgPSBzZWxmLmZmV1RhYk9mZgorCQlzZWxmLl9yYXdvZmZzZXR0YWJsZSA9IGRhdGFbb2Zmc2V0OmNvdW50XQorCQlpZiBERUJVRzoKKwkJCXNlbGYucGFyc2VkdGhpbmdzLmFwcGVuZCgob2Zmc2V0LCBjb3VudCwgJ29mZnNldHRhYmxlJmJidGFibGUnKSkKKwkKKwlkZWYgX2J1aWxkb2Zmc2V0dGFibGUoc2VsZik6CisJCWlmIG5vdCBoYXNhdHRyKHNlbGYsICJfcmF3b2Zmc2V0dGFibGUiKToKKwkJCXNlbGYuX3Jhd29mZnNldHRhYmxlID0gIiIKKwkKKwlkZWYgX2dldGJvdW5kaW5nYm94dGFibGUoc2VsZik6CisJCXNlbGYuYm91bmRpbmdCb3hlcyA9IE5vbmUKKwkJaWYgc2VsZi5fcmF3b2Zmc2V0dGFibGVbOjZdIDw+ICdcMFwwXDBcMFwwXDYnOiAgIyBYWFggPz8/PworCQkJcmV0dXJuCisJCWJveGVzID0ge30KKwkJZGF0YSA9IHNlbGYuX3Jhd29mZnNldHRhYmxlWzY6XQorCQludW1zdHlsZXMgPSBzdHJ1Y3QudW5wYWNrKCJoIiwgZGF0YVs6Ml0pWzBdICsgMQorCQlkYXRhID0gZGF0YVsyOl0KKwkJZm9yIGkgaW4gcmFuZ2UobnVtc3R5bGVzKToKKwkJCXN0eWxlLCBsLCBiLCByLCB0ID0gc3RydWN0LnVucGFjaygiaGhoaGgiLCBkYXRhWzoxMF0pCisJCQlib3hlc1tzdHlsZV0gPSAobCwgYiwgciwgdCkKKwkJCWRhdGEgPSBkYXRhWzEwOl0KKwkJc2VsZi5ib3VuZGluZ0JveGVzID0gYm94ZXMKKwkKKwlkZWYgX2J1aWxkYm91bmRpbmdib3h0YWJsZShzZWxmKToKKwkJaWYgc2VsZi5ib3VuZGluZ0JveGVzIGFuZCBzZWxmLl9yYXdvZmZzZXR0YWJsZVs6Nl0gPT0gJ1wwXDBcMFwwXDBcNic6CisJCQlib3hlcyA9IHNlbGYuYm91bmRpbmdCb3hlcy5pdGVtcygpCisJCQlib3hlcy5zb3J0KCkKKwkJCWRhdGEgPSAnXDBcMFwwXDBcMFw2JyArIHN0cnVjdC5wYWNrKCJoIiwgbGVuKGJveGVzKSAtIDEpCisJCQlmb3Igc3R5bGUsIChsLCBiLCByLCB0KSBpbiBib3hlczoKKwkJCQlkYXRhID0gZGF0YSArIHN0cnVjdC5wYWNrKCJoaGhoaCIsIHN0eWxlLCBsLCBiLCByLCB0KQorCQkJc2VsZi5fcmF3b2Zmc2V0dGFibGUgPSBkYXRhCisJCisJZGVmIF9nZXRnbHlwaHdpZHRodGFibGUoc2VsZik6CisJCXNlbGYud2lkdGhUYWJsZXMgPSB7fQorCQlpZiBzZWxmLmZmV1RhYk9mZiA9PSAwOgorCQkJcmV0dXJuCisJCWRhdGEgPSBzZWxmLkZPTkQuZGF0YQorCQlvZmZzZXQgPSBzZWxmLmZmV1RhYk9mZgorCQludW1iZXJvZmVudHJpZXMsID0gc3RydWN0LnVucGFjaygiaCIsIGRhdGFbb2Zmc2V0Om9mZnNldCsyXSkKKwkJbnVtYmVyb2ZlbnRyaWVzID0gbnVtYmVyb2ZlbnRyaWVzICsgMQorCQljb3VudCA9IG9mZnNldCArIDIKKwkJZm9yIGkgaW4gcmFuZ2UobnVtYmVyb2ZlbnRyaWVzKToKKwkJCXN0eWxlY29kZSwgPSBzdHJ1Y3QudW5wYWNrKCJoIiwgZGF0YVtjb3VudDpjb3VudCsyXSkKKwkJCXdpZHRodGFibGUgPSBzZWxmLndpZHRoVGFibGVzW3N0eWxlY29kZV0gPSBbXQorCQkJY291bnQgPSBjb3VudCArIDIKKwkJCWZvciBqIGluIHJhbmdlKDMgKyBzZWxmLmZmTGFzdENoYXIgLSBzZWxmLmZmRmlyc3RDaGFyKToKKwkJCQl3aWR0aCwgPSBzdHJ1Y3QudW5wYWNrKCJoIiwgZGF0YVtjb3VudDpjb3VudCsyXSkKKwkJCQl3aWR0aHRhYmxlLmFwcGVuZCh3aWR0aCkKKwkJCQljb3VudCA9IGNvdW50ICsgMgorCQkKKwkJaWYgREVCVUc6CisJCQlzZWxmLl9yYXdnbHlwaHdpZHRodGFibGUgPSBkYXRhW29mZnNldDpjb3VudF0KKwkJCXNlbGYucGFyc2VkdGhpbmdzLmFwcGVuZCgob2Zmc2V0LCBjb3VudCwgJ2dseXBod2lkdGh0YWJsZScpKQorCQorCWRlZiBfYnVpbGRnbHlwaHdpZHRodGFibGUoc2VsZik6CisJCWlmIG5vdCBzZWxmLndpZHRoVGFibGVzOgorCQkJc2VsZi5fcmF3Z2x5cGh3aWR0aHRhYmxlID0gIiIKKwkJCXJldHVybgorCQludW1iZXJvZmVudHJpZXMgPSBsZW4oc2VsZi53aWR0aFRhYmxlcykKKwkJZGF0YSA9IHN0cnVjdC5wYWNrKCdoJywgbnVtYmVyb2ZlbnRyaWVzIC0gMSkKKwkJdGFibGVzID0gc2VsZi53aWR0aFRhYmxlcy5pdGVtcygpCisJCXRhYmxlcy5zb3J0KCkKKwkJZm9yIHN0eWxlY29kZSwgdGFibGUgaW4gdGFibGVzOgorCQkJZGF0YSA9IGRhdGEgKyBzdHJ1Y3QucGFjaygnaCcsIHN0eWxlY29kZSkKKwkJCWlmIGxlbih0YWJsZSkgPD4gKDMgKyBzZWxmLmZmTGFzdENoYXIgLSBzZWxmLmZmRmlyc3RDaGFyKToKKwkJCQlyYWlzZSBlcnJvciwgIndpZHRoIHRhYmxlIGhhcyB3cm9uZyBsZW5ndGgiCisJCQlmb3Igd2lkdGggaW4gdGFibGU6CisJCQkJZGF0YSA9IGRhdGEgKyBzdHJ1Y3QucGFjaygnaCcsIHdpZHRoKQorCQlpZiBERUJVRzoKKwkJCXByaW50ICJnbHlwaCB3aWR0aCB0YWJsZSBpcyB0aGUgc2FtZT8iLCBzZWxmLl9yYXdnbHlwaHdpZHRodGFibGUgPT0gZGF0YSBhbmQgJ3llcy4nIG9yICduby4nCisJCXNlbGYuX3Jhd2dseXBod2lkdGh0YWJsZSA9IGRhdGEKKwkKKwlkZWYgX2dldGtlcm5pbmd0YWJsZXMoc2VsZik6CisJCXNlbGYua2VyblRhYmxlcyA9IHt9CisJCWlmIHNlbGYuZmZLZXJuT2ZmID09IDA6CisJCQlyZXR1cm4KKwkJZGF0YSA9IHNlbGYuRk9ORC5kYXRhCisJCW9mZnNldCA9IHNlbGYuZmZLZXJuT2ZmCisJCW51bWJlcm9mZW50cmllcywgPSBzdHJ1Y3QudW5wYWNrKCJoIiwgZGF0YVtvZmZzZXQ6b2Zmc2V0KzJdKQorCQludW1iZXJvZmVudHJpZXMgPSBudW1iZXJvZmVudHJpZXMgKyAxCisJCWNvdW50ID0gb2Zmc2V0ICsgMgorCQlmb3IgaSBpbiByYW5nZShudW1iZXJvZmVudHJpZXMpOgorCQkJc3R5bGVjb2RlLCA9IHN0cnVjdC51bnBhY2soImgiLCBkYXRhW2NvdW50OmNvdW50KzJdKQorCQkJY291bnQgPSBjb3VudCArIDIKKwkJCW51bWJlcm9mcGFpcnMsID0gc3RydWN0LnVucGFjaygiaCIsIGRhdGFbY291bnQ6Y291bnQrMl0pCisJCQljb3VudCA9IGNvdW50ICsgMgorCQkJa2VybnRhYmxlID0gc2VsZi5rZXJuVGFibGVzW3N0eWxlY29kZV0gPSBbXQorCQkJZm9yIGogaW4gcmFuZ2UobnVtYmVyb2ZwYWlycyk6CisJCQkJZmlyc3RjaGFyLCBzZWNvbmRjaGFyLCBrZXJuZGlzdGFuY2UgPSBzdHJ1Y3QudW5wYWNrKCJjY2giLCBkYXRhW2NvdW50OmNvdW50KzRdKQorCQkJCWtlcm50YWJsZS5hcHBlbmQoKG9yZChmaXJzdGNoYXIpLCBvcmQoc2Vjb25kY2hhciksIGtlcm5kaXN0YW5jZSkpCisJCQkJY291bnQgPSBjb3VudCArIDQKKwkJCisJCWlmIERFQlVHOgorCQkJc2VsZi5fcmF3a2VybmluZ3RhYmxlcyA9IGRhdGFbb2Zmc2V0OmNvdW50XQorCQkJc2VsZi5wYXJzZWR0aGluZ3MuYXBwZW5kKChvZmZzZXQsIGNvdW50LCAna2VybmluZ3RhYmxlcycpKQorCQorCWRlZiBfYnVpbGRrZXJuaW5ndGFibGVzKHNlbGYpOgorCQlpZiBzZWxmLmtlcm5UYWJsZXMgPT0ge306CisJCQlzZWxmLl9yYXdrZXJuaW5ndGFibGVzID0gIiIKKwkJCXNlbGYuZmZLZXJuT2ZmID0gMAorCQkJcmV0dXJuCisJCW51bWJlcm9mZW50cmllcyA9IGxlbihzZWxmLmtlcm5UYWJsZXMpCisJCWRhdGEgPSBbc3RydWN0LnBhY2soJ2gnLCBudW1iZXJvZmVudHJpZXMgLSAxKV0KKwkJdGFibGVzID0gc2VsZi5rZXJuVGFibGVzLml0ZW1zKCkKKwkJdGFibGVzLnNvcnQoKQorCQlmb3Igc3R5bGVjb2RlLCB0YWJsZSBpbiB0YWJsZXM6CisJCQlkYXRhLmFwcGVuZChzdHJ1Y3QucGFjaygnaCcsIHN0eWxlY29kZSkpCisJCQlkYXRhLmFwcGVuZChzdHJ1Y3QucGFjaygnaCcsIGxlbih0YWJsZSkpKSAgIyBudW1iZXJvZnBhaXJzCisJCQlmb3IgZmlyc3RjaGFyLCBzZWNvbmRjaGFyLCBrZXJuZGlzdGFuY2UgaW4gdGFibGU6CisJCQkJZGF0YS5hcHBlbmQoc3RydWN0LnBhY2soImNjaCIsIGNocihmaXJzdGNoYXIpLCBjaHIoc2Vjb25kY2hhciksIGtlcm5kaXN0YW5jZSkpCisJCQorCQlkYXRhID0gc3RyaW5nLmpvaW4oZGF0YSwgJycpCisJCQorCQlpZiBERUJVRzoKKwkJCXByaW50ICJrZXJuaW5nIHRhYmxlIGlzIHRoZSBzYW1lPyIsIHNlbGYuX3Jhd2tlcm5pbmd0YWJsZXMgPT0gZGF0YSBhbmQgJ3llcy4nIG9yICduby4nCisJCQlpZiBzZWxmLl9yYXdrZXJuaW5ndGFibGVzIDw+IGRhdGE6CisJCQkJcHJpbnQgbGVuKHNlbGYuX3Jhd2tlcm5pbmd0YWJsZXMpLCBsZW4oZGF0YSkKKwkJc2VsZi5fcmF3a2VybmluZ3RhYmxlcyA9IGRhdGEKKwkKKwlkZWYgX2dldHN0eWxlbWFwcGluZ3RhYmxlKHNlbGYpOgorCQlvZmZzZXQgPSBzZWxmLmZmU3R5bE9mZgorCQlzZWxmLnN0eWxlU3RyaW5ncyA9IFtdCisJCXNlbGYuc3R5bGVJbmRpY2VzID0gKCkKKwkJc2VsZi5nbHlwaFRhYmxlT2Zmc2V0ID0gMAorCQlzZWxmLmZvbmRDbGFzcyA9IDAKKwkJaWYgb2Zmc2V0ID09IDA6CisJCQlyZXR1cm4KKwkJZGF0YSA9IHNlbGYuRk9ORC5kYXRhCisJCXNlbGYuZm9uZENsYXNzLCBzZWxmLmdseXBoVGFibGVPZmZzZXQsIHNlbGYuc3R5bGVNYXBwaW5nUmVzZXJ2ZWQsID0gXAorCQkJCXN0cnVjdC51bnBhY2soImhsbCIsIGRhdGFbb2Zmc2V0Om9mZnNldCsxMF0pCisJCXNlbGYuc3R5bGVJbmRpY2VzID0gc3RydWN0LnVucGFjaygnNDhiJywgZGF0YVtvZmZzZXQgKyAxMDpvZmZzZXQgKyA1OF0pCisJCXN0cmluZ2NvdW50LCA9IHN0cnVjdC51bnBhY2soJ2gnLCBkYXRhW29mZnNldCs1ODpvZmZzZXQrNjBdKQorCQkKKwkJY291bnQgPSBvZmZzZXQgKyA2MAorCQlmb3IgaSBpbiByYW5nZShzdHJpbmdjb3VudCk6CisJCQlzdHJfbGVuID0gb3JkKGRhdGFbY291bnRdKQorCQkJc2VsZi5zdHlsZVN0cmluZ3MuYXBwZW5kKGRhdGFbY291bnQgKyAxOmNvdW50ICsgMSArIHN0cl9sZW5dKQorCQkJY291bnQgPSBjb3VudCArIDEgKyBzdHJfbGVuCisJCQorCQlzZWxmLl91bnBhY2tzdHlsZXN0cmluZ3MoKQorCQkKKwkJZGF0YSA9IGRhdGFbb2Zmc2V0OmNvdW50XQorCQlpZiBsZW4oZGF0YSkgJSAyOgorCQkJZGF0YSA9IGRhdGEgKyAnXDAnCisJCWlmIERFQlVHOgorCQkJc2VsZi5fcmF3c3R5bGVtYXBwaW5ndGFibGUgPSBkYXRhCisJCQlzZWxmLnBhcnNlZHRoaW5ncy5hcHBlbmQoKG9mZnNldCwgY291bnQsICdzdHlsZW1hcHBpbmd0YWJsZScpKQorCQorCWRlZiBfYnVpbGRzdHlsZW1hcHBpbmd0YWJsZShzZWxmKToKKwkJaWYgbm90IHNlbGYuc3R5bGVJbmRpY2VzOgorCQkJc2VsZi5fcmF3c3R5bGVtYXBwaW5ndGFibGUgPSAiIgorCQkJcmV0dXJuCisJCWRhdGEgPSBzdHJ1Y3QucGFjaygiaGxsIiwgc2VsZi5mb25kQ2xhc3MsIHNlbGYuZ2x5cGhUYWJsZU9mZnNldCwgCisJCQkJCXNlbGYuc3R5bGVNYXBwaW5nUmVzZXJ2ZWQpCisJCQorCQlzZWxmLl9wYWNrc3R5bGVzdHJpbmdzKCkKKwkJZGF0YSA9IGRhdGEgKyBhcHBseShzdHJ1Y3QucGFjaywgKCI0OGIiLCkgKyBzZWxmLnN0eWxlSW5kaWNlcykKKwkJCisJCXN0cmluZ2NvdW50ID0gbGVuKHNlbGYuc3R5bGVTdHJpbmdzKQorCQlkYXRhID0gZGF0YSArIHN0cnVjdC5wYWNrKCJoIiwgc3RyaW5nY291bnQpCisJCWZvciBzdHJpbmcgaW4gc2VsZi5zdHlsZVN0cmluZ3M6CisJCQlkYXRhID0gZGF0YSArIGNocihsZW4oc3RyaW5nKSkgKyBzdHJpbmcKKwkJCisJCWlmIGxlbihkYXRhKSAlIDI6CisJCQlkYXRhID0gZGF0YSArICdcMCcKKwkJCisJCWlmIERFQlVHOgorCQkJcHJpbnQgInN0eWxlIG1hcHBpbmcgdGFibGUgaXMgdGhlIHNhbWU/Iiwgc2VsZi5fcmF3c3R5bGVtYXBwaW5ndGFibGUgPT0gZGF0YSBhbmQgJ3llcy4nIG9yICduby4nCisJCXNlbGYuX3Jhd3N0eWxlbWFwcGluZ3RhYmxlID0gZGF0YQorCQorCWRlZiBfdW5wYWNrc3R5bGVzdHJpbmdzKHNlbGYpOgorCQlwc05hbWVzID0ge30KKwkJc2VsZi5mZkZhbWlseU5hbWUgPSBzZWxmLnN0eWxlU3RyaW5nc1swXQorCQlmb3IgaSBpbiBzZWxmLndpZHRoVGFibGVzLmtleXMoKToKKwkJCWluZGV4ID0gc2VsZi5zdHlsZUluZGljZXNbaV0KKwkJCWlmIGluZGV4ID09IDE6CisJCQkJcHNOYW1lc1tpXSA9IHNlbGYuc3R5bGVTdHJpbmdzWzBdCisJCQllbHNlOgorCQkJCXN0eWxlID0gc2VsZi5zdHlsZVN0cmluZ3NbMF0KKwkJCQljb2RlcyA9IG1hcChvcmQsIHNlbGYuc3R5bGVTdHJpbmdzW2luZGV4IC0gMV0pCisJCQkJZm9yIGNvZGUgaW4gY29kZXM6CisJCQkJCXN0eWxlID0gc3R5bGUgKyBzZWxmLnN0eWxlU3RyaW5nc1tjb2RlIC0gMV0KKwkJCQlwc05hbWVzW2ldID0gc3R5bGUKKwkJc2VsZi5wc05hbWVzID0gcHNOYW1lcworCQorCWRlZiBfcGFja3N0eWxlc3RyaW5ncyhzZWxmKToKKwkJbmFtZXBhcnRzID0ge30KKwkJc3BsaXRuYW1lcyA9IHt9CisJCWZvciBzdHlsZSwgbmFtZSBpbiBzZWxmLnBzTmFtZXMuaXRlbXMoKToKKwkJCXNwbGl0ID0gc3BsaXRuYW1lKG5hbWUsIHNlbGYuZmZGYW1pbHlOYW1lKQorCQkJc3BsaXRuYW1lc1tzdHlsZV0gPSBzcGxpdAorCQkJZm9yIHBhcnQgaW4gc3BsaXQ6CisJCQkJbmFtZXBhcnRzW3BhcnRdID0gTm9uZQorCQlkZWwgbmFtZXBhcnRzW3NlbGYuZmZGYW1pbHlOYW1lXQorCQluYW1lcGFydHMgPSBuYW1lcGFydHMua2V5cygpCisJCW5hbWVwYXJ0cy5zb3J0KCkKKwkJaXRlbXMgPSBzcGxpdG5hbWVzLml0ZW1zKCkKKwkJaXRlbXMuc29ydCgpCisJCW51bWluZGljZXMgPSAwCisJCWZvciBzdHlsZSwgc3BsaXQgaW4gaXRlbXM6CisJCQlpZiBsZW4oc3BsaXQpID4gMToKKwkJCQludW1pbmRpY2VzID0gbnVtaW5kaWNlcyArIDEKKwkJc3R5bGVTdHJpbmdzID0gW3NlbGYuZmZGYW1pbHlOYW1lXSArIG51bWluZGljZXMgKiBbTm9uZV0gKyBuYW1lcGFydHMKKwkJIyBYWFggdGhlIG5leHQgYml0IGdvZXMgd3JvbmcgZm9yIE1NIGZvbnRzLgorCQlmb3Igc3R5bGUsIHNwbGl0IGluIGl0ZW1zOgorCQkJaWYgbGVuKHNwbGl0KSA9PSAxOgorCQkJCWNvbnRpbnVlCisJCQlpbmRpY2VzID0gIiIKKwkJCWZvciBwYXJ0IGluIHNwbGl0WzE6XToKKwkJCQlpbmRpY2VzID0gaW5kaWNlcyArIGNocihuYW1lcGFydHMuaW5kZXgocGFydCkgKyBudW1pbmRpY2VzICsgMikKKwkJCXN0eWxlU3RyaW5nc1tzZWxmLnN0eWxlSW5kaWNlc1tzdHlsZV0gLSAxXSA9IGluZGljZXMKKwkJc2VsZi5zdHlsZVN0cmluZ3MgPSBzdHlsZVN0cmluZ3MKKwkKKwlkZWYgX3VwZGF0ZXN0eWxlbWFwcGluZ3RhYmxlKHNlbGYpOgorCQkjIFVwZGF0ZSB0aGUgZ2x5cGhUYWJsZU9mZnNldCBmaWVsZC4KKwkJIyBUaGlzIGlzIG5lY2Nlc2FyeSBzaW5jZSB3ZSBoYXZlIHRvIGJ1aWxkIHRoaXMgdGFibGUgdG8gCisJCSMga25vdyB3aGF0IHRoZSBnbHlwaFRhYmxlT2Zmc2V0IHdpbGwgYmUuCisJCSMgQW5kIHdlIGRvbid0IHdhbnQgdG8gYnVpbGQgaXQgdHdpY2UsIGRvIHdlPworCQlkYXRhID0gc2VsZi5fcmF3c3R5bGVtYXBwaW5ndGFibGUKKwkJaWYgbm90IGRhdGE6CisJCQlyZXR1cm4KKwkJZGF0YSA9IGRhdGFbOjJdICsgc3RydWN0LnBhY2soImwiLCBzZWxmLmdseXBoVGFibGVPZmZzZXQpICsgZGF0YVs2Ol0KKwkJc2VsZi5fcmF3c3R5bGVtYXBwaW5ndGFibGUgPSBkYXRhCisJCisJZGVmIF9nZXRnbHlwaGVuY29kaW5nc3VidGFibGUoc2VsZik6CisJCWdseXBoRW5jb2RpbmcgPSBzZWxmLmdseXBoRW5jb2RpbmcgPSB7fQorCQlpZiBub3Qgc2VsZi5nbHlwaFRhYmxlT2Zmc2V0OgorCQkJcmV0dXJuCisJCW9mZnNldCA9IHNlbGYuZmZTdHlsT2ZmICsgc2VsZi5nbHlwaFRhYmxlT2Zmc2V0CisJCWRhdGEgPSBzZWxmLkZPTkQuZGF0YQorCQludW1iZXJvZmVudHJpZXMsID0gc3RydWN0LnVucGFjaygiaCIsIGRhdGFbb2Zmc2V0Om9mZnNldCsyXSkKKwkJY291bnQgPSBvZmZzZXQgKyAyCisJCWZvciBpIGluIHJhbmdlKG51bWJlcm9mZW50cmllcyk6CisJCQlnbHlwaGNvZGUgPSBvcmQoZGF0YVtjb3VudF0pCisJCQljb3VudCA9IGNvdW50ICsgMQorCQkJc3RybGVuID0gb3JkKGRhdGFbY291bnRdKQorCQkJY291bnQgPSBjb3VudCArIDEKKwkJCWdseXBobmFtZSA9IGRhdGFbY291bnQ6Y291bnQrc3RybGVuXQorCQkJZ2x5cGhFbmNvZGluZ1tnbHlwaGNvZGVdID0gZ2x5cGhuYW1lCisJCQljb3VudCA9IGNvdW50ICsgc3RybGVuCisJCQorCQlpZiBERUJVRzoKKwkJCXNlbGYuX3Jhd2dseXBoZW5jb2RpbmdzdWJ0YWJsZSA9IGRhdGFbb2Zmc2V0OmNvdW50XQorCQkJc2VsZi5wYXJzZWR0aGluZ3MuYXBwZW5kKChvZmZzZXQsIGNvdW50LCAnZ2x5cGhlbmNvZGluZ3N1YnRhYmxlJykpCisJCisJZGVmIF9idWlsZGdseXBoZW5jb2RpbmdzdWJ0YWJsZShzZWxmKToKKwkJaWYgbm90IHNlbGYuZ2x5cGhFbmNvZGluZzoKKwkJCXNlbGYuX3Jhd2dseXBoZW5jb2RpbmdzdWJ0YWJsZSA9ICIiCisJCQlyZXR1cm4KKwkJbnVtYmVyb2ZlbnRyaWVzID0gbGVuKHNlbGYuZ2x5cGhFbmNvZGluZykKKwkJZGF0YSA9IHN0cnVjdC5wYWNrKCJoIiwgbnVtYmVyb2ZlbnRyaWVzKQorCQlpdGVtcyA9IHNlbGYuZ2x5cGhFbmNvZGluZy5pdGVtcygpCisJCWl0ZW1zLnNvcnQoKQorCQlmb3IgZ2x5cGhjb2RlLCBnbHlwaG5hbWUgaW4gaXRlbXM6CisJCQlkYXRhID0gZGF0YSArIGNocihnbHlwaGNvZGUpICsgY2hyKGxlbihnbHlwaG5hbWUpKSArIGdseXBobmFtZQorCQlzZWxmLl9yYXdnbHlwaGVuY29kaW5nc3VidGFibGUgPSBkYXRhCisJCisKK3VwcGVyY2FzZSA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicKKworZGVmIHNwbGl0bmFtZShuYW1lLCBmYW1uYW1lID0gTm9uZSk6CisJIyBYWFggdGhpcyBnb29mcyB1cCBNTSBmb250IG5hbWVzOiBidXQgaG93IHNob3VsZCBpdCBiZSBkb25lPz8KKwlpZiBmYW1uYW1lOgorCQlpZiBuYW1lWzpsZW4oZmFtbmFtZSldIDw+IGZhbW5hbWU6CisJCQlyYWlzZSBlcnJvciwgImZpcnN0IHBhcnQgb2YgbmFtZSBzaG91bGQgYmUgc2FtZSBhcyBmYW1pbHkgbmFtZSIKKwkJbmFtZSA9IG5hbWVbbGVuKGZhbW5hbWUpOl0KKwkJc3BsaXQgPSBbZmFtbmFtZV0KKwllbHNlOgorCQlzcGxpdCA9IFtdCisJY3VycmVudCA9ICIiCisJZm9yIGMgaW4gbmFtZToKKwkJaWYgYyA9PSAnLScgb3IgYyBpbiB1cHBlcmNhc2U6CisJCQlpZiBjdXJyZW50OgorCQkJCXNwbGl0LmFwcGVuZChjdXJyZW50KQorCQkJCWN1cnJlbnQgPSAiIgorCQljdXJyZW50ID0gY3VycmVudCArIGMKKwlpZiBjdXJyZW50OgorCQlzcGxpdC5hcHBlbmQoY3VycmVudCkKKwlyZXR1cm4gc3BsaXQKKworZGVmIG1ha2VMV0ZOZmlsZW5hbWUobmFtZSk6CisJc3BsaXQgPSBzcGxpdG5hbWUobmFtZSkKKwlsd2ZubmFtZSA9IHNwbGl0WzBdWzo1XQorCWZvciBwYXJ0IGluIHNwbGl0WzE6XToKKwkJaWYgcGFydCA8PiAnLSc6CisJCQlsd2ZubmFtZSA9IGx3Zm5uYW1lICsgcGFydFs6M10KKwlyZXR1cm4gbHdmbm5hbWUKKworY2xhc3MgQml0bWFwRm9udEZpbGU6CisJCisJZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIG1vZGUgPSAncicpOgorCQlpbXBvcnQgbWFjZnMKKwkJCisJCWlmIG1vZGUgPT0gJ3InOgorCQkJcGVybWlzc2lvbiA9IDEJIyByZWFkIG9ubHkKKwkJZWxpZiBtb2RlID09ICd3JzoKKwkJCXBlcm1pc3Npb24gPSAzCSMgZXhjbHVzaXZlIHIvdworCQllbHNlOgorCQkJcmFpc2UgZXJyb3IsICdtb2RlIHNob3VsZCBiZSBlaXRoZXIgInIiIG9yICJ3IicKKwkJc2VsZi5tb2RlID0gbW9kZQorCQlmc3MgPSBtYWNmcy5GU1NwZWMocGF0aCkKKwkJc2VsZi5yZXNyZWYgPSBSZXMuRlNwT3BlblJlc0ZpbGUoZnNzLCBwZXJtaXNzaW9uKQorCQlSZXMuVXNlUmVzRmlsZShzZWxmLnJlc3JlZikKKwkJc2VsZi5wYXRoID0gcGF0aAorCQlzZWxmLmZvbmRzID0gW10KKwkJc2VsZi5nZXRGT05EcygpCisJCisJZGVmIGdldEZPTkRzKHNlbGYpOgorCQlGT05EY291bnQgPSBSZXMuQ291bnQxUmVzb3VyY2VzKCdGT05EJykKKwkJZm9yIGkgaW4gcmFuZ2UoRk9ORGNvdW50KToKKwkJCWZvbmQgPSBGb250RmFtaWx5KFJlcy5HZXQxSW5kUmVzb3VyY2UoJ0ZPTkQnLCBpICsgMSksIHNlbGYubW9kZSkKKwkJCXNlbGYuZm9uZHMuYXBwZW5kKGZvbmQpCisJCisJZGVmIHBhcnNlKHNlbGYpOgorCQlzZWxmLmZvbmRzYnluYW1lID0ge30KKwkJZm9yIGZvbmQgaW4gc2VsZi5mb25kczoKKwkJCWZvbmQucGFyc2UoKQorCQkJaWYgaGFzYXR0cihmb25kLCAicHNOYW1lcyIpIGFuZCBmb25kLnBzTmFtZXM6CisJCQkJcHNOYW1lcyA9IGZvbmQucHNOYW1lcy52YWx1ZXMoKQorCQkJCXBzTmFtZXMuc29ydCgpCisJCQkJc2VsZi5mb25kc2J5bmFtZVtwc05hbWVzWzBdXSA9IGZvbmQKKwkKKwlkZWYgbWluaW1hbHBhcnNlKHNlbGYpOgorCQlmb3IgZm9uZCBpbiBzZWxmLmZvbmRzOgorCQkJZm9uZC5taW5pbWFscGFyc2UoKQorCQorCWRlZiBjbG9zZShzZWxmKToKKwkJaWYgc2VsZi5yZXNyZWYgPD4gTm9uZToKKwkJCXRyeToKKwkJCQlSZXMuQ2xvc2VSZXNGaWxlKHNlbGYucmVzcmVmKQorCQkJZXhjZXB0IFJlcy5FcnJvcjoKKwkJCQlwYXNzCisJCQlzZWxmLnJlc3JlZiA9IE5vbmUKKworCitjbGFzcyBGb25kU2VsZWN0b3I6CisJCisJZGVmIF9faW5pdF9fKHNlbGYsIGZvbmRsaXN0KToKKwkJaW1wb3J0IFcKKwkJaWYgbm90IGZvbmRsaXN0OgorCQkJcmFpc2UgVmFsdWVFcnJvciwgImV4cGVjdGVkIGF0IGxlYXN0IG9uZSBGT05EIGVudHJ5IgorCQlpZiBsZW4oZm9uZGxpc3QpID09IDE6CisJCQlzZWxmLmNob2ljZSA9IDAKKwkJCXJldHVybgorCQlmb25kcyA9IFtdCisJCWZvciBmb25kIGluIGZvbmRsaXN0OgorCQkJZm9uZHMuYXBwZW5kKGZvbmQubmFtZSkKKwkJc2VsZi53ID0gVy5Nb2RhbERpYWxvZygoMjAwLCAyMDApLCAiYWFhIikKKwkJc2VsZi53LmRvbmVidXR0b24gPSBXLkJ1dHRvbigoLTcwLCAtMjYsIDYwLCAxNiksICJEb25lIiwgc2VsZi5jbG9zZSkKKwkJc2VsZi53LmwgPSBXLkxpc3QoKDEwLCAxMCwgLTEwLCAtMzYpLCBmb25kcywgc2VsZi5saXN0aGl0KQorCQlzZWxmLncuc2V0ZGVmYXVsdGJ1dHRvbihzZWxmLncuZG9uZWJ1dHRvbikKKwkJc2VsZi53Lmwuc2V0c2VsZWN0aW9uKFswXSkKKwkJc2VsZi53Lm9wZW4oKQorCQorCWRlZiBjbG9zZShzZWxmKToKKwkJc2VsZi5jaGVja3NlbCgpCisJCXNlbCA9IHNlbGYudy5sLmdldHNlbGVjdGlvbigpCisJCXNlbGYuY2hvaWNlID0gc2VsWzBdCisJCXNlbGYudy5jbG9zZSgpCisJCisJZGVmIGxpc3RoaXQoc2VsZiwgaXNEYmwpOgorCQlpZiBpc0RibDoKKwkJCXNlbGYudy5kb25lYnV0dG9uLnB1c2goKQorCQllbHNlOgorCQkJc2VsZi5jaGVja3NlbCgpCisJCisJZGVmIGNoZWNrc2VsKHNlbGYpOgorCQlzZWwgPSBzZWxmLncubC5nZXRzZWxlY3Rpb24oKQorCQlpZiBub3Qgc2VsOgorCQkJc2VsZi53Lmwuc2V0c2VsZWN0aW9uKFswXSkKKwkJZWxpZiBsZW4oc2VsKSA8PiAxOgorCQkJc2VsZi53Lmwuc2V0c2VsZWN0aW9uKFtzZWxbMF1dKQorCQkJCmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL21pc2MvX19pbml0X18ucHkgYi9MaWIvZm9udFRvb2xzL21pc2MvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvbWlzYy9fX2luaXRfXy5weQpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy9taXNjL3RleHRUb29scy5weSBiL0xpYi9mb250VG9vbHMvbWlzYy90ZXh0VG9vbHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA0ZjQ1YQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvbWlzYy90ZXh0VG9vbHMucHkKQEAgLTAsMCArMSw4OSBAQAorIiIiZm9udFRvb2xzLm1pc2MudGV4dFRvb2xzLnB5IC0tIG1pc2NlbGFuZW91cyByb3V0aW5lcy4iIiIKKworCitpbXBvcnQgc3RyaW5nCisKKworZGVmIHNhZmVFdmFsKGRhdGEsIGV2YWw9ZXZhbCk6CisJIiIiQSBzYWZlIHJlcGxhY2VtZW50IGZvciBldmFsLiIiIgorCXJldHVybiBldmFsKGRhdGEsIHsiX19idWlsdGluc19fIjp7fX0sIHt9KQorCisKK2RlZiByZWFkSGV4KGNvbnRlbnQpOgorCSIiIkNvbnZlcnQgYSBsaXN0IG9mIGhleCBzdHJpbmdzIHRvIGJpbmFyeSBkYXRhLiIiIgorCWhleGRhdGEgPSAiIgorCWZvciBjaHVuayBpbiBjb250ZW50OgorCQlpZiB0eXBlKGNodW5rKSA9PSB0eXBlKCIiKToKKwkJCWhleGRhdGEgPSBoZXhkYXRhICsgY2h1bmsKKwlyZXR1cm4gZGVIZXhTdHIoaGV4ZGF0YSkKKworZGVmIGRlSGV4U3RyKGhleGRhdGEpOgorCSIiIkNvbnZlcnQgYSBoZXggc3RyaW5nIHRvIGJpbmFyeSBkYXRhLiIiIgorCXBhcnRzID0gc3RyaW5nLnNwbGl0KGhleGRhdGEpCisJaGV4ZGF0YSA9IHN0cmluZy5qb2luKHBhcnRzLCAiIikKKwlpZiBsZW4oaGV4ZGF0YSkgJSAyOgorCQloZXhkYXRhID0gaGV4ZGF0YSArICIwIgorCWRhdGEgPSAiIgorCWZvciBpIGluIHJhbmdlKDAsIGxlbihoZXhkYXRhKSwgMik6CisJCWRhdGEgPSBkYXRhICsgY2hyKHN0cmluZy5hdG9pKGhleGRhdGFbaTppKzJdLCAxNikpCisJcmV0dXJuIGRhdGEKKworZGVmIGhleFN0cihkYXRhKToKKwkiIiJDb252ZXJ0IGJpbmFyeSBkYXRhIHRvIGEgaGV4IHN0cmluZy4iIiIKKwloID0gc3RyaW5nLmhleGRpZ2l0cworCXIgPSAnJworCWZvciBjIGluIGRhdGE6CisJCWkgPSBvcmQoYykKKwkJciA9IHIgKyBoWyhpID4+IDQpICYgMHhGXSArIGhbaSAmIDB4Rl0KKwlyZXR1cm4gcgorCisKK2RlZiBudW0yYmluYXJ5KGwsIGJpdHM9MzIpOgorCWFsbCA9IFtdCisJYmluID0gIiIKKwlmb3IgaSBpbiByYW5nZShiaXRzKToKKwkJaWYgbCAmIDB4MToKKwkJCWJpbiA9ICIxIiArIGJpbgorCQllbHNlOgorCQkJYmluID0gIjAiICsgYmluCisJCWwgPSBsID4+IDEKKwkJaWYgbm90ICgoaSsxKSAlIDgpOgorCQkJYWxsLmFwcGVuZChiaW4pCisJCQliaW4gPSAiIgorCWFsbC5yZXZlcnNlKCkKKwlhc3NlcnQgbCBpbiAoMCwgLTEpLCAibnVtYmVyIGRvZXNuJ3QgZml0IGluIG51bWJlciBvZiBiaXRzIgorCXJldHVybiBzdHJpbmcuam9pbihhbGwsICIgIikKKworCitkZWYgYmluYXJ5Mm51bShiaW4pOgorCWJpbiA9IHN0cmluZy5qb2luKHN0cmluZy5zcGxpdChiaW4pLCAiIikKKwlsID0gMAorCWZvciBkaWdpdCBpbiBiaW46CisJCWwgPSBsIDw8IDEKKwkJaWYgZGlnaXQgPD4gIjAiOgorCQkJbCA9IGwgfCAweDEKKwlyZXR1cm4gbAorCisKK2RlZiBjYXNlbGVzc1NvcnQoYWxpc3QpOgorCSIiIlJldHVybiBhIHNvcnRlZCBjb3B5IG9mIGEgbGlzdC4gSWYgdGhlcmUgYXJlIG9ubHkgc3RyaW5ncyAKKwlpbiB0aGUgbGlzdCwgaXQgd2lsbCBub3QgY29uc2lkZXIgY2FzZS4KKwkiIiIKKwkKKwl0cnk6CisJCSMgdHVybiBbJ0ZPTycsICAnYWFCYycsICdBQmNEJ10gaW50byAKKwkJIyBbKCdmb28nLCAnRk9PJyksICgnYWFiYycsICdhYUJjJyksICgnYWJjZCcsICdBQmNEJyldLCAKKwkJIyBidXQgb25seSBpZiBhbGwgZWxlbWVudHMgYXJlIHN0cmluZ3MKKwkJdHVwbGVkbGlzdCA9IG1hcChsYW1iZGEgaXRlbSwgbG93ZXIgPSBzdHJpbmcubG93ZXI6IAorCQkJKGxvd2VyKGl0ZW0pLCBpdGVtKSwgYWxpc3QpCisJZXhjZXB0IFR5cGVFcnJvcjoKKwkJIyBhdCBsZWFzdCBvbmUgZWxlbWVudCBpbiBhbGlzdCBpcyBub3QgYSBzdHJpbmcsIHByb2NlZWQgdGhlIG5vcm1hbCB3YXkuLi4KKwkJYWxpc3QgPSBhbGlzdFs6XQorCQlhbGlzdC5zb3J0KCkKKwkJcmV0dXJuIGFsaXN0CisJZWxzZToKKwkJdHVwbGVkbGlzdC5zb3J0KCkKKwkJIyB0dXJuIFsoJ2FhYmMnLCAnYWFCYycpLCAoJ2FiY2QnLCAnQUJjRCcpLCAoJ2ZvbycsICdGT08nKV0gaW50byAKKwkJIyBbJ2FhQmMnLCAnQUJjRCcsICdGT08nXQorCQlyZXR1cm4gbWFwKGxhbWJkYSB4OiB4WzFdLCB0dXBsZWRsaXN0KQorCmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL25mbnRMaWIucHkgYi9MaWIvZm9udFRvb2xzL25mbnRMaWIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhhNTRiYQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvbmZudExpYi5weQpAQCAtMCwwICsxLDE0NCBAQAoraW1wb3J0IFJlcworaW1wb3J0IG1hY2ZzCitpbXBvcnQgc3RydWN0CitpbXBvcnQgUWQKK2Zyb20gdHlwZXMgaW1wb3J0ICoKKworCitjbGFzcyBORk5UOgorCQorCWRlZiBfX2luaXRfXyhzZWxmLCBuZm50LCBuYW1lID0gIiIsIF90eXBlID0gJ05GTlQnKToKKwkJaWYgdHlwZShuZm50KSA9PSB0eXBlKFJlcy5SZXNvdXJjZSgiIikpOgorCQkJdGhlSUQsIHRoZVR5cGUsIG5hbWUgPSBuZm50LkdldFJlc0luZm8oKQorCQkJaWYgdGhlVHlwZSA8PiBfdHlwZToKKwkJCQlyYWlzZSBUeXBlRXJyb3IsICdyZXNvdXJjZSBvZiB3cm9uZyB0eXBlOyBleHBlY3RlZCAnICsgX3R5cGUKKwkJCWRhdGEgPSBuZm50LmRhdGEKKwkJZWxpZiB0eXBlKG5mbnQpID09IFN0cmluZ1R5cGU6CisJCQlmc3MgPSBtYWNmcy5GU1NwZWMobmZudCkKKwkJCWRhdGEgPSByZWFkbmZudHJlc291cmNlKG5mbnQsIG5hbWUsIF90eXBlKQorCQllbGlmIHR5cGUobmZudCkgPT0gdHlwZShtYWNmcy5GU1NwZWMoJzonKSk6CisJCQlkYXRhID0gcmVhZG5mbnRyZXNvdXJjZShuZm50LCBuYW1lLCBfdHlwZSkKKwkJZWxzZToKKwkJCXJhaXNlIFR5cGVFcnJvciwgJ2V4cGVjdGVkIHJlc291cmNlLCBzdHJpbmcgb3IgZnNzOyBmb3VuZCAnICsgdHlwZShuZm50KS5fX25hbWVfXworCQlzZWxmLnBhcnNlX25mbnQoZGF0YSkKKwkKKwlkZWYgcGFyc2VfbmZudChzZWxmLCBkYXRhKToKKwkJIyBoZWFkZXI7IEZvbnRSZWMKKwkJKAlzZWxmLmZvbnRUeXBlLAorCQkJc2VsZi5maXJzdENoYXIsCisJCQlzZWxmLmxhc3RDaGFyLAorCQkJc2VsZi53aWRNYXgsCisJCQlzZWxmLmtlcm5NYXgsCisJCQlzZWxmLm5EZXNjZW50LAorCQkJZlJlY3RXaWR0aCwKKwkJCXNlbGYuZlJlY3RIZWlnaHQsCisJCQlvd1RMb2MsCisJCQlzZWxmLmFzY2VudCwKKwkJCXNlbGYuZGVzY2VudCwKKwkJCXNlbGYubGVhZGluZywKKwkJCXNlbGYucm93V29yZHMJKSA9IHN0cnVjdC51bnBhY2soIjEzaCIsIGRhdGFbOjI2XSkKKwkJaWYgb3dUTG9jIDwgMDoKKwkJCW93VExvYyA9IG93VExvYyArIDB4ODAwMAkjIHVuc2lnbmVkIHNob3J0CisJCQorCQkjIHJlc3QKKwkJdGFibGVzaXplID0gMiAqIChzZWxmLmxhc3RDaGFyIC0gc2VsZi5maXJzdENoYXIgKyAzKQorCQliaXRtYXBzaXplID0gMiAqIHNlbGYucm93V29yZHMgKiBzZWxmLmZSZWN0SGVpZ2h0CisJCQorCQlzZWxmLmJpdHMgPSBkYXRhWzI2OjI2ICsgYml0bWFwc2l6ZV0KKwkJc2VsZi5iaXRJbWFnZSA9IFFkLkJpdE1hcChzZWxmLmJpdHMsIDIgKiBzZWxmLnJvd1dvcmRzLCAoMCwgMCwgc2VsZi5yb3dXb3JkcyAqIDE2LCBzZWxmLmZSZWN0SGVpZ2h0KSkKKwkJCisJCW93VGFibGUgPSBkYXRhWzI2ICsgYml0bWFwc2l6ZSArIHRhYmxlc2l6ZToyNiArIGJpdG1hcHNpemUgKyAyICogdGFibGVzaXplXQorCQlpZiBsZW4ob3dUYWJsZSkgPD4gdGFibGVzaXplOgorCQkJcmFpc2UgVmFsdWVFcnJvciwgJ2ludmFsaWQgTkZOVCByZXNvdXJjZScKKwkJCisJCWxvY1RhYmxlID0gZGF0YVsyNiArIGJpdG1hcHNpemU6MjYgKyBiaXRtYXBzaXplICsgdGFibGVzaXplXQorCQlpZiBsZW4obG9jVGFibGUpIDw+IHRhYmxlc2l6ZToKKwkJCXJhaXNlIFZhbHVlRXJyb3IsICdpbnZhbGlkIE5GTlQgcmVzb3VyY2UnCisJCQorCQkjIGZpbGwgdGFibGVzCisJCXNlbGYub2Zmc2V0dGFibGUgPSBbXQorCQlzZWxmLndpZHRodGFibGUgPSBbXQorCQlzZWxmLmxvY2F0aW9udGFibGUgPSBbXQorCQlmb3IgaSBpbiByYW5nZSgwLCB0YWJsZXNpemUsIDIpOgorCQkJc2VsZi5vZmZzZXR0YWJsZS5hcHBlbmQob3JkKG93VGFibGVbaV0pKQorCQkJc2VsZi53aWR0aHRhYmxlLmFwcGVuZChvcmQob3dUYWJsZVtpKzFdKSkKKwkJCWxvYywgPSBzdHJ1Y3QudW5wYWNrKCdoJywgbG9jVGFibGVbaTppKzJdKQorCQkJc2VsZi5sb2NhdGlvbnRhYmxlLmFwcGVuZChsb2MpCisJCisJZGVmIGRyYXdzdHJpbmcoc2VsZiwgYXN0cmluZywgZGVzdGJpdHMsIHhvZmZzZXQgPSAwLCB5b2Zmc2V0ID0gMCk6CisJCWRyYXdjaGFyID0gc2VsZi5kcmF3Y2hhcgorCQlmb3IgY2ggaW4gYXN0cmluZzoKKwkJCXhvZmZzZXQgPSBkcmF3Y2hhcihjaCwgZGVzdGJpdHMsIHhvZmZzZXQsIHlvZmZzZXQpCisJCXJldHVybiB4b2Zmc2V0CisJCisJZGVmIGRyYXdjaGFyKHNlbGYsIGNoLCBkZXN0Yml0cywgeG9mZnNldCwgeW9mZnNldCA9IDApOgorCQl3aWR0aCwgYm91bmRzLCBkZXN0Ym91bmRzID0gc2VsZi5nZXRjaGFyYm91bmRzKGNoKQorCQlkZXN0Ym91bmRzID0gUWQuT2Zmc2V0UmVjdChkZXN0Ym91bmRzLCB4b2Zmc2V0LCB5b2Zmc2V0KQorCQlRZC5Db3B5Qml0cyhzZWxmLmJpdEltYWdlLCBkZXN0Yml0cywgYm91bmRzLCBkZXN0Ym91bmRzLCAxLCBOb25lKQorCQlyZXR1cm4geG9mZnNldCArIHdpZHRoCisJCisJZGVmIHN0cmluZ3dpZHRoKHNlbGYsIGFzdHJpbmcpOgorCQljaGFyd2lkdGggPSBzZWxmLmNoYXJ3aWR0aAorCQl3aWR0aCA9IDAKKwkJZm9yIGNoIGluIGFzdHJpbmc6CisJCQl3aWR0aCA9IHdpZHRoICsgY2hhcndpZHRoKGNoKQorCQlyZXR1cm4gd2lkdGgKKwkKKwlkZWYgY2hhcndpZHRoKHNlbGYsIGNoKToKKwkJY2luZGV4ID0gb3JkKGNoKSAtIHNlbGYuZmlyc3RDaGFyCisJCWlmIGNpbmRleCA+IHNlbGYubGFzdENoYXIgb3IgCVwKKwkJCQkoc2VsZi5vZmZzZXR0YWJsZVtjaW5kZXhdID09IDI1NSBhbmQgc2VsZi53aWR0aHRhYmxlW2NpbmRleF0gPT0gMjU1KToKKwkJCWNpbmRleCA9IC0yCQkjIG1pc3NpbmcgY2hhcgorCQlyZXR1cm4gc2VsZi53aWR0aHRhYmxlW2NpbmRleF0KKwkKKwlkZWYgZ2V0Y2hhcmJvdW5kcyhzZWxmLCBjaCk6CisJCWNpbmRleCA9IG9yZChjaCkgLSBzZWxmLmZpcnN0Q2hhcgorCQlpZiBjaW5kZXggPiBzZWxmLmxhc3RDaGFyIG9yIAlcCisJCQkJKHNlbGYub2Zmc2V0dGFibGVbY2luZGV4XSA9PSAyNTUgYW5kIHNlbGYud2lkdGh0YWJsZVtjaW5kZXhdID09IDI1NSk6CisJCQlyZXR1cm4gc2VsZi5nZXRjaGFyYm91bmRzaW5kZXgoLTIpCSMgbWlzc2luZyBjaGFyCisJCXJldHVybiBzZWxmLmdldGNoYXJib3VuZHNpbmRleChjaW5kZXgpCisJCisJZGVmIGdldGNoYXJib3VuZHNpbmRleChzZWxmLCBjaW5kZXgpOgorCQlvZmZzZXQgPSBzZWxmLm9mZnNldHRhYmxlW2NpbmRleF0KKwkJd2lkdGggPSBzZWxmLndpZHRodGFibGVbY2luZGV4XQorCQlpZiBvZmZzZXQgPT0gMjU1IGFuZCB3aWR0aCA9PSAyNTU6CisJCQlyYWlzZSBWYWx1ZUVycm9yLCAiY2hhcmFjdGVyIG5vdCBkZWZpbmVkIgorCQlsb2NhdGlvbjAgPSBzZWxmLmxvY2F0aW9udGFibGVbY2luZGV4XQorCQlsb2NhdGlvbjEgPSBzZWxmLmxvY2F0aW9udGFibGVbY2luZGV4ICsgMV0KKwkJc3JjYm91bmRzID0gKGxvY2F0aW9uMCwgMCwgbG9jYXRpb24xLCBzZWxmLmZSZWN0SGVpZ2h0KQorCQlkZXN0Ym91bmRzID0gKAlvZmZzZXQgKyBzZWxmLmtlcm5NYXgsIAorCQkJCQkwLCAKKwkJCQkJb2Zmc2V0ICsgc2VsZi5rZXJuTWF4ICsgbG9jYXRpb24xIC0gbG9jYXRpb24wLCAKKwkJCQkJc2VsZi5mUmVjdEhlaWdodAkpCisJCXJldHVybiB3aWR0aCwgc3JjYm91bmRzLCBkZXN0Ym91bmRzCisKKworZGVmIHJlYWRuZm50cmVzb3VyY2UoZnNzLCBuYW1lLCBfdHlwZSA9ICdORk5UJyk6CisJcmVzcmVmID0gUmVzLkZTcE9wZW5SZXNGaWxlKGZzcywgMSkJIyByZWFkb25seQorCVJlcy5Vc2VSZXNGaWxlKHJlc3JlZikKKwl0cnk6CisJCWlmIG5hbWU6CisJCQlyZXMgPSBSZXMuR2V0MU5hbWVkUmVzb3VyY2UoX3R5cGUsIG5hbWUpCisJCWVsc2U6CisJCQkjIGp1c3QgdGFrZSB0aGUgZmlyc3QgaW4gdGhlIGZpbGUKKwkJCXJlcyA9IFJlcy5HZXQxSW5kUmVzb3VyY2UoX3R5cGUsIDEpCisJCXRoZUlELCB0aGVUeXBlLCBuYW1lID0gcmVzLkdldFJlc0luZm8oKQorCQlpZiB0aGVUeXBlIDw+IF90eXBlOgorCQkJcmFpc2UgVHlwZUVycm9yLCAncmVzb3VyY2Ugb2Ygd3JvbmcgdHlwZTsgZXhwZWN0ZWQgJyArIF90eXBlCisJCWRhdGEgPSByZXMuZGF0YQorCWZpbmFsbHk6CisJCVJlcy5DbG9zZVJlc0ZpbGUocmVzcmVmKQorCXJldHVybiBkYXRhCisKKworaWYgMDoKKwlpbXBvcnQgV2luCisJZnNzLCBvayA9IG1hY2ZzLlN0YW5kYXJkR2V0RmlsZSgnRkZJTCcpCisJaWYgb2s6CisJCW4gPSBORk5UKGZzcykKKwkJcyA9ICIhISFBQkNERUZHSElKS0xNTjAxMjM0IGhlbWVsdGplIGxpZWYuLi54Li4iCisJCXggPSAxMAorCQl5ID0gNDAKKwkJZGVzdGJpdHMgPSBXaW4uRnJvbnRXaW5kb3coKS5HZXRXaW5kb3dQb3J0KCkucG9ydEJpdHMKKwkJbi5kcmF3c3RyaW5nKHMsIGRlc3RiaXRzLCB4LCB5KQorCQlwcmludCBuLnN0cmluZ3dpZHRoKHMpCmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL3BzQ2hhclN0cmluZ3MucHkgYi9MaWIvZm9udFRvb2xzL3BzQ2hhclN0cmluZ3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYxODc4NAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvcHNDaGFyU3RyaW5ncy5weQpAQCAtMCwwICsxLDk3NCBAQAorIiIicHNDaGFyU3RyaW5ncy5weSAtLSBtb2R1bGUgaW1wbGVtZW50aW5nIHZhcmlvdXMga2luZHMgb2YgQ2hhclN0cmluZ3M6IAorQ0ZGIGRpY3Rpb25hcnkgZGF0YSBhbmQgVHlwZTEvVHlwZTIgQ2hhclN0cmluZ3MuCisiIiIKKworX192ZXJzaW9uX18gPSAiMS4wYjEiCitfX2F1dGhvcl9fID0gImp2ciIKKworCitpbXBvcnQgdHlwZXMKK2ltcG9ydCBzdHJ1Y3QKK2ltcG9ydCBzdHJpbmcKKworCit0MU9wZXJhbmRFbmNvZGluZyA9IFtOb25lXSAqIDI1NgordDFPcGVyYW5kRW5jb2RpbmdbMDozMl0gPSAoMzIpICogWyJkb19vcGVyYXRvciJdCit0MU9wZXJhbmRFbmNvZGluZ1szMjoyNDddID0gKDI0NyAtIDMyKSAqIFsicmVhZF9ieXRlIl0KK3QxT3BlcmFuZEVuY29kaW5nWzI0NzoyNTFdID0gKDI1MSAtIDI0NykgKiBbInJlYWRfc21hbGxJbnQxIl0KK3QxT3BlcmFuZEVuY29kaW5nWzI1MToyNTVdID0gKDI1NSAtIDI1MSkgKiBbInJlYWRfc21hbGxJbnQyIl0KK3QxT3BlcmFuZEVuY29kaW5nWzI1NV0gPSAicmVhZF9sb25nSW50IgorYXNzZXJ0IGxlbih0MU9wZXJhbmRFbmNvZGluZykgPT0gMjU2CisKK3QyT3BlcmFuZEVuY29kaW5nID0gdDFPcGVyYW5kRW5jb2RpbmdbOl0KK3QyT3BlcmFuZEVuY29kaW5nWzI4XSA9ICJyZWFkX3Nob3J0SW50IgorCitjZmZEaWN0T3BlcmFuZEVuY29kaW5nID0gdDJPcGVyYW5kRW5jb2RpbmdbOl0KK2NmZkRpY3RPcGVyYW5kRW5jb2RpbmdbMjldID0gInJlYWRfbG9uZ0ludCIKK2NmZkRpY3RPcGVyYW5kRW5jb2RpbmdbMzBdID0gInJlYWRfcmVhbE51bWJlciIKK2NmZkRpY3RPcGVyYW5kRW5jb2RpbmdbMjU1XSA9ICJyZXNlcnZlZCIKKworCityZWFsTmliYmxlcyA9IFsnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsIAorCQknLicsICdFJywgJ0UtJywgTm9uZSwgJy0nXQorCisKK2NsYXNzIEJ5dGVDb2RlRGVjb21waWxlckJhc2U6CisJCisJZGVmIHJlYWRfYnl0ZShzZWxmLCBiMCwgZGF0YSwgaW5kZXgpOgorCQlyZXR1cm4gYjAgLSAxMzksIGluZGV4CisJCisJZGVmIHJlYWRfc21hbGxJbnQxKHNlbGYsIGIwLCBkYXRhLCBpbmRleCk6CisJCWIxID0gb3JkKGRhdGFbaW5kZXhdKQorCQlyZXR1cm4gKGIwLTI0NykqMjU2ICsgYjEgKyAxMDgsIGluZGV4KzEKKwkKKwlkZWYgcmVhZF9zbWFsbEludDIoc2VsZiwgYjAsIGRhdGEsIGluZGV4KToKKwkJYjEgPSBvcmQoZGF0YVtpbmRleF0pCisJCXJldHVybiAtKGIwLTI1MSkqMjU2IC0gYjEgLSAxMDgsIGluZGV4KzEKKwkKKwlkZWYgcmVhZF9zaG9ydEludChzZWxmLCBiMCwgZGF0YSwgaW5kZXgpOgorCQliaW4gPSBkYXRhW2luZGV4XSArIGRhdGFbaW5kZXgrMV0KKwkJdmFsdWUsID0gc3RydWN0LnVucGFjaygiPmgiLCBiaW4pCisJCXJldHVybiB2YWx1ZSwgaW5kZXgrMgorCQorCWRlZiByZWFkX2xvbmdJbnQoc2VsZiwgYjAsIGRhdGEsIGluZGV4KToKKwkJYmluID0gZGF0YVtpbmRleF0gKyBkYXRhW2luZGV4KzFdICsgZGF0YVtpbmRleCsyXSArIGRhdGFbaW5kZXgrM10KKwkJdmFsdWUsID0gc3RydWN0LnVucGFjaygiPmwiLCBiaW4pCisJCXJldHVybiB2YWx1ZSwgaW5kZXgrNAorCQorCWRlZiByZWFkX3JlYWxOdW1iZXIoc2VsZiwgYjAsIGRhdGEsIGluZGV4KToKKwkJbnVtYmVyID0gJycKKwkJd2hpbGUgMToKKwkJCWIgPSBvcmQoZGF0YVtpbmRleF0pCisJCQlpbmRleCA9IGluZGV4ICsgMQorCQkJbmliYmxlMCA9IChiICYgMHhmMCkgPj4gNAorCQkJbmliYmxlMSA9IGIgJiAweDBmCisJCQlpZiBuaWJibGUwID09IDB4ZjoKKwkJCQlicmVhaworCQkJbnVtYmVyID0gbnVtYmVyICsgcmVhbE5pYmJsZXNbbmliYmxlMF0KKwkJCWlmIG5pYmJsZTEgPT0gMHhmOgorCQkJCWJyZWFrCisJCQludW1iZXIgPSBudW1iZXIgKyByZWFsTmliYmxlc1tuaWJibGUxXQorCQlyZXR1cm4gc3RyaW5nLmF0b2YobnVtYmVyKSwgaW5kZXgKKworCitkZWYgX2J1aWxkT3BlcmF0b3JEaWN0KG9wZXJhdG9yTGlzdCk6CisJZGljdCA9IHt9CisJZm9yIGl0ZW0gaW4gb3BlcmF0b3JMaXN0OgorCQlpZiBsZW4oaXRlbSkgPT0gMjoKKwkJCWRpY3RbaXRlbVswXV0gPSBpdGVtWzFdCisJCWVsc2U6CisJCQlkaWN0W2l0ZW1bMF1dID0gaXRlbVsxOl0KKwlyZXR1cm4gZGljdAorCisKK3QyT3BlcmF0b3JzID0gWworIwlvcGNvZGUgICAgIG5hbWUKKwkoMSwgICAgICAgICdoc3RlbScpLAorCSgzLCAgICAgICAgJ3ZzdGVtJyksCisJKDQsICAgICAgICAndm1vdmV0bycpLAorCSg1LCAgICAgICAgJ3JsaW5ldG8nKSwKKwkoNiwgICAgICAgICdobGluZXRvJyksCisJKDcsICAgICAgICAndmxpbmV0bycpLAorCSg4LCAgICAgICAgJ3JyY3VydmV0bycpLAorCSgxMCwgICAgICAgJ2NhbGxzdWJyJyksCisJKDExLCAgICAgICAncmV0dXJuJyksCisJKDE0LCAgICAgICAnZW5kY2hhcicpLAorCSgxNiwgICAgICAgJ2JsZW5kJyksCisJKDE4LCAgICAgICAnaHN0ZW1obScpLAorCSgxOSwgICAgICAgJ2hpbnRtYXNrJyksCisJKDIwLCAgICAgICAnY250cm1hc2snKSwKKwkoMjEsICAgICAgICdybW92ZXRvJyksCisJKDIyLCAgICAgICAnaG1vdmV0bycpLAorCSgyMywgICAgICAgJ3ZzdGVtaG0nKSwKKwkoMjQsICAgICAgICdyY3VydmVsaW5lJyksCisJKDI1LCAgICAgICAncmxpbmVjdXJ2ZScpLAorCSgyNiwgICAgICAgJ3Z2Y3VydmV0bycpLAorCSgyNywgICAgICAgJ2hoY3VydmV0bycpLAorIwkoMjgsICAgICAgICdzaG9ydGludCcpLCAgIyBub3QgcmVhbGx5IGFuIG9wZXJhdG9yCisJKDI5LCAgICAgICAnY2FsbGdzdWJyJyksCisJKDMwLCAgICAgICAndmhjdXJ2ZXRvJyksCisJKDMxLCAgICAgICAnaHZjdXJ2ZXRvJyksCisJKCgxMiwgMyksICAnYW5kJyksCisJKCgxMiwgNCksICAnb3InKSwKKwkoKDEyLCA1KSwgICdub3QnKSwKKwkoKDEyLCA4KSwgICdzdG9yZScpLAorCSgoMTIsIDkpLCAgJ2FicycpLAorCSgoMTIsIDEwKSwgJ2FkZCcpLAorCSgoMTIsIDExKSwgJ3N1YicpLAorCSgoMTIsIDEyKSwgJ2RpdicpLAorCSgoMTIsIDEzKSwgJ2xvYWQnKSwKKwkoKDEyLCAxNCksICduZWcnKSwKKwkoKDEyLCAxNSksICdlcScpLAorCSgoMTIsIDE4KSwgJ2Ryb3AnKSwKKwkoKDEyLCAyMCksICdwdXQnKSwKKwkoKDEyLCAyMSksICdnZXQnKSwKKwkoKDEyLCAyMiksICdpZmVsc2UnKSwKKwkoKDEyLCAyMyksICdyYW5kb20nKSwKKwkoKDEyLCAyNCksICdtdWwnKSwKKwkoKDEyLCAyNiksICdzcXJ0JyksCisJKCgxMiwgMjcpLCAnZHVwJyksCisJKCgxMiwgMjgpLCAnZXhjaCcpLAorCSgoMTIsIDI5KSwgJ2luZGV4JyksCisJKCgxMiwgMzApLCAncm9sbCcpLAorCSgoMTIsIDM0KSwgJ2hmbGV4JyksCisJKCgxMiwgMzUpLCAnZmxleCcpLAorCSgoMTIsIDM2KSwgJ2hmbGV4MScpLAorCSgoMTIsIDM3KSwgJ2ZsZXgxJyksCitdCisKK2NsYXNzIFQyQ2hhclN0cmluZyhCeXRlQ29kZURlY29tcGlsZXJCYXNlKToKKwkKKwlvcGVyYW5kRW5jb2RpbmcgPSB0Mk9wZXJhbmRFbmNvZGluZworCW9wZXJhdG9ycyA9IF9idWlsZE9wZXJhdG9yRGljdCh0Mk9wZXJhdG9ycykKKwkKKwlkZWYgX19pbml0X18oc2VsZiwgYnl0ZWNvZGU9Tm9uZSwgcHJvZ3JhbT1Ob25lKToKKwkJaWYgcHJvZ3JhbSBpcyBOb25lOgorCQkJcHJvZ3JhbSA9IFtdCisJCXNlbGYuYnl0ZWNvZGUgPSBieXRlY29kZQorCQlzZWxmLnByb2dyYW0gPSBwcm9ncmFtCisJCisJZGVmIF9fcmVwcl9fKHNlbGYpOgorCQlpZiBzZWxmLmJ5dGVjb2RlIGlzIE5vbmU6CisJCQlyZXR1cm4gIjwlcyAoc291cmNlKSBhdCAleD4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBpZChzZWxmKSkKKwkJZWxzZToKKwkJCXJldHVybiAiPCVzIChieXRlY29kZSkgYXQgJXg+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgaWQoc2VsZikpCisJCisJZGVmIG5lZWRzRGVjb21waWxhdGlvbihzZWxmKToKKwkJcmV0dXJuIHNlbGYuYnl0ZWNvZGUgaXMgbm90IE5vbmUKKwkKKwlkZWYgc2V0UHJvZ3JhbShzZWxmLCBwcm9ncmFtKToKKwkJc2VsZi5wcm9ncmFtID0gcHJvZ3JhbQorCQlzZWxmLmJ5dGVjb2RlID0gTm9uZQorCQorCWRlZiBnZXRUb2tlbihzZWxmLCBpbmRleCwgCisJCQlsZW49bGVuLCBvcmQ9b3JkLCBnZXRhdHRyPWdldGF0dHIsIHR5cGU9dHlwZSwgU3RyaW5nVHlwZT10eXBlcy5TdHJpbmdUeXBlKToKKwkJaWYgc2VsZi5ieXRlY29kZSBpcyBub3QgTm9uZToKKwkJCWlmIGluZGV4ID49IGxlbihzZWxmLmJ5dGVjb2RlKToKKwkJCQlyZXR1cm4gTm9uZSwgMCwgMAorCQkJYjAgPSBvcmQoc2VsZi5ieXRlY29kZVtpbmRleF0pCisJCQlpbmRleCA9IGluZGV4ICsgMQorCQkJY29kZSA9IHNlbGYub3BlcmFuZEVuY29kaW5nW2IwXQorCQkJaGFuZGxlciA9IGdldGF0dHIoc2VsZiwgY29kZSkKKwkJCXRva2VuLCBpbmRleCA9IGhhbmRsZXIoYjAsIHNlbGYuYnl0ZWNvZGUsIGluZGV4KQorCQllbHNlOgorCQkJaWYgaW5kZXggPj0gbGVuKHNlbGYucHJvZ3JhbSk6CisJCQkJcmV0dXJuIE5vbmUsIDAsIDAKKwkJCXRva2VuID0gc2VsZi5wcm9ncmFtW2luZGV4XQorCQkJaW5kZXggPSBpbmRleCArIDEKKwkJaXNPcGVyYXRvciA9IHR5cGUodG9rZW4pID09IFN0cmluZ1R5cGUKKwkJcmV0dXJuIHRva2VuLCBpc09wZXJhdG9yLCBpbmRleAorCQorCWRlZiBnZXRCeXRlcyhzZWxmLCBpbmRleCwgbkJ5dGVzKToKKwkJaWYgc2VsZi5ieXRlY29kZSBpcyBub3QgTm9uZToKKwkJCW5ld0luZGV4ID0gaW5kZXggKyBuQnl0ZXMKKwkJCWJ5dGVzID0gc2VsZi5ieXRlY29kZVtpbmRleDpuZXdJbmRleF0KKwkJCWluZGV4ID0gbmV3SW5kZXgKKwkJZWxzZToKKwkJCWJ5dGVzID0gc2VsZi5wcm9ncmFtW2luZGV4XQorCQkJaW5kZXggPSBpbmRleCArIDEKKwkJYXNzZXJ0IGxlbihieXRlcykgPT0gbkJ5dGVzCisJCXJldHVybiBieXRlcywgaW5kZXgKKwkKKwlkZWYgZG9fb3BlcmF0b3Ioc2VsZiwgYjAsIGRhdGEsIGluZGV4KToKKwkJaWYgYjAgPT0gMTI6CisJCQlvcCA9IChiMCwgb3JkKGRhdGFbaW5kZXhdKSkKKwkJCWluZGV4ID0gaW5kZXgrMQorCQllbHNlOgorCQkJb3AgPSBiMAorCQlvcGVyYXRvciA9IHNlbGYub3BlcmF0b3JzW29wXQorCQlyZXR1cm4gb3BlcmF0b3IsIGluZGV4CisJCisJZGVmIHRvWE1MKHNlbGYsIHhtbFdyaXRlcik6CisJCWZyb20gbWlzYy50ZXh0VG9vbHMgaW1wb3J0IG51bTJiaW5hcnkKKwkJaWYgc2VsZi5ieXRlY29kZSBpcyBub3QgTm9uZToKKwkJCXhtbFdyaXRlci5kdW1waGV4KHNlbGYuYnl0ZWNvZGUpCisJCWVsc2U6CisJCQlpbmRleCA9IDAKKwkJCWFyZ3MgPSBbXQorCQkJd2hpbGUgMToKKwkJCQl0b2tlbiwgaXNPcGVyYXRvciwgaW5kZXggPSBzZWxmLmdldFRva2VuKGluZGV4KQorCQkJCWlmIHRva2VuIGlzIE5vbmU6CisJCQkJCWJyZWFrCisJCQkJaWYgaXNPcGVyYXRvcjoKKwkJCQkJYXJncyA9IG1hcChzdHIsIGFyZ3MpCisJCQkJCWlmIHRva2VuIGluICgnaGludG1hc2snLCAnY250cm1hc2snKToKKwkJCQkJCWhpbnRNYXNrLCBpc09wZXJhdG9yLCBpbmRleCA9IHNlbGYuZ2V0VG9rZW4oaW5kZXgpCisJCQkJCQliaXRzID0gW10KKwkJCQkJCWZvciBieXRlIGluIGhpbnRNYXNrOgorCQkJCQkJCWJpdHMuYXBwZW5kKG51bTJiaW5hcnkob3JkKGJ5dGUpLCA4KSkKKwkJCQkJCWhpbnRNYXNrID0gcmVwcihzdHJpbmcuam9pbihiaXRzLCAiIikpCisJCQkJCQlsaW5lID0gc3RyaW5nLmpvaW4oYXJncyArIFt0b2tlbiwgaGludE1hc2tdLCAiICIpCisJCQkJCWVsc2U6CisJCQkJCQlsaW5lID0gc3RyaW5nLmpvaW4oYXJncyArIFt0b2tlbl0sICIgIikKKwkJCQkJeG1sV3JpdGVyLndyaXRlKGxpbmUpCisJCQkJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkJCQkJYXJncyA9IFtdCisJCQkJZWxzZToKKwkJCQkJYXJncy5hcHBlbmQodG9rZW4pCisKKwordDFPcGVyYXRvcnMgPSBbCisjCW9wY29kZSAgICAgbmFtZQorCSgxLCAgICAgICAgJ2hzdGVtJyksCisJKDMsICAgICAgICAndnN0ZW0nKSwKKwkoNCwgICAgICAgICd2bW92ZXRvJyksCisJKDUsICAgICAgICAncmxpbmV0bycpLAorCSg2LCAgICAgICAgJ2hsaW5ldG8nKSwKKwkoNywgICAgICAgICd2bGluZXRvJyksCisJKDgsICAgICAgICAncnJjdXJ2ZXRvJyksCisJKDksICAgICAgICAnY2xvc2VwYXRoJyksCisJKDEwLCAgICAgICAnY2FsbHN1YnInKSwKKwkoMTEsICAgICAgICdyZXR1cm4nKSwKKwkoMTMsICAgICAgICdoc2J3JyksCisJKDE0LCAgICAgICAnZW5kY2hhcicpLAorCSgyMSwgICAgICAgJ3Jtb3ZldG8nKSwKKwkoMjIsICAgICAgICdobW92ZXRvJyksCisJKDMwLCAgICAgICAndmhjdXJ2ZXRvJyksCisJKDMxLCAgICAgICAnaHZjdXJ2ZXRvJyksCisJKCgxMiwgMCksICAnZG90c2VjdGlvbicpLAorCSgoMTIsIDEpLCAgJ3ZzdGVtMycpLAorCSgoMTIsIDIpLCAgJ2hzdGVtMycpLAorCSgoMTIsIDYpLCAgJ3NlYWMnKSwKKwkoKDEyLCA3KSwgICdzYncnKSwKKwkoKDEyLCAxMiksICdkaXYnKSwKKwkoKDEyLCAxNiksICdjYWxsb3RoZXJzdWJyJyksCisJKCgxMiwgMTcpLCAncG9wJyksCisJKCgxMiwgMzMpLCAnc2V0Y3VycmVudHBvaW50JyksCitdCisKK2NsYXNzIFQxQ2hhclN0cmluZyhUMkNoYXJTdHJpbmcpOgorCQorCW9wZXJhbmRFbmNvZGluZyA9IHQxT3BlcmFuZEVuY29kaW5nCisJb3BlcmF0b3JzID0gX2J1aWxkT3BlcmF0b3JEaWN0KHQxT3BlcmF0b3JzKQorCQorCWRlZiBkZWNvbXBpbGUoc2VsZik6CisJCWlmIGhhc2F0dHIoc2VsZiwgInByb2dyYW0iKToKKwkJCXJldHVybgorCQlwcm9ncmFtID0gW10KKwkJaW5kZXggPSAwCisJCXdoaWxlIDE6CisJCQl0b2tlbiwgaXNPcGVyYXRvciwgaW5kZXggPSBzZWxmLmdldFRva2VuKGluZGV4KQorCQkJaWYgdG9rZW4gaXMgTm9uZToKKwkJCQlicmVhaworCQkJcHJvZ3JhbS5hcHBlbmQodG9rZW4pCisJCXNlbGYuc2V0UHJvZ3JhbShwcm9ncmFtKQorCisKK2NsYXNzIFNpbXBsZVQyRGVjb21waWxlcjoKKwkKKwlkZWYgX19pbml0X18oc2VsZiwgbG9jYWxTdWJycywgZ2xvYmFsU3VicnMpOgorCQlzZWxmLmxvY2FsU3VicnMgPSBsb2NhbFN1YnJzCisJCXNlbGYubG9jYWxCaWFzID0gY2FsY1N1YnJCaWFzKGxvY2FsU3VicnMpCisJCXNlbGYuZ2xvYmFsU3VicnMgPSBnbG9iYWxTdWJycworCQlzZWxmLmdsb2JhbEJpYXMgPSBjYWxjU3VickJpYXMoZ2xvYmFsU3VicnMpCisJCXNlbGYucmVzZXQoKQorCQorCWRlZiByZXNldChzZWxmKToKKwkJc2VsZi5jYWxsaW5nU3RhY2sgPSBbXQorCQlzZWxmLm9wZXJhbmRTdGFjayA9IFtdCisJCXNlbGYuaGludENvdW50ID0gMAorCQlzZWxmLmhpbnRNYXNrQnl0ZXMgPSAwCisJCisJZGVmIGV4ZWN1dGUoc2VsZiwgY2hhclN0cmluZyk6CisJCXNlbGYuY2FsbGluZ1N0YWNrLmFwcGVuZChjaGFyU3RyaW5nKQorCQluZWVkc0RlY29tcGlsYXRpb24gPSBjaGFyU3RyaW5nLm5lZWRzRGVjb21waWxhdGlvbigpCisJCWlmIG5lZWRzRGVjb21waWxhdGlvbjoKKwkJCXByb2dyYW0gPSBbXQorCQkJcHVzaFRvUHJvZ3JhbSA9IHByb2dyYW0uYXBwZW5kCisJCWVsc2U6CisJCQlwdXNoVG9Qcm9ncmFtID0gbGFtYmRhIHg6IE5vbmUKKwkJcHVzaFRvU3RhY2sgPSBzZWxmLm9wZXJhbmRTdGFjay5hcHBlbmQKKwkJaW5kZXggPSAwCisJCXdoaWxlIDE6CisJCQl0b2tlbiwgaXNPcGVyYXRvciwgaW5kZXggPSBjaGFyU3RyaW5nLmdldFRva2VuKGluZGV4KQorCQkJaWYgdG9rZW4gaXMgTm9uZToKKwkJCQlicmVhayAgIyB3ZSdyZSBkb25lIQorCQkJcHVzaFRvUHJvZ3JhbSh0b2tlbikKKwkJCWlmIGlzT3BlcmF0b3I6CisJCQkJaGFuZGxlck5hbWUgPSAib3BfIiArIHRva2VuCisJCQkJaWYgaGFzYXR0cihzZWxmLCBoYW5kbGVyTmFtZSk6CisJCQkJCWhhbmRsZXIgPSBnZXRhdHRyKHNlbGYsIGhhbmRsZXJOYW1lKQorCQkJCQlydiA9IGhhbmRsZXIoaW5kZXgpCisJCQkJCWlmIHJ2OgorCQkJCQkJaGludE1hc2tCeXRlcywgaW5kZXggPSBydgorCQkJCQkJcHVzaFRvUHJvZ3JhbShoaW50TWFza0J5dGVzKQorCQkJCWVsc2U6CisJCQkJCXNlbGYucG9wYWxsKCkKKwkJCWVsc2U6CisJCQkJcHVzaFRvU3RhY2sodG9rZW4pCisJCWlmIG5lZWRzRGVjb21waWxhdGlvbjoKKwkJCWNoYXJTdHJpbmcuc2V0UHJvZ3JhbShwcm9ncmFtKQorCQkJYXNzZXJ0IHByb2dyYW1bLTFdIGluICgiZW5kY2hhciIsICJyZXR1cm4iLCAiY2FsbHN1YnIiLCAiY2FsbGdzdWJyIiwgInNlYWMiKQorCQlkZWwgc2VsZi5jYWxsaW5nU3RhY2tbLTFdCisJCisJZGVmIHBvcChzZWxmKToKKwkJdmFsdWUgPSBzZWxmLm9wZXJhbmRTdGFja1stMV0KKwkJZGVsIHNlbGYub3BlcmFuZFN0YWNrWy0xXQorCQlyZXR1cm4gdmFsdWUKKwkKKwlkZWYgcG9wYWxsKHNlbGYpOgorCQlzdGFjayA9IHNlbGYub3BlcmFuZFN0YWNrWzpdCisJCXNlbGYub3BlcmFuZFN0YWNrWzpdID0gW10KKwkJcmV0dXJuIHN0YWNrCisJCisJZGVmIHB1c2goc2VsZiwgdmFsdWUpOgorCQlzZWxmLm9wZXJhbmRTdGFjay5hcHBlbmQodmFsdWUpCisJCisJZGVmIG9wX3JldHVybihzZWxmLCBpbmRleCk6CisJCWlmIHNlbGYub3BlcmFuZFN0YWNrOgorCQkJcGFzcworCQorCWRlZiBvcF9lbmRjaGFyKHNlbGYsIGluZGV4KToKKwkJcGFzcworCQorCWRlZiBvcF9jYWxsc3VicihzZWxmLCBpbmRleCk6CisJCXN1YnJJbmRleCA9IHNlbGYucG9wKCkKKwkJc3ViciA9IHNlbGYubG9jYWxTdWJyc1tzdWJySW5kZXgrc2VsZi5sb2NhbEJpYXNdCisJCXNlbGYuZXhlY3V0ZShzdWJyKQorCQorCWRlZiBvcF9jYWxsZ3N1YnIoc2VsZiwgaW5kZXgpOgorCQlzdWJySW5kZXggPSBzZWxmLnBvcCgpCisJCXN1YnIgPSBzZWxmLmdsb2JhbFN1YnJzW3N1YnJJbmRleCtzZWxmLmdsb2JhbEJpYXNdCisJCXNlbGYuZXhlY3V0ZShzdWJyKQorCQorCWRlZiBvcF9oc3RlbWhtKHNlbGYsIGluZGV4KToKKwkJc2VsZi5jb3VudEhpbnRzKCkKKwkKKwlvcF92c3RlbWhtID0gb3BfaHN0ZW1obQorCQorCWRlZiBvcF9oaW50bWFzayhzZWxmLCBpbmRleCk6CisJCWlmIG5vdCBzZWxmLmhpbnRNYXNrQnl0ZXM6CisJCQlzZWxmLmNvdW50SGludHMoKQorCQkJc2VsZi5oaW50TWFza0J5dGVzID0gKHNlbGYuaGludENvdW50ICsgNykgLyA4CisJCWhpbnRNYXNrQnl0ZXMsIGluZGV4ID0gc2VsZi5jYWxsaW5nU3RhY2tbLTFdLmdldEJ5dGVzKGluZGV4LCBzZWxmLmhpbnRNYXNrQnl0ZXMpCisJCXJldHVybiBoaW50TWFza0J5dGVzLCBpbmRleAorCQorCW9wX2NudHJtYXNrID0gb3BfaGludG1hc2sKKwkKKwlkZWYgY291bnRIaW50cyhzZWxmKToKKwkJYXNzZXJ0IHNlbGYuaGludE1hc2tCeXRlcyA9PSAwCisJCWFyZ3MgPSBzZWxmLnBvcGFsbCgpCisJCXNlbGYuaGludENvdW50ID0gc2VsZi5oaW50Q291bnQgKyBsZW4oYXJncykgLyAyCisKKworY2xhc3MgVDJPdXRsaW5lRXh0cmFjdG9yKFNpbXBsZVQyRGVjb21waWxlcik6CisJCisJZGVmIF9faW5pdF9fKHNlbGYsIGxvY2FsU3VicnMsIGdsb2JhbFN1YnJzLCBub21pbmFsV2lkdGhYLCBkZWZhdWx0V2lkdGhYKToKKwkJU2ltcGxlVDJEZWNvbXBpbGVyLl9faW5pdF9fKHNlbGYsIGxvY2FsU3VicnMsIGdsb2JhbFN1YnJzKQorCQlzZWxmLm5vbWluYWxXaWR0aFggPSBub21pbmFsV2lkdGhYCisJCXNlbGYuZGVmYXVsdFdpZHRoWCA9IGRlZmF1bHRXaWR0aFgKKwkKKwlkZWYgcmVzZXQoc2VsZik6CisJCWltcG9ydCBOdW1lcmljCisJCVNpbXBsZVQyRGVjb21waWxlci5yZXNldChzZWxmKQorCQlzZWxmLmhpbnRzID0gW10KKwkJc2VsZi5nb3RXaWR0aCA9IDAKKwkJc2VsZi53aWR0aCA9IDAKKwkJc2VsZi5jdXJyZW50UG9pbnQgPSBOdW1lcmljLmFycmF5KCgwLCAwKSwgTnVtZXJpYy5JbnQxNikKKwkJc2VsZi5jb250b3VycyA9IFtdCisJCisJZGVmIGdldENvbnRvdXJzKHNlbGYpOgorCQlyZXR1cm4gc2VsZi5jb250b3VycworCQorCWRlZiBuZXdQYXRoKHNlbGYpOgorCQlzZWxmLmNvbnRvdXJzLmFwcGVuZChbW10sIFtdLCAwXSkKKwkKKwlkZWYgY2xvc2VQYXRoKHNlbGYpOgorCQlpZiBzZWxmLmNvbnRvdXJzIGFuZCBzZWxmLmNvbnRvdXJzWy0xXVsyXSA9PSAwOgorCQkJc2VsZi5jb250b3Vyc1stMV1bMl0gPSAxCisJCisJZGVmIGFwcGVuZFBvaW50KHNlbGYsIHBvaW50LCBpc1ByaW1hcnkpOgorCQlpbXBvcnQgTnVtZXJpYworCQlwb2ludCA9IHNlbGYuY3VycmVudFBvaW50ICsgTnVtZXJpYy5hcnJheShwb2ludCwgTnVtZXJpYy5JbnQxNikKKwkJc2VsZi5jdXJyZW50UG9pbnQgPSBwb2ludAorCQlwb2ludHMsIGZsYWdzLCBpc0Nsb3NlZCA9IHNlbGYuY29udG91cnNbLTFdCisJCXBvaW50cy5hcHBlbmQocG9pbnQpCisJCWZsYWdzLmFwcGVuZChpc1ByaW1hcnkpCisJCisJZGVmIHBvcGFsbFdpZHRoKHNlbGYsIGV2ZW5PZGQ9MCk6CisJCWFyZ3MgPSBzZWxmLnBvcGFsbCgpCisJCWlmIG5vdCBzZWxmLmdvdFdpZHRoOgorCQkJaWYgZXZlbk9kZCBeIChsZW4oYXJncykgJSAyKToKKwkJCQlzZWxmLndpZHRoID0gc2VsZi5ub21pbmFsV2lkdGhYICsgYXJnc1swXQorCQkJCWFyZ3MgPSBhcmdzWzE6XQorCQkJZWxzZToKKwkJCQlzZWxmLndpZHRoID0gc2VsZi5kZWZhdWx0V2lkdGhYCisJCQlzZWxmLmdvdFdpZHRoID0gMQorCQlyZXR1cm4gYXJncworCQorCWRlZiBjb3VudEhpbnRzKHNlbGYpOgorCQlhc3NlcnQgc2VsZi5oaW50TWFza0J5dGVzID09IDAKKwkJYXJncyA9IHNlbGYucG9wYWxsV2lkdGgoKQorCQlzZWxmLmhpbnRDb3VudCA9IHNlbGYuaGludENvdW50ICsgbGVuKGFyZ3MpIC8gMgorCQorCSMKKwkjIGhpbnQgb3BlcmF0b3JzCisJIworCWRlZiBvcF9oc3RlbShzZWxmLCBpbmRleCk6CisJCXNlbGYucG9wYWxsV2lkdGgoKSAgIyBYWFgKKwlkZWYgb3BfdnN0ZW0oc2VsZiwgaW5kZXgpOgorCQlzZWxmLnBvcGFsbFdpZHRoKCkgICMgWFhYCisJZGVmIG9wX2hzdGVtaG0oc2VsZiwgaW5kZXgpOgorCQlzZWxmLmNvdW50SGludHMoKQorCQkjWFhYCisJZGVmIG9wX3ZzdGVtaG0oc2VsZiwgaW5kZXgpOgorCQlzZWxmLmNvdW50SGludHMoKQorCQkjWFhYCisJI2RlZiBvcF9oaW50bWFzayhzZWxmLCBpbmRleCk6CisJIwlzZWxmLmNvdW50SGludHMoKQorCSNkZWYgb3BfY250cm1hc2soc2VsZiwgaW5kZXgpOgorCSMJc2VsZi5jb3VudEhpbnRzKCkKKwkKKwkjCisJIyBwYXRoIGNvbnN0cnVjdG9ycywgbW92ZXRvCisJIworCWRlZiBvcF9ybW92ZXRvKHNlbGYsIGluZGV4KToKKwkJc2VsZi5jbG9zZVBhdGgoKQorCQlzZWxmLm5ld1BhdGgoKQorCQlzZWxmLmFwcGVuZFBvaW50KHNlbGYucG9wYWxsV2lkdGgoKSwgMSkKKwlkZWYgb3BfaG1vdmV0byhzZWxmLCBpbmRleCk6CisJCXNlbGYuY2xvc2VQYXRoKCkKKwkJc2VsZi5uZXdQYXRoKCkKKwkJc2VsZi5hcHBlbmRQb2ludCgoc2VsZi5wb3BhbGxXaWR0aCgxKVswXSwgMCksIDEpCisJZGVmIG9wX3Ztb3ZldG8oc2VsZiwgaW5kZXgpOgorCQlzZWxmLmNsb3NlUGF0aCgpCisJCXNlbGYubmV3UGF0aCgpCisJCXNlbGYuYXBwZW5kUG9pbnQoKDAsIHNlbGYucG9wYWxsV2lkdGgoMSlbMF0pLCAxKQorCWRlZiBvcF9lbmRjaGFyKHNlbGYsIGluZGV4KToKKwkJc2VsZi5jbG9zZVBhdGgoKQorCQorCSMKKwkjIHBhdGggY29uc3RydWN0b3JzLCBsaW5lcworCSMKKwlkZWYgb3BfcmxpbmV0byhzZWxmLCBpbmRleCk6CisJCWFyZ3MgPSBzZWxmLnBvcGFsbCgpCisJCWZvciBpIGluIHJhbmdlKDAsIGxlbihhcmdzKSwgMik6CisJCQlwb2ludCA9IGFyZ3NbaTppKzJdCisJCQlzZWxmLmFwcGVuZFBvaW50KHBvaW50LCAxKQorCQorCWRlZiBvcF9obGluZXRvKHNlbGYsIGluZGV4KToKKwkJc2VsZi5hbHRlcm5hdGluZ0xpbmV0bygxKQorCWRlZiBvcF92bGluZXRvKHNlbGYsIGluZGV4KToKKwkJc2VsZi5hbHRlcm5hdGluZ0xpbmV0bygwKQorCQorCSMKKwkjIHBhdGggY29uc3RydWN0b3JzLCBjdXJ2ZXMKKwkjCisJZGVmIG9wX3JyY3VydmV0byhzZWxmLCBpbmRleCk6CisJCSIiIntkeGEgZHlhIGR4YiBkeWIgZHhjIGR5Y30rIHJyY3VydmV0byIiIgorCQlhcmdzID0gc2VsZi5wb3BhbGwoKQorCQlmb3IgaSBpbiByYW5nZSgwLCBsZW4oYXJncyksIDYpOgorCQkJZHhhLCBkeWEsIGR4YiwgZHliLCBkeGMsIGR5YywgPSBhcmdzW2k6aSs2XQorCQkJc2VsZi5ycmN1cnZldG8oKGR4YSwgZHlhKSwgKGR4YiwgZHliKSwgKGR4YywgZHljKSkKKwkKKwlkZWYgb3BfcmN1cnZlbGluZShzZWxmLCBpbmRleCk6CisJCSIiIntkeGEgZHlhIGR4YiBkeWIgZHhjIGR5Y30rIGR4ZCBkeWQgcmN1cnZlbGluZSIiIgorCQlhcmdzID0gc2VsZi5wb3BhbGwoKQorCQlmb3IgaSBpbiByYW5nZSgwLCBsZW4oYXJncyktMiwgNik6CisJCQlkeGIsIGR5YiwgZHhjLCBkeWMsIGR4ZCwgZHlkID0gYXJnc1tpOmkrNl0KKwkJCXNlbGYucnJjdXJ2ZXRvKChkeGIsIGR5YiksIChkeGMsIGR5YyksIChkeGQsIGR5ZCkpCisJCXNlbGYuYXBwZW5kUG9pbnQoYXJnc1stMjpdLCAxKQorCQorCWRlZiBvcF9ybGluZWN1cnZlKHNlbGYsIGluZGV4KToKKwkJIiIie2R4YSBkeWF9KyBkeGIgZHliIGR4YyBkeWMgZHhkIGR5ZCBybGluZWN1cnZlIiIiCisJCWFyZ3MgPSBzZWxmLnBvcGFsbCgpCisJCWxpbmVBcmdzID0gYXJnc1s6LTZdCisJCWZvciBpIGluIHJhbmdlKDAsIGxlbihsaW5lQXJncyksIDIpOgorCQkJc2VsZi5hcHBlbmRQb2ludChsaW5lQXJnc1tpOmkrMl0sIDEpCisJCWR4YiwgZHliLCBkeGMsIGR5YywgZHhkLCBkeWQgPSBhcmdzWy02Ol0KKwkJc2VsZi5ycmN1cnZldG8oKGR4YiwgZHliKSwgKGR4YywgZHljKSwgKGR4ZCwgZHlkKSkKKwkKKwlkZWYgb3BfdnZjdXJ2ZXRvKHNlbGYsIGluZGV4KToKKwkJImR4MT8ge2R5YSBkeGIgZHliIGR5Y30rIHZ2Y3VydmV0byIKKwkJYXJncyA9IHNlbGYucG9wYWxsKCkKKwkJaWYgbGVuKGFyZ3MpICUgMjoKKwkJCWR4MSA9IGFyZ3NbMF0KKwkJCWFyZ3MgPSBhcmdzWzE6XQorCQllbHNlOgorCQkJZHgxID0gMAorCQlmb3IgaSBpbiByYW5nZSgwLCBsZW4oYXJncyksIDQpOgorCQkJZHlhLCBkeGIsIGR5YiwgZHljID0gYXJnc1tpOmkrNF0KKwkJCXNlbGYucnJjdXJ2ZXRvKChkeDEsIGR5YSksIChkeGIsIGR5YiksICgwLCBkeWMpKQorCQkJZHgxID0gMAorCQorCWRlZiBvcF9oaGN1cnZldG8oc2VsZiwgaW5kZXgpOgorCQkiIiJkeTE/IHtkeGEgZHhiIGR5YiBkeGN9KyBoaGN1cnZldG8iIiIKKwkJYXJncyA9IHNlbGYucG9wYWxsKCkKKwkJaWYgbGVuKGFyZ3MpICUgMjoKKwkJCWR5MSA9IGFyZ3NbMF0KKwkJCWFyZ3MgPSBhcmdzWzE6XQorCQllbHNlOgorCQkJZHkxID0gMAorCQlmb3IgaSBpbiByYW5nZSgwLCBsZW4oYXJncyksIDQpOgorCQkJZHhhLCBkeGIsIGR5YiwgZHhjID0gYXJnc1tpOmkrNF0KKwkJCXNlbGYucnJjdXJ2ZXRvKChkeGEsIGR5MSksIChkeGIsIGR5YiksIChkeGMsIDApKQorCQkJZHkxID0gMAorCQorCWRlZiBvcF92aGN1cnZldG8oc2VsZiwgaW5kZXgpOgorCQkiIiJkeTEgZHgyIGR5MiBkeDMge2R4YSBkeGIgZHliIGR5YyBkeWQgZHhlIGR5ZSBkeGZ9KiBkeWY/IHZoY3VydmV0byAoMzApCisJCXtkeWEgZHhiIGR5YiBkeGMgZHhkIGR4ZSBkeWUgZHlmfSsgZHhmPyB2aGN1cnZldG8KKwkJIiIiCisJCWFyZ3MgPSBzZWxmLnBvcGFsbCgpCisJCXdoaWxlIGFyZ3M6CisJCQlhcmdzID0gc2VsZi52Y3VydmV0byhhcmdzKQorCQkJaWYgYXJnczoKKwkJCQlhcmdzID0gc2VsZi5oY3VydmV0byhhcmdzKQorCQorCWRlZiBvcF9odmN1cnZldG8oc2VsZiwgaW5kZXgpOgorCQkiIiJkeDEgZHgyIGR5MiBkeTMge2R5YSBkeGIgZHliIGR4YyBkeGQgZHhlIGR5ZSBkeWZ9KiBkeGY/CisJCXtkeGEgZHhiIGR5YiBkeWMgZHlkIGR4ZSBkeWUgZHhmfSsgZHlmPworCQkiIiIKKwkJYXJncyA9IHNlbGYucG9wYWxsKCkKKwkJd2hpbGUgYXJnczoKKwkJCWFyZ3MgPSBzZWxmLmhjdXJ2ZXRvKGFyZ3MpCisJCQlpZiBhcmdzOgorCQkJCWFyZ3MgPSBzZWxmLnZjdXJ2ZXRvKGFyZ3MpCisJCisJIworCSMgcGF0aCBjb25zdHJ1Y3RvcnMsIGZsZXgKKwkjCisJZGVmIG9wX2hmbGV4KHNlbGYsIGluZGV4KToKKwkJWFhYCisJZGVmIG9wX2ZsZXgoc2VsZiwgaW5kZXgpOgorCQlYWFgKKwlkZWYgb3BfaGZsZXgxKHNlbGYsIGluZGV4KToKKwkJWFhYCisJZGVmIG9wX2ZsZXgxKHNlbGYsIGluZGV4KToKKwkJWFhYCisJCisJIworCSMgTXVsdGlwbGVNYXN0ZXIuIFdlbGwuLi4KKwkjCisJZGVmIG9wX2JsZW5kKHNlbGYsIGluZGV4KToKKwkJWFhYCisJCisJIyBtaXNjCisJZGVmIG9wX2FuZChzZWxmLCBpbmRleCk6CisJCVhYWAorCWRlZiBvcF9vcihzZWxmLCBpbmRleCk6CisJCVhYWAorCWRlZiBvcF9ub3Qoc2VsZiwgaW5kZXgpOgorCQlYWFgKKwlkZWYgb3Bfc3RvcmUoc2VsZiwgaW5kZXgpOgorCQlYWFgKKwlkZWYgb3BfYWJzKHNlbGYsIGluZGV4KToKKwkJWFhYCisJZGVmIG9wX2FkZChzZWxmLCBpbmRleCk6CisJCVhYWAorCWRlZiBvcF9zdWIoc2VsZiwgaW5kZXgpOgorCQlYWFgKKwlkZWYgb3BfZGl2KHNlbGYsIGluZGV4KToKKwkJbnVtMiA9IHNlbGYucG9wKCkKKwkJbnVtMSA9IHNlbGYucG9wKCkKKwkJZDEgPSBudW0xL251bTIKKwkJZDIgPSBmbG9hdChudW0xKS9udW0yCisJCWlmIGQxID09IGQyOgorCQkJc2VsZi5wdXNoKGQxKQorCQllbHNlOgorCQkJc2VsZi5wdXNoKGQyKQorCWRlZiBvcF9sb2FkKHNlbGYsIGluZGV4KToKKwkJWFhYCisJZGVmIG9wX25lZyhzZWxmLCBpbmRleCk6CisJCVhYWAorCWRlZiBvcF9lcShzZWxmLCBpbmRleCk6CisJCVhYWAorCWRlZiBvcF9kcm9wKHNlbGYsIGluZGV4KToKKwkJWFhYCisJZGVmIG9wX3B1dChzZWxmLCBpbmRleCk6CisJCVhYWAorCWRlZiBvcF9nZXQoc2VsZiwgaW5kZXgpOgorCQlYWFgKKwlkZWYgb3BfaWZlbHNlKHNlbGYsIGluZGV4KToKKwkJWFhYCisJZGVmIG9wX3JhbmRvbShzZWxmLCBpbmRleCk6CisJCVhYWAorCWRlZiBvcF9tdWwoc2VsZiwgaW5kZXgpOgorCQlYWFgKKwlkZWYgb3Bfc3FydChzZWxmLCBpbmRleCk6CisJCVhYWAorCWRlZiBvcF9kdXAoc2VsZiwgaW5kZXgpOgorCQlYWFgKKwlkZWYgb3BfZXhjaChzZWxmLCBpbmRleCk6CisJCVhYWAorCWRlZiBvcF9pbmRleChzZWxmLCBpbmRleCk6CisJCVhYWAorCWRlZiBvcF9yb2xsKHNlbGYsIGluZGV4KToKKwkJWFhYCisJCisJIworCSMgbWlzY2VsYW5lb3VzIGhlbHBlcnMKKwkjCisJZGVmIGFsdGVybmF0aW5nTGluZXRvKHNlbGYsIGlzSG9yaXpvbnRhbCk6CisJCWFyZ3MgPSBzZWxmLnBvcGFsbCgpCisJCWZvciBhcmcgaW4gYXJnczoKKwkJCWlmIGlzSG9yaXpvbnRhbDoKKwkJCQlwb2ludCA9IChhcmcsIDApCisJCQllbHNlOgorCQkJCXBvaW50ID0gKDAsIGFyZykKKwkJCXNlbGYuYXBwZW5kUG9pbnQocG9pbnQsIDEpCisJCQlpc0hvcml6b250YWwgPSBub3QgaXNIb3Jpem9udGFsCisJCisJZGVmIHJyY3VydmV0byhzZWxmLCBwMSwgcDIsIHAzKToKKwkJc2VsZi5hcHBlbmRQb2ludChwMSwgMCkKKwkJc2VsZi5hcHBlbmRQb2ludChwMiwgMCkKKwkJc2VsZi5hcHBlbmRQb2ludChwMywgMSkKKwkKKwlkZWYgdmN1cnZldG8oc2VsZiwgYXJncyk6CisJCWR5YSwgZHhiLCBkeWIsIGR4YyA9IGFyZ3NbOjRdCisJCWFyZ3MgPSBhcmdzWzQ6XQorCQlpZiBsZW4oYXJncykgPT0gMToKKwkJCWR5YyA9IGFyZ3NbMF0KKwkJCWFyZ3MgPSBbXQorCQllbHNlOgorCQkJZHljID0gMAorCQlzZWxmLnJyY3VydmV0bygoMCwgZHlhKSwgKGR4YiwgZHliKSwgKGR4YywgZHljKSkKKwkJcmV0dXJuIGFyZ3MKKwkKKwlkZWYgaGN1cnZldG8oc2VsZiwgYXJncyk6CisJCWR4YSwgZHhiLCBkeWIsIGR5YyA9IGFyZ3NbOjRdCisJCWFyZ3MgPSBhcmdzWzQ6XQorCQlpZiBsZW4oYXJncykgPT0gMToKKwkJCWR4YyA9IGFyZ3NbMF0KKwkJCWFyZ3MgPSBbXQorCQllbHNlOgorCQkJZHhjID0gMAorCQlzZWxmLnJyY3VydmV0bygoZHhhLCAwKSwgKGR4YiwgZHliKSwgKGR4YywgZHljKSkKKwkJcmV0dXJuIGFyZ3MKKworCitjbGFzcyBUMU91dGxpbmVFeHRyYWN0b3IoVDJPdXRsaW5lRXh0cmFjdG9yKToKKwkKKwlkZWYgX19pbml0X18oc2VsZiwgc3VicnMpOgorCQlzZWxmLnN1YnJzID0gc3VicnMKKwkJc2VsZi5yZXNldCgpCisJCisJZGVmIHJlc2V0KHNlbGYpOgorCQlzZWxmLmZsZXhpbmcgPSAwCisJCXNlbGYud2lkdGggPSAwCisJCXNlbGYuc2J4ID0gMAorCQlUMk91dGxpbmVFeHRyYWN0b3IucmVzZXQoc2VsZikKKwkKKwlkZWYgcG9wYWxsV2lkdGgoc2VsZiwgZXZlbk9kZD0wKToKKwkJcmV0dXJuIHNlbGYucG9wYWxsKCkKKwkKKwlkZWYgZXhjaChzZWxmKToKKwkJc3RhY2sgPSBzZWxmLm9wZXJhbmRTdGFjaworCQlzdGFja1stMV0sIHN0YWNrWy0yXSA9IHN0YWNrWy0yXSwgc3RhY2tbLTFdCisJCisJIworCSMgcGF0aCBjb25zdHJ1Y3RvcnMKKwkjCisJZGVmIG9wX3Jtb3ZldG8oc2VsZiwgaW5kZXgpOgorCQlpZiBzZWxmLmZsZXhpbmc6CisJCQlyZXR1cm4KKwkJc2VsZi5uZXdQYXRoKCkKKwkJc2VsZi5hcHBlbmRQb2ludChzZWxmLnBvcGFsbCgpLCAxKQorCWRlZiBvcF9obW92ZXRvKHNlbGYsIGluZGV4KToKKwkJaWYgc2VsZi5mbGV4aW5nOgorCQkJIyBXZSBtdXN0IGFkZCBhIHBhcmFtZXRlciB0byB0aGUgc3RhY2sgaWYgd2UgYXJlIGZsZXhpbmcKKwkJCXNlbGYucHVzaCgwKQorCQkJcmV0dXJuCisJCXNlbGYubmV3UGF0aCgpCisJCXNlbGYuYXBwZW5kUG9pbnQoKHNlbGYucG9wYWxsKClbMF0sIDApLCAxKQorCWRlZiBvcF92bW92ZXRvKHNlbGYsIGluZGV4KToKKwkJaWYgc2VsZi5mbGV4aW5nOgorCQkJIyBXZSBtdXN0IGFkZCBhIHBhcmFtZXRlciB0byB0aGUgc3RhY2sgaWYgd2UgYXJlIGZsZXhpbmcKKwkJCXNlbGYucHVzaCgwKQorCQkJc2VsZi5leGNoKCkKKwkJCXJldHVybgorCQlzZWxmLm5ld1BhdGgoKQorCQlzZWxmLmFwcGVuZFBvaW50KCgwLCBzZWxmLnBvcGFsbCgpWzBdKSwgMSkKKwlkZWYgb3BfY2xvc2VwYXRoKHNlbGYsIGluZGV4KToKKwkJc2VsZi5jbG9zZVBhdGgoKQorCWRlZiBvcF9zZXRjdXJyZW50cG9pbnQoc2VsZiwgaW5kZXgpOgorCQlhcmdzID0gc2VsZi5wb3BhbGwoKQorCQl4LCB5ID0gYXJncworCQlzZWxmLmN1cnJlbnRQb2ludFswXSA9IHgKKwkJc2VsZi5jdXJyZW50UG9pbnRbMV0gPSB5CisJCisJZGVmIG9wX2VuZGNoYXIoc2VsZiwgaW5kZXgpOgorCQlzZWxmLmNsb3NlUGF0aCgpCisJCisJZGVmIG9wX2hzYncoc2VsZiwgaW5kZXgpOgorCQlzYngsIHd4ID0gc2VsZi5wb3BhbGwoKQorCQlzZWxmLndpZHRoID0gd3gKKwkJc2VsZi5zYnggPSBzYngKKwkJc2VsZi5jdXJyZW50UG9pbnRbMF0gPSBzYngKKwlkZWYgb3Bfc2J3KHNlbGYsIGluZGV4KToKKwkJc2VsZi5wb3BhbGwoKSAgIyBYWFgKKwkKKwkjCisJZGVmIG9wX2NhbGxzdWJyKHNlbGYsIGluZGV4KToKKwkJc3VickluZGV4ID0gc2VsZi5wb3AoKQorCQlzdWJyID0gc2VsZi5zdWJyc1tzdWJySW5kZXhdCisJCXNlbGYuZXhlY3V0ZShzdWJyKQorCWRlZiBvcF9jYWxsb3RoZXJzdWJyKHNlbGYsIGluZGV4KToKKwkJc3VickluZGV4ID0gc2VsZi5wb3AoKQorCQluQXJncyA9IHNlbGYucG9wKCkKKwkJI3ByaW50IG5BcmdzLCBzdWJySW5kZXgsICJjYWxsb3RoZXJzdWJyIgorCQlpZiBzdWJySW5kZXggPT0gMCBhbmQgbkFyZ3MgPT0gMzoKKwkJCXNlbGYuZG9GbGV4KCkKKwkJCXNlbGYuZmxleGluZyA9IDAKKwkJZWxpZiBzdWJySW5kZXggPT0gMSBhbmQgbkFyZ3MgPT0gMDoKKwkJCXNlbGYuZmxleGluZyA9IDEKKwkJIyBpZ25vcmUuLi4KKwlkZWYgb3BfcG9wKHNlbGYsIGluZGV4KToKKwkJcGFzcyAgIyBpZ25vcmUuLi4KKwkKKwlkZWYgZG9GbGV4KHNlbGYpOgorCQlmaW5hbHkgPSBzZWxmLnBvcCgpCisJCWZpbmFseCA9IHNlbGYucG9wKCkKKwkJc2VsZi5wb3AoKQkjIGZsZXggaGVpZ2h0IGlzIHVudXNlZAorCQkKKwkJcDN5ID0gc2VsZi5wb3AoKQorCQlwM3ggPSBzZWxmLnBvcCgpCisJCWJjcDR5ID0gc2VsZi5wb3AoKQorCQliY3A0eCA9IHNlbGYucG9wKCkKKwkJYmNwM3kgPSBzZWxmLnBvcCgpCisJCWJjcDN4ID0gc2VsZi5wb3AoKQorCQlwMnkgPSBzZWxmLnBvcCgpCisJCXAyeCA9IHNlbGYucG9wKCkKKwkJYmNwMnkgPSBzZWxmLnBvcCgpCisJCWJjcDJ4ID0gc2VsZi5wb3AoKQorCQliY3AxeSA9IHNlbGYucG9wKCkKKwkJYmNwMXggPSBzZWxmLnBvcCgpCisJCXJweSA9IHNlbGYucG9wKCkKKwkJcnB4ID0gc2VsZi5wb3AoKQorCQkKKwkJIyBjYWxsIHJyY3VydmV0bworCQlzZWxmLnB1c2goYmNwMXgrcnB4KQorCQlzZWxmLnB1c2goYmNwMXkrcnB5KQorCQlzZWxmLnB1c2goYmNwMngpCisJCXNlbGYucHVzaChiY3AyeSkKKwkJc2VsZi5wdXNoKHAyeCkKKwkJc2VsZi5wdXNoKHAyeSkKKwkJc2VsZi5vcF9ycmN1cnZldG8oTm9uZSkKKwkJCisJCSMgY2FsbCBycmN1cnZldG8KKwkJc2VsZi5wdXNoKGJjcDN4KQorCQlzZWxmLnB1c2goYmNwM3kpCisJCXNlbGYucHVzaChiY3A0eCkKKwkJc2VsZi5wdXNoKGJjcDR5KQorCQlzZWxmLnB1c2gocDN4KQorCQlzZWxmLnB1c2gocDN5KQorCQlzZWxmLm9wX3JyY3VydmV0byhOb25lKQorCQkKKwkJIyBQdXNoIGJhY2sgZmluYWwgY29vcmRzIHNvIHN1YnIgMCBjYW4gZmluZCB0aGVtCisJCXNlbGYucHVzaChmaW5hbHgpCisJCXNlbGYucHVzaChmaW5hbHkpCisJCisJZGVmIG9wX2RvdHNlY3Rpb24oc2VsZiwgaW5kZXgpOgorCQlzZWxmLnBvcGFsbCgpICAjIFhYWAorCWRlZiBvcF9oc3RlbTMoc2VsZiwgaW5kZXgpOgorCQlzZWxmLnBvcGFsbCgpICAjIFhYWAorCWRlZiBvcF9zZWFjKHNlbGYsIGluZGV4KToKKwkJImFzYiBhZHggYWR5IGJjaGFyIGFjaGFyIHNlYWMiCisJCWFzYiwgYWR4LCBhZHksIGJjaGFyLCBhY2hhciA9IHNlbGYucG9wYWxsKCkgICMgWFhYCisJCXNlbGYuY29udG91cnMuYXBwZW5kKFsoYXNiLCBhZHgsIGFkeSwgYmNoYXIsIGFjaGFyKSwgTm9uZSwgLTFdKQorCWRlZiBvcF92c3RlbTMoc2VsZiwgaW5kZXgpOgorCQlzZWxmLnBvcGFsbCgpICAjIFhYWAorCisKK2NsYXNzIERpY3REZWNvbXBpbGVyKEJ5dGVDb2RlRGVjb21waWxlckJhc2UpOgorCQorCW9wZXJhbmRFbmNvZGluZyA9IGNmZkRpY3RPcGVyYW5kRW5jb2RpbmcKKwlkaWN0RGVmYXVsdHMgPSB7fQorCQorCWRlZiBfX2luaXRfXyhzZWxmLCBzdHJpbmdzKToKKwkJc2VsZi5zdGFjayA9IFtdCisJCXNlbGYuc3RyaW5ncyA9IHN0cmluZ3MKKwkJc2VsZi5kaWN0ID0ge30KKwkKKwlkZWYgZ2V0RGljdChzZWxmKToKKwkJYXNzZXJ0IGxlbihzZWxmLnN0YWNrKSA9PSAwLCAibm9uLWVtcHR5IHN0YWNrIgorCQlyZXR1cm4gc2VsZi5kaWN0CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCBkYXRhKToKKwkJaW5kZXggPSAwCisJCWxlbkRhdGEgPSBsZW4oZGF0YSkKKwkJcHVzaCA9IHNlbGYuc3RhY2suYXBwZW5kCisJCXdoaWxlIGluZGV4IDwgbGVuRGF0YToKKwkJCWIwID0gb3JkKGRhdGFbaW5kZXhdKQorCQkJaW5kZXggPSBpbmRleCArIDEKKwkJCWNvZGUgPSBzZWxmLm9wZXJhbmRFbmNvZGluZ1tiMF0KKwkJCWhhbmRsZXIgPSBnZXRhdHRyKHNlbGYsIGNvZGUpCisJCQl2YWx1ZSwgaW5kZXggPSBoYW5kbGVyKGIwLCBkYXRhLCBpbmRleCkKKwkJCWlmIHZhbHVlIGlzIG5vdCBOb25lOgorCQkJCXB1c2godmFsdWUpCisJCisJZGVmIHBvcChzZWxmKToKKwkJdmFsdWUgPSBzZWxmLnN0YWNrWy0xXQorCQlkZWwgc2VsZi5zdGFja1stMV0KKwkJcmV0dXJuIHZhbHVlCisJCisJZGVmIHBvcGFsbChzZWxmKToKKwkJYWxsID0gc2VsZi5zdGFja1s6XQorCQlkZWwgc2VsZi5zdGFja1s6XQorCQlyZXR1cm4gYWxsCisJCisJZGVmIGRvX29wZXJhdG9yKHNlbGYsIGIwLCBkYXRhLCBpbmRleCk6CisJCWlmIGIwID09IDEyOgorCQkJb3AgPSAoYjAsIG9yZChkYXRhW2luZGV4XSkpCisJCQlpbmRleCA9IGluZGV4KzEKKwkJZWxzZToKKwkJCW9wID0gYjAKKwkJb3BlcmF0b3IsIGFyZ1R5cGUgPSBzZWxmLm9wZXJhdG9yc1tvcF0KKwkJc2VsZi5oYW5kbGVfb3BlcmF0b3Iob3BlcmF0b3IsIGFyZ1R5cGUpCisJCXJldHVybiBOb25lLCBpbmRleAorCQorCWRlZiBoYW5kbGVfb3BlcmF0b3Ioc2VsZiwgb3BlcmF0b3IsIGFyZ1R5cGUpOgorCQlpZiB0eXBlKGFyZ1R5cGUpID09IHR5cGUoKCkpOgorCQkJdmFsdWUgPSAoKQorCQkJZm9yIGFyZyBpbiBhcmdUeXBlOgorCQkJCWFyZ2hhbmRsZXIgPSBnZXRhdHRyKHNlbGYsICJhcmdfIiArIGFyZykKKwkJCQl2YWx1ZSA9IChhcmdoYW5kbGVyKG9wZXJhdG9yKSwpICsgdmFsdWUKKwkJZWxzZToKKwkJCWFyZ2hhbmRsZXIgPSBnZXRhdHRyKHNlbGYsICJhcmdfIiArIGFyZ1R5cGUpCisJCQl2YWx1ZSA9IGFyZ2hhbmRsZXIob3BlcmF0b3IpCisJCXNlbGYuZGljdFtvcGVyYXRvcl0gPSB2YWx1ZQorCQorCWRlZiBhcmdfbnVtYmVyKHNlbGYsIG5hbWUpOgorCQlyZXR1cm4gc2VsZi5wb3AoKQorCWRlZiBhcmdfU0lEKHNlbGYsIG5hbWUpOgorCQlyZXR1cm4gc2VsZi5zdHJpbmdzW3NlbGYucG9wKCldCisJZGVmIGFyZ19hcnJheShzZWxmLCBuYW1lKToKKwkJcmV0dXJuIHNlbGYucG9wYWxsKCkKKworCit0b3BEaWN0T3BlcmF0b3JzID0gWworIyAgIG9wY29kZSAgICAgbmFtZSAgICAgICAgICAgICAgICAgIGFyZ3VtZW50IHR5cGUKKwkoMCwgICAgICAgICd2ZXJzaW9uJywgICAgICAgICAgICAnU0lEJyksCisJKDEsICAgICAgICAnTm90aWNlJywgICAgICAgICAgICAgJ1NJRCcpLAorCSgyLCAgICAgICAgJ0Z1bGxOYW1lJywgICAgICAgICAgICdTSUQnKSwKKwkoMywgICAgICAgICdGYW1pbHlOYW1lJywgICAgICAgICAnU0lEJyksCisJKDQsICAgICAgICAnV2VpZ2h0JywgICAgICAgICAgICAgJ1NJRCcpLAorCSg1LCAgICAgICAgJ0ZvbnRCQm94JywgICAgICAgICAgICdhcnJheScpLAorCSgxMywgICAgICAgJ1VuaXF1ZUlEJywgICAgICAgICAgICdudW1iZXInKSwKKwkoMTQsICAgICAgICdYVUlEJywgICAgICAgICAgICAgICAnYXJyYXknKSwKKwkoMTUsICAgICAgICdjaGFyc2V0JywgICAgICAgICAgICAnbnVtYmVyJyksCisJKDE2LCAgICAgICAnRW5jb2RpbmcnLCAgICAgICAgICAgJ251bWJlcicpLAorCSgxNywgICAgICAgJ0NoYXJTdHJpbmdzJywgICAgICAgICdudW1iZXInKSwKKwkoMTgsICAgICAgICdQcml2YXRlJywgICAgICAgICAgICAoJ251bWJlcicsICdudW1iZXInKSksCisJKCgxMiwgMCksICAnQ29weXJpZ2h0JywgICAgICAgICAgJ1NJRCcpLAorCSgoMTIsIDEpLCAgJ2lzRml4ZWRQaXRjaCcsICAgICAgICdudW1iZXInKSwKKwkoKDEyLCAyKSwgICdJdGFsaWNBbmdsZScsICAgICAgICAnbnVtYmVyJyksCisJKCgxMiwgMyksICAnVW5kZXJsaW5lUG9zaXRpb24nLCAgJ251bWJlcicpLAorCSgoMTIsIDQpLCAgJ1VuZGVybGluZVRoaWNrbmVzcycsICdudW1iZXInKSwKKwkoKDEyLCA1KSwgICdQYWludFR5cGUnLCAgICAgICAgICAnbnVtYmVyJyksCisJKCgxMiwgNiksICAnQ2hhcnN0cmluZ1R5cGUnLCAgICAgJ251bWJlcicpLAorCSgoMTIsIDcpLCAgJ0ZvbnRNYXRyaXgnLCAgICAgICAgICdhcnJheScpLAorCSgoMTIsIDgpLCAgJ1N0cm9rZVdpZHRoJywgICAgICAgICdudW1iZXInKSwKKwkoKDEyLCAyMCksICdTeW50aGV0aWNCYXNlJywgICAgICAnbnVtYmVyJyksCisJKCgxMiwgMjEpLCAnUG9zdFNjcmlwdCcsICAgICAgICAgJ1NJRCcpLAorCSgoMTIsIDIyKSwgJ0Jhc2VGb250TmFtZScsICAgICAgICdTSUQnKSwKKwkjIENJRCBhZGRpdGlvbnMKKwkoKDEyLCAzMCksICdST1MnLCAgICAgICAgICAgICAgICAoJ1NJRCcsICdTSUQnLCAnbnVtYmVyJykpLAorCSgoMTIsIDMxKSwgJ0NJREZvbnRWZXJzaW9uJywgICAgICdudW1iZXInKSwKKwkoKDEyLCAzMiksICdDSURGb250UmV2aXNpb24nLCAgICAnbnVtYmVyJyksCisJKCgxMiwgMzMpLCAnQ0lERm9udFR5cGUnLCAgICAgICAgJ251bWJlcicpLAorCSgoMTIsIDM0KSwgJ0NJRENvdW50JywgICAgICAgICAgICdudW1iZXInKSwKKwkoKDEyLCAzNSksICdVSURCYXNlJywgICAgICAgICAgICAnbnVtYmVyJyksCisJKCgxMiwgMzYpLCAnRkRBcnJheScsICAgICAgICAgICAgJ251bWJlcicpLAorCSgoMTIsIDM3KSwgJ0ZEU2VsZWN0JywgICAgICAgICAgICdudW1iZXInKSwKKwkoKDEyLCAzOCksICdGb250TmFtZScsICAgICAgICAgICAnU0lEJyksCisJIyBNTSwgQ2hhbWVsZW9uLiBQZnQuCitdCisKK3RvcERpY3REZWZhdWx0cyA9IHsKKwkJJ2lzRml4ZWRQaXRjaCc6IAkJMCwKKwkJJ0l0YWxpY0FuZ2xlJzogCQkJMCwKKwkJJ1VuZGVybGluZVRoaWNrbmVzcyc6IAk1MCwKKwkJJ1BhaW50VHlwZSc6IAkJCTAsCisJCSdDaGFyc3RyaW5nVHlwZSc6IAkJMiwKKwkJJ0ZvbnRNYXRyaXgnOiAJCQlbMC4wMDEsIDAsIDAsIDAuMDAxLCAwLCAwXSwKKwkJJ0ZvbnRCQm94JzogCQkJWzAsIDAsIDAsIDBdLAorCQknU3Ryb2tlV2lkdGgnOiAJCQkwLAorCQknY2hhcnNldCc6IAkJCQkwLAorCQknRW5jb2RpbmcnOiAJCQkwLAorCQkjIENJRCBkZWZhdWx0cworCQknQ0lERm9udFZlcnNpb24nOgkJMCwKKwkJJ0NJREZvbnRSZXZpc2lvbic6CQkwLAorCQknQ0lERm9udFR5cGUnOgkJCTAsCisJCSdDSURDb3VudCc6CQkJCTg3MjAsCit9CisKK2NsYXNzIFRvcERpY3REZWNvbXBpbGVyKERpY3REZWNvbXBpbGVyKToKKwkKKwlvcGVyYXRvcnMgPSBfYnVpbGRPcGVyYXRvckRpY3QodG9wRGljdE9wZXJhdG9ycykKKwlkaWN0RGVmYXVsdHMgPSB0b3BEaWN0RGVmYXVsdHMKKwkKKworcHJpdmF0ZURpY3RPcGVyYXRvcnMgPSBbCisjICAgb3Bjb2RlICAgICBuYW1lICAgICAgICAgICAgICAgICAgYXJndW1lbnQgdHlwZQorCSg2LCAgICAgICAgJ0JsdWVWYWx1ZXMnLCAgICAgICAgICdhcnJheScpLAorCSg3LCAgICAgICAgJ090aGVyQmx1ZXMnLCAgICAgICAgICdhcnJheScpLAorCSg4LCAgICAgICAgJ0ZhbWlseUJsdWVzJywgICAgICAgICdhcnJheScpLAorCSg5LCAgICAgICAgJ0ZhbWlseU90aGVyQmx1ZXMnLCAgICdhcnJheScpLAorCSgxMCwgICAgICAgJ1N0ZEhXJywgICAgICAgICAgICAgICdudW1iZXInKSwKKwkoMTEsICAgICAgICdTdGRWVycsICAgICAgICAgICAgICAnbnVtYmVyJyksCisJKDE5LCAgICAgICAnU3VicnMnLCAgICAgICAgICAgICAgJ251bWJlcicpLAorCSgyMCwgICAgICAgJ2RlZmF1bHRXaWR0aFgnLCAgICAgICdudW1iZXInKSwKKwkoMjEsICAgICAgICdub21pbmFsV2lkdGhYJywgICAgICAnbnVtYmVyJyksCisJKCgxMiwgOSksICAnQmx1ZVNjYWxlJywgICAgICAgICAgJ251bWJlcicpLAorCSgoMTIsIDEwKSwgJ0JsdWVTaGlmdCcsICAgICAgICAgICdudW1iZXInKSwKKwkoKDEyLCAxMSksICdCbHVlRnV6eicsICAgICAgICAgICAnbnVtYmVyJyksCisJKCgxMiwgMTIpLCAnU3RlbVNuYXBIJywgICAgICAgICAgJ2FycmF5JyksCisJKCgxMiwgMTMpLCAnU3RlbVNuYXBWJywgICAgICAgICAgJ2FycmF5JyksCisJKCgxMiwgMTQpLCAnRm9yY2VCb2xkJywgICAgICAgICAgJ251bWJlcicpLAorCSgoMTIsIDE1KSwgJ0ZvcmNlQm9sZFRocmVzaG9sZCcsICdudW1iZXInKSwKKwkoKDEyLCAxNiksICdsZW5JVicsICAgICAgICAgICAgICAnbnVtYmVyJyksCisJKCgxMiwgMTcpLCAnTGFuZ3VhZ2VHcm91cCcsICAgICAgJ251bWJlcicpLAorCSgoMTIsIDE4KSwgJ0V4cGFuc2lvbkZhY3RvcicsICAgICdudW1iZXInKSwKKwkoKDEyLCAxOSksICdpbml0aWFsUmFuZG9tU2VlZCcsICAnbnVtYmVyJyksCitdCisKK3ByaXZhdGVEaWN0RGVmYXVsdHMgPSB7CisJCSdkZWZhdWx0V2lkdGhYJzogCQkwLAorCQknbm9taW5hbFdpZHRoWCc6IAkJMCwKKwkJJ0JsdWVTY2FsZSc6IAkJCTAuMDM5NjI1LAorCQknQmx1ZVNoaWZ0JzogCQkJNywKKwkJJ0JsdWVGdXp6JzogCQkJMSwKKwkJJ0ZvcmNlQm9sZCc6IAkJCTAsCisJCSdGb3JjZUJvbGRUaHJlc2hvbGQnOiAJMCwKKwkJJ2xlbklWJzogCQkJCS0xLAorCQknTGFuZ3VhZ2VHcm91cCc6IAkJMCwKKwkJJ0V4cGFuc2lvbkZhY3Rvcic6IAkJMC4wNiwKKwkJJ2luaXRpYWxSYW5kb21TZWVkJzogCTAsCit9CisKK2NsYXNzIFByaXZhdGVEaWN0RGVjb21waWxlcihEaWN0RGVjb21waWxlcik6CisJCisJb3BlcmF0b3JzID0gX2J1aWxkT3BlcmF0b3JEaWN0KHByaXZhdGVEaWN0T3BlcmF0b3JzKQorCWRpY3REZWZhdWx0cyA9IHByaXZhdGVEaWN0RGVmYXVsdHMKKworCitkZWYgY2FsY1N1YnJCaWFzKHN1YnJzKToKKwluU3VicnMgPSBsZW4oc3VicnMpCisJaWYgblN1YnJzIDwgMTI0MDoKKwkJYmlhcyA9IDEwNworCWVsaWYgblN1YnJzIDwgMzM5MDA6CisJCWJpYXMgPSAxMTMxCisJZWxzZToKKwkJYmlhcyA9IDMyNzY4CisJcmV0dXJuIGJpYXMKKwpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy9wc0xpYi5weSBiL0xpYi9mb250VG9vbHMvcHNMaWIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQwODY4MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvcHNMaWIucHkKQEAgLTAsMCArMSwzNDYgQEAKK2ltcG9ydCBTdHJpbmdJTworaW1wb3J0IHJlZ2V4CitpbXBvcnQgc3RyaW5nCitpbXBvcnQgZWV4ZWMKK2ltcG9ydCB0eXBlcworZnJvbSBwc09wZXJhdG9ycyBpbXBvcnQgKgorCisKK3BzX3NwZWNpYWwgPSAnKCk8Pltde30lJwkjIC8gaXMgb25lIHRvbywgYnV0IHdlIHRha2UgY2FyZSBvZiB0aGF0IG9uZSBkaWZmZXJlbnRseQorCit3aGl0ZXNwYWNlID0gc3RyaW5nLndoaXRlc3BhY2UKK3NraXB3aGl0ZVJFID0gcmVnZXguY29tcGlsZSgiWyVzXSoiICUgd2hpdGVzcGFjZSkKKworZW5kb2Z0aGluZ1BhdCA9ICJbXl1bKCl7fTw+LyVzJXNdKiIgJSAoJyUnLCB3aGl0ZXNwYWNlKQorZW5kb2Z0aGluZ1JFID0gcmVnZXguY29tcGlsZShlbmRvZnRoaW5nUGF0KQorCitjb21tZW50UkUgPSByZWdleC5jb21waWxlKCIlW15cblxyXSoiKQorCisjIFhYWCBUaGlzIG5vdCBlbnRpcmVseSBjb3JyZWN0Ogorc3RyaW5nUGF0ID0gIiIiCisJKAorCQlcKAorCQkJXCgKKwkJCQlbXigpXSogICBcXFxcICAgWygpXQorCQkJXCkKKwkJCVx8CisJCQlcKAorCQkJCVteKCldKiAgKCAgIFteKCldKiAgKQorCQkJXCkKKwkJXCkqCisJCVteKCldKgorCSkKKyIiIgorc3RyaW5nUGF0ID0gc3RyaW5nLmpvaW4oc3RyaW5nLnNwbGl0KHN0cmluZ1BhdCksICcnKQorc3RyaW5nUkUgPSByZWdleC5jb21waWxlKHN0cmluZ1BhdCkKKworaGV4c3RyaW5nUkUgPSByZWdleC5jb21waWxlKCI8WyVzMC05QS1GYS1mXSo+IiAlIHdoaXRlc3BhY2UpCisKK3BzX3Rva2VuZXJyb3IgPSAncHNfdG9rZW5lcnJvcicKK3BzX2Vycm9yID0gJ3BzX2Vycm9yJworCitjbGFzcyBQU1Rva2VuaXplcihTdHJpbmdJTy5TdHJpbmdJTyk6CisJCisJZGVmIGdldG5leHR0b2tlbihzZWxmLCAKKwkJCSMgbG9jYWxpemUgc29tZSBzdHVmZiwgZm9yIHBlcmZvcm1hbmNlCisJCQlsZW4gPSBsZW4sCisJCQlwc19zcGVjaWFsID0gcHNfc3BlY2lhbCwKKwkJCXN0cmluZ21hdGNoID0gc3RyaW5nUkUubWF0Y2gsCisJCQloZXhzdHJpbmdtYXRjaCA9IGhleHN0cmluZ1JFLm1hdGNoLAorCQkJY29tbWVudG1hdGNoID0gY29tbWVudFJFLm1hdGNoLAorCQkJZW5kbWF0Y2ggPSBlbmRvZnRoaW5nUkUubWF0Y2gsIAorCQkJd2hpdGVtYXRjaCA9IHNraXB3aGl0ZVJFLm1hdGNoKToKKwkJCisJCXNlbGYucG9zID0gc2VsZi5wb3MgKyB3aGl0ZW1hdGNoKHNlbGYuYnVmLCBzZWxmLnBvcykKKwkJaWYgc2VsZi5wb3MgPj0gc2VsZi5sZW46CisJCQlyZXR1cm4gTm9uZSwgTm9uZQorCQlwb3MgPSBzZWxmLnBvcworCQlidWYgPSBzZWxmLmJ1ZgorCQljaGFyID0gYnVmW3Bvc10KKwkJaWYgY2hhciBpbiBwc19zcGVjaWFsOgorCQkJaWYgY2hhciBpbiAne31bXSc6CisJCQkJdG9rZW50eXBlID0gJ2RvX3NwZWNpYWwnCisJCQkJdG9rZW4gPSBjaGFyCisJCQllbGlmIGNoYXIgPT0gJyUnOgorCQkJCXRva2VudHlwZSA9ICdkb19jb21tZW50JworCQkJCWNvbW1lbnRsZW4gPSBjb21tZW50bWF0Y2goYnVmLCBwb3MpCisJCQkJdG9rZW4gPSBidWZbcG9zOnBvcytjb21tZW50bGVuXQorCQkJZWxpZiBjaGFyID09ICcoJzoKKwkJCQl0b2tlbnR5cGUgPSAnZG9fc3RyaW5nJworCQkJCXN0cmxlbiA9IHN0cmluZ21hdGNoKGJ1ZiwgcG9zKQorCQkJCWlmIHN0cmxlbiA8IDA6CisJCQkJCXJhaXNlIHBzX3Rva2VuZXJyb3IsICdiYWQgc3RyaW5nIGF0IGNoYXJhY3RlciAlZCcgJSBwb3MKKwkJCQl0b2tlbiA9IGJ1Zltwb3M6cG9zK3N0cmxlbl0KKwkJCWVsaWYgY2hhciA9PSAnPCc6CisJCQkJdG9rZW50eXBlID0gJ2RvX2hleHN0cmluZycKKwkJCQlzdHJsZW4gPSBoZXhzdHJpbmdtYXRjaChidWYsIHBvcykKKwkJCQlpZiBzdHJsZW4gPCAwOgorCQkJCQlyYWlzZSBwc190b2tlbmVycm9yLCAnYmFkIGhleHN0cmluZyBhdCBjaGFyYWN0ZXIgJWQnICUgcG9zCisJCQkJdG9rZW4gPSBidWZbcG9zOnBvcytzdHJsZW5dCisJCQllbHNlOgorCQkJCXJhaXNlIHBzX3Rva2VuZXJyb3IsICdiYWQgdG9rZW4gYXQgY2hhcmFjdGVyICVkJyAlIHBvcworCQllbHNlOgorCQkJaWYgY2hhciA9PSAnLyc6CisJCQkJdG9rZW50eXBlID0gJ2RvX2xpdGVyYWwnCisJCQkJZW5kb2Z0aGluZyA9IGVuZG1hdGNoKGJ1ZiwgcG9zICsgMSkgKyAxCisJCQllbHNlOgorCQkJCXRva2VudHlwZSA9ICcnCisJCQkJZW5kb2Z0aGluZyA9IGVuZG1hdGNoKGJ1ZiwgcG9zKQorCQkJaWYgZW5kb2Z0aGluZyA8PSAwOgorCQkJCXJhaXNlIHBzX3Rva2VuZXJyb3IsICdiYWQgdG9rZW4gYXQgY2hhcmFjdGVyICVkJyAlIHBvcworCQkJdG9rZW4gPSBidWZbcG9zOnBvcyArIGVuZG9mdGhpbmddCisJCXNlbGYucG9zID0gcG9zICsgbGVuKHRva2VuKQorCQlyZXR1cm4gdG9rZW50eXBlLCB0b2tlbgorCQorCWRlZiBza2lwd2hpdGUoc2VsZiwgd2hpdGVtYXRjaCA9IHNraXB3aGl0ZVJFLm1hdGNoKToKKwkJc2VsZi5wb3MgPSBzZWxmLnBvcyArIHdoaXRlbWF0Y2goc2VsZi5idWYsIHNlbGYucG9zKQorCQorCWRlZiBzdGFydGVleGVjKHNlbGYpOgorCQlzZWxmLnBvcyA9IHNlbGYucG9zICsgMQorCQkjc2VsZi5za2lwd2hpdGUoKQorCQlzZWxmLmRpcnR5YnVmID0gc2VsZi5idWZbc2VsZi5wb3M6XQorCQlzZWxmLmJ1ZiwgUiA9IGVleGVjLkRlY3J5cHQoc2VsZi5kaXJ0eWJ1ZiwgNTU2NjUpCisJCXNlbGYubGVuID0gbGVuKHNlbGYuYnVmKQorCQlzZWxmLnBvcyA9IDQKKwkKKwlkZWYgc3RvcGVleGVjKHNlbGYpOgorCQlpZiBub3QgaGFzYXR0cihzZWxmLCAnZGlydHlidWYnKToKKwkJCXJldHVybgorCQlzZWxmLmJ1ZiA9IHNlbGYuZGlydHlidWYKKwkJZGVsIHNlbGYuZGlydHlidWYKKwkKKwlkZWYgZmx1c2goc2VsZik6CisJCWlmIHNlbGYuYnVmbGlzdDoKKwkJCXNlbGYuYnVmID0gc2VsZi5idWYgKyBzdHJpbmcuam9pbihzZWxmLmJ1Zmxpc3QsICcnKQorCQkJc2VsZi5idWZsaXN0ID0gW10KKworCitjbGFzcyBQU0ludGVycHJldGVyKFBTT3BlcmF0b3JzKToKKwkKKwlkZWYgX19pbml0X18oc2VsZik6CisJCXN5c3RlbWRpY3QgPSB7fQorCQl1c2VyZGljdCA9IHt9CisJCXNlbGYuZGljdHN0YWNrID0gW3N5c3RlbWRpY3QsIHVzZXJkaWN0XQorCQlzZWxmLnN0YWNrID0gW10KKwkJc2VsZi5wcm9jbGV2ZWwgPSAwCisJCXNlbGYucHJvY21hcmsgPSBwc19wcm9jbWFyaygpCisJCXNlbGYuZmlsbHN5c3RlbWRpY3QoKQorCQorCWRlZiBmaWxsc3lzdGVtZGljdChzZWxmKToKKwkJc3lzdGVtZGljdCA9IHNlbGYuZGljdHN0YWNrWzBdCisJCXN5c3RlbWRpY3RbJ1snXSA9IHN5c3RlbWRpY3RbJ21hcmsnXSA9IHNlbGYubWFyayA9IHBzX21hcmsoKQorCQlzeXN0ZW1kaWN0WyddJ10gPSBwc19vcGVyYXRvcignXScsIHNlbGYuZG9fbWFrZWFycmF5KQorCQlzeXN0ZW1kaWN0Wyd0cnVlJ10gPSBwc19ib29sZWFuKDEpCisJCXN5c3RlbWRpY3RbJ2ZhbHNlJ10gPSBwc19ib29sZWFuKDApCisJCXN5c3RlbWRpY3RbJ1N0YW5kYXJkRW5jb2RpbmcnXSA9IHBzX2FycmF5KHBzX1N0YW5kYXJkRW5jb2RpbmcpCisJCXN5c3RlbWRpY3RbJ0ZvbnREaXJlY3RvcnknXSA9IHBzX2RpY3Qoe30pCisJCXNlbGYuc3Vja29wZXJhdG9ycyhzeXN0ZW1kaWN0LCBzZWxmLl9fY2xhc3NfXykKKwkKKwlkZWYgc3Vja29wZXJhdG9ycyhzZWxmLCBzeXN0ZW1kaWN0LCBrbGFzcyk6CisJCWZvciBuYW1lIGluIGRpcihrbGFzcyk6CisJCQlhdHRyID0gZ2V0YXR0cihzZWxmLCBuYW1lKQorCQkJaWYgY2FsbGFibGUoYXR0cikgYW5kIG5hbWVbOjNdID09ICdwc18nOgorCQkJCW5hbWUgPSBuYW1lWzM6XQorCQkJCXN5c3RlbWRpY3RbbmFtZV0gPSBwc19vcGVyYXRvcihuYW1lLCBhdHRyKQorCQlmb3IgYmFzZWNsYXNzIGluIGtsYXNzLl9fYmFzZXNfXzoKKwkJCXNlbGYuc3Vja29wZXJhdG9ycyhzeXN0ZW1kaWN0LCBiYXNlY2xhc3MpCisJCisJZGVmIGludGVycHJldChzZWxmLCBkYXRhLCBnZXRhdHRyID0gZ2V0YXR0cik6CisJCXRva2VuaXplciA9IHNlbGYudG9rZW5pemVyID0gUFNUb2tlbml6ZXIoZGF0YSkKKwkJZ2V0bmV4dHRva2VuID0gdG9rZW5pemVyLmdldG5leHR0b2tlbgorCQlkb190b2tlbiA9IHNlbGYuZG9fdG9rZW4KKwkJaGFuZGxlX29iamVjdCA9IHNlbGYuaGFuZGxlX29iamVjdAorCQl0cnk6CisJCQl3aGlsZSAxOgorCQkJCXRva2VudHlwZSwgdG9rZW4gPSBnZXRuZXh0dG9rZW4oKQorCQkJCSNwcmludCB0b2tlbgorCQkJCWlmIG5vdCB0b2tlbjoKKwkJCQkJYnJlYWsKKwkJCQlpZiB0b2tlbnR5cGU6CisJCQkJCWhhbmRsZXIgPSBnZXRhdHRyKHNlbGYsIHRva2VudHlwZSkKKwkJCQkJb2JqZWN0ID0gaGFuZGxlcih0b2tlbikKKwkJCQllbHNlOgorCQkJCQlvYmplY3QgPSBkb190b2tlbih0b2tlbikKKwkJCQlpZiBvYmplY3QgaXMgbm90IE5vbmU6CisJCQkJCWhhbmRsZV9vYmplY3Qob2JqZWN0KQorCQkJdG9rZW5pemVyLmNsb3NlKCkKKwkJCXNlbGYudG9rZW5pemVyID0gTm9uZQorCQlmaW5hbGx5OgorCQkJaWYgc2VsZi50b2tlbml6ZXIgaXMgbm90IE5vbmU6CisJCQkJcHJpbnQgJ3BzIGVycm9yOlxuLSAtIC0gLSAtIC0gLScKKwkJCQlwcmludCBzZWxmLnRva2VuaXplci5idWZbc2VsZi50b2tlbml6ZXIucG9zLTUwOnNlbGYudG9rZW5pemVyLnBvc10KKwkJCQlwcmludCAnPj4+JworCQkJCXByaW50IHNlbGYudG9rZW5pemVyLmJ1ZltzZWxmLnRva2VuaXplci5wb3M6c2VsZi50b2tlbml6ZXIucG9zKzUwXQorCQkJCXByaW50ICctIC0gLSAtIC0gLSAtJworCQorCWRlZiBoYW5kbGVfb2JqZWN0KHNlbGYsIG9iamVjdCk6CisJCWlmIG5vdCAoc2VsZi5wcm9jbGV2ZWwgb3Igb2JqZWN0LmxpdGVyYWwgb3Igb2JqZWN0LnR5cGUgPT0gJ3Byb2NlZHVyZXR5cGUnKToKKwkJCWlmIG9iamVjdC50eXBlIDw+ICdvcGVyYXRvcnR5cGUnOgorCQkJCW9iamVjdCA9IHNlbGYucmVzb2x2ZV9uYW1lKG9iamVjdC52YWx1ZSkKKwkJCWlmIG9iamVjdC5saXRlcmFsOgorCQkJCXNlbGYucHVzaChvYmplY3QpCisJCQllbHNlOgorCQkJCWlmIG9iamVjdC50eXBlID09ICdwcm9jZWR1cmV0eXBlJzoKKwkJCQkJc2VsZi5jYWxsX3Byb2NlZHVyZShvYmplY3QpCisJCQkJZWxzZToKKwkJCQkJb2JqZWN0LmZ1bmN0aW9uKCkKKwkJZWxzZToKKwkJCXNlbGYucHVzaChvYmplY3QpCisJCisJZGVmIGNhbGxfcHJvY2VkdXJlKHNlbGYsIHByb2MpOgorCQloYW5kbGVfb2JqZWN0ID0gc2VsZi5oYW5kbGVfb2JqZWN0CisJCWZvciBpdGVtIGluIHByb2MudmFsdWU6CisJCQloYW5kbGVfb2JqZWN0KGl0ZW0pCisJCisJZGVmIHJlc29sdmVfbmFtZShzZWxmLCBuYW1lKToKKwkJZGljdHN0YWNrID0gc2VsZi5kaWN0c3RhY2sKKwkJZm9yIGkgaW4gcmFuZ2UobGVuKGRpY3RzdGFjayktMSwgLTEsIC0xKToKKwkJCWlmIGRpY3RzdGFja1tpXS5oYXNfa2V5KG5hbWUpOgorCQkJCXJldHVybiBkaWN0c3RhY2tbaV1bbmFtZV0KKwkJcmFpc2UgcHNfZXJyb3IsICduYW1lIGVycm9yOiAnICsgc3RyKG5hbWUpCisJCisJZGVmIGRvX3Rva2VuKHNlbGYsIHRva2VuLAorCQkJCWF0b2kgPSBzdHJpbmcuYXRvaSwgCisJCQkJYXRvZiA9IHN0cmluZy5hdG9mLAorCQkJCXBzX25hbWUgPSBwc19uYW1lLAorCQkJCXBzX2ludGVnZXIgPSBwc19pbnRlZ2VyLAorCQkJCXBzX3JlYWwgPSBwc19yZWFsKToKKwkJdHJ5OgorCQkJbnVtID0gYXRvaSh0b2tlbikKKwkJZXhjZXB0IChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yKToKKwkJCXRyeToKKwkJCQludW0gPSBhdG9mKHRva2VuKQorCQkJZXhjZXB0IChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yKToKKwkJCQlpZiAnIycgaW4gdG9rZW46CisJCQkJCWhhc2hwb3MgPSBzdHJpbmcuZmluZCh0b2tlbiwgJyMnKQorCQkJCQl0cnk6CisJCQkJCQliYXNlID0gc3RyaW5nLmF0b2kodG9rZW5bOmhhc2hwb3NdKQorCQkJCQkJbnVtID0gc3RyaW5nLmF0b2kodG9rZW5baGFzaHBvcysxOl0sIGJhc2UpCisJCQkJCWV4Y2VwdCAoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvcik6CisJCQkJCQlyZXR1cm4gcHNfbmFtZSh0b2tlbikKKwkJCQkJZWxzZToKKwkJCQkJCXJldHVybiBwc19pbnRlZ2VyKG51bSkKKwkJCQllbHNlOgorCQkJCQlyZXR1cm4gcHNfbmFtZSh0b2tlbikKKwkJCWVsc2U6CisJCQkJcmV0dXJuIHBzX3JlYWwobnVtKQorCQllbHNlOgorCQkJcmV0dXJuIHBzX2ludGVnZXIobnVtKQorCQorCWRlZiBkb19jb21tZW50KHNlbGYsIHRva2VuKToKKwkJcGFzcworCQorCWRlZiBkb19saXRlcmFsKHNlbGYsIHRva2VuKToKKwkJcmV0dXJuIHBzX2xpdGVyYWwodG9rZW5bMTpdKQorCQorCWRlZiBkb19zdHJpbmcoc2VsZiwgdG9rZW4pOgorCQlyZXR1cm4gcHNfc3RyaW5nKHRva2VuWzE6LTFdKQorCQorCWRlZiBkb19oZXhzdHJpbmcoc2VsZiwgdG9rZW4pOgorCQloZXhTdHIgPSBzdHJpbmcuam9pbihzdHJpbmcuc3BsaXQodG9rZW5bMTotMV0pLCAnJykKKwkJaWYgbGVuKGhleFN0cikgJSAyOgorCQkJaGV4U3RyID0gaGV4U3RyICsgJzAnCisJCWNsZWFuc3RyID0gW10KKwkJZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGhleFN0ciksIDIpOgorCQkJY2xlYW5zdHIuYXBwZW5kKGNocihzdHJpbmcuYXRvaShoZXhTdHJbaTppKzJdLCAxNikpKQorCQljbGVhbnN0ciA9IHN0cmluZy5qb2luKGNsZWFuc3RyLCAnJykKKwkJcmV0dXJuIHBzX3N0cmluZyhjbGVhbnN0cikKKwkKKwlkZWYgZG9fc3BlY2lhbChzZWxmLCB0b2tlbik6CisJCWlmIHRva2VuID09ICd7JzoKKwkJCXNlbGYucHJvY2xldmVsID0gc2VsZi5wcm9jbGV2ZWwgKyAxCisJCQlyZXR1cm4gc2VsZi5wcm9jbWFyaworCQllbGlmIHRva2VuID09ICd9JzoKKwkJCXByb2MgPSBbXQorCQkJd2hpbGUgMToKKwkJCQl0b3BvYmplY3QgPSBzZWxmLnBvcCgpCisJCQkJaWYgdG9wb2JqZWN0ID09IHNlbGYucHJvY21hcms6CisJCQkJCWJyZWFrCisJCQkJcHJvYy5hcHBlbmQodG9wb2JqZWN0KQorCQkJc2VsZi5wcm9jbGV2ZWwgPSBzZWxmLnByb2NsZXZlbCAtIDEKKwkJCXByb2MucmV2ZXJzZSgpCisJCQlyZXR1cm4gcHNfcHJvY2VkdXJlKHByb2MpCisJCWVsaWYgdG9rZW4gPT0gJ1snOgorCQkJcmV0dXJuIHNlbGYubWFyaworCQllbGlmIHRva2VuID09ICddJzoKKwkJCXJldHVybiBwc19uYW1lKCddJykKKwkJZWxzZToKKwkJCXJhaXNlIHBzX3Rva2VuZXJyb3IsICdodWg/JworCQorCWRlZiBwdXNoKHNlbGYsIG9iamVjdCk6CisJCXNlbGYuc3RhY2suYXBwZW5kKG9iamVjdCkKKwkKKwlkZWYgcG9wKHNlbGYsICp0eXBlcyk6CisJCXN0YWNrID0gc2VsZi5zdGFjaworCQlpZiBub3Qgc3RhY2s6CisJCQlyYWlzZSBwc19lcnJvciwgJ3N0YWNrIHVuZGVyZmxvdycKKwkJb2JqZWN0ID0gc3RhY2tbLTFdCisJCWlmIHR5cGVzOgorCQkJaWYgb2JqZWN0LnR5cGUgbm90IGluIHR5cGVzOgorCQkJCXJhaXNlIHBzX2Vycm9yLCAndHlwZWNoZWNrLCBleHBlY3RlZCAlcywgZm91bmQgJXMnICUgKGB0eXBlc2AsIG9iamVjdC50eXBlKQorCQlkZWwgc3RhY2tbLTFdCisJCXJldHVybiBvYmplY3QKKwkKKwlkZWYgZG9fbWFrZWFycmF5KHNlbGYpOgorCQlhcnJheSA9IFtdCisJCXdoaWxlIDE6CisJCQl0b3BvYmplY3QgPSBzZWxmLnBvcCgpCisJCQlpZiB0b3BvYmplY3QgPT0gc2VsZi5tYXJrOgorCQkJCWJyZWFrCisJCQlhcnJheS5hcHBlbmQodG9wb2JqZWN0KQorCQlhcnJheS5yZXZlcnNlKCkKKwkJc2VsZi5wdXNoKHBzX2FycmF5KGFycmF5KSkKKwkKKwlkZWYgY2xvc2Uoc2VsZik6CisJCSIiIlJlbW92ZSBjaXJjdWxhciByZWZlcmVuY2VzLiIiIgorCQlkZWwgc2VsZi5zdGFjaworCQlkZWwgc2VsZi5kaWN0c3RhY2sKKworCitkZWYgdW5wYWNrX2l0ZW0oaXRlbSk6CisJdHAgPSB0eXBlKGl0ZW0udmFsdWUpCisJaWYgdHAgPT0gdHlwZXMuRGljdGlvbmFyeVR5cGU6CisJCW5ld2l0ZW0gPSB7fQorCQlmb3Iga2V5LCB2YWx1ZSBpbiBpdGVtLnZhbHVlLml0ZW1zKCk6CisJCQluZXdpdGVtW2tleV0gPSB1bnBhY2tfaXRlbSh2YWx1ZSkKKwllbGlmIHRwID09IHR5cGVzLkxpc3RUeXBlOgorCQluZXdpdGVtID0gW05vbmVdICogbGVuKGl0ZW0udmFsdWUpCisJCWZvciBpIGluIHJhbmdlKGxlbihpdGVtLnZhbHVlKSk6CisJCQluZXdpdGVtW2ldID0gdW5wYWNrX2l0ZW0oaXRlbS52YWx1ZVtpXSkKKwkJaWYgaXRlbS50eXBlID09ICdwcm9jZWR1cmV0eXBlJzoKKwkJCW5ld2l0ZW0gPSB0dXBsZShuZXdpdGVtKQorCWVsc2U6CisJCW5ld2l0ZW0gPSBpdGVtLnZhbHVlCisJcmV0dXJuIG5ld2l0ZW0KKworZGVmIHN1Y2tmb250KGRhdGEpOgorCWltcG9ydCByZQorCW0gPSByZS5zZWFyY2gociIvRm9udE5hbWVccysvKFteIFx0XG5ccl0rKVxzK2RlZiIsIGRhdGEpCisJaWYgbToKKwkJZm9udE5hbWUgPSBtLmdyb3VwKDEpCisJZWxzZToKKwkJZm9udE5hbWUgPSBOb25lCisJaW50ZXJwcmV0ZXIgPSBQU0ludGVycHJldGVyKCkKKwlpbnRlcnByZXRlci5pbnRlcnByZXQoIi9IZWx2ZXRpY2EgNCBkaWN0IGR1cCAvRW5jb2RpbmcgU3RhbmRhcmRFbmNvZGluZyBwdXQgZGVmaW5lZm9udCBwb3AiKQorCWludGVycHJldGVyLmludGVycHJldChkYXRhKQorCWZvbnRkaXIgPSBpbnRlcnByZXRlci5kaWN0c3RhY2tbMF1bJ0ZvbnREaXJlY3RvcnknXS52YWx1ZQorCWlmIGZvbnRkaXIuaGFzX2tleShmb250TmFtZSk6CisJCXJhd2ZvbnQgPSBmb250ZGlyW2ZvbnROYW1lXQorCWVsc2U6CisJCSMgZmFsbCBiYWNrLCBpbiBjYXNlIGZvbnROYW1lIHdhc24ndCBmb3VuZAorCQlmb250TmFtZXMgPSBmb250ZGlyLmtleXMoKQorCQlpZiBsZW4oZm9udE5hbWVzKSA+IDE6CisJCQlmb250TmFtZXMucmVtb3ZlKCJIZWx2ZXRpY2EiKQorCQlmb250TmFtZXMuc29ydCgpCisJCXJhd2ZvbnQgPSBmb250ZGlyW2ZvbnROYW1lc1swXV0KKwlpbnRlcnByZXRlci5jbG9zZSgpCisJcmV0dXJuIHVucGFja19pdGVtKHJhd2ZvbnQpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKwlpbXBvcnQgbWFjZnMKKwlmc3MsIG9rID0gbWFjZnMuU3RhbmRhcmRHZXRGaWxlKCJMV0ZOIikKKwlpZiBvazoKKwkJaW1wb3J0IHQxTGliCisJCWRhdGEsIGtpbmQgPSB0MUxpYi5yZWFkKGZzcy5hc19wYXRobmFtZSgpKQorCQlmb250ID0gc3Vja2ZvbnQoZGF0YSkKZGlmZiAtLWdpdCBhL0xpYi9mb250VG9vbHMvcHNPcGVyYXRvcnMucHkgYi9MaWIvZm9udFRvb2xzL3BzT3BlcmF0b3JzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzM2Y0ODQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZm9udFRvb2xzL3BzT3BlcmF0b3JzLnB5CkBAIC0wLDAgKzEsNTgwIEBACitpbXBvcnQgc3RyaW5nCisKKworX2FjY2Vzc3N0cmluZ3MgPSB7MDogIiIsIDE6ICJyZWFkb25seSIsIDI6ICJleGVjdXRlb25seSIsIDM6ICJub2FjY2VzcyJ9CisKK2NsYXNzIHBzX29iamVjdDoKKwkKKwlsaXRlcmFsID0gMQorCWFjY2VzcyA9IDAKKwl2YWx1ZSA9IE5vbmUKKwkKKwlkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgorCQlzZWxmLnZhbHVlID0gdmFsdWUKKwkJc2VsZi50eXBlID0gc2VsZi5fX2NsYXNzX18uX19uYW1lX19bMzpdICsgInR5cGUiCisJCisJZGVmIF9fcmVwcl9fKHNlbGYpOgorCQlyZXR1cm4gIjwlcyAlcz4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fWzM6XSwgcmVwcihzZWxmLnZhbHVlKSkKKworCitjbGFzcyBwc19vcGVyYXRvcihwc19vYmplY3QpOgorCQorCWxpdGVyYWwgPSAwCisJCisJZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGZ1bmN0aW9uKToKKwkJc2VsZi5uYW1lID0gbmFtZQorCQlzZWxmLmZ1bmN0aW9uID0gZnVuY3Rpb24KKwkJc2VsZi50eXBlID0gc2VsZi5fX2NsYXNzX18uX19uYW1lX19bMzpdICsgInR5cGUiCisJZGVmIF9fcmVwcl9fKHNlbGYpOgorCQlyZXR1cm4gIjxvcGVyYXRvciAlcz4iICUgc2VsZi5uYW1lCisKK2NsYXNzIHBzX3Byb2NlZHVyZShwc19vYmplY3QpOgorCWxpdGVyYWwgPSAwCisJZGVmIF9fcmVwcl9fKHNlbGYpOgorCQlyZXR1cm4gIjxwcm9jZWR1cmU+IgorCWRlZiBfX3N0cl9fKHNlbGYpOgorCQlwc3N0cmluZyA9ICd7JworCQlmb3IgaSBpbiByYW5nZShsZW4oc2VsZi52YWx1ZSkpOgorCQkJaWYgaToKKwkJCQlwc3N0cmluZyA9IHBzc3RyaW5nICsgJyAnICsgc3RyKHNlbGYudmFsdWVbaV0pCisJCQllbHNlOgorCQkJCXBzc3RyaW5nID0gcHNzdHJpbmcgKyBzdHIoc2VsZi52YWx1ZVtpXSkKKwkJcmV0dXJuIHBzc3RyaW5nICsgJ30nCisKK2NsYXNzIHBzX25hbWUocHNfb2JqZWN0KToKKwlsaXRlcmFsID0gMAorCWRlZiBfX3N0cl9fKHNlbGYpOgorCQlpZiBzZWxmLmxpdGVyYWw6CisJCQlyZXR1cm4gJy8nICsgc2VsZi52YWx1ZQorCQllbHNlOgorCQkJcmV0dXJuIHNlbGYudmFsdWUKKworY2xhc3MgcHNfbGl0ZXJhbChwc19vYmplY3QpOgorCWRlZiBfX3N0cl9fKHNlbGYpOgorCQlyZXR1cm4gJy8nICsgc2VsZi52YWx1ZQorCitjbGFzcyBwc19hcnJheShwc19vYmplY3QpOgorCWRlZiBfX3N0cl9fKHNlbGYpOgorCQlwc3N0cmluZyA9ICdbJworCQlmb3IgaSBpbiByYW5nZShsZW4oc2VsZi52YWx1ZSkpOgorCQkJaXRlbSA9IHNlbGYudmFsdWVbaV0KKwkJCWFjY2VzcyA9IF9hY2Nlc3NzdHJpbmdzW2l0ZW0uYWNjZXNzXQorCQkJaWYgYWNjZXNzOgorCQkJCWFjY2VzcyA9ICcgJyArIGFjY2VzcworCQkJaWYgaToKKwkJCQlwc3N0cmluZyA9IHBzc3RyaW5nICsgJyAnICsgc3RyKGl0ZW0pICsgYWNjZXNzCisJCQllbHNlOgorCQkJCXBzc3RyaW5nID0gcHNzdHJpbmcgKyBzdHIoaXRlbSkgKyBhY2Nlc3MKKwkJcmV0dXJuIHBzc3RyaW5nICsgJ10nCisJZGVmIF9fcmVwcl9fKHNlbGYpOgorCQlyZXR1cm4gIjxhcnJheT4iCisKK190eXBlMV9wcmVfZWV4ZWNfb3JkZXIgPSBbCisJCSJGb250SW5mbyIsCisJCSJGb250TmFtZSIsCisJCSJFbmNvZGluZyIsCisJCSJQYWludFR5cGUiLAorCQkiRm9udFR5cGUiLAorCQkiRm9udE1hdHJpeCIsCisJCSJGb250QkJveCIsCisJCSJVbmlxdWVJRCIsCisJCSJNZXRyaWNzIiwKKwkJIlN0cm9rZVdpZHRoIgorCV0KKworX3R5cGUxX2ZvbnRpbmZvX29yZGVyID0gWworCQkidmVyc2lvbiIsCisJCSJOb3RpY2UiLAorCQkiRnVsbE5hbWUiLAorCQkiRmFtaWx5TmFtZSIsCisJCSJXZWlnaHQiLAorCQkiSXRhbGljQW5nbGUiLAorCQkiaXNGaXhlZFBpdGNoIiwKKwkJIlVuZGVybGluZVBvc2l0aW9uIiwKKwkJIlVuZGVybGluZVRoaWNrbmVzcyIKKwldCisKK190eXBlMV9wb3N0X2VleGVjX29yZGVyID0gWworCQkiUHJpdmF0ZSIsCisJCSJDaGFyU3RyaW5ncyIsCisJCSJGSUQiCisJXQorCitkZWYgX3R5cGUxX2l0ZW1fcmVwcihrZXksIHZhbHVlKToKKwlwc3N0cmluZyA9ICIiCisJYWNjZXNzID0gX2FjY2Vzc3N0cmluZ3NbdmFsdWUuYWNjZXNzXQorCWlmIGFjY2VzczoKKwkJYWNjZXNzID0gYWNjZXNzICsgJyAnCisJaWYga2V5ID09ICdDaGFyU3RyaW5ncyc6CisJCXBzc3RyaW5nID0gcHNzdHJpbmcgKyAiLyVzICVzIGRlZlxuIiAlIChrZXksIF90eXBlMV9DaGFyU3RyaW5nX3JlcHIodmFsdWUudmFsdWUpKQorCWVsaWYga2V5ID09ICdFbmNvZGluZyc6CisJCXBzc3RyaW5nID0gcHNzdHJpbmcgKyBfdHlwZTFfRW5jb2RpbmdfcmVwcih2YWx1ZSwgYWNjZXNzKQorCWVsc2U6CisJCXBzc3RyaW5nID0gcHNzdHJpbmcgKyAiLyVzICVzICVzZGVmXG4iICUgKHN0cihrZXkpLCBzdHIodmFsdWUpLCBhY2Nlc3MpCisJcmV0dXJuIHBzc3RyaW5nCisKK2RlZiBfdHlwZTFfRW5jb2RpbmdfcmVwcihlbmNvZGluZywgYWNjZXNzKToKKwllbmNvZGluZyA9IGVuY29kaW5nLnZhbHVlCisJcHNzdHJpbmcgPSAiL0VuY29kaW5nIDI1NiBhcnJheVxuMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yXG4iCisJZm9yIGkgaW4gcmFuZ2UoMjU2KToKKwkJbmFtZSA9IGVuY29kaW5nW2ldLnZhbHVlCisJCWlmIG5hbWUgPD4gJy5ub3RkZWYnOgorCQkJcHNzdHJpbmcgPSBwc3N0cmluZyArICJkdXAgJWQgLyVzIHB1dFxuIiAlIChpLCBuYW1lKQorCXJldHVybiBwc3N0cmluZyArIGFjY2VzcyArICJkZWZcbiIKKworZGVmIF90eXBlMV9DaGFyU3RyaW5nX3JlcHIoY2hhcnN0cmluZ3MpOgorCWl0ZW1zID0gY2hhcnN0cmluZ3MuaXRlbXMoKQorCWl0ZW1zLnNvcnQoKQorCXJldHVybiAneHh4JworCitjbGFzcyBwc19mb250KHBzX29iamVjdCk6CisJZGVmIF9fc3RyX18oc2VsZik6CisJCXBzc3RyaW5nID0gIiVkIGRpY3QgZHVwIGJlZ2luXG4iICUgbGVuKHNlbGYudmFsdWUpCisJCWZvciBrZXkgaW4gX3R5cGUxX3ByZV9lZXhlY19vcmRlcjoKKwkJCXRyeToKKwkJCQl2YWx1ZSA9IHNlbGYudmFsdWVba2V5XQorCQkJZXhjZXB0IEtleUVycm9yOgorCQkJCXBhc3MKKwkJCWVsc2U6CisJCQkJcHNzdHJpbmcgPSBwc3N0cmluZyArIF90eXBlMV9pdGVtX3JlcHIoa2V5LCB2YWx1ZSkKKwkJaXRlbXMgPSBzZWxmLnZhbHVlLml0ZW1zKCkKKwkJaXRlbXMuc29ydCgpCisJCWZvciBrZXksIHZhbHVlIGluIGl0ZW1zOgorCQkJaWYga2V5IG5vdCBpbiBfdHlwZTFfcHJlX2VleGVjX29yZGVyICsgX3R5cGUxX3Bvc3RfZWV4ZWNfb3JkZXI6CisJCQkJcHNzdHJpbmcgPSBwc3N0cmluZyArIF90eXBlMV9pdGVtX3JlcHIoa2V5LCB2YWx1ZSkKKwkJcHNzdHJpbmcgPSBwc3N0cmluZyArICJjdXJyZW50ZGljdCBlbmRcbmN1cnJlbnRmaWxlIGVleGVjXG5kdXAgIgorCQlmb3Iga2V5IGluIF90eXBlMV9wb3N0X2VleGVjX29yZGVyOgorCQkJdHJ5OgorCQkJCXZhbHVlID0gc2VsZi52YWx1ZVtrZXldCisJCQlleGNlcHQgS2V5RXJyb3I6CisJCQkJcGFzcworCQkJZWxzZToKKwkJCQlwc3N0cmluZyA9IHBzc3RyaW5nICsgX3R5cGUxX2l0ZW1fcmVwcihrZXksIHZhbHVlKQorCQlyZXR1cm4gcHNzdHJpbmcgKyAnZHVwL0ZvbnROYW1lIGdldCBleGNoIGRlZmluZWZvbnQgcG9wXG5tYXJrIGN1cnJlbnRmaWxlIGNsb3NlZmlsZVxuJyArIFwKKwkJCQk4ICogKDY0ICogJzAnICsgJ1xuJykgKyAnY2xlYXJ0b21hcmsnICsgJ1xuJworCWRlZiBfX3JlcHJfXyhzZWxmKToKKwkJcmV0dXJuICc8Zm9udD4nCisKK2NsYXNzIHBzX2ZpbGUocHNfb2JqZWN0KToKKwlwYXNzCisKK2NsYXNzIHBzX2RpY3QocHNfb2JqZWN0KToKKwlkZWYgX19zdHJfXyhzZWxmKToKKwkJcHNzdHJpbmcgPSAiJWQgZGljdCBkdXAgYmVnaW5cbiIgJSBsZW4oc2VsZi52YWx1ZSkKKwkJaXRlbXMgPSBzZWxmLnZhbHVlLml0ZW1zKCkKKwkJaXRlbXMuc29ydCgpCisJCWRpY3RyZXByID0gIiVkIGRpY3QgZHVwIGJlZ2luXG4iICUgbGVuKGl0ZW1zKQorCQlmb3Iga2V5LCB2YWx1ZSBpbiBpdGVtczoKKwkJCWFjY2VzcyA9IF9hY2Nlc3NzdHJpbmdzW3ZhbHVlLmFjY2Vzc10KKwkJCWlmIGFjY2VzczoKKwkJCQlhY2Nlc3MgPSBhY2Nlc3MgKyAnICcKKwkJCXBzc3RyaW5nID0gcHNzdHJpbmcgKyAiLyVzICVzICVzZGVmXG4iICUgKHN0cihrZXkpLCBzdHIodmFsdWUpLCBhY2Nlc3MpCisJCXJldHVybiBwc3N0cmluZyArICdlbmQgJworCWRlZiBfX3JlcHJfXyhzZWxmKToKKwkJcmV0dXJuICI8ZGljdD4iCisKK2NsYXNzIHBzX21hcmsocHNfb2JqZWN0KToKKwlkZWYgX19pbml0X18oc2VsZik6IAorCQlzZWxmLnZhbHVlID0gJ21hcmsnCisJCXNlbGYudHlwZSA9IHNlbGYuX19jbGFzc19fLl9fbmFtZV9fWzM6XSArICJ0eXBlIgorCitjbGFzcyBwc19wcm9jbWFyayhwc19vYmplY3QpOgorCWRlZiBfX2luaXRfXyhzZWxmKToKKwkJc2VsZi52YWx1ZSA9ICdwcm9jbWFyaycKKwkJc2VsZi50eXBlID0gc2VsZi5fX2NsYXNzX18uX19uYW1lX19bMzpdICsgInR5cGUiCisKK2NsYXNzIHBzX251bGwocHNfb2JqZWN0KToKKwlkZWYgX19pbml0X18oc2VsZik6CisJCXNlbGYudHlwZSA9IHNlbGYuX19jbGFzc19fLl9fbmFtZV9fWzM6XSArICJ0eXBlIgorCitjbGFzcyBwc19ib29sZWFuKHBzX29iamVjdCk6CisJZGVmIF9fc3RyX18oc2VsZik6CisJCWlmIHNlbGYudmFsdWU6CisJCQlyZXR1cm4gJ3RydWUnCisJCWVsc2U6CisJCQlyZXR1cm4gJ2ZhbHNlJworCitjbGFzcyBwc19zdHJpbmcocHNfb2JqZWN0KToKKwlkZWYgX19zdHJfXyhzZWxmKToKKwkJcmV0dXJuICIoJXMpIiAlIGBzZWxmLnZhbHVlYFsxOi0xXQorCitjbGFzcyBwc19pbnRlZ2VyKHBzX29iamVjdCk6CisJZGVmIF9fc3RyX18oc2VsZik6CisJCXJldHVybiBgc2VsZi52YWx1ZWAKKworY2xhc3MgcHNfcmVhbChwc19vYmplY3QpOgorCWRlZiBfX3N0cl9fKHNlbGYpOgorCQlyZXR1cm4gYHNlbGYudmFsdWVgCisKKworY2xhc3MgUFNPcGVyYXRvcnM6CisJCisJZGVmIHBzX2RlZihzZWxmKToKKwkJb2JqZWN0ID0gc2VsZi5wb3AoKQorCQluYW1lID0gc2VsZi5wb3AoKQorCQlzZWxmLmRpY3RzdGFja1stMV1bbmFtZS52YWx1ZV0gPSBvYmplY3QKKwkKKwlkZWYgcHNfYmluZChzZWxmKToKKwkJcHJvYyA9IHNlbGYucG9wKCdwcm9jZWR1cmV0eXBlJykKKwkJc2VsZi5wcm9jX2JpbmQocHJvYykKKwkJc2VsZi5wdXNoKHByb2MpCisJCisJZGVmIHByb2NfYmluZChzZWxmLCBwcm9jKToKKwkJZm9yIGkgaW4gcmFuZ2UobGVuKHByb2MudmFsdWUpKToKKwkJCWl0ZW0gPSBwcm9jLnZhbHVlW2ldCisJCQlpZiBpdGVtLnR5cGUgPT0gJ3Byb2NlZHVyZXR5cGUnOgorCQkJCXNlbGYucHJvY19iaW5kKGl0ZW0pCisJCQllbHNlOgorCQkJCWlmIG5vdCBpdGVtLmxpdGVyYWw6CisJCQkJCXRyeToKKwkJCQkJCW9iamVjdCA9IHNlbGYucmVzb2x2ZV9uYW1lKGl0ZW0udmFsdWUpCisJCQkJCWV4Y2VwdDoKKwkJCQkJCXBhc3MKKwkJCQkJZWxzZToKKwkJCQkJCWlmIG9iamVjdC50eXBlID09ICdvcGVyYXRvcnR5cGUnOgorCQkJCQkJCXByb2MudmFsdWVbaV0gPSBvYmplY3QKKwkKKwlkZWYgcHNfZXhjaChzZWxmKToKKwkJaWYgbGVuKHNlbGYuc3RhY2spIDwgMjoKKwkJCXJhaXNlIFJ1bnRpbWVFcnJvciwgJ3N0YWNrIHVuZGVyZmxvdycKKwkJb2JqMSA9IHNlbGYucG9wKCkKKwkJb2JqMiA9IHNlbGYucG9wKCkKKwkJc2VsZi5wdXNoKG9iajEpCisJCXNlbGYucHVzaChvYmoyKQorCQorCWRlZiBwc19kdXAoc2VsZik6CisJCWlmIG5vdCBzZWxmLnN0YWNrOgorCQkJcmFpc2UgUnVudGltZUVycm9yLCAnc3RhY2sgdW5kZXJmbG93JworCQlzZWxmLnB1c2goc2VsZi5zdGFja1stMV0pCisJCisJZGVmIHBzX2V4ZWMoc2VsZik6CisJCW9iamVjdCA9IHNlbGYucG9wKCkKKwkJaWYgb2JqZWN0LnR5cGUgPT0gJ3Byb2NlZHVyZXR5cGUnOgorCQkJc2VsZi5jYWxsX3Byb2NlZHVyZShvYmplY3QpCisJCWVsc2U6CisJCQlzZWxmLmhhbmRsZV9vYmplY3Qob2JqZWN0KQorCQorCWRlZiBwc19jb3VudChzZWxmKToKKwkJc2VsZi5wdXNoKHBzX2ludGVnZXIobGVuKHNlbGYuc3RhY2spKSkKKwkKKwlkZWYgcHNfZXEoc2VsZik6CisJCWFueTEgPSBzZWxmLnBvcCgpCisJCWFueTIgPSBzZWxmLnBvcCgpCisJCXNlbGYucHVzaChwc19ib29sZWFuKGFueTEudmFsdWUgPT0gYW55Mi52YWx1ZSkpCisJCisJZGVmIHBzX25lKHNlbGYpOgorCQlhbnkxID0gc2VsZi5wb3AoKQorCQlhbnkyID0gc2VsZi5wb3AoKQorCQlzZWxmLnB1c2gocHNfYm9vbGVhbihhbnkxLnZhbHVlIDw+IGFueTIudmFsdWUpKQorCQorCWRlZiBwc19jdngoc2VsZik6CisJCW9iaiA9IHNlbGYucG9wKCkKKwkJb2JqLmxpdGVyYWwgPSAwCisJCXNlbGYucHVzaChvYmopCisJCisJZGVmIHBzX21hdHJpeChzZWxmKToKKwkJbWF0cml4ID0gW3BzX3JlYWwoMS4wKSwgcHNfaW50ZWdlcigwKSwgcHNfaW50ZWdlcigwKSwgcHNfcmVhbCgxLjApLCBwc19pbnRlZ2VyKDApLCBwc19pbnRlZ2VyKDApXQorCQlzZWxmLnB1c2gocHNfYXJyYXkobWF0cml4KSkKKwkKKwlkZWYgcHNfc3RyaW5nKHNlbGYpOgorCQludW0gPSBzZWxmLnBvcCgnaW50ZWdlcnR5cGUnKS52YWx1ZQorCQlzZWxmLnB1c2gocHNfc3RyaW5nKCdcMCcgKiBudW0pKQorCQorCWRlZiBwc190eXBlKHNlbGYpOgorCQlvYmogPSBzZWxmLnBvcCgpCisJCXNlbGYucHVzaChwc19zdHJpbmcob2JqLnR5cGUpKQorCQorCWRlZiBwc19zdG9yZShzZWxmKToKKwkJdmFsdWUgPSBzZWxmLnBvcCgpCisJCWtleSA9IHNlbGYucG9wKCkKKwkJbmFtZSA9IGtleS52YWx1ZQorCQlmb3IgaSBpbiByYW5nZShsZW4oc2VsZi5kaWN0c3RhY2spLTEsIC0xLCAtMSk6CisJCQlpZiBzZWxmLmRpY3RzdGFja1tpXS5oYXNfa2V5KG5hbWUpOgorCQkJCXNlbGYuZGljdHN0YWNrW2ldW25hbWVdID0gdmFsdWUKKwkJCQlicmVhaworCQlzZWxmLmRpY3RzdGFja1stMV1bbmFtZV0gPSB2YWx1ZQorCQorCWRlZiBwc193aGVyZShzZWxmKToKKwkJbmFtZSA9IHNlbGYucG9wKCkKKwkJIyBYWFgKKwkJc2VsZi5wdXNoKHBzX2Jvb2xlYW4oMCkpCisJCisJZGVmIHBzX3N5c3RlbWRpY3Qoc2VsZik6CisJCXNlbGYucHVzaChwc19kaWN0KHNlbGYuZGljdHN0YWNrWzBdKSkKKwkKKwlkZWYgcHNfdXNlcmRpY3Qoc2VsZik6CisJCXNlbGYucHVzaChwc19kaWN0KHNlbGYuZGljdHN0YWNrWzFdKSkKKwkKKwlkZWYgcHNfY3VycmVudGRpY3Qoc2VsZik6CisJCXNlbGYucHVzaChwc19kaWN0KHNlbGYuZGljdHN0YWNrWy0xXSkpCisJCisJZGVmIHBzX2N1cnJlbnRmaWxlKHNlbGYpOgorCQlzZWxmLnB1c2gocHNfZmlsZShzZWxmLnRva2VuaXplcikpCisJCisJZGVmIHBzX2VleGVjKHNlbGYpOgorCQlmaWxlID0gc2VsZi5wb3AoJ2ZpbGV0eXBlJykudmFsdWUKKwkJZmlsZS5zdGFydGVleGVjKCkKKwkKKwlkZWYgcHNfY2xvc2VmaWxlKHNlbGYpOgorCQlmaWxlID0gc2VsZi5wb3AoJ2ZpbGV0eXBlJykudmFsdWUKKwkJZmlsZS5za2lwd2hpdGUoKQorCQlmaWxlLnN0b3BlZXhlYygpCisJCisJZGVmIHBzX2NsZWFydG9tYXJrKHNlbGYpOgorCQlvYmogPSBzZWxmLnBvcCgpCisJCXdoaWxlIG9iaiA8PiBzZWxmLm1hcms6CisJCQlvYmogPSBzZWxmLnBvcCgpCisJCisJZGVmIHBzX3JlYWRzdHJpbmcoc2VsZiwKKwkJCQlwc19ib29sZWFuID0gcHNfYm9vbGVhbiwKKwkJCQlsZW4gPSBsZW4pOgorCQlzdHJpbmcgPSBzZWxmLnBvcCgnc3RyaW5ndHlwZScpCisJCW9sZHN0ciA9IHN0cmluZy52YWx1ZQorCQlmaWxlID0gc2VsZi5wb3AoJ2ZpbGV0eXBlJykKKwkJI3BhZCA9IGZpbGUudmFsdWUucmVhZCgxKQorCQkjIGZvciBTdHJpbmdJTywgdGhpcyBpcyBmYXN0ZXIKKwkJZmlsZS52YWx1ZS5wb3MgPSBmaWxlLnZhbHVlLnBvcyArIDEKKwkJbmV3c3RyID0gZmlsZS52YWx1ZS5yZWFkKGxlbihvbGRzdHIpKQorCQlzdHJpbmcudmFsdWUgPSBuZXdzdHIKKwkJc2VsZi5wdXNoKHN0cmluZykKKwkJc2VsZi5wdXNoKHBzX2Jvb2xlYW4obGVuKG9sZHN0cikgPT0gbGVuKG5ld3N0cikpKQorCQorCWRlZiBwc19rbm93bihzZWxmKToKKwkJa2V5ID0gc2VsZi5wb3AoKQorCQlkaWN0ID0gc2VsZi5wb3AoJ2RpY3R0eXBlJywgJ2ZvbnR0eXBlJykKKwkJc2VsZi5wdXNoKHBzX2Jvb2xlYW4oZGljdC52YWx1ZS5oYXNfa2V5KGtleS52YWx1ZSkpKQorCQorCWRlZiBwc19pZihzZWxmKToKKwkJcHJvYyA9IHNlbGYucG9wKCdwcm9jZWR1cmV0eXBlJykKKwkJYm9vbCA9IHNlbGYucG9wKCdib29sZWFudHlwZScpCisJCWlmIGJvb2wudmFsdWU6CisJCQlzZWxmLmNhbGxfcHJvY2VkdXJlKHByb2MpCisJCisJZGVmIHBzX2lmZWxzZShzZWxmKToKKwkJcHJvYzIgPSBzZWxmLnBvcCgncHJvY2VkdXJldHlwZScpCisJCXByb2MxID0gc2VsZi5wb3AoJ3Byb2NlZHVyZXR5cGUnKQorCQlib29sID0gc2VsZi5wb3AoJ2Jvb2xlYW50eXBlJykKKwkJaWYgYm9vbC52YWx1ZToKKwkJCXNlbGYuY2FsbF9wcm9jZWR1cmUocHJvYzEpCisJCWVsc2U6CisJCQlzZWxmLmNhbGxfcHJvY2VkdXJlKHByb2MyKQorCQorCWRlZiBwc19yZWFkb25seShzZWxmKToKKwkJb2JqID0gc2VsZi5wb3AoKQorCQlpZiBvYmouYWNjZXNzIDwgMToKKwkJCW9iai5hY2Nlc3MgPSAxCisJCXNlbGYucHVzaChvYmopCisJCisJZGVmIHBzX2V4ZWN1dGVvbmx5KHNlbGYpOgorCQlvYmogPSBzZWxmLnBvcCgpCisJCWlmIG9iai5hY2Nlc3MgPCAyOgorCQkJb2JqLmFjY2VzcyA9IDIKKwkJc2VsZi5wdXNoKG9iaikKKwkKKwlkZWYgcHNfbm9hY2Nlc3Moc2VsZik6CisJCW9iaiA9IHNlbGYucG9wKCkKKwkJaWYgb2JqLmFjY2VzcyA8IDM6CisJCQlvYmouYWNjZXNzID0gMworCQlzZWxmLnB1c2gob2JqKQorCQorCWRlZiBwc19ub3Qoc2VsZik6CisJCW9iaiA9IHNlbGYucG9wKCdib29sZWFudHlwZScsICdpbnRlZ2VydHlwZScpCisJCWlmIG9iai50eXBlID09ICdib29sZWFudHlwZSc6CisJCQlzZWxmLnB1c2gocHNfYm9vbGVhbihub3Qgb2JqLnZhbHVlKSkKKwkJZWxzZToKKwkJCXNlbGYucHVzaChwc19pbnRlZ2VyKH5vYmoudmFsdWUpKQorCQorCWRlZiBwc19wcmludChzZWxmKToKKwkJc3RyID0gc2VsZi5wb3AoJ3N0cmluZ3R5cGUnKQorCQlwcmludCAnUFMgb3V0cHV0IC0tLT4nLCBzdHIudmFsdWUKKwkKKwlkZWYgcHNfYW5jaG9yc2VhcmNoKHNlbGYpOgorCQlzZWVrID0gc2VsZi5wb3AoJ3N0cmluZ3R5cGUnKQorCQlzdHJpbmcgPSBzZWxmLnBvcCgnc3RyaW5ndHlwZScpCisJCXNlZWtsZW4gPSBsZW4oc2Vlay52YWx1ZSkKKwkJaWYgc3RyaW5nLnZhbHVlWzpzZWVrbGVuXSA9PSBzZWVrLnZhbHVlOgorCQkJc2VsZi5wdXNoKHBzX3N0cmluZyhzdHJpbmcudmFsdWVbc2Vla2xlbjpdKSkKKwkJCXNlbGYucHVzaChzZWVrKQorCQkJc2VsZi5wdXNoKHBzX2Jvb2xlYW4oMSkpCisJCWVsc2U6CisJCQlzZWxmLnB1c2goc3RyaW5nKQorCQkJc2VsZi5wdXNoKHBzX2Jvb2xlYW4oMCkpCisJCisJZGVmIHBzX2FycmF5KHNlbGYpOgorCQludW0gPSBzZWxmLnBvcCgnaW50ZWdlcnR5cGUnKQorCQlhcnJheSA9IHBzX2FycmF5KFtOb25lXSAqIG51bS52YWx1ZSkKKwkJc2VsZi5wdXNoKGFycmF5KQorCQorCWRlZiBwc19hc3RvcmUoc2VsZik6CisJCWFycmF5ID0gc2VsZi5wb3AoJ2FycmF5dHlwZScpCisJCWZvciBpIGluIHJhbmdlKGxlbihhcnJheS52YWx1ZSktMSwgLTEsIC0xKToKKwkJCWFycmF5LnZhbHVlW2ldID0gc2VsZi5wb3AoKQorCQlzZWxmLnB1c2goYXJyYXkpCisJCisJZGVmIHBzX2xvYWQoc2VsZik6CisJCW5hbWUgPSBzZWxmLnBvcCgpCisJCW9iamVjdCA9IHNlbGYucmVzb2x2ZV9uYW1lKG5hbWUudmFsdWUpCisJCXNlbGYucHVzaChvYmplY3QpCisJCisJZGVmIHBzX3B1dChzZWxmKToKKwkJb2JqMSA9IHNlbGYucG9wKCkKKwkJb2JqMiA9IHNlbGYucG9wKCkKKwkJb2JqMyA9IHNlbGYucG9wKCdhcnJheXR5cGUnLCAnZGljdHR5cGUnLCAnc3RyaW5ndHlwZScsICdwcm9jZWR1cmV0eXBlJykKKwkJdHAgPSBvYmozLnR5cGUKKwkJaWYgdHAgPT0gJ2FycmF5dHlwZScgb3IgdHAgPT0gJ3Byb2NlZHVyZXR5cGUnOgorCQkJb2JqMy52YWx1ZVtvYmoyLnZhbHVlXSA9IG9iajEKKwkJZWxpZiB0cCA9PSAnZGljdHR5cGUnOgorCQkJb2JqMy52YWx1ZVtvYmoyLnZhbHVlXSA9IG9iajEKKwkJZWxpZiB0cCA9PSAnc3RyaW5ndHlwZSc6CisJCQlpbmRleCA9IG9iajIudmFsdWUKKwkJCW9iajMudmFsdWUgPSBvYmozLnZhbHVlWzppbmRleF0gKyBjaHIob2JqMS52YWx1ZSkgKyBvYmozLnZhbHVlW2luZGV4KzE6XQorCQorCWRlZiBwc19nZXQoc2VsZik6CisJCW9iajEgPSBzZWxmLnBvcCgpCisJCWlmIG9iajEudmFsdWUgPT0gIkVuY29kaW5nIjoKKwkJCXBhc3MKKwkJb2JqMiA9IHNlbGYucG9wKCdhcnJheXR5cGUnLCAnZGljdHR5cGUnLCAnc3RyaW5ndHlwZScsICdwcm9jZWR1cmV0eXBlJywgJ2ZvbnR0eXBlJykKKwkJdHAgPSBvYmoyLnR5cGUKKwkJaWYgdHAgaW4gKCdhcnJheXR5cGUnLCAncHJvY2VkdXJldHlwZScpOgorCQkJc2VsZi5wdXNoKG9iajIudmFsdWVbb2JqMS52YWx1ZV0pCisJCWVsaWYgdHAgaW4gKCdkaWN0dHlwZScsICdmb250dHlwZScpOgorCQkJc2VsZi5wdXNoKG9iajIudmFsdWVbb2JqMS52YWx1ZV0pCisJCWVsaWYgdHAgPT0gJ3N0cmluZ3R5cGUnOgorCQkJc2VsZi5wdXNoKHBzX2ludGVnZXIob3JkKG9iajIudmFsdWVbb2JqMS52YWx1ZV0pKSkKKwkJZWxzZToKKwkJCWFzc2VydCAwLCAic2hvdWxkbid0IGdldCBoZXJlIgorCQorCWRlZiBwc19nZXRpbnRlcnZhbChzZWxmKToKKwkJb2JqMSA9IHNlbGYucG9wKCdpbnRlZ2VydHlwZScpCisJCW9iajIgPSBzZWxmLnBvcCgnaW50ZWdlcnR5cGUnKQorCQlvYmozID0gc2VsZi5wb3AoJ2FycmF5dHlwZScsICdzdHJpbmd0eXBlJykKKwkJdHAgPSBvYmozLnR5cGUKKwkJaWYgdHAgPT0gJ2FycmF5dHlwZSc6CisJCQlzZWxmLnB1c2gocHNfYXJyYXkob2JqMy52YWx1ZVtvYmoyLnZhbHVlOm9iajIudmFsdWUgKyBvYmoxLnZhbHVlXSkpCisJCWVsaWYgdHAgPT0gJ3N0cmluZ3R5cGUnOgorCQkJc2VsZi5wdXNoKHBzX3N0cmluZyhvYmozLnZhbHVlW29iajIudmFsdWU6b2JqMi52YWx1ZSArIG9iajEudmFsdWVdKSkKKwkKKwlkZWYgcHNfcHV0aW50ZXJ2YWwoc2VsZik6CisJCW9iajEgPSBzZWxmLnBvcCgnYXJyYXl0eXBlJywgJ3N0cmluZ3R5cGUnKQorCQlvYmoyID0gc2VsZi5wb3AoJ2ludGVnZXJ0eXBlJykKKwkJb2JqMyA9IHNlbGYucG9wKCdhcnJheXR5cGUnLCAnc3RyaW5ndHlwZScpCisJCXRwID0gb2JqMy50eXBlCisJCWlmIHRwID09ICdhcnJheXR5cGUnOgorCQkJb2JqMy52YWx1ZVtvYmoyLnZhbHVlOm9iajIudmFsdWUgKyBsZW4ob2JqMS52YWx1ZSldID0gb2JqMS52YWx1ZQorCQllbGlmIHRwID09ICdzdHJpbmd0eXBlJzoKKwkJCW5ld3N0ciA9IG9iajMudmFsdWVbOm9iajIudmFsdWVdCisJCQluZXdzdHIgPSBuZXdzdHIgKyBvYmoxLnZhbHVlCisJCQluZXdzdHIgPSBuZXdzdHIgKyBvYmozLnZhbHVlW29iajIudmFsdWUgKyBsZW4ob2JqMS52YWx1ZSk6XQorCQkJb2JqMy52YWx1ZSA9IG5ld3N0cgorCQorCWRlZiBwc19jdm4oc2VsZik6CisJCXN0ciA9IHNlbGYucG9wKCdzdHJpbmd0eXBlJykKKwkJc2VsZi5wdXNoKHBzX25hbWUoc3RyLnZhbHVlKSkKKwkKKwlkZWYgcHNfaW5kZXgoc2VsZik6CisJCW4gPSBzZWxmLnBvcCgnaW50ZWdlcnR5cGUnKS52YWx1ZQorCQlpZiBuIDwgMDoKKwkJCXJhaXNlIFJ1bnRpbWVFcnJvciwgJ2luZGV4IG1heSBub3QgYmUgbmVnYXRpdmUnCisJCXNlbGYucHVzaChzZWxmLnN0YWNrWy0xLW5dKQorCQorCWRlZiBwc19mb3Ioc2VsZik6CisJCXByb2MgPSBzZWxmLnBvcCgncHJvY2VkdXJldHlwZScpCisJCWxpbWl0ID0gc2VsZi5wb3AoJ2ludGVnZXJ0eXBlJywgJ3JlYWx0eXBlJykudmFsdWUKKwkJaW5jcmVtZW50ID0gc2VsZi5wb3AoJ2ludGVnZXJ0eXBlJywgJ3JlYWx0eXBlJykudmFsdWUKKwkJaSA9IHNlbGYucG9wKCdpbnRlZ2VydHlwZScsICdyZWFsdHlwZScpLnZhbHVlCisJCXdoaWxlIDE6CisJCQlpZiBpbmNyZW1lbnQgPiAwOgorCQkJCWlmIGkgPiBsaW1pdDoKKwkJCQkJYnJlYWsKKwkJCWVsc2U6CisJCQkJaWYgaSA8IGxpbWl0OgorCQkJCQlicmVhaworCQkJaWYgdHlwZShpKSA9PSB0eXBlKDAuMCk6CisJCQkJc2VsZi5wdXNoKHBzX3JlYWwoaSkpCisJCQllbHNlOgorCQkJCXNlbGYucHVzaChwc19pbnRlZ2VyKGkpKQorCQkJc2VsZi5jYWxsX3Byb2NlZHVyZShwcm9jKQorCQkJaSA9IGkgKyBpbmNyZW1lbnQKKwkKKwlkZWYgcHNfZm9yYWxsKHNlbGYpOgorCQlwcm9jID0gc2VsZi5wb3AoJ3Byb2NlZHVyZXR5cGUnKQorCQlvYmogPSBzZWxmLnBvcCgnYXJyYXl0eXBlJywgJ3N0cmluZ3R5cGUnLCAnZGljdHR5cGUnKQorCQl0cCA9IG9iai50eXBlCisJCWlmIHRwID09ICdhcnJheXR5cGUnOgorCQkJZm9yIGl0ZW0gaW4gb2JqLnZhbHVlOgorCQkJCXNlbGYucHVzaChpdGVtKQorCQkJCXNlbGYuY2FsbF9wcm9jZWR1cmUocHJvYykKKwkJZWxpZiB0cCA9PSAnc3RyaW5ndHlwZSc6CisJCQlmb3IgaXRlbSBpbiBvYmoudmFsdWU6CisJCQkJc2VsZi5wdXNoKHBzX2ludGVnZXIob3JkKGl0ZW0pKSkKKwkJCQlzZWxmLmNhbGxfcHJvY2VkdXJlKHByb2MpCisJCWVsaWYgdHAgPT0gJ2RpY3R0eXBlJzoKKwkJCWZvciBrZXksIHZhbHVlIGluIG9iai52YWx1ZS5pdGVtcygpOgorCQkJCXNlbGYucHVzaChwc19uYW1lKGtleSkpCisJCQkJc2VsZi5wdXNoKHZhbHVlKQorCQkJCXNlbGYuY2FsbF9wcm9jZWR1cmUocHJvYykJCQorCQorCWRlZiBwc19kZWZpbmVmb250KHNlbGYpOgorCQlmb250ID0gc2VsZi5wb3AoJ2RpY3R0eXBlJykKKwkJbmFtZSA9IHNlbGYucG9wKCkKKwkJZm9udCA9IHBzX2ZvbnQoZm9udC52YWx1ZSkKKwkJc2VsZi5kaWN0c3RhY2tbMF1bJ0ZvbnREaXJlY3RvcnknXS52YWx1ZVtuYW1lLnZhbHVlXSA9IGZvbnQKKwkJc2VsZi5wdXNoKGZvbnQpCisJCisJZGVmIHBzX2ZpbmRmb250KHNlbGYpOgorCQluYW1lID0gc2VsZi5wb3AoKQorCQlmb250ID0gc2VsZi5kaWN0c3RhY2tbMF1bJ0ZvbnREaXJlY3RvcnknXS52YWx1ZVtuYW1lLnZhbHVlXQorCQlzZWxmLnB1c2goZm9udCkKKwkKKwlkZWYgcHNfcG9wKHNlbGYpOgorCQlzZWxmLnBvcCgpCisJCisJZGVmIHBzX2RpY3Qoc2VsZik6CisJCW51bSA9IHNlbGYucG9wKCdpbnRlZ2VydHlwZScpCisJCWRpY3QgPSBwc19kaWN0KHt9KQorCQlzZWxmLnB1c2goZGljdCkKKwkKKwlkZWYgcHNfYmVnaW4oc2VsZik6CisJCWRpY3QgPSBzZWxmLnBvcCgnZGljdHR5cGUnKQorCQlzZWxmLmRpY3RzdGFjay5hcHBlbmQoZGljdC52YWx1ZSkKKwkKKwlkZWYgcHNfZW5kKHNlbGYpOgorCQlpZiBsZW4oc2VsZi5kaWN0c3RhY2spID4gMjoKKwkJCWRlbCBzZWxmLmRpY3RzdGFja1stMV0KKwkJZWxzZToKKwkJCXJhaXNlIFJ1bnRpbWVFcnJvciwgJ2RpY3RzdGFjayB1bmRlcmZsb3cnCisJCitub3RkZWYgPSAnLm5vdGRlZicKK1N0YW5kYXJkRW5jb2RpbmcgPSBbIG5vdGRlZiwgbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLCBub3RkZWYsCisJbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLCBub3RkZWYsCisJbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLCBub3RkZWYsCisJbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLCBub3RkZWYsCisJbm90ZGVmLCBub3RkZWYsICdzcGFjZScsICdleGNsYW0nLCAncXVvdGVkYmwnLCAnbnVtYmVyc2lnbicsICdkb2xsYXInLCAncGVyY2VudCcsCisJJ2FtcGVyc2FuZCcsICdxdW90ZXJpZ2h0JywgJ3BhcmVubGVmdCcsICdwYXJlbnJpZ2h0JywgJ2FzdGVyaXNrJywgJ3BsdXMnLCAnY29tbWEnLAorCSdoeXBoZW4nLCAncGVyaW9kJywgJ3NsYXNoJywgJ3plcm8nLCAnb25lJywgJ3R3bycsICd0aHJlZScsICdmb3VyJywgJ2ZpdmUnLCAnc2l4JywKKwknc2V2ZW4nLCAnZWlnaHQnLCAnbmluZScsICdjb2xvbicsICdzZW1pY29sb24nLCAnbGVzcycsICdlcXVhbCcsICdncmVhdGVyJywgJ3F1ZXN0aW9uJywKKwknYXQnLCAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnLCAnRycsICdIJywgJ0knLCAnSicsICdLJywgJ0wnLCAnTScsICdOJywgJ08nLCAnUCcsICdRJywKKwknUicsICdTJywgJ1QnLCAnVScsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onLCAnYnJhY2tldGxlZnQnLCAnYmFja3NsYXNoJywgJ2JyYWNrZXRyaWdodCcsCisJJ2FzY2lpY2lyY3VtJywgJ3VuZGVyc2NvcmUnLCAncXVvdGVsZWZ0JywgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJywgJ2cnLCAnaCcsICdpJywKKwknaicsICdrJywgJ2wnLCAnbScsICduJywgJ28nLCAncCcsICdxJywgJ3InLCAncycsICd0JywgJ3UnLCAndicsICd3JywgJ3gnLCAneScsICd6JywKKwknYnJhY2VsZWZ0JywgJ2JhcicsICdicmFjZXJpZ2h0JywgJ2FzY2lpdGlsZGUnLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLAorCW5vdGRlZiwgbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLAorCW5vdGRlZiwgbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLAorCW5vdGRlZiwgbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLAorCW5vdGRlZiwgbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgJ2V4Y2xhbWRvd24nLAorCSdjZW50JywgJ3N0ZXJsaW5nJywgJ2ZyYWN0aW9uJywgJ3llbicsICdmbG9yaW4nLCAnc2VjdGlvbicsICdjdXJyZW5jeScsICdxdW90ZXNpbmdsZScsCisJJ3F1b3RlZGJsbGVmdCcsICdndWlsbGVtb3RsZWZ0JywgJ2d1aWxzaW5nbGxlZnQnLCAnZ3VpbHNpbmdscmlnaHQnLCAnZmknLCAnZmwnLCBub3RkZWYsCisJJ2VuZGFzaCcsICdkYWdnZXInLCAnZGFnZ2VyZGJsJywgJ3BlcmlvZGNlbnRlcmVkJywgbm90ZGVmLCAncGFyYWdyYXBoJywgJ2J1bGxldCcsCisJJ3F1b3Rlc2luZ2xiYXNlJywgJ3F1b3RlZGJsYmFzZScsICdxdW90ZWRibHJpZ2h0JywgJ2d1aWxsZW1vdHJpZ2h0JywgJ2VsbGlwc2lzJywKKwkncGVydGhvdXNhbmQnLCBub3RkZWYsICdxdWVzdGlvbmRvd24nLCBub3RkZWYsICdncmF2ZScsICdhY3V0ZScsICdjaXJjdW1mbGV4JywKKwkndGlsZGUnLCAnbWFjcm9uJywgJ2JyZXZlJywgJ2RvdGFjY2VudCcsICdkaWVyZXNpcycsIG5vdGRlZiwgJ3JpbmcnLCAnY2VkaWxsYScsCisJbm90ZGVmLCAnaHVuZ2FydW1sYXV0JywgJ29nb25laycsICdjYXJvbicsICdlbWRhc2gnLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLAorCW5vdGRlZiwgbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLAorCW5vdGRlZiwgbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLCAnQUUnLCBub3RkZWYsICdvcmRmZW1pbmluZScsCisJbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLCAnTHNsYXNoJywgJ09zbGFzaCcsICdPRScsICdvcmRtYXNjdWxpbmUnLAorCW5vdGRlZiwgbm90ZGVmLCBub3RkZWYsIG5vdGRlZiwgbm90ZGVmLCAnYWUnLCBub3RkZWYsIG5vdGRlZiwKKwlub3RkZWYsICdkb3RsZXNzaScsIG5vdGRlZiwgbm90ZGVmLCAnbHNsYXNoJywgJ29zbGFzaCcsICdvZScsICdnZXJtYW5kYmxzJywKKwlub3RkZWYsIG5vdGRlZiwgbm90ZGVmLCBub3RkZWYgXQorCitwc19TdGFuZGFyZEVuY29kaW5nID0gbWFwKHBzX25hbWUsIFN0YW5kYXJkRW5jb2RpbmcpCisKZGlmZiAtLWdpdCBhL0xpYi9mb250VG9vbHMvdDFMaWIucHkgYi9MaWIvZm9udFRvb2xzL3QxTGliLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyYzYzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZm9udFRvb2xzL3QxTGliLnB5CkBAIC0wLDAgKzEsMzQ3IEBACisiIiJmb250VG9vbHMudDFMaWIucHkgLS0gVG9vbHMgZm9yIFBvc3RTY3JpcHQgVHlwZSAxIGZvbnRzCisKK0Z1bmN0aW9ucyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyByYXcgVHlwZSAxIGRhdGE6CisKK3JlYWQocGF0aCkKKwlyZWFkcyBhbnkgVHlwZSAxIGZvbnQgZmlsZSwgcmV0dXJucyB0aGUgcmF3IGRhdGEgYW5kIGEgdHlwZSBpbmRpY2F0b3I6IAorCSdMV0ZOJywgJ1BGQicgb3IgJ09USEVSJywgZGVwZW5kaW5nIG9uIHRoZSBmb3JtYXQgb2YgdGhlIGZpbGUgcG9pbnRlZCAKKwl0byBieSAncGF0aCcuIAorCVJhaXNlcyBhbiBlcnJvciB3aGVuIHRoZSBmaWxlIGRvZXMgbm90IGNvbnRhaW4gdmFsaWQgVHlwZSAxIGRhdGEuCisKK3dyaXRlKHBhdGgsIGRhdGEsIGtpbmQgPSAnT1RIRVInLCBkb2hleCA9IDApCisJd3JpdGVzIHJhdyBUeXBlIDEgZGF0YSB0byB0aGUgZmlsZSBwb2ludGVkIHRvIGJ5ICdwYXRoJy4gCisJJ2tpbmQnIGNhbiBiZSBvbmUgb2YgJ0xXRk4nLCAnUEZCJyBvciAnT1RIRVInOyBpdCBkZWZhdWx0cyB0byAnT1RIRVInLgorCSdkb2hleCcgaXMgYSBmbGFnIHdoaWNoIGRldGVybWluZXMgd2hldGhlciB0aGUgZWV4ZWMgZW5jcnlwdGVkCisJcGFydCBzaG91bGQgYmUgd3JpdHRlbiBhcyBoZXhhZGVjaW1hbCBvciBiaW5hcnksIGJ1dCBvbmx5IGlmIGtpbmQKKwlpcyAnTFdGTicgb3IgJ1BGQicuCisiIiIKKworX19hdXRob3JfXyA9ICJqdnIiCitfX3ZlcnNpb25fXyA9ICIxLjBiMiIKK0RFQlVHID0gMAorCitpbXBvcnQgZWV4ZWMKK2ltcG9ydCBzdHJpbmcKK2ltcG9ydCByZQoraW1wb3J0IG9zCisKK2lmIG9zLm5hbWUgPT0gJ21hYyc6CisJaW1wb3J0IFJlcworCWltcG9ydCBtYWNmcworCitlcnJvciA9ICd0MUxpYi5lcnJvcicKKworIyB3b3JrIGluIHByb2dyZXNzCisKKworY2xhc3MgVDFGb250OgorCQorCSIiIlR5cGUgMSBmb250IGNsYXNzLiAKKwlYWFggVGhpcyBpcyB3b3JrIGluIHByb2dyZXNzISBGb3Igbm93IGp1c3QgdXNlIHRoZSByZWFkKCkKKwlhbmQgd3JpdGUoKSBmdW5jdGlvbnMgYXMgZGVzY3JpYmVkIGFib3ZlLCB0aGV5IGFyZSBzdGFibGUuCisJIiIiCisJCisJZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9Tm9uZSk6CisJCWlmIHBhdGggaXMgbm90IE5vbmU6CisJCQlzZWxmLmRhdGEsIHR5cGUgPSByZWFkKHBhdGgpCisJCWVsc2U6CisJCQlwYXNzICMgWFhYCisJCisJZGVmIHNhdmVBcyhzZWxmLCBwYXRoLCB0eXBlKToKKwkJc2VsZi53cml0ZShwYXRoLCBzZWxmLmdldERhdGEoKSwgdHlwZSkKKwkKKwlkZWYgZ2V0RGF0YShzZWxmKToKKwkJcmV0dXJuIHNlbGYuZGF0YQorCQorCWRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgorCQlpZiBub3QgaGFzYXR0cihzZWxmLCAiZm9udCIpOgorCQkJc2VsZi5wYXJzZSgpCisJCQlyZXR1cm4gc2VsZi5mb250W2tleV0KKwkJZWxzZToKKwkJCXJldHVybiBzZWxmLmZvbnRba2V5XQorCQorCWRlZiBwYXJzZShzZWxmKToKKwkJaW1wb3J0IHBzTGliCisJCWltcG9ydCBwc0NoYXJTdHJpbmdzCisJCXNlbGYuZm9udCA9IHBzTGliLnN1Y2tmb250KHNlbGYuZGF0YSkKKwkJY2hhclN0cmluZ3MgPSBzZWxmLmZvbnRbIkNoYXJTdHJpbmdzIl0KKwkJbGVuSVYgPSBzZWxmLmZvbnRbIlByaXZhdGUiXS5nZXQoImxlbklWIiwgNCkKKwkJYXNzZXJ0IGxlbklWID49IDAKKwkJZm9yIGdseXBoTmFtZSwgY2hhclN0cmluZyBpbiBjaGFyU3RyaW5ncy5pdGVtcygpOgorCQkJY2hhclN0cmluZywgUiA9IGVleGVjLkRlY3J5cHQoY2hhclN0cmluZywgNDMzMCkKKwkJCWNoYXJTdHJpbmdzW2dseXBoTmFtZV0gPSBwc0NoYXJTdHJpbmdzLlQxQ2hhclN0cmluZyhjaGFyU3RyaW5nW2xlbklWOl0pCisJCXN1YnJzID0gc2VsZi5mb250WyJQcml2YXRlIl1bIlN1YnJzIl0KKwkJZm9yIGkgaW4gcmFuZ2UobGVuKHN1YnJzKSk6CisJCQljaGFyU3RyaW5nLCBSID0gZWV4ZWMuRGVjcnlwdChzdWJyc1tpXSwgNDMzMCkKKwkJCXN1YnJzW2ldID0gcHNDaGFyU3RyaW5ncy5UMUNoYXJTdHJpbmcoY2hhclN0cmluZ1tsZW5JVjpdKQorCQlkZWwgc2VsZi5kYXRhCisJCisKKworIyBwdWJsaWMgZnVuY3Rpb25zCisKK2RlZiByZWFkKHBhdGgpOgorCSIiInJlYWRzIGFueSBUeXBlIDEgZm9udCBmaWxlLCByZXR1cm5zIHJhdyBkYXRhIiIiCisJbm9ybXBhdGggPSBzdHJpbmcubG93ZXIocGF0aCkKKwlpZiBvcy5uYW1lID09ICdtYWMnOgorCQlmc3MgPSBtYWNmcy5GU1NwZWMocGF0aCkKKwkJY3JlYXRvciwgdHlwZSA9IGZzcy5HZXRDcmVhdG9yVHlwZSgpCisJCWlmIHR5cGUgPT0gJ0xXRk4nOgorCQkJcmV0dXJuIHJlYWRsd2ZuKHBhdGgpLCAnTFdGTicKKwlpZiBub3JtcGF0aFstNDpdID09ICcucGZiJzoKKwkJcmV0dXJuIHJlYWRwZmIocGF0aCksICdQRkInCisJZWxzZToKKwkJcmV0dXJuIHJlYWRvdGhlcihwYXRoKSwgJ09USEVSJworCitkZWYgd3JpdGUocGF0aCwgZGF0YSwga2luZD0nT1RIRVInLCBkb2hleD0wKToKKwlhc3NlcnR0eXBlMShkYXRhKQorCWtpbmQgPSBzdHJpbmcudXBwZXIoa2luZCkKKwl0cnk6CisJCW9zLnJlbW92ZShwYXRoKQorCWV4Y2VwdCBvcy5lcnJvcjoKKwkJcGFzcworCWVyciA9IDEKKwl0cnk6CisJCWlmIGtpbmQgPT0gJ0xXRk4nOgorCQkJd3JpdGVsd2ZuKHBhdGgsIGRhdGEpCisJCWVsaWYga2luZCA9PSAnUEZCJzoKKwkJCXdyaXRlcGZiKHBhdGgsIGRhdGEpCisJCWVsc2U6CisJCQl3cml0ZW90aGVyKHBhdGgsIGRhdGEsIGRvaGV4KQorCQllcnIgPSAwCisJZmluYWxseToKKwkJaWYgZXJyIGFuZCBub3QgREVCVUc6CisJCQl0cnk6CisJCQkJb3MucmVtb3ZlKHBhdGgpCisJCQlleGNlcHQgb3MuZXJyb3I6CisJCQkJcGFzcworCisKKyMgLS0gaW50ZXJuYWwgLS0gCisKK0xXRk5DSFVOS1NJWkUgPSAyMDAwCitIRVhMSU5FTEVOR1RIID0gODAKKworCitkZWYgcmVhZGx3Zm4ocGF0aCk6CisJIiIicmVhZHMgYW4gTFdGTiBmb250IGZpbGUsIHJldHVybnMgcmF3IGRhdGEiIiIKKwlyZXNyZWYgPSBSZXMuT3BlblJlc0ZpbGUocGF0aCkKKwl0cnk6CisJCVJlcy5Vc2VSZXNGaWxlKHJlc3JlZikKKwkJbiA9IFJlcy5Db3VudDFSZXNvdXJjZXMoJ1BPU1QnKQorCQlkYXRhID0gW10KKwkJZm9yIGkgaW4gcmFuZ2UoNTAxLCA1MDEgKyBuKToKKwkJCXJlcyA9IFJlcy5HZXQxUmVzb3VyY2UoJ1BPU1QnLCBpKQorCQkJY29kZSA9IG9yZChyZXMuZGF0YVswXSkKKwkJCWlmIG9yZChyZXMuZGF0YVsxXSkgPD4gMDoKKwkJCQlyYWlzZSBlcnJvciwgJ2NvcnJ1cHQgTFdGTiBmaWxlJworCQkJaWYgY29kZSBpbiBbMSwgMl06CisJCQkJZGF0YS5hcHBlbmQocmVzLmRhdGFbMjpdKQorCQkJZWxpZiBjb2RlIGluIFszLCA1XToKKwkJCQlicmVhaworCQkJZWxpZiBjb2RlID09IDQ6CisJCQkJZiA9IG9wZW4ocGF0aCwgInJiIikKKwkJCQlkYXRhLmFwcGVuZChmLnJlYWQoKSkKKwkJCQlmLmNsb3NlKCkKKwkJCWVsaWYgY29kZSA9PSAwOgorCQkJCXBhc3MgIyBjb21tZW50LCBpZ25vcmUKKwkJCWVsc2U6CisJCQkJcmFpc2UgZXJyb3IsICdiYWQgY2h1bmsgY29kZTogJyArIGBjb2RlYAorCWZpbmFsbHk6CisJCVJlcy5DbG9zZVJlc0ZpbGUocmVzcmVmKQorCWRhdGEgPSBzdHJpbmcuam9pbihkYXRhLCAnJykKKwlhc3NlcnR0eXBlMShkYXRhKQorCXJldHVybiBkYXRhCisKK2RlZiByZWFkcGZiKHBhdGgpOgorCSIiInJlYWRzIGEgUEZCIGZvbnQgZmlsZSwgcmV0dXJucyByYXcgZGF0YSIiIgorCWYgPSBvcGVuKHBhdGgsICJyYiIpCisJZGF0YSA9IFtdCisJd2hpbGUgMToKKwkJaWYgZi5yZWFkKDEpIDw+IGNocigxMjgpOgorCQkJcmFpc2UgZXJyb3IsICdjb3JydXB0IFBGQiBmaWxlJworCQljb2RlID0gb3JkKGYucmVhZCgxKSkKKwkJaWYgY29kZSBpbiBbMSwgMl06CisJCQljaHVua2xlbiA9IHN0cmluZzJsb25nKGYucmVhZCg0KSkKKwkJCWRhdGEuYXBwZW5kKGYucmVhZChjaHVua2xlbikpCisJCWVsaWYgY29kZSA9PSAzOgorCQkJYnJlYWsKKwkJZWxzZToKKwkJCXJhaXNlIGVycm9yLCAnYmFkIGNodW5rIGNvZGU6ICcgKyBgY29kZWAKKwlmLmNsb3NlKCkKKwlkYXRhID0gc3RyaW5nLmpvaW4oZGF0YSwgJycpCisJYXNzZXJ0dHlwZTEoZGF0YSkKKwlyZXR1cm4gZGF0YQorCitkZWYgcmVhZG90aGVyKHBhdGgpOgorCSIiInJlYWRzIGFueSAoZm9udCkgZmlsZSwgcmV0dXJucyByYXcgZGF0YSIiIgorCWYgPSBvcGVuKHBhdGgsICJyYiIpCisJZGF0YSA9IGYucmVhZCgpCisJZi5jbG9zZSgpCisJYXNzZXJ0dHlwZTEoZGF0YSkKKwkKKwljaHVua3MgPSBmaW5kZW5jcnlwdGVkY2h1bmtzKGRhdGEpCisJZGF0YSA9IFtdCisJZm9yIGlzZW5jcnlwdGVkLCBjaHVuayBpbiBjaHVua3M6CisJCWlmIGlzZW5jcnlwdGVkIGFuZCBpc2hleChjaHVua1s6NF0pOgorCQkJZGF0YS5hcHBlbmQoZGVoZXhzdHJpbmcoY2h1bmspKQorCQllbHNlOgorCQkJZGF0YS5hcHBlbmQoY2h1bmspCisJcmV0dXJuIHN0cmluZy5qb2luKGRhdGEsICcnKQorCisjIGZpbGUgd3JpdGluZyB0b29scworCitkZWYgd3JpdGVsd2ZuKHBhdGgsIGRhdGEpOgorCVJlcy5DcmVhdGVSZXNGaWxlKHBhdGgpCisJZnNzID0gbWFjZnMuRlNTcGVjKHBhdGgpCisJZnNzLlNldENyZWF0b3JUeXBlKCdqdXN0JywgJ0xXRk4nKQorCXJlc3JlZiA9IFJlcy5PcGVuUmVzRmlsZShwYXRoKQorCXRyeToKKwkJUmVzLlVzZVJlc0ZpbGUocmVzcmVmKQorCQlyZXNJRCA9IDUwMQorCQljaHVua3MgPSBmaW5kZW5jcnlwdGVkY2h1bmtzKGRhdGEpCisJCWZvciBpc2VuY3J5cHRlZCwgY2h1bmsgaW4gY2h1bmtzOgorCQkJaWYgaXNlbmNyeXB0ZWQ6CisJCQkJY29kZSA9IDIKKwkJCWVsc2U6CisJCQkJY29kZSA9IDEKKwkJCXdoaWxlIGNodW5rOgorCQkJCXJlcyA9IFJlcy5SZXNvdXJjZShjaHIoY29kZSkgKyAnXDAnICsgY2h1bmtbOkxXRk5DSFVOS1NJWkUgLSAyXSkKKwkJCQlyZXMuQWRkUmVzb3VyY2UoJ1BPU1QnLCByZXNJRCwgJycpCisJCQkJY2h1bmsgPSBjaHVua1tMV0ZOQ0hVTktTSVpFIC0gMjpdCisJCQkJcmVzSUQgPSByZXNJRCArIDEKKwkJcmVzID0gUmVzLlJlc291cmNlKGNocig1KSArICdcMCcpCisJCXJlcy5BZGRSZXNvdXJjZSgnUE9TVCcsIHJlc0lELCAnJykKKwlmaW5hbGx5OgorCQlSZXMuQ2xvc2VSZXNGaWxlKHJlc3JlZikKKworZGVmIHdyaXRlcGZiKHBhdGgsIGRhdGEpOgorCWNodW5rcyA9IGZpbmRlbmNyeXB0ZWRjaHVua3MoZGF0YSkKKwlmID0gb3Blbihkc3RwYXRoLCAid2IiKQorCXRyeToKKwkJZm9yIGlzZW5jcnlwdGVkLCBjaHVuayBpbiBjaHVua3M6CisJCQlpZiBpc2VuY3J5cHRlZDoKKwkJCQljb2RlID0gMgorCQkJZWxzZToKKwkJCQljb2RlID0gMQorCQkJZi53cml0ZShjaHIoMTI4KSArIGNocihjb2RlKSkKKwkJCWYud3JpdGUobG9uZzJzdHJpbmcobGVuKGNodW5rKSkpCisJCQlmLndyaXRlKGNodW5rKQorCQlmLndyaXRlKGNocigxMjgpICsgY2hyKDMpKQorCWZpbmFsbHk6CisJCWYuY2xvc2UoKQorCWlmIG9zLm5hbWUgPT0gJ21hYyc6CisJCWZzcyA9IG1hY2ZzLkZTU3BlYyhkc3RwYXRoKQorCQlmc3MuU2V0Q3JlYXRvclR5cGUoJ21kb3MnLCAnQklOQScpCisKK2RlZiB3cml0ZW90aGVyKHBhdGgsIGRhdGEsIGRvaGV4ID0gMCk6CisJY2h1bmtzID0gZmluZGVuY3J5cHRlZGNodW5rcyhkYXRhKQorCWYgPSBvcGVuKHBhdGgsICJ3YiIpCisJdHJ5OgorCQloZXhsaW5lbGVuID0gSEVYTElORUxFTkdUSCAvIDIKKwkJZm9yIGlzZW5jcnlwdGVkLCBjaHVuayBpbiBjaHVua3M6CisJCQlpZiBpc2VuY3J5cHRlZDoKKwkJCQljb2RlID0gMgorCQkJZWxzZToKKwkJCQljb2RlID0gMQorCQkJaWYgY29kZSA9PSAyIGFuZCBkb2hleDoKKwkJCQl3aGlsZSBjaHVuazoKKwkJCQkJZi53cml0ZShlZXhlYy5oZXhzdHJpbmcoY2h1bmtbOmhleGxpbmVsZW5dKSkKKwkJCQkJZi53cml0ZSgnXHInKQorCQkJCQljaHVuayA9IGNodW5rW2hleGxpbmVsZW46XQorCQkJZWxzZToKKwkJCQlmLndyaXRlKGNodW5rKQorCWZpbmFsbHk6CisJCWYuY2xvc2UoKQorCWlmIG9zLm5hbWUgPT0gJ21hYyc6CisJCWZzcyA9IG1hY2ZzLkZTU3BlYyhwYXRoKQorCQlmc3MuU2V0Q3JlYXRvclR5cGUoJ1IqY2gnLCAnVEVYVCcpICMgQkJFZGl0IHRleHQgZmlsZQorCisKKyMgZGVjcnlwdGlvbiB0b29scworCitFRVhFQ0JFR0lOID0gImN1cnJlbnRmaWxlIGVleGVjIgorRUVYRUNFTkQgPSAnMCcgKiA2NAorRUVYRUNJTlRFUk5BTEVORCA9ICJjdXJyZW50ZmlsZSBjbG9zZWZpbGUiCitFRVhFQ0JFR0lOTUFSS0VSID0gIiUtLSBlZXhlYyBzdGFydFxyIgorRUVYRUNFTkRNQVJLRVIgPSAiJS0tIGVleGVjIGVuZFxyIgorCitfaXNoZXhSRSA9IHJlLmNvbXBpbGUoJ1swLTlBLUZhLWZdKiQnKQorCitkZWYgaXNoZXgodGV4dCk6CisJcmV0dXJuIF9pc2hleFJFLm1hdGNoKHRleHQpIGlzIG5vdCBOb25lCisKKworZGVmIGRlY3J5cHR0eXBlMShkYXRhKToKKwljaHVua3MgPSBmaW5kZW5jcnlwdGVkY2h1bmtzKGRhdGEpCisJZGF0YSA9IFtdCisJZm9yIGlzZW5jcnlwdGVkLCBjaHVuayBpbiBjaHVua3M6CisJCWlmIGlzZW5jcnlwdGVkOgorCQkJaWYgaXNoZXgoY2h1bmtbOjRdKToKKwkJCQljaHVuayA9IGRlaGV4c3RyaW5nKGNodW5rKQorCQkJZGVjcnlwdGVkLCBSID0gZWV4ZWMuRGVjcnlwdChjaHVuaywgNTU2NjUpCisJCQlkZWNyeXB0ZWQgPSBkZWNyeXB0ZWRbNDpdCisJCQlpZiBkZWNyeXB0ZWRbLWxlbihFRVhFQ0lOVEVSTkFMRU5EKS0xOi0xXSA8PiBFRVhFQ0lOVEVSTkFMRU5EIFwKKwkJCQkJYW5kIGRlY3J5cHRlZFstbGVuKEVFWEVDSU5URVJOQUxFTkQpLTI6LTJdIDw+IEVFWEVDSU5URVJOQUxFTkQ6CisJCQkJcmFpc2UgZXJyb3IsICJpbnZhbGlkIGVuZCBvZiBlZXhlYyBwYXJ0IgorCQkJZGVjcnlwdGVkID0gZGVjcnlwdGVkWzotbGVuKEVFWEVDSU5URVJOQUxFTkQpLTJdICsgJ1xyJworCQkJZGF0YS5hcHBlbmQoRUVYRUNCRUdJTk1BUktFUiArIGRlY3J5cHRlZCArIEVFWEVDRU5ETUFSS0VSKQorCQllbHNlOgorCQkJaWYgY2h1bmtbLWxlbihFRVhFQ0JFR0lOKS0xOi0xXSA9PSBFRVhFQ0JFR0lOOgorCQkJCWRhdGEuYXBwZW5kKGNodW5rWzotbGVuKEVFWEVDQkVHSU4pLTFdKQorCQkJZWxzZToKKwkJCQlkYXRhLmFwcGVuZChjaHVuaykKKwlyZXR1cm4gc3RyaW5nLmpvaW4oZGF0YSwgJycpCisKK2RlZiBmaW5kZW5jcnlwdGVkY2h1bmtzKGRhdGEpOgorCWNodW5rcyA9IFtdCisJd2hpbGUgMToKKwkJZWJlZ2luID0gc3RyaW5nLmZpbmQoZGF0YSwgRUVYRUNCRUdJTikKKwkJaWYgZWJlZ2luIDwgMDoKKwkJCWJyZWFrCisJCWVlbmQgPSBzdHJpbmcuZmluZChkYXRhLCBFRVhFQ0VORCwgZWJlZ2luKQorCQlpZiBlZW5kIDwgMDoKKwkJCXJhaXNlIGVycm9yLCAiY2FuJ3QgZmluZCBlbmQgb2YgZWV4ZWMgcGFydCIKKwkJY2h1bmtzLmFwcGVuZCgoMCwgZGF0YVs6ZWJlZ2luICsgbGVuKEVFWEVDQkVHSU4pICsgMV0pKQorCQljaHVua3MuYXBwZW5kKCgxLCBkYXRhW2ViZWdpbiArIGxlbihFRVhFQ0JFR0lOKSArIDE6ZWVuZF0pKQorCQlkYXRhID0gZGF0YVtlZW5kOl0KKwljaHVua3MuYXBwZW5kKCgwLCBkYXRhKSkKKwlyZXR1cm4gY2h1bmtzCisKK2RlZiBkZWhleHN0cmluZyhoZXhzdHJpbmcpOgorCXJldHVybiBlZXhlYy5kZWhleHN0cmluZyhzdHJpbmcuam9pbihzdHJpbmcuc3BsaXQoaGV4c3RyaW5nKSwgIiIpKQorCisKKyMgVHlwZSAxIGFzc2VydGlvbgorCitfZm9udFR5cGUxUkUgPSByZS5jb21waWxlKHIiL0ZvbnRUeXBlXHMrMVxzK2RlZiIpCisKK2RlZiBhc3NlcnR0eXBlMShkYXRhKToKKwlmb3IgaGVhZCBpbiBbJyUhUFMtQWRvYmVGb250JywgJyUhRm9udFR5cGUxLTEuMCddOgorCQlpZiBkYXRhWzpsZW4oaGVhZCldID09IGhlYWQ6CisJCQlicmVhaworCWVsc2U6CisJCXJhaXNlIGVycm9yLCAibm90IGEgUG9zdFNjcmlwdCBmb250IgorCWlmIG5vdCBfZm9udFR5cGUxUkUuc2VhcmNoKGRhdGEpOgorCQlyYWlzZSBlcnJvciwgIm5vdCBhIFR5cGUgMSBmb250IgorCWlmIHN0cmluZy5maW5kKGRhdGEsICJjdXJyZW50ZmlsZSBlZXhlYyIpIDwgMDoKKwkJcmFpc2UgZXJyb3IsICJub3QgYW4gZW5jcnlwdGVkIFR5cGUgMSBmb250IgorCSMgWFhYIHdoYXQgZWxzZT8KKwlyZXR1cm4gZGF0YQorCisKKyMgcGZiIGhlbHBlcnMKKworZGVmIGxvbmcyc3RyaW5nKGxvbmcpOgorCXN0ciA9ICIiCisJZm9yIGkgaW4gcmFuZ2UoNCk6CisJCXN0ciA9IHN0ciArIGNocigobG9uZyAmICgweGZmIDw8IChpICogOCkpKSA+PiBpICogOCkKKwlyZXR1cm4gc3RyCisKK2RlZiBzdHJpbmcybG9uZyhzdHIpOgorCWlmIGxlbihzdHIpIDw+IDQ6CisJCXJhaXNlIFZhbHVlRXJyb3IsICdzdHJpbmcgbXVzdCBiZSA0IGJ5dGVzIGxvbmcnCisJbG9uZyA9IDAKKwlmb3IgaSBpbiByYW5nZSg0KToKKwkJbG9uZyA9IGxvbmcgKyAob3JkKHN0cltpXSkgPDwgKGkgKiA4KSkKKwlyZXR1cm4gbG9uZwpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy90dExpYi9fX2luaXRfXy5weSBiL0xpYi9mb250VG9vbHMvdHRMaWIvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA4NzQ2NQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvdHRMaWIvX19pbml0X18ucHkKQEAgLTAsMCArMSw1NTUgQEAKKyIiInR0TGliIC0tIGEgcGFja2FnZSBmb3IgZGVhbGluZyB3aXRoIFRydWVUeXBlIGZvbnRzLgorCitUaGlzIHBhY2thZ2Ugb2ZmZXJzIHRyYW5zbGF0b3JzIHRvIGNvbnZlcnQgVHJ1ZVR5cGUgZm9udHMgdG8gUHl0aG9uIAorb2JqZWN0cyBhbmQgdmljZSB2ZXJzYSwgYW5kIGFkZGl0aW9uYWxseSBmcm9tIFB5dGhvbiB0byBYTUwgYW5kIHZpY2UgdmVyc2EuCisKK0V4YW1wbGUgaW50ZXJhY3RpdmUgc2Vzc2lvbjoKKworUHl0aG9uIDEuNS4yYzEgKCM0MywgTWFyICA5IDE5OTksIDEzOjA2OjQzKSAgW0NXIFBQQyB3L0dVU0kgdy9NU0xdCitDb3B5cmlnaHQgMTk5MS0xOTk1IFN0aWNodGluZyBNYXRoZW1hdGlzY2ggQ2VudHJ1bSwgQW1zdGVyZGFtCis+Pj4gZnJvbSBmb250VG9vbHMgaW1wb3J0IHR0TGliCis+Pj4gdHQgPSB0dExpYi5UVEZvbnQoImFmb250LnR0ZiIpCis+Pj4gdHRbJ21heHAnXS5udW1HbHlwaHMKKzI0MgorPj4+IHR0WydPUy8yJ10uYWNoVmVuZElECisnQiZIXDAwMCcKKz4+PiB0dFsnaGVhZCddLnVuaXRzUGVyRW0KKzIwNDgKKz4+PiB0dC5zYXZlWE1MKCJhZm9udC54bWwiKQorRHVtcGluZyAnTFRTSCcgdGFibGUuLi4KK0R1bXBpbmcgJ09TLzInIHRhYmxlLi4uCitEdW1waW5nICdWRE1YJyB0YWJsZS4uLgorRHVtcGluZyAnY21hcCcgdGFibGUuLi4KK0R1bXBpbmcgJ2N2dCAnIHRhYmxlLi4uCitEdW1waW5nICdmcGdtJyB0YWJsZS4uLgorRHVtcGluZyAnZ2x5ZicgdGFibGUuLi4KK0R1bXBpbmcgJ2hkbXgnIHRhYmxlLi4uCitEdW1waW5nICdoZWFkJyB0YWJsZS4uLgorRHVtcGluZyAnaGhlYScgdGFibGUuLi4KK0R1bXBpbmcgJ2htdHgnIHRhYmxlLi4uCitEdW1waW5nICdsb2NhJyB0YWJsZS4uLgorRHVtcGluZyAnbWF4cCcgdGFibGUuLi4KK0R1bXBpbmcgJ25hbWUnIHRhYmxlLi4uCitEdW1waW5nICdwb3N0JyB0YWJsZS4uLgorRHVtcGluZyAncHJlcCcgdGFibGUuLi4KKz4+PiB0dDIgPSB0dExpYi5UVEZvbnQoKQorPj4+IHR0Mi5pbXBvcnRYTUwoImFmb250LnhtbCIpCis+Pj4gdHQyWydtYXhwJ10ubnVtR2x5cGhzCisyNDIKKz4+PiAKKworIiIiCisKK19fYXV0aG9yX18gPSAiSnVzdCB2YW4gUm9zc3VtLCBqdXN0QGxldHRlcnJvci5jb20iCitfX3ZlcnNpb25fXyA9ICIxLjBhNSIKKworCitpbXBvcnQgb3MKK2ltcG9ydCBzdGF0CitpbXBvcnQgdHlwZXMKKworY2xhc3MgVFRMaWJFcnJvcihFeGNlcHRpb24pOiBwYXNzCisKKworY2xhc3MgVFRGb250OgorCQorCSIiIlRoZSBtYWluIGZvbnQgb2JqZWN0LiBJdCBtYW5hZ2VzIGZpbGUgaW5wdXQgYW5kIG91dHB1dCwgYW5kIG9mZmVycworCWEgY29udmVuaWVudCB3YXkgb2YgYWNjZXNzaW5nIHRhYmxlcy4gCisJVGFibGVzIHdpbGwgYmUgb25seSBkZWNvbXBpbGVkIHdoZW4gbmVjY2VzYXJ5LCBpZS4gd2hlbiB0aGV5J3JlIGFjdHVhbGx5CisJYWNjZXNzZWQuIFRoaXMgbWVhbnMgdGhhdCBzaW1wbGUgb3BlcmF0aW9ucyBjYW4gYmUgZXh0cmVtZWx5IGZhc3QuCisJIiIiCisJCisJZGVmIF9faW5pdF9fKHNlbGYsIGZpbGU9Tm9uZSwgcmVzX25hbWVfb3JfaW5kZXg9Tm9uZSwgCisJCQlzZm50VmVyc2lvbj0iXDAwMFwwMDFcMDAwXDAwMCIsIGNoZWNrY2hlY2tzdW1zPTAsIHZlcmJvc2U9MCk6CisJCQorCQkiIiJUaGUgY29uc3RydWN0b3IgY2FuIGJlIGNhbGxlZCB3aXRoIGEgZmV3IGRpZmZlcmVudCBhcmd1bWVudHMuCisJCVdoZW4gcmVhZGluZyBhIGZvbnQgZnJvbSBkaXNrLCAnZmlsZScgc2hvdWxkIGJlIGVpdGhlciBhIHBhdGhuYW1lCisJCXBvaW50aW5nIHRvIGEgZmlsZSwgb3IgYSByZWFkYWJsZSBmaWxlIG9iamVjdC4gCisJCQorCQlJdCB3ZSdyZSBydW5uaW5nIG9uIGEgTWFjaW50b3NoLCAncmVzX25hbWVfb3JfaW5kZXgnIG1heWJlIGFuIHNmbnQgCisJCXJlc291cmNlIG5hbWUgb3IgYW4gc2ZudCByZXNvdXJjZSBpbmRleCBudW1iZXIgb3IgemVyby4gVGhlIGxhdHRlciAKKwkJY2FzZSB3aWxsIGNhdXNlIFRUTGliIHRvIGF1dG9kZXRlY3Qgd2hldGhlciB0aGUgZmlsZSBpcyBhIGZsYXQgZmlsZSAKKwkJb3IgYSBzdWl0Y2FzZS4gKElmIGl0J3MgYSBzdWl0Y2FzZSwgb25seSB0aGUgZmlyc3QgJ3NmbnQnIHJlc291cmNlCisJCXdpbGwgYmUgcmVhZCEpCisJCQorCQlUaGUgJ2NoZWNrY2hlY2tzdW1zJyBhcmd1bWVudCBpcyB1c2VkIHRvIHNwZWNpZnkgaG93IHNmbnQKKwkJY2hlY2tzdW1zIGFyZSB0cmVhdGVkIHVwb24gcmVhZGluZyBhIGZpbGUgZnJvbSBkaXNrOgorCQkJMDogZG9uJ3QgY2hlY2sgKGRlZmF1bHQpCisJCQkxOiBjaGVjaywgcHJpbnQgd2FybmluZ3MgaWYgYSB3cm9uZyBjaGVja3N1bSBpcyBmb3VuZCAoZGVmYXVsdCkKKwkJCTI6IGNoZWNrLCByYWlzZSBhbiBleGNlcHRpb24gaWYgYSB3cm9uZyBjaGVja3N1bSBpcyBmb3VuZC4KKwkJCisJCVRoZSBUVEZvbnQgY29uc3RydWN0b3IgY2FuIGFsc28gYmUgY2FsbGVkIHdpdGhvdXQgYSAnZmlsZScgCisJCWFyZ3VtZW50OiB0aGlzIGlzIHRoZSB3YXkgdG8gY3JlYXRlIGEgbmV3IGVtcHR5IGZvbnQuIAorCQlJbiB0aGlzIGNhc2UgeW91IGNhbiBvcHRpb25hbGx5IHN1cHBseSB0aGUgJ3NmbnRWZXJzaW9uJyBhcmd1bWVudC4KKwkJIiIiCisJCQorCQlpbXBvcnQgc2ZudAorCQlzZWxmLnZlcmJvc2UgPSB2ZXJib3NlCisJCXNlbGYudGFibGVzID0ge30KKwkJc2VsZi5yZWFkZXIgPSBOb25lCisJCWlmIG5vdCBmaWxlOgorCQkJc2VsZi5zZm50VmVyc2lvbiA9IHNmbnRWZXJzaW9uCisJCQlyZXR1cm4KKwkJaWYgdHlwZShmaWxlKSA9PSB0eXBlcy5TdHJpbmdUeXBlOgorCQkJaWYgb3MubmFtZSA9PSAibWFjIiBhbmQgcmVzX25hbWVfb3JfaW5kZXggaXMgbm90IE5vbmU6CisJCQkJIyBvbiB0aGUgbWFjLCB3ZSBkZWFsIHdpdGggc2ZudCByZXNvdXJjZXMgYXMgd2VsbCBhcyBmbGF0IGZpbGVzCisJCQkJaW1wb3J0IG1hY1V0aWxzCisJCQkJaWYgcmVzX25hbWVfb3JfaW5kZXggPT0gMDoKKwkJCQkJaWYgbWFjVXRpbHMuZ2V0U0ZOVFJlc0luZGljZXMoZmlsZSk6CisJCQkJCQkjIGdldCB0aGUgZmlyc3QgYXZhaWxhYmxlIHNmbnQgZm9udC4KKwkJCQkJCWZpbGUgPSBtYWNVdGlscy5TRk5UUmVzb3VyY2VSZWFkZXIoZmlsZSwgMSkKKwkJCQkJZWxzZToKKwkJCQkJCWZpbGUgPSBvcGVuKGZpbGUsICJyYiIpCisJCQkJZWxzZToKKwkJCQkJZmlsZSA9IG1hY1V0aWxzLlNGTlRSZXNvdXJjZVJlYWRlcihmaWxlLCByZXNfbmFtZV9vcl9pbmRleCkKKwkJCWVsc2U6CisJCQkJZmlsZSA9IG9wZW4oZmlsZSwgInJiIikKKwkJZWxzZToKKwkJCXBhc3MgIyBhc3N1bWUgImZpbGUiIGlzIGEgcmVhZGFibGUgZmlsZSBvYmplY3QKKwkJc2VsZi5yZWFkZXIgPSBzZm50LlNGTlRSZWFkZXIoZmlsZSwgY2hlY2tjaGVja3N1bXMpCisJCXNlbGYuc2ZudFZlcnNpb24gPSBzZWxmLnJlYWRlci5zZm50VmVyc2lvbgorCQorCWRlZiBjbG9zZShzZWxmKToKKwkJIiIiSWYgd2Ugc3RpbGwgaGF2ZSBhIHJlYWRlciBvYmplY3QsIGNsb3NlIGl0LiIiIgorCQlpZiBzZWxmLnJlYWRlciBpcyBub3QgTm9uZToKKwkJCXNlbGYucmVhZGVyLmNsb3NlKCkKKwkKKwlkZWYgc2F2ZShzZWxmLCBmaWxlLCBtYWtlX3N1aXRjYXNlPTApOgorCQkiIiJTYXZlIHRoZSBmb250IHRvIGRpc2suIFNpbWlsYXJseSB0byB0aGUgY29uc3RydWN0b3IsIAorCQl0aGUgJ2ZpbGUnIGFyZ3VtZW50IGNhbiBiZSBlaXRoZXIgYSBwYXRobmFtZSBvciBhIHdyaXRhYmxlCisJCWZpbGUgb2JqZWN0LgorCQkKKwkJT24gdGhlIE1hYywgaWYgbWFrZV9zdWl0Y2FzZSBpcyBub24temVybywgYSBzdWl0Y2FzZSBmaWxlIHdpbGwKKwkJd2UgbWFkZSBpbnN0ZWFkIG9mIGEgZmxhdCAudHRmIGZpbGUuIAorCQkiIiIKKwkJaW1wb3J0IHNmbnQKKwkJaWYgdHlwZShmaWxlKSA9PSB0eXBlcy5TdHJpbmdUeXBlOgorCQkJaWYgb3MubmFtZSA9PSAibWFjIiBhbmQgbWFrZV9zdWl0Y2FzZToKKwkJCQlpbXBvcnQgbWFjVXRpbHMKKwkJCQlmaWxlID0gbWFjVXRpbHMuU0ZOVFJlc291cmNlV3JpdGVyKGZpbGUsIHNlbGYpCisJCQllbHNlOgorCQkJCWZpbGUgPSBvcGVuKGZpbGUsICJ3YiIpCisJCQkJaWYgb3MubmFtZSA9PSAibWFjIjoKKwkJCQkJaW1wb3J0IG1hY2ZzCisJCQkJCWZzcyA9IG1hY2ZzLkZTU3BlYyhmaWxlLm5hbWUpCisJCQkJCWZzcy5TZXRDcmVhdG9yVHlwZSgnbWRvcycsICdCSU5BJykKKwkJZWxzZToKKwkJCXBhc3MgIyBhc3N1bWUgImZpbGUiIGlzIGEgd3JpdGFibGUgZmlsZSBvYmplY3QKKwkJCisJCXRhZ3MgPSBzZWxmLmtleXMoKQorCQludW1UYWJsZXMgPSBsZW4odGFncykKKwkJd3JpdGVyID0gc2ZudC5TRk5UV3JpdGVyKGZpbGUsIG51bVRhYmxlcywgc2VsZi5zZm50VmVyc2lvbikKKwkJCisJCWRvbmUgPSBbXQorCQlmb3IgdGFnIGluIHRhZ3M6CisJCQlzZWxmLl93cml0ZVRhYmxlKHRhZywgd3JpdGVyLCBkb25lKQorCQkKKwkJd3JpdGVyLmNsb3NlKCkKKwkKKwlkZWYgc2F2ZVhNTChzZWxmLCBmaWxlLCBwcm9ncmVzcz1Ob25lLCB0YWJsZXM9Tm9uZSk6CisJCSIiIkV4cG9ydCB0aGUgZm9udCBhcyBhbiBYTUwtYmFzZWQgdGV4dCBmaWxlLgorCQkiIiIKKwkJaW1wb3J0IHhtbFdyaXRlcgorCQl3cml0ZXIgPSB4bWxXcml0ZXIuWE1MV3JpdGVyKGZpbGUpCisJCXdyaXRlci5iZWdpbnRhZygidHRGb250Iiwgc2ZudFZlcnNpb249YHNlbGYuc2ZudFZlcnNpb25gWzE6LTFdLCAKKwkJCQl0dGxpYlZlcnNpb249X192ZXJzaW9uX18pCisJCXdyaXRlci5uZXdsaW5lKCkKKwkJd3JpdGVyLm5ld2xpbmUoKQorCQlpZiBub3QgdGFibGVzOgorCQkJdGFibGVzID0gc2VsZi5rZXlzKCkKKwkJbnVtVGFibGVzID0gbGVuKHRhYmxlcykKKwkJbnVtR2x5cGhzID0gc2VsZlsnbWF4cCddLm51bUdseXBocworCQlpZiBwcm9ncmVzczoKKwkJCXByb2dyZXNzLnNldCgwLCBudW1UYWJsZXMgKiBudW1HbHlwaHMpCisJCWZvciBpIGluIHJhbmdlKG51bVRhYmxlcyk6CisJCQl0YWcgPSB0YWJsZXNbaV0KKwkJCXRhYmxlID0gc2VsZlt0YWddCisJCQlyZXBvcnQgPSAiRHVtcGluZyAnJXMnIHRhYmxlLi4uIiAlIHRhZworCQkJaWYgcHJvZ3Jlc3M6CisJCQkJcHJvZ3Jlc3Muc2V0bGFiZWwocmVwb3J0KQorCQkJZWxpZiBzZWxmLnZlcmJvc2U6CisJCQkJZGVidWdtc2cocmVwb3J0KQorCQkJZWxzZToKKwkJCQlwcmludCByZXBvcnQKKwkJCXhtbHRhZyA9IHRhZzJ4bWx0YWcodGFnKQorCQkJd3JpdGVyLmJlZ2ludGFnKHhtbHRhZykKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkJCWlmIHRhZyA9PSAiZ2x5ZiI6CisJCQkJdGFibGUudG9YTUwod3JpdGVyLCBzZWxmLCBwcm9ncmVzcykKKwkJCWVsaWYgdGFnID09ICJDRkYgIjoKKwkJCQl0YWJsZS50b1hNTCh3cml0ZXIsIHNlbGYsIHByb2dyZXNzKQorCQkJZWxzZToKKwkJCQl0YWJsZS50b1hNTCh3cml0ZXIsIHNlbGYpCisJCQl3cml0ZXIuZW5kdGFnKHhtbHRhZykKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkJCWlmIHByb2dyZXNzOgorCQkJCXByb2dyZXNzLnNldChpICogbnVtR2x5cGhzLCBudW1UYWJsZXMgKiBudW1HbHlwaHMpCisJCXdyaXRlci5lbmR0YWcoInR0Rm9udCIpCisJCXdyaXRlci5uZXdsaW5lKCkKKwkJd3JpdGVyLmNsb3NlKCkKKwkJaWYgc2VsZi52ZXJib3NlOgorCQkJZGVidWdtc2coIkRvbmUgZHVtcGluZyBYTUwiKQorCQorCWRlZiBpbXBvcnRYTUwoc2VsZiwgZmlsZSwgcHJvZ3Jlc3M9Tm9uZSk6CisJCSIiIkltcG9ydCBhbiBYTUwtYmFzZWQgdGV4dCBmaWxlLCBzbyBhcyB0byByZWNyZWF0ZQorCQlhIGZvbnQgb2JqZWN0LgorCQkiIiIKKwkJaWYgc2VsZi50YWJsZXM6CisJCQlyYWlzZSBlcnJvciwgIkNhbid0IGltcG9ydCBYTUwgaW50byBleGlzdGluZyBmb250LiIKKwkJaW1wb3J0IHhtbEltcG9ydAorCQlmcm9tIHhtbC5wYXJzZXJzLnhtbHByb2MgaW1wb3J0IHhtbHByb2MKKwkJYnVpbGRlciA9IHhtbEltcG9ydC5YTUxBcHBsaWNhdGlvbihzZWxmLCBwcm9ncmVzcykKKwkJaWYgcHJvZ3Jlc3M6CisJCQlwcm9ncmVzcy5zZXQoMCwgb3Muc3RhdChmaWxlKVtzdGF0LlNUX1NJWkVdIC8gMTAwIG9yIDEpCisJCXByb2MgPSB4bWxJbXBvcnQuVW5pY29kZVByb2Nlc3NvcigpCisJCXByb2Muc2V0X2FwcGxpY2F0aW9uKGJ1aWxkZXIpCisJCXByb2Muc2V0X2Vycm9yX2hhbmRsZXIoeG1sSW1wb3J0LlhNTEVycm9ySGFuZGxlcihwcm9jKSkKKwkJZGlyLCBmaWxlbmFtZSA9IG9zLnBhdGguc3BsaXQoZmlsZSkKKwkJaWYgZGlyOgorCQkJb2xkZGlyID0gb3MuZ2V0Y3dkKCkKKwkJCW9zLmNoZGlyKGRpcikKKwkJdHJ5OgorCQkJcHJvYy5wYXJzZV9yZXNvdXJjZShmaWxlbmFtZSkKKwkJCXJvb3QgPSBidWlsZGVyLnJvb3QKKwkJZmluYWxseToKKwkJCWlmIGRpcjoKKwkJCQlvcy5jaGRpcihvbGRkaXIpCisJCQkjIHJlbW92ZSBjaXJjdWxhciByZWZlcmVuY2VzCisJCQlwcm9jLmRlcmVmKCkKKwkJCWRlbCBidWlsZGVyLnByb2dyZXNzCisJCisJZGVmIGlzTG9hZGVkKHNlbGYsIHRhZyk6CisJCSIiIlJldHVybiB0cnVlIGlmIHRoZSB0YWJsZSBpZGVudGlmaWVkIGJ5ICd0YWcnIGhhcyBiZWVuIAorCQlkZWNvbXBpbGVkIGFuZCBsb2FkZWQgaW50byBtZW1vcnkuIiIiCisJCXJldHVybiBzZWxmLnRhYmxlcy5oYXNfa2V5KHRhZykKKwkKKwlkZWYgaGFzX2tleShzZWxmLCB0YWcpOgorCQkiIiJQcmV0ZW5kIHdlJ3JlIGEgZGljdGlvbmFyeS4iIiIKKwkJaWYgc2VsZi5pc0xvYWRlZCh0YWcpOgorCQkJcmV0dXJuIDEKKwkJZWxpZiBzZWxmLnJlYWRlciBhbmQgc2VsZi5yZWFkZXIuaGFzX2tleSh0YWcpOgorCQkJcmV0dXJuIDEKKwkJZWxzZToKKwkJCXJldHVybiAwCisJCisJZGVmIGtleXMoc2VsZik6CisJCSIiIlByZXRlbmQgd2UncmUgYSBkaWN0aW9uYXJ5LiIiIgorCQlrZXlzID0gc2VsZi50YWJsZXMua2V5cygpCisJCWlmIHNlbGYucmVhZGVyOgorCQkJZm9yIGtleSBpbiBzZWxmLnJlYWRlci5rZXlzKCk6CisJCQkJaWYga2V5IG5vdCBpbiBrZXlzOgorCQkJCQlrZXlzLmFwcGVuZChrZXkpCisJCWtleXMuc29ydCgpCisJCXJldHVybiBrZXlzCisJCisJZGVmIF9fbGVuX18oc2VsZik6CisJCSIiIlByZXRlbmQgd2UncmUgYSBkaWN0aW9uYXJ5LiIiIgorCQlyZXR1cm4gbGVuKHNlbGYua2V5cygpKQorCQorCWRlZiBfX2dldGl0ZW1fXyhzZWxmLCB0YWcpOgorCQkiIiJQcmV0ZW5kIHdlJ3JlIGEgZGljdGlvbmFyeS4iIiIKKwkJdHJ5OgorCQkJcmV0dXJuIHNlbGYudGFibGVzW3RhZ10KKwkJZXhjZXB0IEtleUVycm9yOgorCQkJaWYgc2VsZi5yZWFkZXIgaXMgbm90IE5vbmU6CisJCQkJaWYgc2VsZi52ZXJib3NlOgorCQkJCQlkZWJ1Z21zZygicmVhZGluZyAnJXMnIHRhYmxlIGZyb20gZGlzayIgJSB0YWcpCisJCQkJZGF0YSA9IHNlbGYucmVhZGVyW3RhZ10KKwkJCQl0YWJsZWNsYXNzID0gZ2V0VGFibGVDbGFzcyh0YWcpCisJCQkJdGFibGUgPSB0YWJsZWNsYXNzKHRhZykKKwkJCQlzZWxmLnRhYmxlc1t0YWddID0gdGFibGUKKwkJCQlpZiBzZWxmLnZlcmJvc2U6CisJCQkJCWRlYnVnbXNnKCJkZWNvbXBpbGluZyAnJXMnIHRhYmxlIiAlIHRhZykKKwkJCQl0YWJsZS5kZWNvbXBpbGUoZGF0YSwgc2VsZikKKwkJCQlyZXR1cm4gdGFibGUKKwkJCWVsc2U6CisJCQkJcmFpc2UgS2V5RXJyb3IsICInJXMnIHRhYmxlIG5vdCBmb3VuZCIgJSB0YWcKKwkKKwlkZWYgX19zZXRpdGVtX18oc2VsZiwgdGFnLCB0YWJsZSk6CisJCSIiIlByZXRlbmQgd2UncmUgYSBkaWN0aW9uYXJ5LiIiIgorCQlzZWxmLnRhYmxlc1t0YWddID0gdGFibGUKKwkKKwlkZWYgX19kZWxpdGVtX18oc2VsZiwgdGFnKToKKwkJIiIiUHJldGVuZCB3ZSdyZSBhIGRpY3Rpb25hcnkuIiIiCisJCWRlbCBzZWxmLnRhYmxlc1t0YWddCisJCisJZGVmIHNldEdseXBoT3JkZXIoc2VsZiwgZ2x5cGhPcmRlcik6CisJCXNlbGYuZ2x5cGhPcmRlciA9IGdseXBoT3JkZXIKKwkJaWYgc2VsZi5oYXNfa2V5KCdDRkYgJyk6CisJCQlzZWxmWydDRkYgJ10uc2V0R2x5cGhPcmRlcihnbHlwaE9yZGVyKQorCQlpZiBzZWxmLmhhc19rZXkoJ2dseWYnKToKKwkJCXNlbGZbJ2dseWYnXS5zZXRHbHlwaE9yZGVyKGdseXBoT3JkZXIpCisJCisJZGVmIGdldEdseXBoT3JkZXIoc2VsZik6CisJCWlmIG5vdCBoYXNhdHRyKHNlbGYsICJnbHlwaE9yZGVyIik6CisJCQlpZiBzZWxmLmhhc19rZXkoJ0NGRiAnKToKKwkJCQkjIENGRiBPcGVuVHlwZSBmb250CisJCQkJc2VsZi5nbHlwaE9yZGVyID0gc2VsZlsnQ0ZGICddLmdldEdseXBoT3JkZXIoKQorCQkJZWxzZToKKwkJCQkjIFRydWVUeXBlIGZvbnQKKwkJCQlnbHlwaE9yZGVyID0gc2VsZlsncG9zdCddLmdldEdseXBoT3JkZXIoKQorCQkJCWlmIGdseXBoT3JkZXIgaXMgTm9uZToKKwkJCQkJIworCQkJCQkjIE5vIG5hbWVzIGZvdW5kIGluIHRoZSAncG9zdCcgdGFibGUuCisJCQkJCSMgVHJ5IHRvIGNyZWF0ZSBnbHlwaCBuYW1lcyBmcm9tIHRoZSB1bmljb2RlIGNtYXAgKGlmIGF2YWlsYWJsZSkgCisJCQkJCSMgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgQWRvYmUgR2x5cGggTGlzdCAoQUdMKS4KKwkJCQkJIworCQkJCQlzZWxmLl9nZXRHbHlwaE5hbWVzRnJvbUNtYXAoKQorCQkJCWVsc2U6CisJCQkJCXNlbGYuZ2x5cGhPcmRlciA9IGdseXBoT3JkZXIKKwkJCSMgWFhYIHdoYXQgaWYgYSBmb250IGNvbnRhaW5zICdnbHlmJy8ncG9zdCcgdGFibGUgKmFuZCogQ0ZGPworCQlyZXR1cm4gc2VsZi5nbHlwaE9yZGVyCisJCisJZGVmIF9nZXRHbHlwaE5hbWVzRnJvbUNtYXAoc2VsZik6CisJCSMgTWFrZSB1cCBnbHlwaCBuYW1lcyBiYXNlZCBvbiBnbHlwaElELCB3aGljaCB3aWxsIGJlIHVzZWQgCisJCSMgaW4gY2FzZSB3ZSBkb24ndCBmaW5kIGEgdW5pY29kZSBjbWFwLgorCQludW1HbHlwaHMgPSBpbnQoc2VsZlsnbWF4cCddLm51bUdseXBocykKKwkJZ2x5cGhPcmRlciA9IFtOb25lXSAqIG51bUdseXBocworCQlnbHlwaE9yZGVyWzBdID0gIi5ub3RkZWYiCisJCWZvciBpIGluIHJhbmdlKDEsIG51bUdseXBocyk6CisJCQlnbHlwaE9yZGVyW2ldID0gImdseXBoJS41ZCIgJSBpCisJCSMgU2V0IHRoZSBnbHlwaCBvcmRlciwgc28gdGhlIGNtYXAgcGFyc2VyIGhhcyBzb21ldGhpbmcKKwkJIyB0byB3b3JrIHdpdGgKKwkJc2VsZi5nbHlwaE9yZGVyID0gZ2x5cGhPcmRlcgorCQkjIEdldCB0aGUgdGVtcG9yYXJ5IGNtYXAgKGJhc2VkIG9uIHRoZSBqdXN0IGludmVudGVkIG5hbWVzKQorCQl0ZW1wY21hcCA9IHNlbGZbJ2NtYXAnXS5nZXRjbWFwKDMsIDEpCisJCWlmIHRlbXBjbWFwIGlzIG5vdCBOb25lOgorCQkJIyB3ZSBoYXZlIGEgdW5pY29kZSBjbWFwCisJCQlpbXBvcnQgYWdsLCBzdHJpbmcKKwkJCWNtYXAgPSB0ZW1wY21hcC5jbWFwCisJCQkjIGNyZWF0ZSBhIHJldmVyc2UgY21hcCBkaWN0CisJCQlyZXZlcnNlY21hcCA9IHt9CisJCQlmb3IgdW5pY29kZSwgbmFtZSBpbiBjbWFwLml0ZW1zKCk6CisJCQkJcmV2ZXJzZWNtYXBbbmFtZV0gPSB1bmljb2RlCisJCQlhc3NlcnQgbGVuKHJldmVyc2VjbWFwKSA9PSBsZW4oY21hcCkKKwkJCWZvciBpIGluIHJhbmdlKG51bUdseXBocyk6CisJCQkJdGVtcE5hbWUgPSBnbHlwaE9yZGVyW2ldCisJCQkJaWYgcmV2ZXJzZWNtYXAuaGFzX2tleSh0ZW1wTmFtZSk6CisJCQkJCXVuaWNvZGUgPSByZXZlcnNlY21hcFt0ZW1wTmFtZV0KKwkJCQkJaWYgYWdsLlVWMkFHTC5oYXNfa2V5KHVuaWNvZGUpOgorCQkJCQkJIyBnZXQgbmFtZSBmcm9tIHRoZSBBZG9iZSBHbHlwaCBMaXN0CisJCQkJCQlnbHlwaE9yZGVyW2ldID0gYWdsLlVWMkFHTFt1bmljb2RlXQorCQkJCQllbHNlOgorCQkJCQkJIyBjcmVhdGUgdW5pPENPREU+IG5hbWUKKwkJCQkJCWdseXBoT3JkZXJbaV0gPSAidW5pIiArIHN0cmluZy51cHBlcihzdHJpbmcuemZpbGwoaGV4KHVuaWNvZGUpWzI6XSwgNCkpCisJCQkjIERlbGV0ZSB0aGUgY21hcCB0YWJsZSBmcm9tIHRoZSBjYWNoZSwgc28gaXQgY2FuIGJlIAorCQkJIyBwYXJzZWQgYWdhaW4gd2l0aCB0aGUgcmlnaHQgbmFtZXMuCisJCQlkZWwgc2VsZi50YWJsZXNbJ2NtYXAnXQorCQllbHNlOgorCQkJcGFzcyAjIG5vIHVuaWNvZGUgY21hcCBhdmFpbGFibGUsIHN0aWNrIHdpdGggdGhlIGludmVudGVkIG5hbWVzCisJCXNlbGYuZ2x5cGhPcmRlciA9IGdseXBoT3JkZXIKKwkKKwlkZWYgZ2V0R2x5cGhOYW1lcyhzZWxmKToKKwkJIiIiR2V0IGEgbGlzdCBvZiBnbHlwaCBuYW1lcywgc29ydGVkIGFscGhhYmV0aWNhbGx5LiIiIgorCQlnbHlwaE5hbWVzID0gc2VsZi5nZXRHbHlwaE9yZGVyKClbOl0KKwkJZ2x5cGhOYW1lcy5zb3J0KCkKKwkJcmV0dXJuIGdseXBoTmFtZXMKKwkKKwlkZWYgZ2V0R2x5cGhOYW1lczIoc2VsZik6CisJCSIiIkdldCBhIGxpc3Qgb2YgZ2x5cGggbmFtZXMsIHNvcnRlZCBhbHBoYWJldGljYWxseSwgYnV0IG5vdCBjYXNlIHNlbnNpdGl2ZS4iIiIKKwkJZnJvbSBmb250VG9vbHMubWlzYyBpbXBvcnQgdGV4dFRvb2xzCisJCXJldHVybiB0ZXh0VG9vbHMuY2FzZWxlc3NTb3J0KHNlbGYuZ2V0R2x5cGhPcmRlcigpKQorCQorCWRlZiBnZXRHbHlwaE5hbWUoc2VsZiwgZ2x5cGhJRCk6CisJCXJldHVybiBzZWxmLmdldEdseXBoT3JkZXIoKVtnbHlwaElEXQorCQorCWRlZiBnZXRHbHlwaElEKHNlbGYsIGdseXBoTmFtZSk6CisJCWlmIG5vdCBoYXNhdHRyKHNlbGYsICJfcmV2ZXJzZUdseXBoT3JkZXJEaWN0Iik6CisJCQlzZWxmLl9idWlsZFJldmVyc2VHbHlwaE9yZGVyRGljdCgpCisJCWdseXBoT3JkZXIgPSBzZWxmLmdldEdseXBoT3JkZXIoKQorCQlkID0gc2VsZi5fcmV2ZXJzZUdseXBoT3JkZXJEaWN0CisJCWlmIG5vdCBkLmhhc19rZXkoZ2x5cGhOYW1lKToKKwkJCWlmIGdseXBoTmFtZSBpbiBnbHlwaE9yZGVyOgorCQkJCXNlbGYuX2J1aWxkUmV2ZXJzZUdseXBoT3JkZXJEaWN0KCkKKwkJCQlyZXR1cm4gc2VsZi5nZXRHbHlwaElEKGdseXBoTmFtZSkKKwkJCWVsc2U6CisJCQkJcmFpc2UgS2V5RXJyb3IsIGdseXBoTmFtZQorCQlnbHlwaElEID0gZFtnbHlwaE5hbWVdCisJCWlmIGdseXBoTmFtZSA8PiBnbHlwaE9yZGVyW2dseXBoSURdOgorCQkJc2VsZi5fYnVpbGRSZXZlcnNlR2x5cGhPcmRlckRpY3QoKQorCQkJcmV0dXJuIHNlbGYuZ2V0R2x5cGhJRChnbHlwaE5hbWUpCisJCXJldHVybiBnbHlwaElECisJCisJZGVmIF9idWlsZFJldmVyc2VHbHlwaE9yZGVyRGljdChzZWxmKToKKwkJc2VsZi5fcmV2ZXJzZUdseXBoT3JkZXJEaWN0ID0gZCA9IHt9CisJCWdseXBoT3JkZXIgPSBzZWxmLmdldEdseXBoT3JkZXIoKQorCQlmb3IgZ2x5cGhJRCBpbiByYW5nZShsZW4oZ2x5cGhPcmRlcikpOgorCQkJZFtnbHlwaE9yZGVyW2dseXBoSURdXSA9IGdseXBoSUQKKwkKKwlkZWYgX3dyaXRlVGFibGUoc2VsZiwgdGFnLCB3cml0ZXIsIGRvbmUpOgorCQkiIiJJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24gZm9yIHNlbGYuc2F2ZSgpLiBLZWVwcyB0cmFjayBvZiAKKwkJaW50ZXItdGFibGUgZGVwZW5kZW5jaWVzLgorCQkiIiIKKwkJaWYgdGFnIGluIGRvbmU6CisJCQlyZXR1cm4KKwkJdGFibGVjbGFzcyA9IGdldFRhYmxlQ2xhc3ModGFnKQorCQlmb3IgbWFzdGVyVGFibGUgaW4gdGFibGVjbGFzcy5kZXBlbmRlbmNpZXM6CisJCQlpZiBtYXN0ZXJUYWJsZSBub3QgaW4gZG9uZToKKwkJCQlpZiBzZWxmLmhhc19rZXkobWFzdGVyVGFibGUpOgorCQkJCQlzZWxmLl93cml0ZVRhYmxlKG1hc3RlclRhYmxlLCB3cml0ZXIsIGRvbmUpCisJCQkJZWxzZToKKwkJCQkJZG9uZS5hcHBlbmQobWFzdGVyVGFibGUpCisJCXRhYmxlZGF0YSA9IHNlbGYuX2dldFRhYmxlRGF0YSh0YWcpCisJCWlmIHNlbGYudmVyYm9zZToKKwkJCWRlYnVnbXNnKCJ3cml0aW5nICclcycgdGFibGUgdG8gZGlzayIgJSB0YWcpCisJCXdyaXRlclt0YWddID0gdGFibGVkYXRhCisJCWRvbmUuYXBwZW5kKHRhZykKKwkKKwlkZWYgX2dldFRhYmxlRGF0YShzZWxmLCB0YWcpOgorCQkiIiJJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24uIFJldHVybnMgcmF3IHRhYmxlIGRhdGEsCisJCXdoZXRoZXIgY29tcGlsZWQgb3IgZGlyZWN0bHkgcmVhZCBmcm9tIGRpc2suCisJCSIiIgorCQlpZiBzZWxmLmlzTG9hZGVkKHRhZyk6CisJCQlpZiBzZWxmLnZlcmJvc2U6CisJCQkJZGVidWdtc2coImNvbXBpbGluZyAnJXMnIHRhYmxlIiAlIHRhZykKKwkJCXJldHVybiBzZWxmLnRhYmxlc1t0YWddLmNvbXBpbGUoc2VsZikKKwkJZWxpZiBzZWxmLnJlYWRlciBhbmQgc2VsZi5yZWFkZXIuaGFzX2tleSh0YWcpOgorCQkJaWYgc2VsZi52ZXJib3NlOgorCQkJCWRlYnVnbXNnKCJyZWFkaW5nICclcycgdGFibGUgZnJvbSBkaXNrIiAlIHRhZykKKwkJCXJldHVybiBzZWxmLnJlYWRlclt0YWddCisJCWVsc2U6CisJCQlyYWlzZSBLZXlFcnJvciwgdGFnCisKKworZGVmIF90ZXN0X2VuZGlhbm5lc3MoKToKKwkiIiJUZXN0IHRoZSBlbmRpYW5uZXNzIG9mIHRoZSBtYWNoaW5lLiBUaGlzIGlzIGNydWNpYWwgdG8ga25vdworCXNpbmNlIFRydWVUeXBlIGRhdGEgaXMgYWx3YXlzIGJpZyBlbmRpYW4sIGV2ZW4gb24gbGl0dGxlIGVuZGlhbgorCW1hY2hpbmVzLiBUaGVyZSBhcmUgcXVpdGUgYSBmZXcgc2l0dWF0aW9ucyB3aGVyZSB3ZSBleHBsaWNpdGx5CisJbmVlZCB0byBzd2FwIHNvbWUgYnl0ZXMuCisJIiIiCisJaW1wb3J0IHN0cnVjdAorCWRhdGEgPSBzdHJ1Y3QucGFjaygiaCIsIDB4MDEpCisJaWYgZGF0YSA9PSAiXDAwMFwwMDEiOgorCQlyZXR1cm4gImJpZyIKKwllbGlmIGRhdGEgPT0gIlwwMDFcMDAwIjoKKwkJcmV0dXJuICJsaXR0bGUiCisJZWxzZToKKwkJYXNzZXJ0IDAsICJlbmRpYW4gY29uZnVzaW9uISIKKworZW5kaWFuID0gX3Rlc3RfZW5kaWFubmVzcygpCisKKworZGVmIGdldFRhYmxlTW9kdWxlKHRhZyk6CisJIiIiRmV0Y2ggdGhlIHBhY2tlci91bnBhY2tlciBtb2R1bGUgZm9yIGEgdGFibGUuIAorCVJldHVybiBOb25lIHdoZW4gbm8gbW9kdWxlIGlzIGZvdW5kLgorCSIiIgorCWltcG9ydCBpbXAKKwlpbXBvcnQgdGFibGVzCisJcHlfdGFnID0gdGFnMmlkZW50aWZpZXIodGFnKQorCXRyeToKKwkJZiwgcGF0aCwga2luZCA9IGltcC5maW5kX21vZHVsZShweV90YWcsIHRhYmxlcy5fX3BhdGhfXykKKwkJaWYgZjoKKwkJCWYuY2xvc2UoKQorCWV4Y2VwdCBJbXBvcnRFcnJvcjoKKwkJcmV0dXJuIE5vbmUKKwllbHNlOgorCQltb2R1bGUgPSBfX2ltcG9ydF9fKCJmb250VG9vbHMudHRMaWIudGFibGVzLiIgKyBweV90YWcpCisJCXJldHVybiBnZXRhdHRyKHRhYmxlcywgcHlfdGFnKQorCisKK2RlZiBnZXRUYWJsZUNsYXNzKHRhZyk6CisJIiIiRmV0Y2ggdGhlIHBhY2tlci91bnBhY2tlciBjbGFzcyBmb3IgYSB0YWJsZS4gCisJUmV0dXJuIE5vbmUgd2hlbiBubyBjbGFzcyBpcyBmb3VuZC4KKwkiIiIKKwltb2R1bGUgPSBnZXRUYWJsZU1vZHVsZSh0YWcpCisJaWYgbW9kdWxlIGlzIE5vbmU6CisJCWZyb20gdGFibGVzLkRlZmF1bHRUYWJsZSBpbXBvcnQgRGVmYXVsdFRhYmxlCisJCXJldHVybiBEZWZhdWx0VGFibGUKKwlweV90YWcgPSB0YWcyaWRlbnRpZmllcih0YWcpCisJdGFibGVjbGFzcyA9IGdldGF0dHIobW9kdWxlLCAidGFibGVfIiArIHB5X3RhZykKKwlyZXR1cm4gdGFibGVjbGFzcworCisKK2RlZiBuZXd0YWJsZSh0YWcpOgorCSIiIlJldHVybiBhIG5ldyBpbnN0YW5jZSBvZiBhIHRhYmxlLiIiIgorCXRhYmxlY2xhc3MgPSBnZXRUYWJsZUNsYXNzKHRhZykKKwlyZXR1cm4gdGFibGVjbGFzcyh0YWcpCisKKworZGVmIF9lc2NhcGVjaGFyKGMpOgorCSIiIkhlbHBlciBmdW5jdGlvbiBmb3IgdGFnMmlkZW50aWZpZXIoKSIiIgorCWltcG9ydCByZQorCWlmIHJlLm1hdGNoKCJbYS16MC05XSIsIGMpOgorCQlyZXR1cm4gIl8iICsgYworCWVsaWYgcmUubWF0Y2goIltBLVpdIiwgYyk6CisJCXJldHVybiBjICsgIl8iCisJZWxzZToKKwkJcmV0dXJuIGhleChvcmQoYykpWzI6XQorCisKK2RlZiB0YWcyaWRlbnRpZmllcih0YWcpOgorCSIiIkNvbnZlcnQgYSB0YWJsZSB0YWcgdG8gYSB2YWxpZCAoYnV0IFVHTFkpIHB5dGhvbiBpZGVudGlmaWVyLCAKKwlhcyB3ZWxsIGFzIGEgZmlsZW5hbWUgdGhhdCdzIGd1YXJhbnRlZWQgdG8gYmUgdW5pcXVlIGV2ZW4gb24gYSAKKwljYXNlbGVzcyBmaWxlIHN5c3RlbS4gRWFjaCBjaGFyYWN0ZXIgaXMgbWFwcGVkIHRvIHR3byBjaGFyYWN0ZXJzLgorCUxvd2VyY2FzZSBsZXR0ZXJzIGdldCBhbiB1bmRlcnNjb3JlIGJlZm9yZSB0aGUgbGV0dGVyLCB1cHBlcmNhc2UKKwlsZXR0ZXJzIGdldCBhbiB1bmRlcnNjb3JlIGFmdGVyIHRoZSBsZXR0ZXIuIFRyYWlsaW5nIHNwYWNlcyBhcmUKKwl0cmltbWVkLiBJbGxlZ2FsIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQgYXMgdHdvIGhleCBieXRlcy4gSWYgdGhlCisJcmVzdWx0IHN0YXJ0cyB3aXRoIGEgbnVtYmVyIChhcyB0aGUgcmVzdWx0IG9mIGEgaGV4IGVzY2FwZSksIGFuCisJZXh0cmEgdW5kZXJzY29yZSBpcyBwcmVwZW5kZWQuIEV4YW1wbGVzOiAKKwkJJ2dseWYnIC0+ICdfZ19sX3lfZicKKwkJJ2N2dCAnIC0+ICdfY192X3QnCisJCSdPUy8yJyAtPiAnT19TXzJmXzInCisJIiIiCisJaW1wb3J0IHJlCisJYXNzZXJ0IGxlbih0YWcpID09IDQsICJ0YWcgc2hvdWxkIGJlIDQgY2hhcmFjdGVycyBsb25nIgorCXdoaWxlIGxlbih0YWcpID4gMSBhbmQgdGFnWy0xXSA9PSAnICc6CisJCXRhZyA9IHRhZ1s6LTFdCisJaWRlbnQgPSAiIgorCWZvciBjIGluIHRhZzoKKwkJaWRlbnQgPSBpZGVudCArIF9lc2NhcGVjaGFyKGMpCisJaWYgcmUubWF0Y2goIlswLTldIiwgaWRlbnQpOgorCQlpZGVudCA9ICJfIiArIGlkZW50CisJcmV0dXJuIGlkZW50CisKKworZGVmIGlkZW50aWZpZXIydGFnKGlkZW50KToKKwkiIiJ0aGUgb3Bwb3NpdGUgb2YgdGFnMmlkZW50aWZpZXIoKSIiIgorCWltcG9ydCBzdHJpbmcKKwlpZiBsZW4oaWRlbnQpICUgMiBhbmQgaWRlbnRbMF0gPT0gIl8iOgorCQlpZGVudCA9IGlkZW50WzE6XQorCWFzc2VydCBub3QgKGxlbihpZGVudCkgJSAyKQorCXRhZyA9ICIiCisJZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGlkZW50KSwgMik6CisJCWlmIGlkZW50W2ldID09ICJfIjoKKwkJCXRhZyA9IHRhZyArIGlkZW50W2krMV0KKwkJZWxpZiBpZGVudFtpKzFdID09ICJfIjoKKwkJCXRhZyA9IHRhZyArIGlkZW50W2ldCisJCWVsc2U6CisJCQkjIGFzc3VtZSBoZXgKKwkJCXRhZyA9IHRhZyArIGNocihzdHJpbmcuYXRvaShpZGVudFtpOmkrMl0sIDE2KSkKKwkjIGFwcGVuZCB0cmFpbGluZyBzcGFjZXMKKwl0YWcgPSB0YWcgKyAoNCAtIGxlbih0YWcpKSAqICcgJworCXJldHVybiB0YWcKKworCitkZWYgdGFnMnhtbHRhZyh0YWcpOgorCSIiIlNpbWlsYXJseSB0byB0YWcyaWRlbnRpZmllcigpLCB0aGlzIGNvbnZlcnRzIGEgVFQgdGFnCisJdG8gYSB2YWxpZCBYTUwgZWxlbWVudCBuYW1lLiBTaW5jZSBYTUwgZWxlbWVudCBuYW1lcyBhcmUKKwljYXNlIHNlbnNpdGl2ZSwgdGhpcyBpcyBhIGZhaXJseSBzaW1wbGUvcmVhZGFibGUgdHJhbnNsYXRpb24uCisJIiIiCisJaW1wb3J0IHN0cmluZywgcmUKKwlpZiB0YWcgPT0gIk9TLzIiOgorCQlyZXR1cm4gIk9TXzIiCisJaWYgcmUubWF0Y2goIltBLVphLXpfXVtBLVphLXpfMC05XSogKiQiLCB0YWcpOgorCQlyZXR1cm4gc3RyaW5nLnN0cmlwKHRhZykKKwllbHNlOgorCQlyZXR1cm4gdGFnMmlkZW50aWZpZXIodGFnKQorCisKK2RlZiB4bWx0YWcydGFnKHRhZyk6CisJIiIiVGhlIG9wcG9zaXRlIG9mIHRhZzJ4bWx0YWcoKSIiIgorCWlmIHRhZyA9PSAiT1NfMiI6CisJCXJldHVybiAiT1MvMiIKKwlpZiBsZW4odGFnKSA9PSA4OgorCQlyZXR1cm4gaWRlbnRpZmllcjJ0YWcodGFnKQorCWVsc2U6CisJCXJldHVybiB0YWcgKyAiICIgKiAoNCAtIGxlbih0YWcpKQorCXJldHVybiB0YWcKKworCitkZWYgZGVidWdtc2cobXNnKToKKwlpbXBvcnQgdGltZQorCXByaW50IG1zZyArIHRpbWUuc3RyZnRpbWUoIiAgKCVIOiVNOiVTKSIsIHRpbWUubG9jYWx0aW1lKHRpbWUudGltZSgpKSkKKworCmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL3R0TGliL21hY1V0aWxzLnB5IGIvTGliL2ZvbnRUb29scy90dExpYi9tYWNVdGlscy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWNlM2I0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2ZvbnRUb29scy90dExpYi9tYWNVdGlscy5weQpAQCAtMCwwICsxLDIxMiBAQAorIiIidHRMaWIubWFjVXRpbHMucHkgLS0gVmFyaW91cyBNYWMtc3BlY2lmaWMgc3R1ZmYuIiIiCisKKworaW1wb3J0IG9zCitpZiBvcy5uYW1lIDw+ICJtYWMiOgorCXJhaXNlIEltcG9ydEVycm9yLCAiVGhpcyBtb2R1bGUgaXMgTWFjLW9ubHkhIgorCitpbXBvcnQgUmVzLCBtYWNmcworaW1wb3J0IGNTdHJpbmdJTworCisKK2RlZiBnZXRTRk5UUmVzSW5kaWNlcyhwYXRoKToKKwkiIiJEZXRlcm1pbmUgd2hldGhlciBhIGZpbGUgaGFzIGEgcmVzb3VyY2UgZm9yayBvciBub3QuIiIiCisJZnNzID0gbWFjZnMuRlNTcGVjKHBhdGgpCisJdHJ5OgorCQlyZXNyZWYgPSBSZXMuRlNwT3BlblJlc0ZpbGUoZnNzLCAxKSAgIyByZWFkIG9ubHkKKwlleGNlcHQgUmVzLkVycm9yOgorCQlyZXR1cm4gW10KKwlSZXMuVXNlUmVzRmlsZShyZXNyZWYpCisJbnVtU0ZOVHMgPSBSZXMuQ291bnQxUmVzb3VyY2VzKCdzZm50JykKKwlSZXMuQ2xvc2VSZXNGaWxlKHJlc3JlZikKKwlyZXR1cm4gcmFuZ2UoMSwgbnVtU0ZOVHMgKyAxKQorCisKK2RlZiBvcGVuVFRGb250cyhwYXRoKToKKwkiIiJHaXZlbiBhIHBhdGhuYW1lLCByZXR1cm4gYSBsaXN0IG9mIFRURm9udCBvYmplY3RzLiBJbiB0aGUgY2FzZSAKKwlvZiBhIGZsYXQgVFRGL09URiBmaWxlLCB0aGUgbGlzdCB3aWxsIGNvbnRhaW4ganVzdCBvbmUgZm9udCBvYmplY3Q7CisJYnV0IGluIHRoZSBjYXNlIG9mIGEgTWFjIGZvbnQgc3VpdGNhc2UgaXQgd2lsbCBjb250YWluIGFzIG1hbnkKKwlmb250IG9iamVjdHMgYXMgdGhlcmUgYXJlIHNmbnQgcmVzb3VyY2VzIGluIHRoZSBmaWxlLgorCSIiIgorCWZyb20gZm9udFRvb2xzIGltcG9ydCB0dExpYgorCWZvbnRzID0gW10KKwlzZm50cyA9IGdldFNGTlRSZXNJbmRpY2VzKHBhdGgpCisJaWYgbm90IHNmbnRzOgorCQlmb250cy5hcHBlbmQodHRMaWIuVFRGb250KHBhdGgpKQorCWVsc2U6CisJCWZvciBpbmRleCBpbiBzZm50czoKKwkJCWZvbnRzLmFwcGVuZCh0dExpYi5UVEZvbnQocGF0aCwgaW5kZXgpKQorCQlpZiBub3QgZm9udHM6CisJCQlyYWlzZSB0dExpYi5UVExpYkVycm9yLCAibm8gZm9udHMgZm91bmQgaW4gZmlsZSAnJXMnIiAlIHBhdGgKKwlyZXR1cm4gZm9udHMKKworCitjbGFzcyBQcm9ncmVzc0JhcjoKKwkKKwlkZWYgX19pbml0X18oc2VsZiwgdGl0bGUsIG1heHZhbD0xMDApOgorCQlpbXBvcnQgRWFzeURpYWxvZ3MKKwkJc2VsZi5iYXIgPSBFYXN5RGlhbG9ncy5Qcm9ncmVzc0Jhcih0aXRsZSwgbWF4dmFsPW1heHZhbCkKKwkKKwlkZWYgc2V0KHNlbGYsIHZhbCwgbWF4dmFsPU5vbmUpOgorCQlpZiBtYXh2YWwgPD4gTm9uZToKKwkJCXNlbGYuYmFyLm1heHZhbCA9IG1heHZhbAorCQlzZWxmLmJhci5zZXQodmFsKQorCQorCWRlZiBpbmNyZW1lbnQoc2VsZiwgdmFsPTEpOgorCQlzZWxmLmJhci5pbmModmFsKQorCQorCWRlZiBzZXRsYWJlbChzZWxmLCB0ZXh0KToKKwkJc2VsZi5iYXIubGFiZWwodGV4dCkKKwkKKwlkZWYgY2xvc2Uoc2VsZik6CisJCXNlbGYuYmFyLmQuSGlkZVdpbmRvdygpCisJCWRlbCBzZWxmLmJhcgorCisKK2NsYXNzIFNGTlRSZXNvdXJjZVJlYWRlcjoKKwkKKwkiIiJTaW1wbGUgKE1hYy1vbmx5KSByZWFkLW9ubHkgZmlsZSB3cmFwcGVyIGZvciAnc2ZudCcgcmVzb3VyY2VzLiIiIgorCQorCWRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCByZXNfbmFtZV9vcl9pbmRleCk6CisJCWZzcyA9IG1hY2ZzLkZTU3BlYyhwYXRoKQorCQlyZXNyZWYgPSBSZXMuRlNwT3BlblJlc0ZpbGUoZnNzLCAxKSAgIyByZWFkLW9ubHkKKwkJUmVzLlVzZVJlc0ZpbGUocmVzcmVmKQorCQlpZiB0eXBlKHJlc19uYW1lX29yX2luZGV4KSA9PSB0eXBlKCIiKToKKwkJCXJlcyA9IFJlcy5HZXQxTmFtZWRSZXNvdXJjZSgnc2ZudCcsIHJlc19uYW1lX29yX2luZGV4KQorCQllbHNlOgorCQkJcmVzID0gUmVzLkdldDFJbmRSZXNvdXJjZSgnc2ZudCcsIHJlc19uYW1lX29yX2luZGV4KQorCQlzZWxmLmZpbGUgPSBjU3RyaW5nSU8uU3RyaW5nSU8ocmVzLmRhdGEpCisJCVJlcy5DbG9zZVJlc0ZpbGUocmVzcmVmKQorCQlzZWxmLm5hbWUgPSBwYXRoCisJCisJZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgorCQkjIGNoZWFwIGluaGVyaXRhbmNlCisJCXJldHVybiBnZXRhdHRyKHNlbGYuZmlsZSwgYXR0cikKKworCitjbGFzcyBTRk5UUmVzb3VyY2VXcml0ZXI6CisJCisJIiIiU2ltcGxlIChNYWMtb25seSkgZmlsZSB3cmFwcGVyIGZvciAnc2ZudCcgcmVzb3VyY2VzLiIiIgorCQorCWRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCB0dEZvbnQsIHJlc19pZD1Ob25lKToKKwkJc2VsZi5maWxlID0gY1N0cmluZ0lPLlN0cmluZ0lPKCkKKwkJc2VsZi5uYW1lID0gcGF0aAorCQlzZWxmLmNsb3NlZCA9IDAKKwkJZnVsbG5hbWUgPSB0dEZvbnRbJ25hbWUnXS5nZXRuYW1lKDQsIDEsIDApICMgRnVsbCBuYW1lLCBtYWMsIGRlZmF1bHQgZW5jb2RpbmcKKwkJZmFtaWx5bmFtZSA9IHR0Rm9udFsnbmFtZSddLmdldG5hbWUoMSwgMSwgMCkgIyBGYW0uIG5hbWUsIG1hYywgZGVmYXVsdCBlbmNvZGluZworCQlwc25hbWUgPSB0dEZvbnRbJ25hbWUnXS5nZXRuYW1lKDYsIDEsIDApICMgUG9zdFNjcmlwdCBuYW1lLCBldGMuCisJCWlmIGZ1bGxuYW1lIGlzIE5vbmUgb3IgZnVsbG5hbWUgaXMgTm9uZSBvciBwc25hbWUgaXMgTm9uZToKKwkJCWZyb20gZm9udFRvb2xzIGltcG9ydCB0dExpYgorCQkJcmFpc2UgdHRMaWIuVFRMaWJFcnJvciwgImNhbid0IG1ha2UgJ3NmbnQnIHJlc291cmNlLCBubyBNYWNpbnRvc2ggJ25hbWUnIHRhYmxlIGZvdW5kIgorCQlzZWxmLmZ1bGxuYW1lID0gZnVsbG5hbWUuc3RyaW5nCisJCXNlbGYuZmFtaWx5bmFtZSA9IGZhbWlseW5hbWUuc3RyaW5nCisJCXNlbGYucHNuYW1lID0gcHNuYW1lLnN0cmluZworCQlpZiBzZWxmLmZhbWlseW5hbWUgPD4gc2VsZi5wc25hbWVbOmxlbihzZWxmLmZhbWlseW5hbWUpXToKKwkJCSMgdWdoLiBmb3JjZSBmYW0gbmFtZSB0byBiZSB0aGUgc2FtZSBhcyBmaXJzdCBwYXJ0IG9mIHBzIG5hbWUsCisJCQkjIGZvbmRMaWIgb3RoZXJ3aXNlIGJhcmZzLgorCQkJZm9yIGkgaW4gcmFuZ2UobWluKGxlbihzZWxmLnBzbmFtZSksIGxlbihzZWxmLmZhbWlseW5hbWUpKSk6CisJCQkJaWYgc2VsZi5mYW1pbHluYW1lW2ldIDw+IHNlbGYucHNuYW1lW2ldOgorCQkJCQlicmVhaworCQkJc2VsZi5mYW1pbHluYW1lID0gc2VsZi5wc25hbWVbOmldCisJCQorCQlzZWxmLnR0Rm9udCA9IHR0Rm9udAorCQlzZWxmLnJlc19pZCA9IHJlc19pZAorCQlmc3MgPSBtYWNmcy5GU1NwZWMoc2VsZi5uYW1lKQorCQlpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLm5hbWUpOgorCQkJb3MucmVtb3ZlKHNlbGYubmFtZSkKKwkJUmVzLkZTcENyZWF0ZVJlc0ZpbGUoZnNzLCAnRE1PVicsICdGRklMJywgMCkKKwkJc2VsZi5yZXNyZWYgPSBSZXMuRlNwT3BlblJlc0ZpbGUoZnNzLCAzKSAgIyBleGNsdXNpdmUgcmVhZC93cml0ZSBwZXJtaXNzaW9uCisJCisJZGVmIGNsb3NlKHNlbGYpOgorCQlpZiBzZWxmLmNsb3NlZDoKKwkJCXJldHVybgorCQlSZXMuVXNlUmVzRmlsZShzZWxmLnJlc3JlZikKKwkJdHJ5OgorCQkJcmVzID0gUmVzLkdldDFOYW1lZFJlc291cmNlKCdzZm50Jywgc2VsZi5mdWxsbmFtZSkKKwkJZXhjZXB0IFJlcy5FcnJvcjoKKwkJCXBhc3MKKwkJZWxzZToKKwkJCXJlcy5SZW1vdmVSZXNvdXJjZSgpCisJCXJlcyA9IFJlcy5SZXNvdXJjZShzZWxmLmZpbGUuZ2V0dmFsdWUoKSkKKwkJaWYgc2VsZi5yZXNfaWQgaXMgTm9uZToKKwkJCXNlbGYucmVzX2lkID0gUmVzLlVuaXF1ZTFJRCgnc2ZudCcpCisJCXJlcy5BZGRSZXNvdXJjZSgnc2ZudCcsIHNlbGYucmVzX2lkLCBzZWxmLmZ1bGxuYW1lKQorCQlyZXMuQ2hhbmdlZFJlc291cmNlKCkKKwkJCisJCXNlbGYuY3JlYXRlRm9uZCgpCisJCWRlbCBzZWxmLnR0Rm9udAorCQlSZXMuQ2xvc2VSZXNGaWxlKHNlbGYucmVzcmVmKQorCQlzZWxmLmZpbGUuY2xvc2UoKQorCQlzZWxmLmNsb3NlZCA9IDEKKwkKKwlkZWYgY3JlYXRlRm9uZChzZWxmKToKKwkJZm9uZF9yZXMgPSBSZXMuUmVzb3VyY2UoIiIpCisJCWZvbmRfcmVzLkFkZFJlc291cmNlKCdGT05EJywgc2VsZi5yZXNfaWQsIHNlbGYuZnVsbG5hbWUpCisJCQorCQlmcm9tIGZvbnRUb29scyBpbXBvcnQgZm9uZExpYgorCQlmb25kID0gZm9uZExpYi5Gb250RmFtaWx5KGZvbmRfcmVzLCAidyIpCisJCQorCQlmb25kLmZmRmlyc3RDaGFyID0gMAorCQlmb25kLmZmTGFzdENoYXIgPSAyNTUKKwkJZm9uZC5mb25kQ2xhc3MgPSAwCisJCWZvbmQuZm9udEFzc29jID0gWygwLCAwLCBzZWxmLnJlc19pZCldCisJCWZvbmQuZmZGbGFncyA9IDIwNDgwCSMgWFhYID8/PworCQlmb25kLmZmSW50bCA9ICgwLCAwKQorCQlmb25kLmZmTGVhZGluZyA9IDAKKwkJZm9uZC5mZlByb3BlcnR5ID0gKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApCisJCWZvbmQuZmZWZXJzaW9uID0gMAorCQlmb25kLmdseXBoRW5jb2RpbmcgPSB7fQorCQlpZiBzZWxmLmZhbWlseW5hbWUgPT0gc2VsZi5wc25hbWU6CisJCQlmb25kLnN0eWxlSW5kaWNlcyA9ICgxLCkgKiA0OCAgIyB1aC1vaCwgZm9uZExpYiBpcyB0b28gZHVtYi4KKwkJZWxzZToKKwkJCWZvbmQuc3R5bGVJbmRpY2VzID0gKDIsKSAqIDQ4CisJCWZvbmQuc3R5bGVTdHJpbmdzID0gW10KKwkJZm9uZC5ib3VuZGluZ0JveGVzID0gTm9uZQorCQlmb25kLmZmRmFtSUQgPSBzZWxmLnJlc19pZAorCQlmb25kLmNoYW5nZWQgPSAxCisJCWZvbmQuZ2x5cGhUYWJsZU9mZnNldCA9IDAKKwkJZm9uZC5zdHlsZU1hcHBpbmdSZXNlcnZlZCA9IDAKKwkJCisJCSMgY2FsYzoKKwkJc2NhbGUgPSA0MDk2LjAgLyBzZWxmLnR0Rm9udFsnaGVhZCddLnVuaXRzUGVyRW0KKwkJZm9uZC5mZkFzY2VudCA9IHNjYWxlICogc2VsZi50dEZvbnRbJ2hoZWEnXS5hc2NlbnQKKwkJZm9uZC5mZkRlc2NlbnQgPSBzY2FsZSAqIHNlbGYudHRGb250WydoaGVhJ10uZGVzY2VudAorCQlmb25kLmZmV2lkTWF4ID0gc2NhbGUgKiBzZWxmLnR0Rm9udFsnaGhlYSddLmFkdmFuY2VXaWR0aE1heAorCQkKKwkJZm9uZC5mZkZhbWlseU5hbWUgPSBzZWxmLmZhbWlseW5hbWUKKwkJZm9uZC5wc05hbWVzID0gezA6IHNlbGYucHNuYW1lfQorCQkKKwkJZm9uZC53aWR0aFRhYmxlcyA9IHt9CisJCWZvbmQua2VyblRhYmxlcyA9IHt9CisJCWNtYXAgPSBzZWxmLnR0Rm9udFsnY21hcCddLmdldGNtYXAoMSwgMCkKKwkJaWYgY21hcDoKKwkJCW5hbWVzID0ge30KKwkJCWZvciBjb2RlLCBuYW1lIGluIGNtYXAuY21hcC5pdGVtcygpOgorCQkJCW5hbWVzW25hbWVdID0gY29kZQorCQkJaWYgc2VsZi50dEZvbnQuaGFzX2tleSgna2VybicpOgorCQkJCWtlcm4gPSBzZWxmLnR0Rm9udFsna2VybiddLmdldGtlcm4oMCkKKwkJCQlpZiBrZXJuOgorCQkJCQlmb25ka2VybmluZyA9IFtdCisJCQkJCWZvciAobGVmdCwgcmlnaHQpLCB2YWx1ZSBpbiBrZXJuLmtlcm5UYWJsZS5pdGVtcygpOgorCQkJCQkJaWYgbmFtZXMuaGFzX2tleShsZWZ0KSBhbmQgbmFtZXMuaGFzX2tleShyaWdodCk6CisJCQkJCQkJZm9uZGtlcm5pbmcuYXBwZW5kKChuYW1lc1tsZWZ0XSwgbmFtZXNbcmlnaHRdLCBzY2FsZSAqIHZhbHVlKSkKKwkJCQkJZm9uZGtlcm5pbmcuc29ydCgpCisJCQkJCWZvbmQua2VyblRhYmxlcyA9IHswOiBmb25ka2VybmluZ30KKwkJCWlmIHNlbGYudHRGb250Lmhhc19rZXkoJ2htdHgnKToKKwkJCQlobXR4ID0gc2VsZi50dEZvbnRbJ2htdHgnXQorCQkJCWZvbmR3aWR0aHMgPSBbMjA0OF0gKiAyNTYgKyBbMCwgMF0gICMgZGVmYXVsdCB3aWR0aCwgKyBwbHVzIHR3byB6ZXJvcy4KKwkJCQlmb3IgbmFtZSwgKHdpZHRoLCBsc2IpIGluIGhtdHgubWV0cmljcy5pdGVtcygpOgorCQkJCQlpZiBuYW1lcy5oYXNfa2V5KG5hbWUpOgorCQkJCQkJZm9uZHdpZHRoc1tuYW1lc1tuYW1lXV0gPSBzY2FsZSAqIHdpZHRoCisJCQkJZm9uZC53aWR0aFRhYmxlcyA9IHswOiBmb25kd2lkdGhzfQorCQlmb25kLnNhdmUoKQorCQorCWRlZiBfX2RlbF9fKHNlbGYpOgorCQlpZiBub3Qgc2VsZi5jbG9zZWQ6CisJCQlzZWxmLmNsb3NlKCkKKwkKKwlkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6CisJCSMgY2hlYXAgaW5oZXJpdGFuY2UKKwkJcmV0dXJuIGdldGF0dHIoc2VsZi5maWxlLCBhdHRyKQorCQorCmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL3R0TGliL3NmbnQucHkgYi9MaWIvZm9udFRvb2xzL3R0TGliL3NmbnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZkZWI5OQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvdHRMaWIvc2ZudC5weQpAQCAtMCwwICsxLDIzMCBAQAorIiIidHRMaWIvc2ZudC5weSAtLSBsb3ctbGV2ZWwgbW9kdWxlIHRvIGRlYWwgd2l0aCB0aGUgc2ZudCBmaWxlIGZvcm1hdC4KKworRGVmaW5lcyB0d28gcHVibGljIGNsYXNzZXM6CisJU0ZOVFJlYWRlcgorCVNGTlRXcml0ZXIKKworKE5vcm1hbGx5IHlvdSBkb24ndCBoYXZlIHRvIHVzZSB0aGVzZSBjbGFzc2VzIGV4cGxpY2l0bHk7IHRoZXkgYXJlIAordXNlZCBhdXRvbWF0aWNhbGx5IGJ5IHR0TGliLlRURm9udC4pCisKK1RoZSByZWFkaW5nIGFuZCB3cml0aW5nIG9mIHNmbnQgZmlsZXMgaXMgc2VwYXJhdGVkIGluIHR3byBkaXN0aW5jdCAKK2NsYXNzZXMsIHNpbmNlIHdoZW5ldmVyIHRvIG51bWJlciBvZiB0YWJsZXMgY2hhbmdlcyBvciB3aGVuZXZlcgorYSB0YWJsZSdzIGxlbmd0aCBjaGFnZXMgeW91IG5lZWQgdG8gcmV3cml0ZSB0aGUgd2hvbGUgZmlsZSBhbnl3YXkuCisiIiIKKworaW1wb3J0IHN0cnVjdCwgc3N0cnVjdAoraW1wb3J0IE51bWVyaWMKK2ltcG9ydCBvcworCitjbGFzcyBTRk5UUmVhZGVyOgorCQorCWRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBjaGVja2NoZWNrc3Vtcz0xKToKKwkJc2VsZi5maWxlID0gZmlsZQorCQlzZWxmLmNoZWNrY2hlY2tzdW1zID0gY2hlY2tjaGVja3N1bXMKKwkJZGF0YSA9IHNlbGYuZmlsZS5yZWFkKHNmbnREaXJlY3RvcnlTaXplKQorCQlpZiBsZW4oZGF0YSkgPD4gc2ZudERpcmVjdG9yeVNpemU6CisJCQlmcm9tIGZvbnRUb29scyBpbXBvcnQgdHRMaWIKKwkJCXJhaXNlIHR0TGliLlRUTGliRXJyb3IsICJOb3QgYSBUcnVlVHlwZSBvciBPcGVuVHlwZSBmb250IChub3QgZW5vdWdoIGRhdGEpIgorCQlzc3RydWN0LnVucGFjayhzZm50RGlyZWN0b3J5Rm9ybWF0LCBkYXRhLCBzZWxmKQorCQlpZiBzZWxmLnNmbnRWZXJzaW9uIG5vdCBpbiAoIlwwMDBcMDAxXDAwMFwwMDAiLCAiT1RUTyIsICJ0cnVlIik6CisJCQlmcm9tIGZvbnRUb29scyBpbXBvcnQgdHRMaWIKKwkJCXJhaXNlIHR0TGliLlRUTGliRXJyb3IsICJOb3QgYSBUcnVlVHlwZSBvciBPcGVuVHlwZSBmb250IChiYWQgc2ZudFZlcnNpb24pIgorCQlzZWxmLnRhYmxlcyA9IHt9CisJCWZvciBpIGluIHJhbmdlKHNlbGYubnVtVGFibGVzKToKKwkJCWVudHJ5ID0gU0ZOVERpcmVjdG9yeUVudHJ5KCkKKwkJCWVudHJ5LmZyb21maWxlKHNlbGYuZmlsZSkKKwkJCXNlbGYudGFibGVzW2VudHJ5LnRhZ10gPSBlbnRyeQorCQorCWRlZiBoYXNfa2V5KHNlbGYsIHRhZyk6CisJCXJldHVybiBzZWxmLnRhYmxlcy5oYXNfa2V5KHRhZykKKwkKKwlkZWYga2V5cyhzZWxmKToKKwkJcmV0dXJuIHNlbGYudGFibGVzLmtleXMoKQorCQorCWRlZiBfX2dldGl0ZW1fXyhzZWxmLCB0YWcpOgorCQkiIiJGZXRjaCB0aGUgcmF3IHRhYmxlIGRhdGEuIiIiCisJCWVudHJ5ID0gc2VsZi50YWJsZXNbdGFnXQorCQlzZWxmLmZpbGUuc2VlayhlbnRyeS5vZmZzZXQpCisJCWRhdGEgPSBzZWxmLmZpbGUucmVhZChlbnRyeS5sZW5ndGgpCisJCWlmIHNlbGYuY2hlY2tjaGVja3N1bXM6CisJCQlpZiB0YWcgPT0gJ2hlYWQnOgorCQkJCSMgQmVoOiB3ZSBoYXZlIHRvIHNwZWNpYWwtY2FzZSB0aGUgJ2hlYWQnIHRhYmxlLgorCQkJCWNoZWNrc3VtID0gY2FsY2NoZWNrc3VtKGRhdGFbOjhdICsgJ1wwXDBcMFwwJyArIGRhdGFbMTI6XSkKKwkJCWVsc2U6CisJCQkJY2hlY2tzdW0gPSBjYWxjY2hlY2tzdW0oZGF0YSkKKwkJCWlmIHNlbGYuY2hlY2tjaGVja3N1bXMgPiAxOgorCQkJCSMgQmUgb2Jub3hpb3VzLCBhbmQgYmFyZiB3aGVuIGl0J3Mgd3JvbmcKKwkJCQlhc3NlcnQgY2hlY2tzdW0gPT0gZW50cnkuY2hlY2tzdW0sICJiYWQgY2hlY2tzdW0gZm9yICclcycgdGFibGUiICUgdGFnCisJCQllbGlmIGNoZWNrc3VtIDw+IGVudHJ5LmNoZWNrU3VtOgorCQkJCSMgQmUgZnJpZW5kbHksIGFuZCBqdXN0IHByaW50IGEgd2FybmluZy4KKwkJCQlwcmludCAiYmFkIGNoZWNrc3VtIGZvciAnJXMnIHRhYmxlIiAlIHRhZworCQlyZXR1cm4gZGF0YQorCQorCWRlZiBjbG9zZShzZWxmKToKKwkJc2VsZi5maWxlLmNsb3NlKCkKKworCitjbGFzcyBTRk5UV3JpdGVyOgorCQorCWRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBudW1UYWJsZXMsIHNmbnRWZXJzaW9uPSJcMDAwXDAwMVwwMDBcMDAwIik6CisJCXNlbGYuZmlsZSA9IGZpbGUKKwkJc2VsZi5udW1UYWJsZXMgPSBudW1UYWJsZXMKKwkJc2VsZi5zZm50VmVyc2lvbiA9IHNmbnRWZXJzaW9uCisJCXNlbGYuc2VhcmNoUmFuZ2UsIHNlbGYuZW50cnlTZWxlY3Rvciwgc2VsZi5yYW5nZVNoaWZ0ID0gZ2V0c2VhcmNocmFuZ2UobnVtVGFibGVzKQorCQlzZWxmLm5leHRUYWJsZU9mZnNldCA9IHNmbnREaXJlY3RvcnlTaXplICsgbnVtVGFibGVzICogc2ZudERpcmVjdG9yeUVudHJ5U2l6ZQorCQkjIGNsZWFyIG91dCBkaXJlY3RvcnkgYXJlYQorCQlzZWxmLmZpbGUuc2VlayhzZWxmLm5leHRUYWJsZU9mZnNldCkKKwkJIyBtYWtlIHN1cmUgd2UncmUgYWN0dWFsbHkgd2hlcmUgd2Ugd2FudCB0byBiZS4gKFhYWCBvbGQgY1N0cmluZ0lPIGJ1ZykKKwkJc2VsZi5maWxlLndyaXRlKCdcMCcgKiAoc2VsZi5uZXh0VGFibGVPZmZzZXQgLSBzZWxmLmZpbGUudGVsbCgpKSkKKwkJc2VsZi50YWJsZXMgPSB7fQorCQorCWRlZiBfX3NldGl0ZW1fXyhzZWxmLCB0YWcsIGRhdGEpOgorCQkiIiJXcml0ZSByYXcgdGFibGUgZGF0YSB0byBkaXNrLiIiIgorCQlpZiBzZWxmLnRhYmxlcy5oYXNfa2V5KHRhZyk6CisJCQkjIFdlJ3ZlIHdyaXR0ZW4gdGhpcyB0YWJsZSB0byBmaWxlIGJlZm9yZS4gSWYgdGhlIGxlbmd0aAorCQkJIyBvZiB0aGUgZGF0YSBpcyBzdGlsbCB0aGUgc2FtZSwgd2UgYWxsb3cgb3ZlcndyaXRuZyBpdC4KKwkJCWVudHJ5ID0gc2VsZi50YWJsZXNbdGFnXQorCQkJaWYgbGVuKGRhdGEpIDw+IGVudHJ5Lmxlbmd0aDoKKwkJCQlmcm9tIGZvbnRUb29scyBpbXBvcnQgdHRMaWIKKwkJCQlyYWlzZSB0dExpYi5UVExpYkVycm9yLCAiY2Fubm90IHJld3JpdGUgJyVzJyB0YWJsZTogbGVuZ3RoIGRvZXMgbm90IG1hdGNoIGRpcmVjdG9yeSBlbnRyeSIgJSB0YWcKKwkJZWxzZToKKwkJCWVudHJ5ID0gU0ZOVERpcmVjdG9yeUVudHJ5KCkKKwkJCWVudHJ5LnRhZyA9IHRhZworCQkJZW50cnkub2Zmc2V0ID0gc2VsZi5uZXh0VGFibGVPZmZzZXQKKwkJCWVudHJ5Lmxlbmd0aCA9IGxlbihkYXRhKQorCQkJc2VsZi5uZXh0VGFibGVPZmZzZXQgPSBzZWxmLm5leHRUYWJsZU9mZnNldCArICgobGVuKGRhdGEpICsgMykgJiB+MykKKwkJc2VsZi5maWxlLnNlZWsoZW50cnkub2Zmc2V0KQorCQlzZWxmLmZpbGUud3JpdGUoZGF0YSkKKwkJc2VsZi5maWxlLnNlZWsoc2VsZi5uZXh0VGFibGVPZmZzZXQpCisJCSMgbWFrZSBzdXJlIHdlJ3JlIGFjdHVhbGx5IHdoZXJlIHdlIHdhbnQgdG8gYmUuIChYWFggb2xkIGNTdHJpbmdJTyBidWcpCisJCXNlbGYuZmlsZS53cml0ZSgnXDAnICogKHNlbGYubmV4dFRhYmxlT2Zmc2V0IC0gc2VsZi5maWxlLnRlbGwoKSkpCisJCQorCQlpZiB0YWcgPT0gJ2hlYWQnOgorCQkJZW50cnkuY2hlY2tTdW0gPSBjYWxjY2hlY2tzdW0oZGF0YVs6OF0gKyAnXDBcMFwwXDAnICsgZGF0YVsxMjpdKQorCQllbHNlOgorCQkJZW50cnkuY2hlY2tTdW0gPSBjYWxjY2hlY2tzdW0oZGF0YSkKKwkJc2VsZi50YWJsZXNbdGFnXSA9IGVudHJ5CisJCisJZGVmIGNsb3NlKHNlbGYpOgorCQkiIiJBbGwgdGFibGVzIG11c3QgaGF2ZSBiZWVuIHdyaXR0ZW4gdG8gZGlzay4gTm93IHdyaXRlIHRoZQorCQlkaXJlY3RvcnkuCisJCSIiIgorCQl0YWJsZXMgPSBzZWxmLnRhYmxlcy5pdGVtcygpCisJCXRhYmxlcy5zb3J0KCkKKwkJaWYgbGVuKHRhYmxlcykgPD4gc2VsZi5udW1UYWJsZXM6CisJCQlmcm9tIGZvbnRUb29scyBpbXBvcnQgdHRMaWIKKwkJCXJhaXNlIHR0TGliLlRUTGliRXJyb3IsICJ3cm9uZyBudW1iZXIgb2YgdGFibGVzOyBleHBlY3RlZCAlZCwgZm91bmQgJWQiICUgKHNlbGYubnVtVGFibGVzLCBsZW4odGFibGVzKSkKKwkJCisJCWRpcmVjdG9yeSA9IHNzdHJ1Y3QucGFjayhzZm50RGlyZWN0b3J5Rm9ybWF0LCBzZWxmKQorCQkKKwkJc2VsZi5maWxlLnNlZWsoc2ZudERpcmVjdG9yeVNpemUpCisJCWZvciB0YWcsIGVudHJ5IGluIHRhYmxlczoKKwkJCWRpcmVjdG9yeSA9IGRpcmVjdG9yeSArIGVudHJ5LnRvc3RyaW5nKCkKKwkJc2VsZi5jYWxjbWFzdGVyY2hlY2tzdW0oZGlyZWN0b3J5KQorCQlzZWxmLmZpbGUuc2VlaygwKQorCQlzZWxmLmZpbGUud3JpdGUoZGlyZWN0b3J5KQorCQlzZWxmLmZpbGUuY2xvc2UoKQorCQorCWRlZiBjYWxjbWFzdGVyY2hlY2tzdW0oc2VsZiwgZGlyZWN0b3J5KToKKwkJIyBjYWxjdWxhdGUgY2hlY2tTdW1BZGp1c3RtZW50CisJCXRhZ3MgPSBzZWxmLnRhYmxlcy5rZXlzKCkKKwkJY2hlY2tzdW1zID0gTnVtZXJpYy56ZXJvcyhsZW4odGFncykrMSkKKwkJZm9yIGkgaW4gcmFuZ2UobGVuKHRhZ3MpKToKKwkJCWNoZWNrc3Vtc1tpXSA9IHNlbGYudGFibGVzW3RhZ3NbaV1dLmNoZWNrU3VtCisJCQorCQlkaXJlY3RvcnlfZW5kID0gc2ZudERpcmVjdG9yeVNpemUgKyBsZW4oc2VsZi50YWJsZXMpICogc2ZudERpcmVjdG9yeUVudHJ5U2l6ZQorCQlhc3NlcnQgZGlyZWN0b3J5X2VuZCA9PSBsZW4oZGlyZWN0b3J5KQorCQkKKwkJY2hlY2tzdW1zWy0xXSA9IGNhbGNjaGVja3N1bShkaXJlY3RvcnkpCisJCWNoZWNrc3VtID0gTnVtZXJpYy5hZGQucmVkdWNlKGNoZWNrc3VtcykKKwkJIyBCaWJvQWZiYSEKKwkJY2hlY2tzdW1hZGp1c3RtZW50ID0gTnVtZXJpYy5hcnJheSgweGIxYjBhZmJhKSAtIGNoZWNrc3VtCisJCSMgd3JpdGUgdGhlIGNoZWNrc3VtIHRvIHRoZSBmaWxlCisJCXNlbGYuZmlsZS5zZWVrKHNlbGYudGFibGVzWydoZWFkJ10ub2Zmc2V0ICsgOCkKKwkJc2VsZi5maWxlLndyaXRlKHN0cnVjdC5wYWNrKCJsIiwgY2hlY2tzdW1hZGp1c3RtZW50KSkKKwkJCisKKyMgLS0gc2ZudCBkaXJlY3RvcnkgaGVscGVycyBhbmQgY3J1ZnQKKworc2ZudERpcmVjdG9yeUZvcm1hdCA9ICIiIgorCQk+ICMgYmlnIGVuZGlhbgorCQlzZm50VmVyc2lvbjogCTRzCisJCW51bVRhYmxlczoJCUgJCSMgbnVtYmVyIG9mIHRhYmxlcworCQlzZWFyY2hSYW5nZToJSAkJIyAobWF4MiA8PSBudW1UYWJsZXMpKjE2CisJCWVudHJ5U2VsZWN0b3I6CUgJCSMgbG9nMihtYXgyIDw9IG51bVRhYmxlcykKKwkJcmFuZ2VTaGlmdDoJCUgJCSMgbnVtVGFibGVzKjE2LXNlYXJjaFJhbmdlCisiIiIKKworc2ZudERpcmVjdG9yeVNpemUgPSBzc3RydWN0LmNhbGNzaXplKHNmbnREaXJlY3RvcnlGb3JtYXQpCisKK3NmbnREaXJlY3RvcnlFbnRyeUZvcm1hdCA9ICIiIgorCQk+ICMgYmlnIGVuZGlhbgorCQl0YWc6CQk0cworCQljaGVja1N1bToJbAorCQlvZmZzZXQ6CQlsCisJCWxlbmd0aDoJCWwKKyIiIgorCitzZm50RGlyZWN0b3J5RW50cnlTaXplID0gc3N0cnVjdC5jYWxjc2l6ZShzZm50RGlyZWN0b3J5RW50cnlGb3JtYXQpCisKK2NsYXNzIFNGTlREaXJlY3RvcnlFbnRyeToKKwkKKwlkZWYgZnJvbWZpbGUoc2VsZiwgZmlsZSk6CisJCXNzdHJ1Y3QudW5wYWNrKHNmbnREaXJlY3RvcnlFbnRyeUZvcm1hdCwgCisJCQkJZmlsZS5yZWFkKHNmbnREaXJlY3RvcnlFbnRyeVNpemUpLCBzZWxmKQorCQorCWRlZiBmcm9tc3RyaW5nKHNlbGYsIHN0cik6CisJCXNzdHJ1Y3QudW5wYWNrKHNmbnREaXJlY3RvcnlFbnRyeUZvcm1hdCwgc3RyLCBzZWxmKQorCQorCWRlZiB0b3N0cmluZyhzZWxmKToKKwkJcmV0dXJuIHNzdHJ1Y3QucGFjayhzZm50RGlyZWN0b3J5RW50cnlGb3JtYXQsIHNlbGYpCisJCisJZGVmIF9fcmVwcl9fKHNlbGYpOgorCQlpZiBoYXNhdHRyKHNlbGYsICJ0YWciKToKKwkJCXJldHVybiAiPFNGTlREaXJlY3RvcnlFbnRyeSAnJXMnIGF0ICV4PiIgJSAoc2VsZi50YWcsIGlkKHNlbGYpKQorCQllbHNlOgorCQkJcmV0dXJuICI8U0ZOVERpcmVjdG9yeUVudHJ5IGF0ICV4PiIgJSBpZChzZWxmKQorCisKK2RlZiBjYWxjY2hlY2tzdW0oZGF0YSwgc3RhcnQ9MCk6CisJIiIiQ2FsY3VsYXRlIHRoZSBjaGVja3N1bSBmb3IgYW4gYXJiaXRyYXJ5IGJsb2NrIG9mIGRhdGEuCisJT3B0aW9uYWxseSB0YWtlcyBhICdzdGFydCcgYXJndW1lbnQsIHdoaWNoIGFsbG93cyB5b3UgdG8KKwljYWxjdWxhdGUgYSBjaGVja3N1bSBpbiBjaHVua3MgYnkgZmVlZGluZyBpdCBhIHByZXZpb3VzCisJcmVzdWx0LgorCQorCUlmIHRoZSBkYXRhIGxlbmd0aCBpcyBub3QgYSBtdWx0aXBsZSBvZiBmb3VyLCBpdCBhc3N1bWVzCisJaXQgaXMgdG8gYmUgcGFkZGVkIHdpdGggbnVsbCBieXRlLiAKKwkiIiIKKwlmcm9tIGZvbnRUb29scyBpbXBvcnQgdHRMaWIKKwlyZW1haW5kZXIgPSBsZW4oZGF0YSkgJSA0CisJaWYgcmVtYWluZGVyOgorCQlkYXRhID0gZGF0YSArICdcMCcgKiAoNC1yZW1haW5kZXIpCisJYSA9IE51bWVyaWMuZnJvbXN0cmluZyhzdHJ1Y3QucGFjaygiPmwiLCBzdGFydCkgKyBkYXRhLCBOdW1lcmljLkludDMyKQorCWlmIHR0TGliLmVuZGlhbiA8PiAiYmlnIjoKKwkJYSA9IGEuYnl0ZXN3YXBwZWQoKQorCXJldHVybiBOdW1lcmljLmFkZC5yZWR1Y2UoYSkKKworCitkZWYgbWF4cG93ZXJvZnR3byh4KToKKwkiIiJSZXR1cm4gdGhlIGhpZ2hlc3QgZXhwb25lbnQgb2YgdHdvLCBzbyB0aGF0CisJKDIgKiogZXhwb25lbnQpIDw9IHgKKwkiIiIKKwlleHBvbmVudCA9IDAKKwl3aGlsZSB4OgorCQl4ID0geCA+PiAxCisJCWV4cG9uZW50ID0gZXhwb25lbnQgKyAxCisJcmV0dXJuIGV4cG9uZW50IC0gMQorCisKK2RlZiBnZXRzZWFyY2hyYW5nZShuKToKKwkiIiJDYWxjdWxhdGUgc2VhcmNoUmFuZ2UsIGVudHJ5U2VsZWN0b3IsIHJhbmdlU2hpZnQgZm9yIHRoZQorCXNmbnQgZGlyZWN0b3J5LiAnbicgaXMgdGhlIG51bWJlciBvZiB0YWJsZXMuCisJIiIiCisJIyBUaGlzIHN0dWZmIG5lZWRzIHRvIGJlIHN0b3JlZCBpbiB0aGUgZmlsZSwgYmVjYXVzZT8KKwlpbXBvcnQgbWF0aAorCWV4cG9uZW50ID0gbWF4cG93ZXJvZnR3byhuKQorCXNlYXJjaFJhbmdlID0gKDIgKiogZXhwb25lbnQpICogMTYKKwllbnRyeVNlbGVjdG9yID0gZXhwb25lbnQKKwlyYW5nZVNoaWZ0ID0gbiAqIDE2IC0gc2VhcmNoUmFuZ2UKKwlyZXR1cm4gc2VhcmNoUmFuZ2UsIGVudHJ5U2VsZWN0b3IsIHJhbmdlU2hpZnQKKwpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy90dExpYi9zdGFuZGFyZEdseXBoT3JkZXIucHkgYi9MaWIvZm9udFRvb2xzL3R0TGliL3N0YW5kYXJkR2x5cGhPcmRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWYyZWI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2ZvbnRUb29scy90dExpYi9zdGFuZGFyZEdseXBoT3JkZXIucHkKQEAgLTAsMCArMSwyNjMgQEAKKyMgWFhYIGlzIHRoaXMgKnJlYWxseSogY29ycmVjdD8KKworc3RhbmRhcmRHbHlwaE9yZGVyID0gWworCSIubm90ZGVmIiwJCQkJIyAwIAorCSIubnVsbCIsCQkJCSMgMSAKKwkibm9ubWFya2luZ3JldHVybiIsCQkjIDIgCisJInNwYWNlIiwJCQkJIyAzIAorCSJleGNsYW0iLAkJCQkjIDQgCisJInF1b3RlZGJsIiwJCQkJIyA1IAorCSJudW1iZXJzaWduIiwJCQkjIDYgCisJImRvbGxhciIsCQkJCSMgNyAKKwkicGVyY2VudCIsCQkJCSMgOCAKKwkiYW1wZXJzYW5kIiwJCQkjIDkgCisJInF1b3Rlc2luZ2xlIiwJCQkjIDEwIAorCSJwYXJlbmxlZnQiLAkJCSMgMTEgCisJInBhcmVucmlnaHQiLAkJCSMgMTIgCisJImFzdGVyaXNrIiwJCQkJIyAxMyAKKwkicGx1cyIsCQkJCQkjIDE0IAorCSJjb21tYSIsCQkJCSMgMTUgCisJImh5cGhlbiIsCQkJCSMgMTYgCisJInBlcmlvZCIsCQkJCSMgMTcgCisJInNsYXNoIiwJCQkJIyAxOCAKKwkiemVybyIsCQkJCQkjIDE5IAorCSJvbmUiLAkJCQkJIyAyMCAKKwkidHdvIiwJCQkJCSMgMjEgCisJInRocmVlIiwJCQkJIyAyMiAKKwkiZm91ciIsCQkJCQkjIDIzIAorCSJmaXZlIiwJCQkJCSMgMjQgCisJInNpeCIsCQkJCQkjIDI1IAorCSJzZXZlbiIsCQkJCSMgMjYgCisJImVpZ2h0IiwJCQkJIyAyNyAKKwkibmluZSIsCQkJCQkjIDI4IAorCSJjb2xvbiIsCQkJCSMgMjkgCisJInNlbWljb2xvbiIsCQkJIyAzMCAKKwkibGVzcyIsCQkJCQkjIDMxIAorCSJlcXVhbCIsCQkJCSMgMzIgCisJImdyZWF0ZXIiLAkJCQkjIDMzIAorCSJxdWVzdGlvbiIsCQkJCSMgMzQgCisJImF0IiwJCQkJCSMgMzUgCisJIkEiLAkJCQkJIyAzNiAKKwkiQiIsCQkJCQkjIDM3IAorCSJDIiwJCQkJCSMgMzggCisJIkQiLAkJCQkJIyAzOSAKKwkiRSIsCQkJCQkjIDQwIAorCSJGIiwJCQkJCSMgNDEgCisJIkciLAkJCQkJIyA0MiAKKwkiSCIsCQkJCQkjIDQzIAorCSJJIiwJCQkJCSMgNDQgCisJIkoiLAkJCQkJIyA0NSAKKwkiSyIsCQkJCQkjIDQ2IAorCSJMIiwJCQkJCSMgNDcgCisJIk0iLAkJCQkJIyA0OCAKKwkiTiIsCQkJCQkjIDQ5IAorCSJPIiwJCQkJCSMgNTAgCisJIlAiLAkJCQkJIyA1MSAKKwkiUSIsCQkJCQkjIDUyIAorCSJSIiwJCQkJCSMgNTMgCisJIlMiLAkJCQkJIyA1NCAKKwkiVCIsCQkJCQkjIDU1IAorCSJVIiwJCQkJCSMgNTYgCisJIlYiLAkJCQkJIyA1NyAKKwkiVyIsCQkJCQkjIDU4IAorCSJYIiwJCQkJCSMgNTkgCisJIlkiLAkJCQkJIyA2MCAKKwkiWiIsCQkJCQkjIDYxIAorCSJicmFja2V0bGVmdCIsCQkJIyA2MiAKKwkiYmFja3NsYXNoIiwJCQkjIDYzIAorCSJicmFja2V0cmlnaHQiLAkJCSMgNjQgCisJImFzY2lpY2lyY3VtIiwJCQkjIDY1IAorCSJ1bmRlcnNjb3JlIiwJCQkjIDY2IAorCSJncmF2ZSIsCQkJCSMgNjcgCisJImEiLAkJCQkJIyA2OCAKKwkiYiIsCQkJCQkjIDY5IAorCSJjIiwJCQkJCSMgNzAgCisJImQiLAkJCQkJIyA3MSAKKwkiZSIsCQkJCQkjIDcyIAorCSJmIiwJCQkJCSMgNzMgCisJImciLAkJCQkJIyA3NCAKKwkiaCIsCQkJCQkjIDc1IAorCSJpIiwJCQkJCSMgNzYgCisJImoiLAkJCQkJIyA3NyAKKwkiayIsCQkJCQkjIDc4IAorCSJsIiwJCQkJCSMgNzkgCisJIm0iLAkJCQkJIyA4MCAKKwkibiIsCQkJCQkjIDgxIAorCSJvIiwJCQkJCSMgODIgCisJInAiLAkJCQkJIyA4MyAKKwkicSIsCQkJCQkjIDg0IAorCSJyIiwJCQkJCSMgODUgCisJInMiLAkJCQkJIyA4NiAKKwkidCIsCQkJCQkjIDg3IAorCSJ1IiwJCQkJCSMgODggCisJInYiLAkJCQkJIyA4OSAKKwkidyIsCQkJCQkjIDkwIAorCSJ4IiwJCQkJCSMgOTEgCisJInkiLAkJCQkJIyA5MiAKKwkieiIsCQkJCQkjIDkzIAorCSJicmFjZWxlZnQiLAkJCSMgOTQgCisJImJhciIsCQkJCQkjIDk1IAorCSJicmFjZXJpZ2h0IiwJCQkjIDk2IAorCSJhc2NpaXRpbGRlIiwJCQkjIDk3IAorCSJBZGllcmVzaXMiLAkJCSMgOTggCisJIkFyaW5nIiwJCQkJIyA5OSAKKwkiQ2NlZGlsbGEiLAkJCQkjIDEwMCAKKwkiRWFjdXRlIiwJCQkJIyAxMDEgCisJIk50aWxkZSIsCQkJCSMgMTAyIAorCSJPZGllcmVzaXMiLAkJCSMgMTAzIAorCSJVZGllcmVzaXMiLAkJCSMgMTA0IAorCSJhYWN1dGUiLAkJCQkjIDEwNSAKKwkiYWdyYXZlIiwJCQkJIyAxMDYgCisJImFjaXJjdW1mbGV4IiwJCQkjIDEwNyAKKwkiYWRpZXJlc2lzIiwJCQkjIDEwOCAKKwkiYXRpbGRlIiwJCQkJIyAxMDkgCisJImFyaW5nIiwJCQkJIyAxMTAgCisJImNjZWRpbGxhIiwJCQkJIyAxMTEgCisJImVhY3V0ZSIsCQkJCSMgMTEyIAorCSJlZ3JhdmUiLAkJCQkjIDExMyAKKwkiZWNpcmN1bWZsZXgiLAkJCSMgMTE0IAorCSJlZGllcmVzaXMiLAkJCSMgMTE1IAorCSJpYWN1dGUiLAkJCQkjIDExNiAKKwkiaWdyYXZlIiwJCQkJIyAxMTcgCisJImljaXJjdW1mbGV4IiwJCQkjIDExOCAKKwkiaWRpZXJlc2lzIiwJCQkjIDExOSAKKwkibnRpbGRlIiwJCQkJIyAxMjAgCisJIm9hY3V0ZSIsCQkJCSMgMTIxIAorCSJvZ3JhdmUiLAkJCQkjIDEyMiAKKwkib2NpcmN1bWZsZXgiLAkJCSMgMTIzIAorCSJvZGllcmVzaXMiLAkJCSMgMTI0IAorCSJvdGlsZGUiLAkJCQkjIDEyNSAKKwkidWFjdXRlIiwJCQkJIyAxMjYgCisJInVncmF2ZSIsCQkJCSMgMTI3IAorCSJ1Y2lyY3VtZmxleCIsCQkJIyAxMjggCisJInVkaWVyZXNpcyIsCQkJIyAxMjkgCisJImRhZ2dlciIsCQkJCSMgMTMwIAorCSJkZWdyZWUiLAkJCQkjIDEzMSAKKwkiY2VudCIsCQkJCQkjIDEzMiAKKwkic3RlcmxpbmciLAkJCQkjIDEzMyAKKwkic2VjdGlvbiIsCQkJCSMgMTM0IAorCSJidWxsZXQiLAkJCQkjIDEzNSAKKwkicGFyYWdyYXBoIiwJCQkjIDEzNiAKKwkiZ2VybWFuZGJscyIsCQkJIyAxMzcgCisJInJlZ2lzdGVyZWQiLAkJCSMgMTM4IAorCSJjb3B5cmlnaHQiLAkJCSMgMTM5IAorCSJ0cmFkZW1hcmsiLAkJCSMgMTQwIAorCSJhY3V0ZSIsCQkJCSMgMTQxIAorCSJkaWVyZXNpcyIsCQkJCSMgMTQyIAorCSJub3RlcXVhbCIsCQkJCSMgMTQzIAorCSJBRSIsCQkJCQkjIDE0NCAKKwkiT3NsYXNoIiwJCQkJIyAxNDUgCisJImluZmluaXR5IiwJCQkJIyAxNDYgCisJInBsdXNtaW51cyIsCQkJIyAxNDcgCisJImxlc3NlcXVhbCIsCQkJIyAxNDggCisJImdyZWF0ZXJlcXVhbCIsCQkJIyAxNDkgCisJInllbiIsCQkJCQkjIDE1MCAKKwkibXUiLAkJCQkJIyAxNTEgCisJInBhcnRpYWxkaWZmIiwJCQkjIDE1MiAKKwkic3VtbWF0aW9uIiwJCQkjIDE1MyAKKwkicHJvZHVjdCIsCQkJCSMgMTU0IAorCSJwaSIsCQkJCQkjIDE1NSAKKwkiaW50ZWdyYWwiLAkJCQkjIDE1NiAKKwkib3JkZmVtaW5pbmUiLAkJCSMgMTU3IAorCSJvcmRtYXNjdWxpbmUiLAkJCSMgMTU4IAorCSJPbWVnYSIsCQkJCSMgMTU5IAorCSJhZSIsCQkJCQkjIDE2MCAKKwkib3NsYXNoIiwJCQkJIyAxNjEgCisJInF1ZXN0aW9uZG93biIsCQkJIyAxNjIgCisJImV4Y2xhbWRvd24iLAkJCSMgMTYzIAorCSJsb2dpY2Fsbm90IiwJCQkjIDE2NCAKKwkicmFkaWNhbCIsCQkJCSMgMTY1IAorCSJmbG9yaW4iLAkJCQkjIDE2NiAKKwkiYXBwcm94ZXF1YWwiLAkJCSMgMTY3IAorCSJEZWx0YSIsCQkJCSMgMTY4IAorCSJndWlsbGVtb3RsZWZ0IiwJCSMgMTY5IAorCSJndWlsbGVtb3RyaWdodCIsCQkjIDE3MCAKKwkiZWxsaXBzaXMiLAkJCQkjIDE3MSAKKwkibm9uYnJlYWtpbmdzcGFjZSIsCQkjIDE3MiAKKwkiQWdyYXZlIiwJCQkJIyAxNzMgCisJIkF0aWxkZSIsCQkJCSMgMTc0IAorCSJPdGlsZGUiLAkJCQkjIDE3NSAKKwkiT0UiLAkJCQkJIyAxNzYgCisJIm9lIiwJCQkJCSMgMTc3IAorCSJlbmRhc2giLAkJCQkjIDE3OCAKKwkiZW1kYXNoIiwJCQkJIyAxNzkgCisJInF1b3RlZGJsbGVmdCIsCQkJIyAxODAgCisJInF1b3RlZGJscmlnaHQiLAkJIyAxODEgCisJInF1b3RlbGVmdCIsCQkJIyAxODIgCisJInF1b3RlcmlnaHQiLAkJCSMgMTgzIAorCSJkaXZpZGUiLAkJCQkjIDE4NCAKKwkibG96ZW5nZSIsCQkJCSMgMTg1IAorCSJ5ZGllcmVzaXMiLAkJCSMgMTg2IAorCSJZZGllcmVzaXMiLAkJCSMgMTg3IAorCSJmcmFjdGlvbiIsCQkJCSMgMTg4CisJImN1cnJlbmN5IiwJCQkJIyAxODkKKwkiZ3VpbHNpbmdsbGVmdCIsCQkjIDE5MCAKKwkiZ3VpbHNpbmdscmlnaHQiLAkJIyAxOTEgCisJImZpIiwJCQkJCSMgMTkyIAorCSJmbCIsCQkJCQkjIDE5MyAKKwkiZGFnZ2VyZGJsIiwJCQkjIDE5NCAKKwkicGVyaW9kY2VudGVyZWQiLAkJIyAxOTUgCisJInF1b3Rlc2luZ2xiYXNlIiwJCSMgMTk2IAorCSJxdW90ZWRibGJhc2UiLAkJCSMgMTk3IAorCSJwZXJ0aG91c2FuZCIsCQkJIyAxOTggCisJIkFjaXJjdW1mbGV4IiwJCQkjIDE5OSAKKwkiRWNpcmN1bWZsZXgiLAkJCSMgMjAwIAorCSJBYWN1dGUiLAkJCQkjIDIwMSAKKwkiRWRpZXJlc2lzIiwJCQkjIDIwMiAKKwkiRWdyYXZlIiwJCQkJIyAyMDMgCisJIklhY3V0ZSIsCQkJCSMgMjA0IAorCSJJY2lyY3VtZmxleCIsCQkJIyAyMDUgCisJIklkaWVyZXNpcyIsCQkJIyAyMDYgCisJIklncmF2ZSIsCQkJCSMgMjA3IAorCSJPYWN1dGUiLAkJCQkjIDIwOCAKKwkiT2NpcmN1bWZsZXgiLAkJCSMgMjA5IAorCSJhcHBsZSIsCQkJCSMgMjEwIAorCSJPZ3JhdmUiLAkJCQkjIDIxMSAKKwkiVWFjdXRlIiwJCQkJIyAyMTIgCisJIlVjaXJjdW1mbGV4IiwJCQkjIDIxMyAKKwkiVWdyYXZlIiwJCQkJIyAyMTQgCisJImRvdGxlc3NpIiwJCQkJIyAyMTUgCisJImNpcmN1bWZsZXgiLAkJCSMgMjE2IAorCSJ0aWxkZSIsCQkJCSMgMjE3IAorCSJtYWNyb24iLAkJCQkjIDIxOCAKKwkiYnJldmUiLAkJCQkjIDIxOSAKKwkiZG90YWNjZW50IiwJCQkjIDIyMCAKKwkicmluZyIsCQkJCQkjIDIyMSAKKwkiY2VkaWxsYSIsCQkJCSMgMjIyIAorCSJodW5nYXJ1bWxhdXQiLAkJCSMgMjIzIAorCSJvZ29uZWsiLAkJCQkjIDIyNCAKKwkiY2Fyb24iLAkJCQkjIDIyNSAKKwkiTHNsYXNoIiwJCQkJIyAyMjYgCisJImxzbGFzaCIsCQkJCSMgMjI3IAorCSJTY2Fyb24iLAkJCQkjIDIyOCAKKwkic2Nhcm9uIiwJCQkJIyAyMjkgCisJIlpjYXJvbiIsCQkJCSMgMjMwIAorCSJ6Y2Fyb24iLAkJCQkjIDIzMSAKKwkiYnJva2VuYmFyIiwJCQkjIDIzMiAKKwkiRXRoIiwJCQkJCSMgMjMzIAorCSJldGgiLAkJCQkJIyAyMzQgCisJIllhY3V0ZSIsCQkJCSMgMjM1IAorCSJ5YWN1dGUiLAkJCQkjIDIzNiAKKwkiVGhvcm4iLAkJCQkjIDIzNyAKKwkidGhvcm4iLAkJCQkjIDIzOCAKKwkibWludXMiLAkJCQkjIDIzOSAKKwkibXVsdGlwbHkiLAkJCQkjIDI0MCAKKwkib25lc3VwZXJpb3IiLAkJCSMgMjQxIAorCSJ0d29zdXBlcmlvciIsCQkJIyAyNDIgCisJInRocmVlc3VwZXJpb3IiLAkJIyAyNDMgCisJIm9uZWhhbGYiLAkJCQkjIDI0NCAKKwkib25lcXVhcnRlciIsCQkJIyAyNDUgCisJInRocmVlcXVhcnRlcnMiLAkJIyAyNDYgCisJImZyYW5jIiwJCQkJIyAyNDcgCisJIkdicmV2ZSIsCQkJCSMgMjQ4IAorCSJnYnJldmUiLAkJCQkjIDI0OSAKKwkiSWRvdGFjY2VudCIsCQkJIyAyNTAgCisJIlNjZWRpbGxhIiwJCQkJIyAyNTEgCisJInNjZWRpbGxhIiwJCQkJIyAyNTIgCisJIkNhY3V0ZSIsCQkJCSMgMjUzIAorCSJjYWN1dGUiLAkJCQkjIDI1NCAKKwkiQ2Nhcm9uIiwJCQkJIyAyNTUgCisJImNjYXJvbiIsCQkJCSMgMjU2IAorCSJkY3JvYXQiCQkJCSMgMjU3IAorXQorCmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9DX0ZfRl8ucHkgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9DX0ZfRl8ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE0OGYwNgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL0NfRl9GXy5weQpAQCAtMCwwICsxLDM1IEBACitpbXBvcnQgRGVmYXVsdFRhYmxlCitmcm9tIGZvbnRUb29scyBpbXBvcnQgY2ZmTGliCisKKworY2xhc3MgdGFibGVfQ19GX0ZfKERlZmF1bHRUYWJsZS5EZWZhdWx0VGFibGUsIGNmZkxpYi5DRkZGb250U2V0KToKKwkKKwlkZWYgX19pbml0X18oc2VsZiwgdGFnKToKKwkJRGVmYXVsdFRhYmxlLkRlZmF1bHRUYWJsZS5fX2luaXRfXyhzZWxmLCB0YWcpCisJCWNmZkxpYi5DRkZGb250U2V0Ll9faW5pdF9fKHNlbGYpCisJCXNlbGYuX2dhdmVHbHlwaE9yZGVyID0gMAorCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgZGF0YSwgb3RGb250KToKKwkJc2VsZi5kYXRhID0gZGF0YSAgIyBYWFggd2hpbGUgd29yayBpcyBpbiBwcm9ncmVzcy4uLgorCQljZmZMaWIuQ0ZGRm9udFNldC5kZWNvbXBpbGUoc2VsZiwgZGF0YSkKKwkJYXNzZXJ0IGxlbihzZWxmLmZvbnRzKSA9PSAxLCAiY2FuJ3QgZGVhbCB3aXRoIG11bHRpLWZvbnQgQ0ZGIHRhYmxlcy4iCisJCisJI2RlZiBjb21waWxlKHNlbGYsIG90Rm9udCk6CisJIwl4eHgKKwkKKwlkZWYgZ2V0R2x5cGhPcmRlcihzZWxmKToKKwkJaWYgc2VsZi5fZ2F2ZUdseXBoT3JkZXI6CisJCQlmcm9tIGZvbnRUb29scyBpbXBvcnQgdHRMaWIKKwkJCXJhaXNlIHR0TGliLlRUTGliRXJyb3IsICJpbGxlZ2FsIHVzZSBvZiBnZXRHbHlwaE9yZGVyKCkiCisJCXNlbGYuX2dhdmVHbHlwaE9yZGVyID0gMQorCQlyZXR1cm4gc2VsZi5mb250c1tzZWxmLmZvbnROYW1lc1swXV0uZ2V0R2x5cGhPcmRlcigpCisJCisJZGVmIHNldEdseXBoT3JkZXIoc2VsZiwgZ2x5cGhPcmRlcik6CisJCXNlbGYuZm9udHNbc2VsZi5mb250TmFtZXNbMF1dLnNldEdseXBoT3JkZXIoZ2x5cGhPcmRlcikKKwkKKwlkZWYgdG9YTUwoc2VsZiwgd3JpdGVyLCBvdEZvbnQsIHByb2dyZXNzPU5vbmUpOgorCQljZmZMaWIuQ0ZGRm9udFNldC50b1hNTChzZWxmLCB3cml0ZXIsIHByb2dyZXNzKQorCQorCSNkZWYgZnJvbVhNTChzZWxmLCAobmFtZSwgYXR0cnMsIGNvbnRlbnQpLCBvdEZvbnQpOgorCSMJeHh4CisKZGlmZiAtLWdpdCBhL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL0RfU19JX0dfLnB5IGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvRF9TX0lfR18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmVhNTY1NAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL0RfU19JX0dfLnB5CkBAIC0wLDAgKzEsMTIgQEAKK2ltcG9ydCBEZWZhdWx0VGFibGUKKworY2xhc3MgdGFibGVfRF9TX0lfR18oRGVmYXVsdFRhYmxlLkRlZmF1bHRUYWJsZSk6CisJCisJZGVmIHRvWE1MKHNlbGYsIHhtbFdyaXRlciwgdHRGb250KToKKwkJeG1sV3JpdGVyLmNvbW1lbnQoIm5vdGUgdGhhdCB0aGUgRGlnaXRhbCBTaWduYXR1cmUgd2lsbCBiZSBpbnZhbGlkIGFmdGVyIHJlY29tcGlsYXRpb24hIikKKwkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQl4bWxXcml0ZXIuYmVnaW50YWcoImhleGRhdGEiKQorCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCXhtbFdyaXRlci5kdW1waGV4KHNlbGYuY29tcGlsZSh0dEZvbnQpKQorCQl4bWxXcml0ZXIuZW5kdGFnKCJoZXhkYXRhIikKKwkJeG1sV3JpdGVyLm5ld2xpbmUoKQpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvRGVmYXVsdFRhYmxlLnB5IGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvRGVmYXVsdFRhYmxlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NWYyMzcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9EZWZhdWx0VGFibGUucHkKQEAgLTAsMCArMSwzNiBAQAoraW1wb3J0IHN0cmluZworaW1wb3J0IHN5cworCitjbGFzcyBEZWZhdWx0VGFibGU6CisJCisJZGVwZW5kZW5jaWVzID0gW10KKwkKKwlkZWYgX19pbml0X18oc2VsZiwgdGFnKToKKwkJc2VsZi50YWJsZVRhZyA9IHRhZworCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgZGF0YSwgdHRGb250KToKKwkJc2VsZi5kYXRhID0gZGF0YQorCQorCWRlZiBjb21waWxlKHNlbGYsIHR0Rm9udCk6CisJCXJldHVybiBzZWxmLmRhdGEKKwkKKwlkZWYgdG9YTUwoc2VsZiwgd3JpdGVyLCB0dEZvbnQpOgorCQl3cml0ZXIuYmVnaW50YWcoImhleGRhdGEiKQorCQl3cml0ZXIubmV3bGluZSgpCisJCXdyaXRlci5kdW1waGV4KHNlbGYuY29tcGlsZSh0dEZvbnQpKQorCQl3cml0ZXIuZW5kdGFnKCJoZXhkYXRhIikKKwkJd3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIHR0Rm9udCk6CisJCWZyb20gZm9udFRvb2xzLm1pc2MudGV4dFRvb2xzIGltcG9ydCByZWFkSGV4CisJCWZyb20gZm9udFRvb2xzIGltcG9ydCB0dExpYgorCQlpZiBuYW1lIDw+ICJoZXhkYXRhIjoKKwkJCXJhaXNlIHR0TGliLlRUTGliRXJyb3IsICJjYW4ndCBoYW5kbGUgJyVzJyBlbGVtZW50IiAlIG5hbWUKKwkJc2VsZi5kZWNvbXBpbGUocmVhZEhleChjb250ZW50KSwgdHRGb250KQorCQorCWRlZiBfX3JlcHJfXyhzZWxmKToKKwkJcmV0dXJuICI8JyVzJyB0YWJsZSBhdCAleD4iICUgKHNlbGYudGFibGVUYWcsIGlkKHNlbGYpKQorCQorCWRlZiBfX2NtcF9fKHNlbGYsIG90aGVyKToKKwkJcmV0dXJuIGNtcChzZWxmLl9fZGljdF9fLCBvdGhlci5fX2RpY3RfXykKKwpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvR19QX09fU18ucHkgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9HX1BfT19TXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmVjODg3Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvR19QX09fU18ucHkKQEAgLTAsMCArMSwyOTQgQEAKK2ltcG9ydCBvdENvbW1vbgorCisKK2NsYXNzIHRhYmxlX0dfUF9PX1NfKG90Q29tbW9uLmJhc2VfR1BPU19HU1VCKToKKwkKKwlkZWYgZ2V0TG9va3VwVHlwZUNsYXNzKHNlbGYsIGxvb2t1cFR5cGUpOgorCQlyZXR1cm4gbG9va3VwVHlwZUNsYXNzZXNbbG9va3VwVHlwZV0KKworCitjbGFzcyBTaW5nbGVQb3M6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCByZWFkZXIsIG90Rm9udCk6CisJCXBhc3MKKwkKKwlkZWYgY29tcGlsZShzZWxmLCBvdEZvbnQpOgorCQl4eHgKKwkKKwlkZWYgdG9YTUwoc2VsZiwgeG1sV3JpdGVyLCBvdEZvbnQpOgorCQl4bWxXcml0ZXIuY29tbWVudCgiWFhYIikKKwkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQkJCisJZGVmIGZyb21YTUwoc2VsZiwgKG5hbWUsIGF0dHJzLCBjb250ZW50KSwgb3RGb250KToKKwkJeHh4CisKKworY2xhc3MgUGFpclBvczoKKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIHJlYWRlciwgb3RGb250KToKKwkJc2VsZi5mb3JtYXQgPSByZWFkZXIucmVhZFVTaG9ydCgpCisJCWlmIHNlbGYuZm9ybWF0ID09IDE6CisJCQlzZWxmLmRlY29tcGlsZUZvcm1hdDEocmVhZGVyLCBvdEZvbnQpCisJCWVsaWYgc2VsZi5mb3JtYXQgPT0gMjoKKwkJCXNlbGYuZGVjb21waWxlRm9ybWF0MihyZWFkZXIsIG90Rm9udCkKKwkJZWxzZToKKwkJCWZyb20gZm9udFRvb2xzIGltcG9ydCB0dExpYgorCQkJcmFpc2UgdHRMaWIuVFRMaWJFcnJvciwgInVua25vd24gUGFpclBvcyBmb3JtYXQ6ICVkIiAlIHNlbGYuZm9ybWF0CisJCisJZGVmIGRlY29tcGlsZUZvcm1hdDEoc2VsZiwgcmVhZGVyLCBvdEZvbnQpOgorCQljb3ZlcmFnZSA9IHJlYWRlci5yZWFkVGFibGUob3RDb21tb24uQ292ZXJhZ2VUYWJsZSwgb3RGb250KQorCQlnbHlwaE5hbWVzID0gY292ZXJhZ2UuZ2x5cGhOYW1lcworCQl2YWx1ZUZhY3RvcnkxID0gVmFsdWVSZWNvcmRGYWN0b3J5KHJlYWRlci5yZWFkVVNob3J0KCkpCisJCXZhbHVlRmFjdG9yeTIgPSBWYWx1ZVJlY29yZEZhY3RvcnkocmVhZGVyLnJlYWRVU2hvcnQoKSkKKwkJc2VsZi5wYWlycyA9IHBhaXJzID0ge30KKwkJZm9yIGkgaW4gcmFuZ2UocmVhZGVyLnJlYWRVU2hvcnQoKSk6CisJCQlmaXJzdEdseXBoTmFtZSA9IGdseXBoTmFtZXNbaV0KKwkJCW9mZnNldCA9IHJlYWRlci5yZWFkT2Zmc2V0KCkKKwkJCXNldERhdGEgPSByZWFkZXIuZ2V0U3ViU3RyaW5nKG9mZnNldCkKKwkJCXNldCA9IFBhaXJTZXQoKQorCQkJc2V0LmRlY29tcGlsZShzZXREYXRhLCBvdEZvbnQsIHZhbHVlRmFjdG9yeTEsIHZhbHVlRmFjdG9yeTIpCisJCQlwYWlyc1tmaXJzdEdseXBoTmFtZV0gPSBzZXQudmFsdWVzCisJCisJZGVmIGRlY29tcGlsZUZvcm1hdDIoc2VsZiwgcmVhZGVyLCBvdEZvbnQpOgorCQljb3ZlcmFnZSA9IHJlYWRlci5yZWFkVGFibGUob3RDb21tb24uQ292ZXJhZ2VUYWJsZSwgb3RGb250KQorCQlnbHlwaE5hbWVzID0gY292ZXJhZ2UuZ2x5cGhOYW1lcworCQl2YWx1ZUZhY3RvcnkxID0gVmFsdWVSZWNvcmRGYWN0b3J5KHJlYWRlci5yZWFkVVNob3J0KCkpCisJCXZhbHVlRmFjdG9yeTIgPSBWYWx1ZVJlY29yZEZhY3RvcnkocmVhZGVyLnJlYWRVU2hvcnQoKSkKKwkJc2VsZi5jbGFzc0RlZjEgPSByZWFkZXIucmVhZFRhYmxlKG90Q29tbW9uLkNsYXNzRGVmaW5pdGlvblRhYmxlLCBvdEZvbnQpCisJCXNlbGYuY2xhc3NEZWYyID0gcmVhZGVyLnJlYWRUYWJsZShvdENvbW1vbi5DbGFzc0RlZmluaXRpb25UYWJsZSwgb3RGb250KQorCQljbGFzczFDb3VudCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJY2xhc3MyQ291bnQgPSByZWFkZXIucmVhZFVTaG9ydCgpCisJCXNlbGYucGFpcnMgPSBwYWlycyA9IHt9ICAjIHNwYXJzZSBtYXRyaXgKKwkJZm9yIGkgaW4gcmFuZ2UoY2xhc3MxQ291bnQpOgorCQkJcm93ID0ge30KKwkJCWZvciBqIGluIHJhbmdlKGNsYXNzMkNvdW50KToKKwkJCQl2YWx1ZTEgPSB2YWx1ZUZhY3RvcnkxLmdldFZhbHVlUmVjb3JkKHJlYWRlcikKKwkJCQl2YWx1ZTIgPSB2YWx1ZUZhY3RvcnkyLmdldFZhbHVlUmVjb3JkKHJlYWRlcikKKwkJCQlpZiB2YWx1ZTEgb3IgdmFsdWUyOgorCQkJCQlyb3dbal0gPSAodmFsdWUxLCB2YWx1ZTIpCisJCQlpZiByb3c6CisJCQkJcGFpcnNbaV0gPSByb3cKKwkKKwlkZWYgY29tcGlsZShzZWxmLCBvdEZvbnQpOgorCQl4eHgKKwkKKwlkZWYgdG9YTUwoc2VsZiwgeG1sV3JpdGVyLCBvdEZvbnQpOgorCQlpZiBzZWxmLmZvcm1hdCA9PSAxOgorCQkJc2VsZi50b1hNTEZvcm1hdDEoeG1sV3JpdGVyLCBvdEZvbnQpCisJCWVsaWYgc2VsZi5mb3JtYXQgPT0gMjoKKwkJCXNlbGYudG9YTUxGb3JtYXQyKHhtbFdyaXRlciwgb3RGb250KQorCQllbHNlOgorCQkJZnJvbSBmb250VG9vbHMgaW1wb3J0IHR0TGliCisJCQlyYWlzZSB0dExpYi5UVExpYkVycm9yLCAidW5rbm93biBQYWlyUG9zIGZvcm1hdDogJWQiICUgc2VsZi5mb3JtYXQKKwkKKwlkZWYgdG9YTUxGb3JtYXQxKHNlbGYsIHhtbFdyaXRlciwgb3RGb250KToKKwkJcGFpcnMgPSBzZWxmLnBhaXJzLml0ZW1zKCkKKwkJcGFpcnMuc29ydCgpCisJCWZvciBmaXJzdEdseXBoLCBzZWNvbmRHbHlwaHMgaW4gcGFpcnM6CisJCQlmb3Igc2Vjb25kR2x5cGgsIHZhbHVlMSwgdmFsdWUyIGluIHNlY29uZEdseXBoczoKKwkJCQkjWFhYWFhYWFhYCisJCQkJeG1sV3JpdGVyLmJlZ2ludGFnKCJQYWlyIiwgZmlyc3Q9Zmlyc3RHbHlwaCwgc2Vjb25kPXNlY29uZEdseXBoKQorCQkJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkJCQlpZiB2YWx1ZTE6CisJCQkJCXZhbHVlMS50b1hNTCh4bWxXcml0ZXIsIG90Rm9udCkKKwkJCQlpZiB2YWx1ZTI6CisJCQkJCXZhbHVlMi50b1hNTCh4bWxXcml0ZXIsIG90Rm9udCkKKwkJCQl4bWxXcml0ZXIuZW5kdGFnKCJQYWlyIikKKwkJCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCisJZGVmIHRvWE1MRm9ybWF0MihzZWxmLCB4bWxXcml0ZXIsIG90Rm9udCk6CisJCXhtbFdyaXRlci5jb21tZW50KCJYWFgiKQorCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCisJZGVmIGZyb21YTUwoc2VsZiwgKG5hbWUsIGF0dHJzLCBjb250ZW50KSwgb3RGb250KToKKwkJeHh4CisKKworY2xhc3MgUGFpclNldDoKKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIHJlYWRlciwgb3RGb250LCB2YWx1ZUZhY3RvcnkxLCB2YWx1ZUZhY3RvcnkyKToKKwkJcGFpclZhbHVlQ291bnQgPSByZWFkZXIucmVhZFVTaG9ydCgpCisJCXNlbGYudmFsdWVzID0gdmFsdWVzID0gW10KKwkJZm9yIGogaW4gcmFuZ2UocGFpclZhbHVlQ291bnQpOgorCQkJc2Vjb25kR2x5cGhJRCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJCXNlY29uZEdseXBoTmFtZSA9IG90Rm9udC5nZXRHbHlwaE5hbWUoc2Vjb25kR2x5cGhJRCkKKwkJCXZhbHVlMSA9IHZhbHVlRmFjdG9yeTEuZ2V0VmFsdWVSZWNvcmQocmVhZGVyKQorCQkJdmFsdWUyID0gdmFsdWVGYWN0b3J5Mi5nZXRWYWx1ZVJlY29yZChyZWFkZXIpCisJCQl2YWx1ZXMuYXBwZW5kKChzZWNvbmRHbHlwaE5hbWUsIHZhbHVlMSwgdmFsdWUyKSkKKwkKKwlkZWYgY29tcGlsZShzZWxmLCBvdEZvbnQpOgorCQl4eHgKKworIworIyAtLS0tLS0tLS0tLS0tLS0tLS0KKyMKKworY2xhc3MgQ3Vyc2l2ZVBvczoKKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIHJlYWRlciwgb3RGb250KToKKwkJcGFzcworCQorCWRlZiBjb21waWxlKHNlbGYsIG90Rm9udCk6CisJCXh4eAorCQorCWRlZiB0b1hNTChzZWxmLCB4bWxXcml0ZXIsIG90Rm9udCk6CisJCXhtbFdyaXRlci5jb21tZW50KCJYWFgiKQorCQl4bWxXcml0ZXIubmV3bGluZSgpCisKKworY2xhc3MgTWFya0Jhc2VQb3M6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCByZWFkZXIsIG90Rm9udCk6CisJCXBhc3MKKwkKKwlkZWYgY29tcGlsZShzZWxmLCBvdEZvbnQpOgorCQl4eHgKKwkKKwlkZWYgdG9YTUwoc2VsZiwgeG1sV3JpdGVyLCBvdEZvbnQpOgorCQl4bWxXcml0ZXIuY29tbWVudCgiWFhYIikKKwkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCisKK2NsYXNzIE1hcmtMaWdQb3M6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCByZWFkZXIsIG90Rm9udCk6CisJCXBhc3MKKwkKKwlkZWYgY29tcGlsZShzZWxmLCBvdEZvbnQpOgorCQl4eHgKKwkKKwlkZWYgdG9YTUwoc2VsZiwgeG1sV3JpdGVyLCBvdEZvbnQpOgorCQl4bWxXcml0ZXIuY29tbWVudCgiWFhYIikKKwkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCisKK2NsYXNzIE1hcmtNYXJrUG9zOgorCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgcmVhZGVyLCBvdEZvbnQpOgorCQlwYXNzCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgb3RGb250KToKKwkJeHh4CisJCisJZGVmIHRvWE1MKHNlbGYsIHhtbFdyaXRlciwgb3RGb250KToKKwkJeG1sV3JpdGVyLmNvbW1lbnQoIlhYWCIpCisJCXhtbFdyaXRlci5uZXdsaW5lKCkKKworCitjbGFzcyBDb250ZXh0UG9zOgorCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgcmVhZGVyLCBvdEZvbnQpOgorCQlwYXNzCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgb3RGb250KToKKwkJeHh4CisJCisJZGVmIHRvWE1MKHNlbGYsIHhtbFdyaXRlciwgb3RGb250KToKKwkJeG1sV3JpdGVyLmNvbW1lbnQoIlhYWCIpCisJCXhtbFdyaXRlci5uZXdsaW5lKCkKKworCitjbGFzcyBDaGFpbkNvbnRleHRQb3M6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCByZWFkZXIsIG90Rm9udCk6CisJCXBhc3MKKwkKKwlkZWYgY29tcGlsZShzZWxmLCBvdEZvbnQpOgorCQl4eHgKKwkKKwlkZWYgdG9YTUwoc2VsZiwgeG1sV3JpdGVyLCBvdEZvbnQpOgorCQl4bWxXcml0ZXIuY29tbWVudCgiWFhYIikKKwkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCisKK2xvb2t1cFR5cGVDbGFzc2VzID0geworCTE6IFNpbmdsZVBvcywKKwkyOiBQYWlyUG9zLAorCTM6IEN1cnNpdmVQb3MsCisJNDogTWFya0Jhc2VQb3MsCisJNTogTWFya0xpZ1BvcywKKwk2OiBNYXJrTWFya1BvcywKKwk3OiBDb250ZXh0UG9zLAorCTg6IENoYWluQ29udGV4dFBvcywKK30KKworCit2YWx1ZVJlY29yZEZvcm1hdCA9IFsKKyMJTWFzawkgTmFtZQkJICAgICBzdHJ1Y3QgZm9ybWF0IGNoYXIKKwkoMHgwMDAxLCAiWFBsYWNlbWVudCIsICAgImgiKSwKKwkoMHgwMDAyLCAiWVBsYWNlbWVudCIsICAgImgiKSwKKwkoMHgwMDA0LCAiWEFkdmFuY2UiLCAgICAgImgiKSwKKwkoMHgwMDA4LCAiWUFkdmFuY2UiLCAgICAgImgiKSwKKwkoMHgwMDEwLCAiWFBsYURldmljZSIsICAgIkgiKSwKKwkoMHgwMDIwLCAiWVBsYURldmljZSIsICAgIkgiKSwKKwkoMHgwMDQwLCAiWEFkdkRldmljZSIsICAgIkgiKSwKKwkoMHgwMDgwLCAiWUFkdkRldmljZSIsICAgIkgiKSwKKyMgCXJlc2VydmVkOgorCSgweDAxMDAsICJSZXNlcnZlZDEiLCAgICAiSCIpLAorCSgweDAyMDAsICJSZXNlcnZlZDIiLCAgICAiSCIpLAorCSgweDA0MDAsICJSZXNlcnZlZDMiLCAgICAiSCIpLAorCSgweDA4MDAsICJSZXNlcnZlZDQiLCAgICAiSCIpLAorCSgweDEwMDAsICJSZXNlcnZlZDUiLCAgICAiSCIpLAorCSgweDIwMDAsICJSZXNlcnZlZDYiLCAgICAiSCIpLAorCSgweDQwMDAsICJSZXNlcnZlZDciLCAgICAiSCIpLAorCSgweDgwMDAsICJSZXNlcnZlZDgiLCAgICAiSCIpLAorXQorCisKK2NsYXNzIFZhbHVlUmVjb3JkRmFjdG9yeToKKwkKKwlkZWYgX19pbml0X18oc2VsZiwgdmFsdWVGb3JtYXQpOgorCQlmb3JtYXQgPSAiPiIKKwkJbmFtZXMgPSBbXQorCQlmb3IgbWFzaywgbmFtZSwgZm9ybWF0Q2hhciBpbiB2YWx1ZVJlY29yZEZvcm1hdDoKKwkJCWlmIHZhbHVlRm9ybWF0ICYgbWFzazoKKwkJCQluYW1lcy5hcHBlbmQobmFtZSkKKwkJCQlmb3JtYXQgPSBmb3JtYXQgKyBmb3JtYXRDaGFyCisJCXNlbGYubmFtZXMsIHNlbGYuZm9ybWF0ID0gbmFtZXMsIGZvcm1hdAorCQlzZWxmLnNpemUgPSAyICogbGVuKG5hbWVzKQorCQorCWRlZiBnZXRWYWx1ZVJlY29yZChzZWxmLCByZWFkZXIpOgorCQluYW1lcyA9IHNlbGYubmFtZXMKKwkJaWYgbm90IG5hbWVzOgorCQkJcmV0dXJuIE5vbmUKKwkJdmFsdWVzID0gcmVhZGVyLnJlYWRTdHJ1Y3Qoc2VsZi5mb3JtYXQsIHNlbGYuc2l6ZSkKKwkJdmFsdWVzID0gbWFwKGludCwgdmFsdWVzKQorCQl2YWx1ZVJlY29yZCA9IFZhbHVlUmVjb3JkKCkKKwkJaXRlbXMgPSBtYXAoTm9uZSwgbmFtZXMsIHZhbHVlcykKKwkJZm9yIG5hbWUsIHZhbHVlIGluIGl0ZW1zOgorCQkJc2V0YXR0cih2YWx1ZVJlY29yZCwgbmFtZSwgdmFsdWUpCisJCXJldHVybiB2YWx1ZVJlY29yZAorCisKK2NsYXNzIFZhbHVlUmVjb3JkOgorCSMgc2VlIFZhbHVlUmVjb3JkRmFjdG9yeQorCQorCWRlZiBfX25vbnplcm9fXyhzZWxmKToKKwkJZm9yIHZhbHVlIGluIHNlbGYuX19kaWN0X18udmFsdWVzKCk6CisJCQlpZiB2YWx1ZToKKwkJCQlyZXR1cm4gMQorCQlyZXR1cm4gMAorCQkJCisJZGVmIHRvWE1MKHNlbGYsIHhtbFdyaXRlciwgb3RGb250KToKKwkJc2ltcGxlSXRlbXMgPSBbXQorCQlmb3IgbWFzaywgbmFtZSwgZm9ybWF0IGluIHZhbHVlUmVjb3JkRm9ybWF0Wzo0XTogICMgInNpbXBsZSIgdmFsdWVzCisJCQlpZiBoYXNhdHRyKHNlbGYsIG5hbWUpOgorCQkJCXNpbXBsZUl0ZW1zLmFwcGVuZCgobmFtZSwgZ2V0YXR0cihzZWxmLCBuYW1lKSkpCisJCWRldmljZUl0ZW1zID0gW10KKwkJZm9yIG1hc2ssIG5hbWUsIGZvcm1hdCBpbiB2YWx1ZVJlY29yZEZvcm1hdFs0OjhdOiAgIyBkZXZpY2UgcmVjb3JkcworCQkJaWYgaGFzYXR0cihzZWxmLCBuYW1lKToKKwkJCQlkZXZpY2VJdGVtcy5hcHBlbmQoKG5hbWUsIGdldGF0dHIoc2VsZiwgbmFtZSkpKQorCQlpZiBkZXZpY2VJdGVtczoKKwkJCXhtbFdyaXRlci5iZWdpbnRhZygiVmFsdWVSZWNvcmQiLCBzaW1wbGVJdGVtcykKKwkJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkJCWZvciBuYW1lLCBkZXZpY2VSZWNvcmQgaW4gZGV2aWNlSXRlbXM6CisJCQkJeHh4CisJCQl4bWxXcml0ZXIuZW5kdGFnKCJWYWx1ZVJlY29yZCIpCisJCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCWVsc2U6CisJCQl4bWxXcml0ZXIuc2ltcGxldGFnKCJWYWx1ZVJlY29yZCIsIHNpbXBsZUl0ZW1zKQorCQkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiBfX3JlcHJfXyhzZWxmKToKKwkJcmV0dXJuICI8VmFsdWVSZWNvcmQ+IgorCmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9HX1NfVV9CXy5weSBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL0dfU19VX0JfLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwYzRkY2UKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9HX1NfVV9CXy5weQpAQCAtMCwwICsxLDI4MyBAQAoraW1wb3J0IG90Q29tbW9uCisKKworY2xhc3MgdGFibGVfR19TX1VfQl8ob3RDb21tb24uYmFzZV9HUE9TX0dTVUIpOgorCQorCWRlZiBnZXRMb29rdXBUeXBlQ2xhc3Moc2VsZiwgbG9va3VwVHlwZSk6CisJCXJldHVybiBsb29rdXBUeXBlQ2xhc3Nlc1tsb29rdXBUeXBlXQorCisKK2NsYXNzIFNpbmdsZVN1YnN0OgorCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgcmVhZGVyLCBvdEZvbnQpOgorCQlzZWxmLmZvcm1hdCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJaWYgc2VsZi5mb3JtYXQgPT0gMToKKwkJCXNlbGYuZGVjb21waWxlRm9ybWF0MShyZWFkZXIsIG90Rm9udCkKKwkJZWxpZiBzZWxmLmZvcm1hdCA9PSAyOgorCQkJc2VsZi5kZWNvbXBpbGVGb3JtYXQyKHJlYWRlciwgb3RGb250KQorCQllbHNlOgorCQkJZnJvbSBmb250VG9vbHMgaW1wb3J0IHR0TGliCisJCQlyYWlzZSB0dExpYi5UVExpYkVycm9yLCAidW5rbm93biBTaW5nbGVTdWIgZm9ybWF0OiAlZCIgJSBzZWxmLmZvcm1hdAorCQorCWRlZiBkZWNvbXBpbGVGb3JtYXQxKHNlbGYsIHJlYWRlciwgb3RGb250KToKKwkJY292ZXJhZ2UgPSByZWFkZXIucmVhZFRhYmxlKG90Q29tbW9uLkNvdmVyYWdlVGFibGUsIG90Rm9udCkKKwkJZ2x5cGhJRHMgPSBjb3ZlcmFnZS5nZXRHbHlwaElEcygpCisJCWdseXBoTmFtZXMgPSBjb3ZlcmFnZS5nZXRHbHlwaE5hbWVzKCkKKwkJc2VsZi5zdWJzdGl0dXRpb25zID0gc3Vic3RpdHV0aW9ucyA9IHt9CisJCWRlbHRhR2x5cGhJRCA9IHJlYWRlci5yZWFkU2hvcnQoKQorCQlmb3IgaSBpbiByYW5nZShsZW4oZ2x5cGhJRHMpKToKKwkJCWlucHV0ID0gZ2x5cGhOYW1lc1tpXQorCQkJb3V0cHV0ID0gb3RGb250LmdldEdseXBoTmFtZShnbHlwaElEc1tpXSArIGRlbHRhR2x5cGhJRCkKKwkJCXN1YnN0aXR1dGlvbnNbaW5wdXRdID0gb3V0cHV0CisJCisJZGVmIGRlY29tcGlsZUZvcm1hdDIoc2VsZiwgcmVhZGVyLCBvdEZvbnQpOgorCQljb3ZlcmFnZSA9IHJlYWRlci5yZWFkVGFibGUob3RDb21tb24uQ292ZXJhZ2VUYWJsZSwgb3RGb250KQorCQlnbHlwaE5hbWVzID0gY292ZXJhZ2UuZ2V0R2x5cGhOYW1lcygpCisJCWdseXBoQ291bnQgPSByZWFkZXIucmVhZFVTaG9ydCgpCisJCXNlbGYuc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnMgPSB7fQorCQlmb3IgaSBpbiByYW5nZShnbHlwaENvdW50KToKKwkJCWdseXBoSUQgPSByZWFkZXIucmVhZFVTaG9ydCgpCisJCQlvdXRwdXQgPSBvdEZvbnQuZ2V0R2x5cGhOYW1lKGdseXBoSUQpCisJCQlpbnB1dCA9IGdseXBoTmFtZXNbaV0KKwkJCXN1YnN0aXR1dGlvbnNbaW5wdXRdID0gb3V0cHV0CisJCisJZGVmIGNvbXBpbGUoc2VsZiwgb3RGb250KToKKwkJeHh4CisJCisJZGVmIHRvWE1MKHNlbGYsIHhtbFdyaXRlciwgb3RGb250KToKKwkJc3Vic3RpdHV0aW9ucyA9IHNlbGYuc3Vic3RpdHV0aW9ucy5pdGVtcygpCisJCXN1YnN0aXR1dGlvbnMuc29ydCgpCisJCWZvciBpbnB1dCwgb3V0cHV0IGluIHN1YnN0aXR1dGlvbnM6CisJCQl4bWxXcml0ZXIuc2ltcGxldGFnKCJTdWJzdCIsIFsoImluIiwgaW5wdXQpLCAoIm91dCIsIG91dHB1dCldKQorCQkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIG90Rm9udCk6CisJCXh4eAorCisKK2NsYXNzIE11bHRpcGxlU3Vic3Q6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCByZWFkZXIsIG90Rm9udCk6CisJCWZvcm1hdCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJaWYgZm9ybWF0IDw+IDE6CisJCQlmcm9tIGZvbnRUb29scyBpbXBvcnQgdHRMaWIKKwkJCXJhaXNlIHR0TGliLlRUTGliRXJyb3IsICJ1bmtub3duIE11bHRpcGxlU3Vic3QgZm9ybWF0OiAlZCIgJSBmb3JtYXQKKwkJZ2x5cGhOYW1lcyA9IHJlYWRlci5yZWFkVGFibGUob3RDb21tb24uQ292ZXJhZ2VUYWJsZSwgb3RGb250KS5nZXRHbHlwaE5hbWVzKCkKKwkJc2VxdWVuY2VDb3VudCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJc2VsZi5zdWJzdGl0dXRpb25zID0gc3Vic3RpdHV0aW9ucyA9IHt9CisJCWZvciBpIGluIHJhbmdlKHNlcXVlbmNlQ291bnQpOgorCQkJc2VxdWVuY2UgPSByZWFkZXIucmVhZFRhYmxlKFNlcXVlbmNlLCBvdEZvbnQpCisJCQlzdWJzdGl0dXRpb25zW2dseXBoTmFtZXNbaV1dID0gc2VxdWVuY2UuZ2x5cGhzCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgb3RGb250KToKKwkJeHh4CisJCisJZGVmIHRvWE1MKHNlbGYsIHhtbFdyaXRlciwgb3RGb250KToKKwkJaW1wb3J0IHN0cmluZworCQlpdGVtcyA9IHNlbGYuc3Vic3RpdHV0aW9ucy5pdGVtcygpCisJCWl0ZW1zLnNvcnQoKQorCQlmb3IgaW5wdXQsIG91dHB1dCBpbiBpdGVtczoKKwkJCXhtbFdyaXRlci5zaW1wbGV0YWcoIlN1YnN0IiwgWygiaW4iLCBpbnB1dCksICgib3V0Iiwgc3RyaW5nLmpvaW4ob3V0cHV0LCAiLCIpKV0pCisJCQl4bWxXcml0ZXIubmV3bGluZSgpCisKKworY2xhc3MgU2VxdWVuY2U6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCByZWFkZXIsIG90Rm9udCk6CisJCXNlbGYuZ2x5cGhzID0gW10KKwkJZm9yIGkgaW4gcmFuZ2UocmVhZGVyLnJlYWRVU2hvcnQoKSk6CisJCQlzZWxmLmdseXBocy5hcHBlbmQob3RGb250LmdldEdseXBoTmFtZShyZWFkZXIucmVhZFVTaG9ydCgpKSkKKwkKKwlkZWYgY29tcGlsZShzZWxmLCBvdEZvbnQpOgorCQl4eHgKKworCitjbGFzcyBBbHRlcm5hdGVTdWJzdDoKKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIHJlYWRlciwgb3RGb250KToKKwkJZm9ybWF0ID0gcmVhZGVyLnJlYWRVU2hvcnQoKQorCQlpZiBmb3JtYXQgPD4gMToKKwkJCWZyb20gZm9udFRvb2xzIGltcG9ydCB0dExpYgorCQkJcmFpc2UgdHRMaWIuVFRMaWJFcnJvciwgInVua25vd24gQWx0ZXJuYXRlU3Vic3QgZm9ybWF0OiAlZCIgJSBmb3JtYXQKKwkJY292ZXJhZ2UgPSByZWFkZXIucmVhZFRhYmxlKG90Q29tbW9uLkNvdmVyYWdlVGFibGUsIG90Rm9udCkKKwkJZ2x5cGhOYW1lcyA9IGNvdmVyYWdlLmdldEdseXBoTmFtZXMoKQorCQlhbHRlcm5hdGVTZXRDb3VudCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJc2VsZi5hbHRlcm5hdGVTZXQgPSBhbHRlcm5hdGVTZXQgPSB7fQorCQlmb3IgaSBpbiByYW5nZShhbHRlcm5hdGVTZXRDb3VudCk6CisJCQlzZXQgPSByZWFkZXIucmVhZFRhYmxlKEFsdGVybmF0ZVNldCwgb3RGb250KQorCQkJYWx0ZXJuYXRlU2V0W2dseXBoTmFtZXNbaV1dID0gc2V0LmdseXBocworCQorCWRlZiBjb21waWxlKHNlbGYsIG90Rm9udCk6CisJCXh4eAorCQorCWRlZiB0b1hNTChzZWxmLCB4bWxXcml0ZXIsIG90Rm9udCk6CisJCWFsdGVybmF0ZXMgPSBzZWxmLmFsdGVybmF0ZVNldC5pdGVtcygpCisJCWFsdGVybmF0ZXMuc29ydCgpCisJCWZvciBpbnB1dCwgc3Vic3RMaXN0IGluIGFsdGVybmF0ZXM6CisJCQl4bWxXcml0ZXIuYmVnaW50YWcoIkFsdGVybmF0ZVNldCIsIFsoImluIiwgaW5wdXQpXSkKKwkJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkJCWZvciBvdXRwdXQgaW4gc3Vic3RMaXN0OgorCQkJCXhtbFdyaXRlci5zaW1wbGV0YWcoIlN1YnN0Iiwgb3V0PW91dHB1dCkKKwkJCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCQl4bWxXcml0ZXIuZW5kdGFnKCJBbHRlcm5hdGVTZXQiKQorCQkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCisKK2NsYXNzIEFsdGVybmF0ZVNldDoKKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIHJlYWRlciwgb3RGb250KToKKwkJZ2x5cGhDb3VudCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJZ2x5cGhJRHMgPSByZWFkZXIucmVhZFVTaG9ydEFycmF5KGdseXBoQ291bnQpCisJCXNlbGYuZ2x5cGhzID0gbWFwKG90Rm9udC5nZXRHbHlwaE5hbWUsIGdseXBoSURzKQorCQorCWRlZiBjb21waWxlKHNlbGYsIG90Rm9udCk6CisJCXh4eAorCisKK2NsYXNzIExpZ2F0dXJlU3Vic3Q6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCByZWFkZXIsIG90Rm9udCk6CisJCWZvcm1hdCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJaWYgZm9ybWF0IDw+IDE6CisJCQlmcm9tIGZvbnRUb29scyBpbXBvcnQgdHRMaWIKKwkJCXJhaXNlIHR0TGliLlRUTGliRXJyb3IsICJ1bmtub3duIExpZ2F0dXJlU3Vic3QgZm9ybWF0OiAlZCIgJSBmb3JtYXQKKwkJY292ZXJhZ2UgPSByZWFkZXIucmVhZFRhYmxlKG90Q29tbW9uLkNvdmVyYWdlVGFibGUsIG90Rm9udCkKKwkJZ2x5cGhOYW1lcyA9IGNvdmVyYWdlLmdldEdseXBoTmFtZXMoKQorCQlsaWdTZXRDb3VudCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJc2VsZi5saWdhdHVyZXMgPSBsaWdhdHVyZXMgPSBbXQorCQlmb3IgaSBpbiByYW5nZShsaWdTZXRDb3VudCk6CisJCQlmaXJzdEdseXBoID0gZ2x5cGhOYW1lc1tpXQorCQkJbGlnU2V0ID0gcmVhZGVyLnJlYWRUYWJsZShMaWdhdHVyZVNldCwgb3RGb250KQorCQkJZm9yIGxpZ2F0dXJlR2x5cGgsIGNvbXBvbmVudHMgaW4gbGlnU2V0LmxpZ2F0dXJlczoKKwkJCQlsaWdhdHVyZXMuYXBwZW5kKCgoZmlyc3RHbHlwaCwpICsgdHVwbGUoY29tcG9uZW50cykpLCBsaWdhdHVyZUdseXBoKQorCQorCWRlZiBjb21waWxlKHNlbGYsIG90Rm9udCk6CisJCXh4eAorCQorCWRlZiB0b1hNTChzZWxmLCB4bWxXcml0ZXIsIG90Rm9udCk6CisJCWltcG9ydCBzdHJpbmcKKwkJZm9yIGlucHV0LCBvdXRwdXQgaW4gc2VsZi5saWdhdHVyZXM6CisJCQl4bWxXcml0ZXIuc2ltcGxldGFnKCJTdWJzdCIsIFsoImluIiwgc3RyaW5nLmpvaW4oaW5wdXQsICIsIikpLCAoIm91dCIsIG91dHB1dCldKQorCQkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCisKK2NsYXNzIExpZ2F0dXJlU2V0OgorCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgcmVhZGVyLCBvdEZvbnQpOgorCQlsaWdhdHVyZUNvdW50ID0gcmVhZGVyLnJlYWRVU2hvcnQoKQorCQlzZWxmLmxpZ2F0dXJlcyA9IGxpZ2F0dXJlcyA9IFtdCisJCWZvciBpIGluIHJhbmdlKGxpZ2F0dXJlQ291bnQpOgorCQkJbGlnID0gcmVhZGVyLnJlYWRUYWJsZShMaWdhdHVyZSwgb3RGb250KQorCQkJbGlnYXR1cmVzLmFwcGVuZCgobGlnLmxpZ2F0dXJlR2x5cGgsIGxpZy5jb21wb25lbnRzKSkKKwkKKwlkZWYgY29tcGlsZShzZWxmLCBvdEZvbnQpOgorCQl4eHgKKworCitjbGFzcyBMaWdhdHVyZToKKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIHJlYWRlciwgb3RGb250KToKKwkJc2VsZi5saWdhdHVyZUdseXBoID0gb3RGb250LmdldEdseXBoTmFtZShyZWFkZXIucmVhZFVTaG9ydCgpKQorCQljb21wQ291bnQgPSByZWFkZXIucmVhZFVTaG9ydCgpCisJCXNlbGYuY29tcG9uZW50cyA9IGNvbXBvbmVudHMgPSBbXQorCQlmb3IgaSBpbiByYW5nZShjb21wQ291bnQtMSk6CisJCQljb21wb25lbnRzLmFwcGVuZChvdEZvbnQuZ2V0R2x5cGhOYW1lKHJlYWRlci5yZWFkVVNob3J0KCkpKQorCQorCWRlZiBjb21waWxlKHNlbGYsIG90Rm9udCk6CisJCXh4eAorCisKK2NsYXNzIENvbnRleHRTdWJzdDoKKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIHJlYWRlciwgb3RGb250KToKKwkJZm9ybWF0ID0gcmVhZGVyLnJlYWRVU2hvcnQoKQorCQlpZiBmb3JtYXQgPT0gMToKKwkJCXNlbGYuZGVjb21waWxlRm9ybWF0MShyZWFkZXIsIG90Rm9udCkKKwkJZWxpZiBmb3JtYXQgPT0gMjoKKwkJCXNlbGYuZGVjb21waWxlRm9ybWF0MihyZWFkZXIsIG90Rm9udCkKKwkJZWxpZiBmb3JtYXQgPT0gMzoKKwkJCXNlbGYuZGVjb21waWxlRm9ybWF0MyhyZWFkZXIsIG90Rm9udCkKKwkJZWxzZToKKwkJCWZyb20gZm9udFRvb2xzIGltcG9ydCB0dExpYgorCQkJcmFpc2UgdHRMaWIuVFRMaWJFcnJvciwgInVua25vd24gQ29udGV4dFN1YnN0IGZvcm1hdDogJWQiICUgZm9ybWF0CisJCisJZGVmIGRlY29tcGlsZUZvcm1hdDEoc2VsZiwgcmVhZGVyLCBvdEZvbnQpOgorCQl4eHgKKwkKKwlkZWYgZGVjb21waWxlRm9ybWF0MihzZWxmLCByZWFkZXIsIG90Rm9udCk6CisJCXh4eAorCQorCWRlZiBkZWNvbXBpbGVGb3JtYXQzKHNlbGYsIHJlYWRlciwgb3RGb250KToKKwkJZ2x5cGhDb3VudCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJc3Vic3RDb3VudCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJY292ZXJhZ2UgPSBbXQorCQlmb3IgaSBpbiByYW5nZShnbHlwaENvdW50KToKKwkJCWNvdmVyYWdlLmFwcGVuZChyZWFkZXIucmVhZFRhYmxlKG90Q29tbW9uLkNvdmVyYWdlVGFibGUsIG90Rm9udCkpCisJCXNlbGYuc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnMgPSBbXQorCQlmb3IgaSBpbiByYW5nZShzdWJzdENvdW50KToKKwkJCWxvb2t1cFJlY29yZCA9IFN1YnN0TG9va3VwUmVjb3JkKCkKKwkJCWxvb2t1cFJlY29yZC5kZWNvbXBpbGUocmVhZGVyLCBvdEZvbnQpCisJCQlzdWJzdGl0dXRpb25zLmFwcGVuZCgoY292ZXJhZ2VbaV0uZ2V0R2x5cGhOYW1lcygpLCBsb29rdXBSZWNvcmQpKQorCQorCWRlZiBjb21waWxlKHNlbGYsIG90Rm9udCk6CisJCXh4eAorCQorCWRlZiB0b1hNTChzZWxmLCB4bWxXcml0ZXIsIG90Rm9udCk6CisJCXhtbFdyaXRlci5jb21tZW50KCJYWFgiKQorCQl4bWxXcml0ZXIubmV3bGluZSgpCisKKworY2xhc3MgQ2hhaW5Db250ZXh0U3Vic3Q6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCByZWFkZXIsIG90Rm9udCk6CisJCXNlbGYuZm9ybWF0ID0gcmVhZGVyLnJlYWRVU2hvcnQoKQorCQlpZiBzZWxmLmZvcm1hdCA9PSAxOgorCQkJc2VsZi5kZWNvbXBpbGVGb3JtYXQxKHJlYWRlciwgb3RGb250KQorCQllbGlmIHNlbGYuZm9ybWF0ID09IDI6CisJCQlzZWxmLmRlY29tcGlsZUZvcm1hdDIocmVhZGVyLCBvdEZvbnQpCisJCWVsaWYgc2VsZi5mb3JtYXQgPT0gMzoKKwkJCXNlbGYuZGVjb21waWxlRm9ybWF0MyhyZWFkZXIsIG90Rm9udCkKKwkJZWxzZToKKwkJCWZyb20gZm9udFRvb2xzIGltcG9ydCB0dExpYgorCQkJcmFpc2UgdHRMaWIuVFRMaWJFcnJvciwgInVua25vd24gQ2hhaW5Db250ZXh0U3Vic3QgZm9ybWF0OiAlZCIgJSBzZWxmLmZvcm1hdAorCQorCWRlZiBkZWNvbXBpbGVGb3JtYXQxKHNlbGYsIHJlYWRlciwgb3RGb250KToKKwkJcGFzcworCQorCWRlZiBkZWNvbXBpbGVGb3JtYXQyKHNlbGYsIHJlYWRlciwgb3RGb250KToKKwkJcGFzcworCQorCWRlZiBkZWNvbXBpbGVGb3JtYXQzKHNlbGYsIHJlYWRlciwgb3RGb250KToKKwkJcGFzcworCQkKKwlkZWYgY29tcGlsZShzZWxmLCBvdEZvbnQpOgorCQl4eHgKKwkKKwlkZWYgdG9YTUwoc2VsZiwgeG1sV3JpdGVyLCBvdEZvbnQpOgorCQl4bWxXcml0ZXIuY29tbWVudCgiWFhYIikKKwkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCisKK2xvb2t1cFR5cGVDbGFzc2VzID0geworCTE6IFNpbmdsZVN1YnN0LAorCTI6IE11bHRpcGxlU3Vic3QsCisJMzogQWx0ZXJuYXRlU3Vic3QsCisJNDogTGlnYXR1cmVTdWJzdCwKKwk1OiBDb250ZXh0U3Vic3QsCisJNjogQ2hhaW5Db250ZXh0U3Vic3QsCit9CisKKworIworIyBTaGFyZWQgY2xhc3NlcworIworCitjbGFzcyBTdWJzdExvb2t1cFJlY29yZDoKKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIHJlYWRlciwgb3RGb250KToKKwkJc2VsZi5zZXF1ZW5jZUluZGV4ID0gcmVhZGVyLnJlYWRVU2hvcnQoKQorCQlzZWxmLmxvb2t1cExpc3RJbmRleCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkKKwlkZWYgY29tcGlsZShzZWxmLCBvdEZvbnQpOgorCQl4eHgKKwpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvTF9UX1NfSF8ucHkgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9MX1RfU19IXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDcwMWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvTF9UX1NfSF8ucHkKQEAgLTAsMCArMSw1MCBAQAoraW1wb3J0IERlZmF1bHRUYWJsZQoraW1wb3J0IGFycmF5CitpbXBvcnQgc3RydWN0Citmcm9tIGZvbnRUb29scy5taXNjLnRleHRUb29scyBpbXBvcnQgc2FmZUV2YWwKKworIyBYWFggSSd2ZSBsb3dlcmVkIHRoZSBzdHJpY3RuZXNzLCB0byBtYWtlIHN1cmUgQXBwbGUncyBvd24gQ2hpY2FnbworIyBYWFggZ2V0cyB0aHJvdWdoLiBUaGV5J3JlIGxvb2tpbmcgaW50byBpdCwgSSBob3BlIHRvIHJhaXNlIHRoZSBzdGFuZGFyZHMKKyMgWFhYIGJhY2sgdG8gbm9ybWFsIGV2ZW50dWFsbHkuCisKK2NsYXNzIHRhYmxlX0xfVF9TX0hfKERlZmF1bHRUYWJsZS5EZWZhdWx0VGFibGUpOgorCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgZGF0YSwgdHRGb250KToKKwkJdmVyc2lvbiwgbnVtR2x5cGhzID0gc3RydWN0LnVucGFjaygiPkhIIiwgZGF0YVs6NF0pCisJCWRhdGEgPSBkYXRhWzQ6XQorCQlhc3NlcnQgdmVyc2lvbiA9PSAwCisJCWFzc2VydCBsZW4oZGF0YSkgPT0gbnVtR2x5cGhzCisJCSMgb3VjaDogdGhlIGFzc2VydGlvbiBpcyBub3QgdHJ1ZSBpbiBDaGljYWdvIQorCQkjYXNzZXJ0IG51bUdseXBocyA9PSB0dEZvbnRbJ21heHAnXS5udW1HbHlwaHMKKwkJeVBlbHMgPSBhcnJheS5hcnJheSgiQiIpCisJCXlQZWxzLmZyb21zdHJpbmcoZGF0YSkKKwkJc2VsZi55UGVscyA9IHt9CisJCWZvciBpIGluIHJhbmdlKG51bUdseXBocyk6CisJCQlzZWxmLnlQZWxzW3R0Rm9udC5nZXRHbHlwaE5hbWUoaSldID0geVBlbHNbaV0KKwkKKwlkZWYgY29tcGlsZShzZWxmLCB0dEZvbnQpOgorCQl2ZXJzaW9uID0gMAorCQluYW1lcyA9IHNlbGYueVBlbHMua2V5cygpCisJCW51bUdseXBocyA9IGxlbihuYW1lcykKKwkJeVBlbHMgPSBbMF0gKiBudW1HbHlwaHMKKwkJIyBvdWNoOiB0aGUgYXNzZXJ0aW9uIGlzIG5vdCB0cnVlIGluIENoaWNhZ28hCisJCSNhc3NlcnQgbGVuKHNlbGYueVBlbHMpID09IHR0Rm9udFsnbWF4cCddLm51bUdseXBocyA9PSBudW1HbHlwaHMKKwkJZm9yIG5hbWUgaW4gbmFtZXM6CisJCQl5UGVsc1t0dEZvbnQuZ2V0R2x5cGhJRChuYW1lKV0gPSBzZWxmLnlQZWxzW25hbWVdCisJCXlQZWxzID0gYXJyYXkuYXJyYXkoIkIiLCB5UGVscykKKwkJcmV0dXJuIHN0cnVjdC5wYWNrKCI+SEgiLCB2ZXJzaW9uLCBudW1HbHlwaHMpICsgeVBlbHMudG9zdHJpbmcoKQorCQorCWRlZiB0b1hNTChzZWxmLCB3cml0ZXIsIHR0Rm9udCk6CisJCW5hbWVzID0gc2VsZi55UGVscy5rZXlzKCkKKwkJbmFtZXMuc29ydCgpCisJCWZvciBuYW1lIGluIG5hbWVzOgorCQkJd3JpdGVyLnNpbXBsZXRhZygieVBlbCIsIG5hbWU9bmFtZSwgdmFsdWU9c2VsZi55UGVsc1tuYW1lXSkKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkKKwlkZWYgZnJvbVhNTChzZWxmLCAobmFtZSwgYXR0cnMsIGNvbnRlbnQpLCB0dEZvbnQpOgorCQlpZiBub3QgaGFzYXR0cihzZWxmLCAieVBlbHMiKToKKwkJCXNlbGYueVBlbHMgPSB7fQorCQlpZiBuYW1lIDw+ICJ5UGVsIjoKKwkJCXJldHVybiAjIGlnbm9yZSB1bmtub3duIHRhZ3MKKwkJc2VsZi55UGVsc1thdHRyc1sibmFtZSJdXSA9IHNhZmVFdmFsKGF0dHJzWyJ2YWx1ZSJdKQorCmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9PX1NfMmZfMi5weSBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL09fU18yZl8yLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5ODI3NWYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9PX1NfMmZfMi5weQpAQCAtMCwwICsxLDE2NCBAQAoraW1wb3J0IERlZmF1bHRUYWJsZQoraW1wb3J0IHNzdHJ1Y3QKK2Zyb20gZm9udFRvb2xzLm1pc2MudGV4dFRvb2xzIGltcG9ydCBzYWZlRXZhbCwgbnVtMmJpbmFyeSwgYmluYXJ5Mm51bQorCisjIHBhbm9zZSBjbGFzc2lmaWNhdGlvbgorCitwYW5vc2VGb3JtYXQgPSAiIiIKKwliRmFtaWx5VHlwZToJCUIKKwliU2VyaWZTdHlsZToJCUIKKwliV2VpZ2h0OgkJCUIKKwliUHJvcG9ydGlvbjoJCUIKKwliQ29udHJhc3Q6CQkJQgorCWJTdHJva2VWYXJpYXRpb246CUIKKwliQXJtU3R5bGU6CQkJQgorCWJMZXR0ZXJGb3JtOgkJQgorCWJNaWRsaW5lOgkJCUIKKwliWEhlaWdodDoJCQlCCisiIiIKKworY2xhc3MgUGFub3NlOgorCQorCWRlZiB0b1hNTChzZWxmLCB3cml0ZXIsIHR0Rm9udCk6CisJCWZvcm1hdHN0cmluZywgbmFtZXMsIGZpeGVzID0gc3N0cnVjdC5nZXRmb3JtYXQocGFub3NlRm9ybWF0KQorCQlmb3IgbmFtZSBpbiBuYW1lczoKKwkJCXdyaXRlci5zaW1wbGV0YWcobmFtZSwgdmFsdWU9Z2V0YXR0cihzZWxmLCBuYW1lKSkKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkKKwlkZWYgZnJvbVhNTChzZWxmLCAobmFtZSwgYXR0cnMsIGNvbnRlbnQpLCB0dEZvbnQpOgorCQlzZXRhdHRyKHNlbGYsIG5hbWUsIHNhZmVFdmFsKGF0dHJzWyJ2YWx1ZSJdKSkKKworCisjICdzZm50JyBPUy8yIGFuZCBXaW5kb3dzIE1ldHJpY3MgdGFibGUgLSAnT1MvMicKKworT1MyX2Zvcm1hdF8wID0gIiIiCisJPgkjIGJpZyBlbmRpYW4KKwl2ZXJzaW9uOgkJCQlICQkjIHZlcnNpb24KKwl4QXZnQ2hhcldpZHRoOgkJCWgJCSMgYXZlcmFnZSBjaGFyYWN0ZXIgd2lkdGgKKwl1c1dlaWdodENsYXNzOgkJCUgJCSMgZGVncmVlIG9mIHRoaWNrbmVzcyBvZiBzdHJva2VzCisJdXNXaWR0aENsYXNzOgkJCUgJCSMgYXNwZWN0IHJhdGlvCisJZnNUeXBlOgkJCQkJaAkJIyB0eXBlIGZsYWdzCisJeVN1YnNjcmlwdFhTaXplOgkJaAkJIyBzdWJzY3JpcHQgaG9yaXpvbnRhbCBmb250IHNpemUKKwl5U3Vic2NyaXB0WVNpemU6CQloCQkjIHN1YnNjcmlwdCB2ZXJ0aWNhbCBmb250IHNpemUKKwl5U3Vic2NyaXB0WE9mZnNldDoJCWgJCSMgc3Vic2NyaXB0IHggb2Zmc2V0CisJeVN1YnNjcmlwdFlPZmZzZXQ6CQloCQkjIHN1YnNjcmlwdCB5IG9mZnNldAorCXlTdXBlcnNjcmlwdFhTaXplOgkJaAkJIyBzdXBlcnNjcmlwdCBob3Jpem9udGFsIGZvbnQgc2l6ZQorCXlTdXBlcnNjcmlwdFlTaXplOgkJaAkJIyBzdXBlcnNjcmlwdCB2ZXJ0aWNhbCBmb250IHNpemUKKwl5U3VwZXJzY3JpcHRYT2Zmc2V0OgloCQkjIHN1cGVyc2NyaXB0IHggb2Zmc2V0CisJeVN1cGVyc2NyaXB0WU9mZnNldDoJaAkJIyBzdXBlcnNjcmlwdCB5IG9mZnNldAorCXlTdHJpa2VvdXRTaXplOgkJCWgJCSMgc3RyaWtlb3V0IHNpemUKKwl5U3RyaWtlb3V0UG9zaXRpb246CQloCQkjIHN0cmlrZW91dCBwb3NpdGlvbgorCXNGYW1pbHlDbGFzczoJCQloCQkjIGZvbnQgZmFtaWx5IGNsYXNzIGFuZCBzdWJjbGFzcworCXBhbm9zZTogCQkJCTEwcwkJIyBwYW5vc2UgY2xhc3NpZmljYXRpb24gbnVtYmVyCisJdWxVbmljb2RlUmFuZ2UxOgkJbAkJIyBjaGFyYWN0ZXIgcmFuZ2UKKwl1bFVuaWNvZGVSYW5nZTI6CQlsCQkjIGNoYXJhY3RlciByYW5nZQorCXVsVW5pY29kZVJhbmdlMzoJCWwJCSMgY2hhcmFjdGVyIHJhbmdlCisJdWxVbmljb2RlUmFuZ2U0OgkJbAkJIyBjaGFyYWN0ZXIgcmFuZ2UKKwlhY2hWZW5kSUQ6CQkJCTRzCQkjIGZvbnQgdmVuZG9yIGlkZW50aWZpY2F0aW9uCisJZnNTZWxlY3Rpb246CQkJSAkJIyBmb250IHNlbGVjdGlvbiBmbGFncworCWZzRmlyc3RDaGFySW5kZXg6CQlICQkjIGZpcnN0IHVuaWNvZGUgY2hhcmFjdGVyIGluZGV4CisJZnNMYXN0Q2hhckluZGV4OgkJSAkJIyBsYXN0IHVuaWNvZGUgY2hhcmFjdGVyIGluZGV4CisJdXNUeXBvQXNjZW5kZXI6CQkJSAkJIyB0eXBvZ3JhcGhpYyBhc2NlbmRlcgorCXVzVHlwb0Rlc2NlbmRlcjoJCUgJCSMgdHlwb2dyYXBoaWMgZGVzY2VuZGVyCisJdXNUeXBvTGluZUdhcDoJCQlICQkjIHR5cG9ncmFwaGljIGxpbmUgZ2FwCisJdXNXaW5Bc2NlbnQ6CQkJSAkJIyBXaW5kb3dzIGFzY2VuZGVyCisJdXNXaW5EZXNjZW50OgkJCUgJCSMgV2luZG93cyBkZXNjZW5kZXIKKyIiIgorCitPUzJfZm9ybWF0XzFfYWRkaXRpb24gPSAgIiIiCisJdWxDb2RlUGFnZVJhbmdlMToJbAorCXVsQ29kZVBhZ2VSYW5nZTI6CWwJCisiIiIKKworT1MyX2Zvcm1hdF8yX2FkZGl0aW9uID0gIE9TMl9mb3JtYXRfMV9hZGRpdGlvbiArICIiIgorCXN4SGVpZ2h0OgkJCWgKKwlzQ2FwSGVpZ2h0OgkJCWgKKwl1c0RlZmF1bHRDaGFyOgkJSAorCXVzQnJlYWtDaGFyOgkJSAorCXVzTWF4Q29udGV4OgkJSAorIiIiCisKK2JpZ2VuZGlhbiA9ICIJPgkjIGJpZyBlbmRpYW5cbiIKKworT1MyX2Zvcm1hdF8xID0gT1MyX2Zvcm1hdF8wICsgT1MyX2Zvcm1hdF8xX2FkZGl0aW9uCitPUzJfZm9ybWF0XzIgPSBPUzJfZm9ybWF0XzAgKyBPUzJfZm9ybWF0XzJfYWRkaXRpb24KK09TMl9mb3JtYXRfMV9hZGRpdGlvbiA9IGJpZ2VuZGlhbiArIE9TMl9mb3JtYXRfMV9hZGRpdGlvbgorT1MyX2Zvcm1hdF8yX2FkZGl0aW9uID0gYmlnZW5kaWFuICsgT1MyX2Zvcm1hdF8yX2FkZGl0aW9uCisKKworY2xhc3MgdGFibGVfT19TXzJmXzIoRGVmYXVsdFRhYmxlLkRlZmF1bHRUYWJsZSk6CisJCisJIiIidGhlIE9TLzIgdGFibGUiIiIKKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIGRhdGEsIHR0Rm9udCk6CisJCWR1bW15LCBkYXRhID0gc3N0cnVjdC51bnBhY2syKE9TMl9mb3JtYXRfMCwgZGF0YSwgc2VsZikKKwkJaWYgc2VsZi52ZXJzaW9uID09IDE6CisJCQlzc3RydWN0LnVucGFjayhPUzJfZm9ybWF0XzFfYWRkaXRpb24sIGRhdGEsIHNlbGYpCisJCWVsaWYgc2VsZi52ZXJzaW9uID09IDI6CisJCQlzc3RydWN0LnVucGFjayhPUzJfZm9ybWF0XzJfYWRkaXRpb24sIGRhdGEsIHNlbGYpCisJCWVsaWYgc2VsZi52ZXJzaW9uIDw+IDA6CisJCQlmcm9tIGZvbnRUb29scyBpbXBvcnQgdHRMaWIKKwkJCXJhaXNlIHR0TGliLlRUTGliRXJyb3IsICJ1bmtub3duIGZvcm1hdCBmb3IgT1MvMiB0YWJsZTogdmVyc2lvbiAlcyIgJSBzZWxmLnZlcnNpb24KKwkJc2VsZi5wYW5vc2UgPSBzc3RydWN0LnVucGFjayhwYW5vc2VGb3JtYXQsIHNlbGYucGFub3NlLCBQYW5vc2UoKSkKKwkKKwlkZWYgY29tcGlsZShzZWxmLCB0dEZvbnQpOgorCQlwYW5vc2UgPSBzZWxmLnBhbm9zZQorCQlzZWxmLnBhbm9zZSA9IHNzdHJ1Y3QucGFjayhwYW5vc2VGb3JtYXQsIHNlbGYucGFub3NlKQorCQlpZiBzZWxmLnZlcnNpb24gPT0gMDoKKwkJCWRhdGEgPSBzc3RydWN0LnBhY2soT1MyX2Zvcm1hdF8wLCBzZWxmKQorCQllbGlmIHNlbGYudmVyc2lvbiA9PSAxOgorCQkJZGF0YSA9IHNzdHJ1Y3QucGFjayhPUzJfZm9ybWF0XzEsIHNlbGYpCisJCWVsaWYgc2VsZi52ZXJzaW9uID09IDI6CisJCQlkYXRhID0gc3N0cnVjdC5wYWNrKE9TMl9mb3JtYXRfMiwgc2VsZikKKwkJZWxzZToKKwkJCWZyb20gZm9udFRvb2xzIGltcG9ydCB0dExpYgorCQkJcmFpc2UgdHRMaWIuVFRMaWJFcnJvciwgInVua25vd24gZm9ybWF0IGZvciBPUy8yIHRhYmxlOiB2ZXJzaW9uICVzIiAlIHNlbGYudmVyc2lvbgorCQlzZWxmLnBhbm9zZSA9IHBhbm9zZQorCQlyZXR1cm4gZGF0YQorCQorCWRlZiB0b1hNTChzZWxmLCB3cml0ZXIsIHR0Rm9udCk6CisJCWlmIHNlbGYudmVyc2lvbiA9PSAxOgorCQkJZm9ybWF0ID0gT1MyX2Zvcm1hdF8xCisJCWVsaWYgc2VsZi52ZXJzaW9uID09IDI6CisJCQlmb3JtYXQgPSBPUzJfZm9ybWF0XzIKKwkJZWxzZToKKwkJCWZvcm1hdCA9IE9TMl9mb3JtYXRfMAorCQlmb3JtYXRzdHJpbmcsIG5hbWVzLCBmaXhlcyA9IHNzdHJ1Y3QuZ2V0Zm9ybWF0KGZvcm1hdCkKKwkJZm9yIG5hbWUgaW4gbmFtZXM6CisJCQl2YWx1ZSA9IGdldGF0dHIoc2VsZiwgbmFtZSkKKwkJCWlmIHR5cGUodmFsdWUpID09IHR5cGUoMEwpOgorCQkJCXZhbHVlID0gaW50KHZhbHVlKQorCQkJaWYgbmFtZT09InBhbm9zZSI6CisJCQkJd3JpdGVyLmJlZ2ludGFnKCJwYW5vc2UiKQorCQkJCXdyaXRlci5uZXdsaW5lKCkKKwkJCQl2YWx1ZS50b1hNTCh3cml0ZXIsIHR0Rm9udCkKKwkJCQl3cml0ZXIuZW5kdGFnKCJwYW5vc2UiKQorCQkJZWxpZiBuYW1lIGluICgidWxVbmljb2RlUmFuZ2UxIiwgInVsVW5pY29kZVJhbmdlMiIsIAorCQkJCQkidWxVbmljb2RlUmFuZ2UzIiwgInVsVW5pY29kZVJhbmdlNCIsCisJCQkJCSJ1bENvZGVQYWdlUmFuZ2UxIiwgInVsQ29kZVBhZ2VSYW5nZTIiKToKKwkJCQl3cml0ZXIuc2ltcGxldGFnKG5hbWUsIHZhbHVlPW51bTJiaW5hcnkodmFsdWUpKQorCQkJZWxpZiBuYW1lIGluICgiZnNUeXBlIiwgImZzU2VsZWN0aW9uIik6CisJCQkJd3JpdGVyLnNpbXBsZXRhZyhuYW1lLCB2YWx1ZT1udW0yYmluYXJ5KHZhbHVlLCAxNikpCisJCQllbGlmIG5hbWUgPT0gImFjaFZlbmRJRCI6CisJCQkJd3JpdGVyLnNpbXBsZXRhZyhuYW1lLCB2YWx1ZT1yZXByKHZhbHVlKVsxOi0xXSkKKwkJCWVsc2U6CisJCQkJd3JpdGVyLnNpbXBsZXRhZyhuYW1lLCB2YWx1ZT12YWx1ZSkKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkKKwlkZWYgZnJvbVhNTChzZWxmLCAobmFtZSwgYXR0cnMsIGNvbnRlbnQpLCB0dEZvbnQpOgorCQlpZiBuYW1lID09ICJwYW5vc2UiOgorCQkJc2VsZi5wYW5vc2UgPSBwYW5vc2UgPSBQYW5vc2UoKQorCQkJZm9yIGVsZW1lbnQgaW4gY29udGVudDoKKwkJCQlpZiB0eXBlKGVsZW1lbnQpID09IHR5cGUoKCkpOgorCQkJCQlwYW5vc2UuZnJvbVhNTChlbGVtZW50LCB0dEZvbnQpCisJCWVsaWYgbmFtZSBpbiAoInVsVW5pY29kZVJhbmdlMSIsICJ1bFVuaWNvZGVSYW5nZTIiLCAKKwkJCQkidWxVbmljb2RlUmFuZ2UzIiwgInVsVW5pY29kZVJhbmdlNCIsCisJCQkJInVsQ29kZVBhZ2VSYW5nZTEiLCAidWxDb2RlUGFnZVJhbmdlMiIsCisJCQkJImZzVHlwZSIsICJmc1NlbGVjdGlvbiIpOgorCQkJc2V0YXR0cihzZWxmLCBuYW1lLCBiaW5hcnkybnVtKGF0dHJzWyJ2YWx1ZSJdKSkKKwkJZWxpZiBuYW1lID09ICJhY2hWZW5kSUQiOgorCQkJc2V0YXR0cihzZWxmLCBuYW1lLCBzYWZlRXZhbCgiJycnIiArIGF0dHJzWyJ2YWx1ZSJdICsgIicnJyIpKQorCQllbHNlOgorCQkJc2V0YXR0cihzZWxmLCBuYW1lLCBzYWZlRXZhbChhdHRyc1sidmFsdWUiXSkpCisKKwpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvVF9TX0lfXzAucHkgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9UX1NfSV9fMC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODhkMjlhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvVF9TX0lfXzAucHkKQEAgLTAsMCArMSw0NSBAQAoraW1wb3J0IERlZmF1bHRUYWJsZQoraW1wb3J0IHN0cnVjdAorCit0c2kwRm9ybWF0ID0gJz5ISGwnCisKK2RlZiBmaXhsb25ncygoZ2x5cGhJRCwgdGV4dExlbmd0aCwgdGV4dE9mZnNldCkpOgorCXJldHVybiBpbnQoZ2x5cGhJRCksIGludCh0ZXh0TGVuZ3RoKSwgdGV4dE9mZnNldAkKKworCitjbGFzcyB0YWJsZV9UX1NfSV9fMChEZWZhdWx0VGFibGUuRGVmYXVsdFRhYmxlKToKKwkKKwlkZXBlbmRlbmNpZXMgPSBbIlRTSTEiXQorCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgZGF0YSwgdHRGb250KToKKwkJbnVtR2x5cGhzID0gdHRGb250WydtYXhwJ10ubnVtR2x5cGhzCisJCWluZGljZXMgPSBbXQorCQlzaXplID0gc3RydWN0LmNhbGNzaXplKHRzaTBGb3JtYXQpCisJCWZvciBpIGluIHJhbmdlKG51bUdseXBocyArIDUpOgorCQkJZ2x5cGhJRCwgdGV4dExlbmd0aCwgdGV4dE9mZnNldCA9IGZpeGxvbmdzKHN0cnVjdC51bnBhY2sodHNpMEZvcm1hdCwgZGF0YVs6c2l6ZV0pKQorCQkJaW5kaWNlcy5hcHBlbmQoKGdseXBoSUQsIHRleHRMZW5ndGgsIHRleHRPZmZzZXQpKQorCQkJZGF0YSA9IGRhdGFbc2l6ZTpdCisJCWFzc2VydCBsZW4oZGF0YSkgPT0gMAorCQlhc3NlcnQgaW5kaWNlc1stNV0gPT0gKDBYRkZGRSwgMCwgMHhBQkZDMUYzNCksICJiYWQgbWFnaWMgbnVtYmVyIgorCQlzZWxmLmluZGljZXMgPSBpbmRpY2VzWzotNV0KKwkJc2VsZi5leHRyYV9pbmRpY2VzID0gaW5kaWNlc1stNDpdCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgdHRGb250KToKKwkJZGF0YSA9ICIiCisJCXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUodHNpMEZvcm1hdCkKKwkJZm9yIGluZGV4LCB0ZXh0TGVuZ3RoLCB0ZXh0T2Zmc2V0IGluIHNlbGYuaW5kaWNlczoKKwkJCWRhdGEgPSBkYXRhICsgc3RydWN0LnBhY2sodHNpMEZvcm1hdCwgaW5kZXgsIHRleHRMZW5ndGgsIHRleHRPZmZzZXQpCisJCWRhdGEgPSBkYXRhICsgc3RydWN0LnBhY2sodHNpMEZvcm1hdCwgMFhGRkZFLCAwLCAweEFCRkMxRjM0KQorCQlmb3IgaW5kZXgsIHRleHRMZW5ndGgsIHRleHRPZmZzZXQgaW4gc2VsZi5leHRyYV9pbmRpY2VzOgorCQkJZGF0YSA9IGRhdGEgKyBzdHJ1Y3QucGFjayh0c2kwRm9ybWF0LCBpbmRleCwgdGV4dExlbmd0aCwgdGV4dE9mZnNldCkKKwkJcmV0dXJuIGRhdGEKKwkKKwlkZWYgc2V0KHNlbGYsIGluZGljZXMsIGV4dHJhX2luZGljZXMpOgorCQkjIGdldHMgY2FsbGVkIGJ5ICdUU0kxJyBvciAnVFNJMycKKwkJc2VsZi5pbmRpY2VzID0gaW5kaWNlcworCQlzZWxmLmV4dHJhX2luZGljZXMgPSBleHRyYV9pbmRpY2VzCisJCisJZGVmIHRvWE1MKHNlbGYsIHdyaXRlciwgdHRGb250KToKKwkJd3JpdGVyLmNvbW1lbnQoIlRoaXMgdGFibGUgd2lsbCBiZSBjYWxjdWxhdGVkIGJ5IHRoZSBjb21waWxlciIpCisJCXdyaXRlci5uZXdsaW5lKCkKKwpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvVF9TX0lfXzEucHkgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9UX1NfSV9fMS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWU0ZTE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvVF9TX0lfXzEucHkKQEAgLTAsMCArMSwxMTYgQEAKK2ltcG9ydCBEZWZhdWx0VGFibGUKK2ltcG9ydCBzdHJpbmcKKworY2xhc3MgdGFibGVfVF9TX0lfXzEoRGVmYXVsdFRhYmxlLkRlZmF1bHRUYWJsZSk6CisJCisJZXh0cmFzID0gezB4ZmZmYTogInBwZ20iLCAweGZmZmI6ICJjdnQiLCAweGZmZmM6ICJyZXNlcnZlZCIsIDB4ZmZmZDogImZwZ20ifQorCQorCWluZGV4dGFibGUgPSAiVFNJMCIKKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIGRhdGEsIHR0Rm9udCk6CisJCWluZGV4dGFibGUgPSB0dEZvbnRbc2VsZi5pbmRleHRhYmxlXQorCQlzZWxmLmdseXBoUHJvZ3JhbXMgPSB7fQorCQlmb3IgaSBpbiByYW5nZShsZW4oaW5kZXh0YWJsZS5pbmRpY2VzKSk6CisJCQlnbHlwaElELCB0ZXh0TGVuZ3RoLCB0ZXh0T2Zmc2V0ID0gaW5kZXh0YWJsZS5pbmRpY2VzW2ldCisJCQlpZiB0ZXh0TGVuZ3RoID09IDB4ODAwMDoKKwkJCQkjIFVnaC4gSGkgQmVhdCEKKwkJCQl0ZXh0TGVuZ3RoID0gaW5kZXh0YWJsZS5pbmRpY2VzW2krMV1bMV0KKwkJCWlmIHRleHRMZW5ndGggPiAweDgwMDA6CisJCQkJcGFzcyAgIyBYWFggSG1tbS4KKwkJCXRleHQgPSBkYXRhW3RleHRPZmZzZXQ6dGV4dE9mZnNldCt0ZXh0TGVuZ3RoXQorCQkJYXNzZXJ0IGxlbih0ZXh0KSA9PSB0ZXh0TGVuZ3RoCisJCQlpZiB0ZXh0OgorCQkJCXNlbGYuZ2x5cGhQcm9ncmFtc1t0dEZvbnQuZ2V0R2x5cGhOYW1lKGdseXBoSUQpXSA9IHRleHQKKwkJCisJCXNlbGYuZXh0cmFQcm9ncmFtcyA9IHt9CisJCWZvciBpIGluIHJhbmdlKGxlbihpbmRleHRhYmxlLmV4dHJhX2luZGljZXMpKToKKwkJCWV4dHJhQ29kZSwgdGV4dExlbmd0aCwgdGV4dE9mZnNldCA9IGluZGV4dGFibGUuZXh0cmFfaW5kaWNlc1tpXQorCQkJaWYgdGV4dExlbmd0aCA9PSAweDgwMDA6CisJCQkJaWYgZXh0cmFOYW1lID09ICJmcGdtIjoJIyB0aGlzIGlzIHRoZSBsYXN0IG9uZQorCQkJCQl0ZXh0TGVuZ3RoID0gbGVuKGRhdGEpIC0gdGV4dE9mZnNldAorCQkJCWVsc2U6CisJCQkJCXRleHRMZW5ndGggPSBpbmRleHRhYmxlLmV4dHJhX2luZGljZXNbaSsxXVsxXQorCQkJdGV4dCA9IGRhdGFbdGV4dE9mZnNldDp0ZXh0T2Zmc2V0K3RleHRMZW5ndGhdCisJCQlhc3NlcnQgbGVuKHRleHQpID09IHRleHRMZW5ndGgKKwkJCWlmIHRleHQ6CisJCQkJc2VsZi5leHRyYVByb2dyYW1zW3NlbGYuZXh0cmFzW2V4dHJhQ29kZV1dID0gdGV4dAorCQorCWRlZiBjb21waWxlKHNlbGYsIHR0Rm9udCk6CisJCWRhdGEgPSAnJworCQlpbmRleHRhYmxlID0gdHRGb250W3NlbGYuaW5kZXh0YWJsZV0KKwkJZ2x5cGhOYW1lcyA9IHR0Rm9udC5nZXRHbHlwaE9yZGVyKCkKKwkJCisJCWluZGljZXMgPSBbXQorCQlmb3IgaSBpbiByYW5nZShsZW4oZ2x5cGhOYW1lcykpOgorCQkJaWYgbGVuKGRhdGEpICUgMjoKKwkJCQlkYXRhID0gZGF0YSArICJcMDE1IiAgIyBhbGlnbiBvbiAyLWJ5dGUgYm91bmRhcmllcywgZmlsbCB3aXRoIHJldHVybiBjaGFycy4gWXVtLgorCQkJbmFtZSA9IGdseXBoTmFtZXNbaV0KKwkJCWlmIHNlbGYuZ2x5cGhQcm9ncmFtcy5oYXNfa2V5KG5hbWUpOgorCQkJCXRleHQgPSBzZWxmLmdseXBoUHJvZ3JhbXNbbmFtZV0KKwkJCWVsc2U6CisJCQkJdGV4dCA9ICIiCisJCQl0ZXh0TGVuZ3RoID0gbGVuKHRleHQpCisJCQlpZiB0ZXh0TGVuZ3RoID49IDB4ODAwMDoKKwkJCQl0ZXh0TGVuZ3RoID0gMHg4MDAwICAjIFhYWCA/Pz8KKwkJCWluZGljZXMuYXBwZW5kKChpLCB0ZXh0TGVuZ3RoLCBsZW4oZGF0YSkpKQorCQkJZGF0YSA9IGRhdGEgKyB0ZXh0CisJCQorCQlleHRyYV9pbmRpY2VzID0gW10KKwkJY29kZXMgPSBzZWxmLmV4dHJhcy5pdGVtcygpCisJCWNvZGVzLnNvcnQoKQorCQlmb3IgaSBpbiByYW5nZShsZW4oY29kZXMpKToKKwkJCWlmIGxlbihkYXRhKSAlIDI6CisJCQkJZGF0YSA9IGRhdGEgKyAiXDAxNSIgICMgYWxpZ24gb24gMi1ieXRlIGJvdW5kYXJpZXMsIGZpbGwgd2l0aCByZXR1cm4gY2hhcnMuCisJCQljb2RlLCBuYW1lID0gY29kZXNbaV0KKwkJCWlmIHNlbGYuZXh0cmFQcm9ncmFtcy5oYXNfa2V5KG5hbWUpOgorCQkJCXRleHQgPSBzZWxmLmV4dHJhUHJvZ3JhbXNbbmFtZV0KKwkJCWVsc2U6CisJCQkJdGV4dCA9ICIiCisJCQl0ZXh0TGVuZ3RoID0gbGVuKHRleHQpCisJCQlpZiB0ZXh0TGVuZ3RoID49IDB4ODAwMDoKKwkJCQl0ZXh0TGVuZ3RoID0gMHg4MDAwICAjIFhYWCA/Pz8KKwkJCWV4dHJhX2luZGljZXMuYXBwZW5kKChjb2RlLCB0ZXh0TGVuZ3RoLCBsZW4oZGF0YSkpKQorCQkJZGF0YSA9IGRhdGEgKyB0ZXh0CisJCWluZGV4dGFibGUuc2V0KGluZGljZXMsIGV4dHJhX2luZGljZXMpCisJCXJldHVybiBkYXRhCisJCisJZGVmIHRvWE1MKHNlbGYsIHdyaXRlciwgdHRGb250KToKKwkJbmFtZXMgPSBzZWxmLmdseXBoUHJvZ3JhbXMua2V5cygpCisJCW5hbWVzLnNvcnQoKQorCQl3cml0ZXIubmV3bGluZSgpCisJCWZvciBuYW1lIGluIG5hbWVzOgorCQkJdGV4dCA9IHNlbGYuZ2x5cGhQcm9ncmFtc1tuYW1lXQorCQkJaWYgbm90IHRleHQ6CisJCQkJY29udGludWUKKwkJCXdyaXRlci5iZWdpbnRhZygiZ2x5cGhQcm9ncmFtIiwgbmFtZT1uYW1lKQorCQkJd3JpdGVyLm5ld2xpbmUoKQorCQkJd3JpdGVyLndyaXRlX25vaW5kZW50KHN0cmluZy5yZXBsYWNlKHRleHQsICJcciIsICJcbiIpKQorCQkJd3JpdGVyLm5ld2xpbmUoKQorCQkJd3JpdGVyLmVuZHRhZygiZ2x5cGhQcm9ncmFtIikKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkJZXh0cmFfbmFtZXMgPSBzZWxmLmV4dHJhUHJvZ3JhbXMua2V5cygpCisJCWV4dHJhX25hbWVzLnNvcnQoKQorCQlmb3IgbmFtZSBpbiBleHRyYV9uYW1lczoKKwkJCXRleHQgPSBzZWxmLmV4dHJhUHJvZ3JhbXNbbmFtZV0KKwkJCWlmIG5vdCB0ZXh0OgorCQkJCWNvbnRpbnVlCisJCQl3cml0ZXIuYmVnaW50YWcoImV4dHJhUHJvZ3JhbSIsIG5hbWU9bmFtZSkKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkJCXdyaXRlci53cml0ZV9ub2luZGVudChzdHJpbmcucmVwbGFjZSh0ZXh0LCAiXHIiLCAiXG4iKSkKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkJCXdyaXRlci5lbmR0YWcoImV4dHJhUHJvZ3JhbSIpCisJCQl3cml0ZXIubmV3bGluZSgpCisJCQl3cml0ZXIubmV3bGluZSgpCisJCisJZGVmIGZyb21YTUwoc2VsZiwgKG5hbWUsIGF0dHJzLCBjb250ZW50KSwgdHRGb250KToKKwkJaWYgbm90IGhhc2F0dHIoc2VsZiwgImdseXBoUHJvZ3JhbXMiKToKKwkJCXNlbGYuZ2x5cGhQcm9ncmFtcyA9IHt9CisJCQlzZWxmLmV4dHJhUHJvZ3JhbXMgPSB7fQorCQlsaW5lcyA9IHN0cmluZy5zcGxpdChzdHJpbmcucmVwbGFjZShzdHJpbmcuam9pbihjb250ZW50LCAiIiksICJcciIsICJcbiIpLCAiXG4iKQorCQl0ZXh0ID0gc3RyaW5nLmpvaW4obGluZXNbMTotMV0sICJcciIpCisJCWlmIG5hbWUgPT0gImdseXBoUHJvZ3JhbSI6CisJCQlzZWxmLmdseXBoUHJvZ3JhbXNbYXR0cnNbIm5hbWUiXV0gPSB0ZXh0CisJCWVsaWYgbmFtZSA9PSAiZXh0cmFQcm9ncmFtIjoKKwkJCXNlbGYuZXh0cmFQcm9ncmFtc1thdHRyc1sibmFtZSJdXSA9IHRleHQKKwpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvVF9TX0lfXzIucHkgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9UX1NfSV9fMi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWMwMmFiCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvVF9TX0lfXzIucHkKQEAgLTAsMCArMSw4IEBACitmcm9tIGZvbnRUb29scyBpbXBvcnQgdHRMaWIKKworc3VwZXJjbGFzcyA9IHR0TGliLmdldFRhYmxlQ2xhc3MoIlRTSTAiKQorCitjbGFzcyB0YWJsZV9UX1NfSV9fMihzdXBlcmNsYXNzKToKKwkKKwlkZXBlbmRlbmNpZXMgPSBbIlRTSTMiXQorCmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9UX1NfSV9fMy5weSBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL1RfU19JX18zLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNDA4N2MKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9UX1NfSV9fMy5weQpAQCAtMCwwICsxLDExIEBACitmcm9tIGZvbnRUb29scyBpbXBvcnQgdHRMaWIKKworc3VwZXJjbGFzcyA9IHR0TGliLmdldFRhYmxlQ2xhc3MoIlRTSTEiKQorCitjbGFzcyB0YWJsZV9UX1NfSV9fMyhzdXBlcmNsYXNzKToKKwkKKwlleHRyYXMgPSB7MHhmZmZhOiAicmVzZXJ2ZWQwIiwgMHhmZmZiOiAicmVzZXJ2ZWQxIiwgMHhmZmZjOiAicmVzZXJ2ZWQyIiwgMHhmZmZkOiAicmVzZXJ2ZWQzIn0KKwkKKwlpbmRleHRhYmxlID0gIlRTSTIiCisKKwpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvVF9TX0lfXzUucHkgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9UX1NfSV9fNS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWI5ZWUxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvVF9TX0lfXzUucHkKQEAgLTAsMCArMSw0MiBAQAoraW1wb3J0IERlZmF1bHRUYWJsZQoraW1wb3J0IGFycmF5Citmcm9tIGZvbnRUb29scyBpbXBvcnQgdHRMaWIKK2Zyb20gZm9udFRvb2xzLm1pc2MudGV4dFRvb2xzIGltcG9ydCBzYWZlRXZhbAorCisKK2NsYXNzIHRhYmxlX1RfU19JX181KERlZmF1bHRUYWJsZS5EZWZhdWx0VGFibGUpOgorCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgZGF0YSwgdHRGb250KToKKwkJbnVtR2x5cGhzID0gdHRGb250WydtYXhwJ10ubnVtR2x5cGhzCisJCWFzc2VydCBsZW4oZGF0YSkgPT0gMiAqIG51bUdseXBocworCQlhID0gYXJyYXkuYXJyYXkoIkgiKQorCQlhLmZyb21zdHJpbmcoZGF0YSkKKwkJaWYgdHRMaWIuZW5kaWFuIDw+ICJiaWciOgorCQkJYS5ieXRlc3dhcCgpCisJCXNlbGYuZ2x5cGhHcm91cGluZyA9IHt9CisJCWZvciBpIGluIHJhbmdlKG51bUdseXBocyk6CisJCQlzZWxmLmdseXBoR3JvdXBpbmdbdHRGb250LmdldEdseXBoTmFtZShpKV0gPSBhW2ldCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgdHRGb250KToKKwkJZ2x5cGhOYW1lcyA9IHR0Rm9udC5nZXRHbHlwaE9yZGVyKCkKKwkJYSA9IGFycmF5LmFycmF5KCJIIikKKwkJZm9yIGkgaW4gcmFuZ2UobGVuKGdseXBoTmFtZXMpKToKKwkJCWEuYXBwZW5kKHNlbGYuZ2x5cGhHcm91cGluZ1tnbHlwaE5hbWVzW2ldXSkKKwkJaWYgdHRMaWIuZW5kaWFuIDw+ICJiaWciOgorCQkJYS5ieXRlc3dhcCgpCisJCXJldHVybiBhLnRvc3RyaW5nKCkKKwkKKwlkZWYgdG9YTUwoc2VsZiwgd3JpdGVyLCB0dEZvbnQpOgorCQluYW1lcyA9IHNlbGYuZ2x5cGhHcm91cGluZy5rZXlzKCkKKwkJbmFtZXMuc29ydCgpCisJCWZvciBnbHlwaE5hbWUgaW4gbmFtZXM6CisJCQl3cml0ZXIuc2ltcGxldGFnKCJnbHlwaGdyb3VwIiwgbmFtZT1nbHlwaE5hbWUsIHZhbHVlPXNlbGYuZ2x5cGhHcm91cGluZ1tnbHlwaE5hbWVdKQorCQkJd3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIHR0Rm9udCk6CisJCWlmIG5vdCBoYXNhdHRyKHNlbGYsICJnbHlwaEdyb3VwaW5nIik6CisJCQlzZWxmLmdseXBoR3JvdXBpbmcgPSB7fQorCQlpZiBuYW1lIDw+ICJnbHlwaGdyb3VwIjoKKwkJCXJldHVybgorCQlzZWxmLmdseXBoR3JvdXBpbmdbYXR0cnNbIm5hbWUiXV0gPSBzYWZlRXZhbChhdHRyc1sidmFsdWUiXSkKKwpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvX19pbml0X18ucHkgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjE3NjM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvX19pbml0X18ucHkKQEAgLTAsMCArMSBAQAorIyBkdW1teSBmaWxlLCBzbyBQeXRob24ga25vd3MgdHRMaWIudGFibGVzIGlzIGEgc3VicGFja2FnZQpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvX2NfbV9hX3AucHkgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9fY19tX2FfcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDY3YWM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvX2NfbV9hX3AucHkKQEAgLTAsMCArMSwzOTcgQEAKK2ltcG9ydCBEZWZhdWx0VGFibGUKK2ltcG9ydCBzdHJ1Y3QKK2ltcG9ydCBzdHJpbmcKK2ltcG9ydCBhcnJheQorZnJvbSBmb250VG9vbHMgaW1wb3J0IHR0TGliCitmcm9tIGZvbnRUb29scy5taXNjLnRleHRUb29scyBpbXBvcnQgc2FmZUV2YWwsIHJlYWRIZXgKKworCitjbGFzcyB0YWJsZV9fY19tX2FfcChEZWZhdWx0VGFibGUuRGVmYXVsdFRhYmxlKToKKwkKKwlkZWYgZ2V0Y21hcChzZWxmLCBwbGF0Zm9ybUlELCBwbGF0RW5jSUQpOgorCQlmb3Igc3VidGFibGUgaW4gc2VsZi50YWJsZXM6CisJCQlpZiAoc3VidGFibGUucGxhdGZvcm1JRCA9PSBwbGF0Zm9ybUlEIGFuZCAKKwkJCQkJc3VidGFibGUucGxhdEVuY0lEID09IHBsYXRFbmNJRCk6CisJCQkJcmV0dXJuIHN1YnRhYmxlCisJCXJldHVybiBOb25lICMgbm90IGZvdW5kCisJCisJZGVmIGRlY29tcGlsZShzZWxmLCBkYXRhLCB0dEZvbnQpOgorCQl0YWJsZVZlcnNpb24sIG51bVN1YlRhYmxlcyA9IHN0cnVjdC51bnBhY2soIj5ISCIsIGRhdGFbOjRdKQorCQlzZWxmLnRhYmxlVmVyc2lvbiA9IGludCh0YWJsZVZlcnNpb24pCisJCXNlbGYudGFibGVzID0gdGFibGVzID0gW10KKwkJZm9yIGkgaW4gcmFuZ2UobnVtU3ViVGFibGVzKToKKwkJCXBsYXRmb3JtSUQsIHBsYXRFbmNJRCwgb2Zmc2V0ID0gc3RydWN0LnVucGFjaygKKwkJCQkJIj5ISGwiLCBkYXRhWzQraSo4OjQrKGkrMSkqOF0pCisJCQlwbGF0Zm9ybUlELCBwbGF0RW5jSUQgPSBpbnQocGxhdGZvcm1JRCksIGludChwbGF0RW5jSUQpCisJCQlmb3JtYXQsIGxlbmd0aCA9IHN0cnVjdC51bnBhY2soIj5ISCIsIGRhdGFbb2Zmc2V0Om9mZnNldCs0XSkKKwkJCWlmIG5vdCBjbWFwX2NsYXNzZXMuaGFzX2tleShmb3JtYXQpOgorCQkJCXRhYmxlID0gY21hcF9mb3JtYXRfdW5rbm93bihmb3JtYXQpCisJCQllbHNlOgorCQkJCXRhYmxlID0gY21hcF9jbGFzc2VzW2Zvcm1hdF0oZm9ybWF0KQorCQkJdGFibGUucGxhdGZvcm1JRCA9IHBsYXRmb3JtSUQKKwkJCXRhYmxlLnBsYXRFbmNJRCA9IHBsYXRFbmNJRAorCQkJdGFibGUuZGVjb21waWxlKGRhdGFbb2Zmc2V0Om9mZnNldCtpbnQobGVuZ3RoKV0sIHR0Rm9udCkKKwkJCXRhYmxlcy5hcHBlbmQodGFibGUpCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgdHRGb250KToKKwkJc2VsZi50YWJsZXMuc29ydCgpICAgICMgc29ydCBhY2NvcmRpbmcgdG8gdGhlIHNwZWM7IHNlZSBDbWFwU3VidGFibGUuX19jbXBfXygpCisJCW51bVN1YlRhYmxlcyA9IGxlbihzZWxmLnRhYmxlcykKKwkJdG90YWxPZmZzZXQgPSA0ICsgOCAqIG51bVN1YlRhYmxlcworCQlkYXRhID0gc3RydWN0LnBhY2soIj5ISCIsIHNlbGYudGFibGVWZXJzaW9uLCBudW1TdWJUYWJsZXMpCisJCXRhYmxlRGF0YSA9ICIiCisJCWRvbmUgPSB7fSAgIyByZW1lbWJlciB0aGUgZGF0YSBzbyB3ZSBjYW4gcmV1c2UgdGhlICJwb2ludGVycyIKKwkJZm9yIHRhYmxlIGluIHNlbGYudGFibGVzOgorCQkJY2h1bmsgPSB0YWJsZS5jb21waWxlKHR0Rm9udCkKKwkJCWlmIGRvbmUuaGFzX2tleShjaHVuayk6CisJCQkJb2Zmc2V0ID0gZG9uZVtjaHVua10KKwkJCWVsc2U6CisJCQkJb2Zmc2V0ID0gZG9uZVtjaHVua10gPSB0b3RhbE9mZnNldCArIGxlbih0YWJsZURhdGEpCisJCQl0YWJsZURhdGEgPSB0YWJsZURhdGEgKyBjaHVuaworCQkJZGF0YSA9IGRhdGEgKyBzdHJ1Y3QucGFjaygiPkhIbCIsIHRhYmxlLnBsYXRmb3JtSUQsIHRhYmxlLnBsYXRFbmNJRCwgb2Zmc2V0KQorCQlyZXR1cm4gZGF0YSArIHRhYmxlRGF0YQorCQorCWRlZiB0b1hNTChzZWxmLCB3cml0ZXIsIHR0Rm9udCk6CisJCXdyaXRlci5zaW1wbGV0YWcoInRhYmxlVmVyc2lvbiIsIHZlcnNpb249c2VsZi50YWJsZVZlcnNpb24pCisJCXdyaXRlci5uZXdsaW5lKCkKKwkJZm9yIHRhYmxlIGluIHNlbGYudGFibGVzOgorCQkJdGFibGUudG9YTUwod3JpdGVyLCB0dEZvbnQpCisJCisJZGVmIGZyb21YTUwoc2VsZiwgKG5hbWUsIGF0dHJzLCBjb250ZW50KSwgdHRGb250KToKKwkJaWYgbmFtZSA9PSAidGFibGVWZXJzaW9uIjoKKwkJCXNlbGYudGFibGVWZXJzaW9uID0gc2FmZUV2YWwoYXR0cnNbInZlcnNpb24iXSkKKwkJCXJldHVybgorCQlpZiBuYW1lWzoxMl0gPD4gImNtYXBfZm9ybWF0XyI6CisJCQlyZXR1cm4KKwkJaWYgbm90IGhhc2F0dHIoc2VsZiwgInRhYmxlcyIpOgorCQkJc2VsZi50YWJsZXMgPSBbXQorCQlmb3JtYXQgPSBzYWZlRXZhbChuYW1lWzEyXSkKKwkJaWYgbm90IGNtYXBfY2xhc3Nlcy5oYXNfa2V5KGZvcm1hdCk6CisJCQl0YWJsZSA9IGNtYXBfZm9ybWF0X3Vua25vd24oZm9ybWF0KQorCQllbHNlOgorCQkJdGFibGUgPSBjbWFwX2NsYXNzZXNbZm9ybWF0XShmb3JtYXQpCisJCXRhYmxlLnBsYXRmb3JtSUQgPSBzYWZlRXZhbChhdHRyc1sicGxhdGZvcm1JRCJdKQorCQl0YWJsZS5wbGF0RW5jSUQgPSBzYWZlRXZhbChhdHRyc1sicGxhdEVuY0lEIl0pCisJCXRhYmxlLmZyb21YTUwoKG5hbWUsIGF0dHJzLCBjb250ZW50KSwgdHRGb250KQorCQlzZWxmLnRhYmxlcy5hcHBlbmQodGFibGUpCisKKworY2xhc3MgQ21hcFN1YnRhYmxlOgorCQorCWRlZiBfX2luaXRfXyhzZWxmLCBmb3JtYXQpOgorCQlzZWxmLmZvcm1hdCA9IGZvcm1hdAorCQorCWRlZiB0b1hNTChzZWxmLCB3cml0ZXIsIHR0Rm9udCk6CisJCXdyaXRlci5iZWdpbnRhZyhzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgWworCQkJCSgicGxhdGZvcm1JRCIsIHNlbGYucGxhdGZvcm1JRCksCisJCQkJKCJwbGF0RW5jSUQiLCBzZWxmLnBsYXRFbmNJRCksCisJCQkJXSkKKwkJd3JpdGVyLm5ld2xpbmUoKQorCQl3cml0ZXIuZHVtcGhleChzZWxmLmNvbXBpbGUodHRGb250KSkKKwkJd3JpdGVyLmVuZHRhZyhzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykKKwkJd3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIHR0Rm9udCk6CisJCXNlbGYuZGVjb21waWxlKHJlYWRIZXgoY29udGVudCksIHR0Rm9udCkKKwkKKwlkZWYgX19jbXBfXyhzZWxmLCBvdGhlcik6CisJCSMgaW1wbGVtZW50ZWQgc28gdGhhdCBsaXN0LnNvcnQoKSBzb3J0cyBhY2NvcmRpbmcgdG8gdGhlIGNtYXAgc3BlYy4KKwkJc2VsZlR1cGxlID0gKAorCQkJCQlzZWxmLnBsYXRmb3JtSUQsCisJCQkJCXNlbGYucGxhdEVuY0lELAorCQkJCQlzZWxmLnZlcnNpb24sCisJCQkJCXNlbGYuX19kaWN0X18pCisJCW90aGVyVHVwbGUgPSAoCisJCQkJCW90aGVyLnBsYXRmb3JtSUQsCisJCQkJCW90aGVyLnBsYXRFbmNJRCwKKwkJCQkJb3RoZXIudmVyc2lvbiwKKwkJCQkJb3RoZXIuX19kaWN0X18pCisJCXJldHVybiBjbXAoc2VsZlR1cGxlLCBvdGhlclR1cGxlKQorCisKK2NsYXNzIGNtYXBfZm9ybWF0XzAoQ21hcFN1YnRhYmxlKToKKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIGRhdGEsIHR0Rm9udCk6CisJCWZvcm1hdCwgbGVuZ3RoLCB2ZXJzaW9uID0gc3RydWN0LnVucGFjaygiPkhISCIsIGRhdGFbOjZdKQorCQlzZWxmLnZlcnNpb24gPSBpbnQodmVyc2lvbikKKwkJYXNzZXJ0IGxlbihkYXRhKSA9PSAyNjIgPT0gbGVuZ3RoCisJCWdseXBoSWRBcnJheSA9IGFycmF5LmFycmF5KCJCIikKKwkJZ2x5cGhJZEFycmF5LmZyb21zdHJpbmcoZGF0YVs2Ol0pCisJCXNlbGYuY21hcCA9IGNtYXAgPSB7fQorCQlmb3IgY2hhckNvZGUgaW4gcmFuZ2UobGVuKGdseXBoSWRBcnJheSkpOgorCQkJY21hcFtjaGFyQ29kZV0gPSB0dEZvbnQuZ2V0R2x5cGhOYW1lKGdseXBoSWRBcnJheVtjaGFyQ29kZV0pCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgdHRGb250KToKKwkJY2hhckNvZGVzID0gc2VsZi5jbWFwLmtleXMoKQorCQljaGFyQ29kZXMuc29ydCgpCisJCWFzc2VydCBjaGFyQ29kZXMgPT0gcmFuZ2UoMjU2KSAgIyBjaGFyQ29kZXNbY2hhckNvZGVdID09IGNoYXJDb2RlCisJCWZvciBjaGFyQ29kZSBpbiBjaGFyQ29kZXM6CisJCQkjIHJldXNpbmcgdGhlIGNoYXJDb2RlcyBsaXN0IQorCQkJY2hhckNvZGVzW2NoYXJDb2RlXSA9IHR0Rm9udC5nZXRHbHlwaElEKHNlbGYuY21hcFtjaGFyQ29kZV0pCisJCWdseXBoSWRBcnJheSA9IGFycmF5LmFycmF5KCJCIiwgY2hhckNvZGVzKQorCQlkYXRhID0gc3RydWN0LnBhY2soIj5ISEgiLCAwLCAyNjIsIHNlbGYudmVyc2lvbikgKyBnbHlwaElkQXJyYXkudG9zdHJpbmcoKQorCQlhc3NlcnQgbGVuKGRhdGEpID09IDI2MgorCQlyZXR1cm4gZGF0YQorCQorCWRlZiB0b1hNTChzZWxmLCB3cml0ZXIsIHR0Rm9udCk6CisJCXdyaXRlci5iZWdpbnRhZyhzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgWworCQkJCSgicGxhdGZvcm1JRCIsIHNlbGYucGxhdGZvcm1JRCksCisJCQkJKCJwbGF0RW5jSUQiLCBzZWxmLnBsYXRFbmNJRCksCisJCQkJKCJ2ZXJzaW9uIiwgc2VsZi52ZXJzaW9uKSwKKwkJCQldKQorCQl3cml0ZXIubmV3bGluZSgpCisJCWl0ZW1zID0gc2VsZi5jbWFwLml0ZW1zKCkKKwkJaXRlbXMuc29ydCgpCisJCWZvciBjb2RlLCBuYW1lIGluIGl0ZW1zOgorCQkJd3JpdGVyLnNpbXBsZXRhZygibWFwIiwgY29kZT1oZXgoY29kZSksIG5hbWU9bmFtZSkKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkJd3JpdGVyLmVuZHRhZyhzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykKKwkJd3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIHR0Rm9udCk6CisJCXNlbGYudmVyc2lvbiA9IHNhZmVFdmFsKGF0dHJzWyJ2ZXJzaW9uIl0pCisJCXNlbGYuY21hcCA9IHt9CisJCWZvciBlbGVtZW50IGluIGNvbnRlbnQ6CisJCQlpZiB0eXBlKGVsZW1lbnQpIDw+IHR5cGUoKCkpOgorCQkJCWNvbnRpbnVlCisJCQluYW1lLCBhdHRycywgY29udGVudCA9IGVsZW1lbnQKKwkJCWlmIG5hbWUgPD4gIm1hcCI6CisJCQkJY29udGludWUKKwkJCXNlbGYuY21hcFtzYWZlRXZhbChhdHRyc1siY29kZSJdKV0gPSBhdHRyc1sibmFtZSJdCisJCQkKKworCitjbGFzcyBjbWFwX2Zvcm1hdF8yKENtYXBTdWJ0YWJsZSk6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCBkYXRhLCB0dEZvbnQpOgorCQlmb3JtYXQsIGxlbmd0aCwgdmVyc2lvbiA9IHN0cnVjdC51bnBhY2soIj5ISEgiLCBkYXRhWzo2XSkKKwkJc2VsZi52ZXJzaW9uID0gaW50KHZlcnNpb24pCisJCXNlbGYuZGF0YSA9IGRhdGEKKwkKKwlkZWYgY29tcGlsZShzZWxmLCB0dEZvbnQpOgorCQlyZXR1cm4gc2VsZi5kYXRhCisKKworY21hcF9mb3JtYXRfNF9mb3JtYXQgPSAiPjdIIgorCisjdWludDE2CWVuZENvZGVbc2VnQ291bnRdCQkJIyBFbmRpbmcgY2hhcmFjdGVyIGNvZGUgZm9yIGVhY2ggc2VnbWVudCwgbGFzdCA9IDB4RkZGRi4KKyN1aW50MTYJcmVzZXJ2ZWRQYWQJCQkJCSMgVGhpcyB2YWx1ZSBzaG91bGQgYmUgemVybworI3VpbnQxNglzdGFydENvZGVbc2VnQ291bnRdCQkJIyBTdGFydGluZyBjaGFyYWN0ZXIgY29kZSBmb3IgZWFjaCBzZWdtZW50CisjdWludDE2CWlkRGVsdGFbc2VnQ291bnRdCQkJIyBEZWx0YSBmb3IgYWxsIGNoYXJhY3RlciBjb2RlcyBpbiBzZWdtZW50CisjdWludDE2CWlkUmFuZ2VPZmZzZXRbc2VnQ291bnRdCQkjIE9mZnNldCBpbiBieXRlcyB0byBnbHlwaCBpbmRleEFycmF5LCBvciAwCisjdWludDE2CWdseXBoSW5kZXhBcnJheVt2YXJpYWJsZV0JIyBHbHlwaCBpbmRleCBhcnJheQorCitjbGFzcyBjbWFwX2Zvcm1hdF80KENtYXBTdWJ0YWJsZSk6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCBkYXRhLCB0dEZvbnQpOgorCQkoZm9ybWF0LCBsZW5ndGgsIHNlbGYudmVyc2lvbiwgc2VnQ291bnRYMiwgCisJCQkJc2VhcmNoUmFuZ2UsIGVudHJ5U2VsZWN0b3IsIHJhbmdlU2hpZnQpID0gXAorCQkJCQlzdHJ1Y3QudW5wYWNrKGNtYXBfZm9ybWF0XzRfZm9ybWF0LCBkYXRhWzoxNF0pCisJCWFzc2VydCBsZW4oZGF0YSkgPT0gbGVuZ3RoLCAiY29ycnVwdCBjbWFwIHRhYmxlICglZCwgJWQpIiAlIChsZW4oZGF0YSksIGxlbmd0aCkKKwkJZGF0YSA9IGRhdGFbMTQ6XQorCQlzZWdDb3VudFgyID0gaW50KHNlZ0NvdW50WDIpCisJCXNlZ0NvdW50ID0gc2VnQ291bnRYMiAvIDIKKwkJCisJCWFsbGNvZGVzID0gYXJyYXkuYXJyYXkoIkgiKQorCQlhbGxjb2Rlcy5mcm9tc3RyaW5nKGRhdGEpCisJCWlmIHR0TGliLmVuZGlhbiA8PiAiYmlnIjoKKwkJCWFsbGNvZGVzLmJ5dGVzd2FwKCkKKwkJCisJCSMgZGl2aWRlIHRoZSBkYXRhCisJCWVuZENvZGUgPSBhbGxjb2Rlc1s6c2VnQ291bnRdCisJCWFsbGNvZGVzID0gYWxsY29kZXNbc2VnQ291bnQrMTpdCisJCXN0YXJ0Q29kZSA9IGFsbGNvZGVzWzpzZWdDb3VudF0KKwkJYWxsY29kZXMgPSBhbGxjb2Rlc1tzZWdDb3VudDpdCisJCWlkRGVsdGEgPSBhbGxjb2Rlc1s6c2VnQ291bnRdCisJCWFsbGNvZGVzID0gYWxsY29kZXNbc2VnQ291bnQ6XQorCQlpZFJhbmdlT2Zmc2V0ID0gYWxsY29kZXNbOnNlZ0NvdW50XQorCQlnbHlwaEluZGV4QXJyYXkgPSBhbGxjb2Rlc1tzZWdDb3VudDpdCisJCQorCQkjIGJ1aWxkIDItYnl0ZSBjaGFyYWN0ZXIgbWFwcGluZworCQljbWFwID0ge30KKwkJZm9yIGkgaW4gcmFuZ2UobGVuKHN0YXJ0Q29kZSkgLSAxKToJIyBkb24ndCBkbyAweGZmZmYhCisJCQlmb3IgY2hhckNvZGUgaW4gcmFuZ2Uoc3RhcnRDb2RlW2ldLCBlbmRDb2RlW2ldICsgMSk6CisJCQkJcmFuZ2VPZmZzZXQgPSBpZFJhbmdlT2Zmc2V0W2ldCisJCQkJaWYgcmFuZ2VPZmZzZXQgPT0gMDoKKwkJCQkJZ2x5cGhJRCA9IGNoYXJDb2RlICsgaWREZWx0YVtpXQorCQkJCWVsc2U6CisJCQkJCSMgKnNvbWVvbmUqIG5lZWRzIHRvIGdldCBraWxsZWQuCisJCQkJCWluZGV4ID0gaWRSYW5nZU9mZnNldFtpXSAvIDIgKyAoY2hhckNvZGUgLSBzdGFydENvZGVbaV0pICsgaSAtIGxlbihpZFJhbmdlT2Zmc2V0KQorCQkJCQlpZiBnbHlwaEluZGV4QXJyYXlbaW5kZXhdIDw+IDA6ICAjIGlmIG5vdCBtaXNzaW5nIGdseXBoCisJCQkJCQlnbHlwaElEID0gZ2x5cGhJbmRleEFycmF5W2luZGV4XSArIGlkRGVsdGFbaV0KKwkJCQkJZWxzZToKKwkJCQkJCWdseXBoSUQgPSAwICAjIG1pc3NpbmcgZ2x5cGgKKwkJCQljbWFwW2NoYXJDb2RlXSA9IHR0Rm9udC5nZXRHbHlwaE5hbWUoZ2x5cGhJRCAlIDB4MTAwMDApCisJCXNlbGYuY21hcCA9IGNtYXAKKwkKKwlkZWYgY29tcGlsZShzZWxmLCB0dEZvbnQpOgorCQlmcm9tIGZvbnRUb29scy50dExpYi5zZm50IGltcG9ydCBtYXhwb3dlcm9mdHdvCisJCQorCQljb2RlcyA9IHNlbGYuY21hcC5pdGVtcygpCisJCWNvZGVzLnNvcnQoKQorCQkKKwkJIyBidWlsZCBzdGFydENvZGUgYW5kIGVuZENvZGUgbGlzdHMKKwkJbGFzdCA9IGNvZGVzWzBdWzBdCisJCWVuZENvZGUgPSBbXQorCQlzdGFydENvZGUgPSBbbGFzdF0KKwkJZm9yIGNoYXJDb2RlLCBnbHlwaE5hbWUgaW4gY29kZXNbMTpdOiAgIyBza2lwIHRoZSBmaXJzdCBjb2RlLCBpdCdzIHRoZSBmaXJzdCBzdGFydCBjb2RlCisJCQlpZiBjaGFyQ29kZSA9PSBsYXN0ICsgMToKKwkJCQlsYXN0ID0gY2hhckNvZGUKKwkJCQljb250aW51ZQorCQkJZW5kQ29kZS5hcHBlbmQobGFzdCkKKwkJCXN0YXJ0Q29kZS5hcHBlbmQoY2hhckNvZGUpCisJCQlsYXN0ID0gY2hhckNvZGUKKwkJZW5kQ29kZS5hcHBlbmQobGFzdCkKKwkJc3RhcnRDb2RlLmFwcGVuZCgweGZmZmYpCisJCWVuZENvZGUuYXBwZW5kKDB4ZmZmZikKKwkJCisJCSMgYnVpbGQgdXAgcmVzdCBvZiBjcnVmdC4KKwkJaWREZWx0YSA9IFtdCisJCWlkUmFuZ2VPZmZzZXQgPSBbXQorCQlnbHlwaEluZGV4QXJyYXkgPSBbXQorCQkKKwkJZm9yIGkgaW4gcmFuZ2UobGVuKGVuZENvZGUpLTEpOiAgIyBza2lwIHRoZSBjbG9zaW5nIGNvZGVzICgweGZmZmYpCisJCQlpbmRpY2VzID0gW10KKwkJCWZvciBjaGFyQ29kZSBpbiByYW5nZShzdGFydENvZGVbaV0sIGVuZENvZGVbaV0rMSk6CisJCQkJaW5kaWNlcy5hcHBlbmQodHRGb250LmdldEdseXBoSUQoc2VsZi5jbWFwW2NoYXJDb2RlXSkpCisJCQlpZiBpbmRpY2VzID09IHJhbmdlKGluZGljZXNbMF0sIGluZGljZXNbMF0gKyBsZW4oaW5kaWNlcykpOgorCQkJCWlkRGVsdGEuYXBwZW5kKChpbmRpY2VzWzBdIC0gc3RhcnRDb2RlW2ldKSAlIDB4MTAwMDApCisJCQkJaWRSYW5nZU9mZnNldC5hcHBlbmQoMCkKKwkJCWVsc2U6CisJCQkJIyBzb21lb25lICpkZWZpbml0ZWx5KiBuZWVkcyB0byBnZXQga2lsbGVkLgorCQkJCWlkRGVsdGEuYXBwZW5kKDApCisJCQkJaWRSYW5nZU9mZnNldC5hcHBlbmQoMiAqIChsZW4oZW5kQ29kZSkgKyBsZW4oZ2x5cGhJbmRleEFycmF5KSAtIGkpKQorCQkJCWdseXBoSW5kZXhBcnJheSA9IGdseXBoSW5kZXhBcnJheSArIGluZGljZXMKKwkJaWREZWx0YS5hcHBlbmQoMSkgICMgMHhmZmZmICsgMSA9PSAodGFkYWEhKSAwLiBTbyB0aGlzIGVuZCBjb2RlIG1hcHMgdG8gLm5vdGRlZgorCQlpZFJhbmdlT2Zmc2V0LmFwcGVuZCgwKQorCQkKKwkJIyBJbnNhbmUuIAorCQlzZWdDb3VudCA9IGxlbihlbmRDb2RlKQorCQlzZWdDb3VudFgyID0gc2VnQ291bnQgKiAyCisJCW1heGV4cG9uZW50ID0gbWF4cG93ZXJvZnR3byhzZWdDb3VudCkKKwkJc2VhcmNoUmFuZ2UgPSAyICogKDIgKiogbWF4ZXhwb25lbnQpCisJCWVudHJ5U2VsZWN0b3IgPSBtYXhleHBvbmVudAorCQlyYW5nZVNoaWZ0ID0gMiAqIHNlZ0NvdW50IC0gc2VhcmNoUmFuZ2UKKwkJCisJCWFsbGNvZGVzID0gYXJyYXkuYXJyYXkoIkgiLCAKKwkJCQllbmRDb2RlICsgWzBdICsgc3RhcnRDb2RlICsgaWREZWx0YSArIGlkUmFuZ2VPZmZzZXQgKyBnbHlwaEluZGV4QXJyYXkpCisJCWlmIHR0TGliLmVuZGlhbiA8PiAiYmlnIjoKKwkJCWFsbGNvZGVzLmJ5dGVzd2FwKCkKKwkJZGF0YSA9IGFsbGNvZGVzLnRvc3RyaW5nKCkKKwkJbGVuZ3RoID0gc3RydWN0LmNhbGNzaXplKGNtYXBfZm9ybWF0XzRfZm9ybWF0KSArIGxlbihkYXRhKQorCQloZWFkZXIgPSBzdHJ1Y3QucGFjayhjbWFwX2Zvcm1hdF80X2Zvcm1hdCwgc2VsZi5mb3JtYXQsIGxlbmd0aCwgc2VsZi52ZXJzaW9uLCAKKwkJCQlzZWdDb3VudFgyLCBzZWFyY2hSYW5nZSwgZW50cnlTZWxlY3RvciwgcmFuZ2VTaGlmdCkKKwkJcmV0dXJuIGhlYWRlciArIGRhdGEKKwkKKwlkZWYgdG9YTUwoc2VsZiwgd3JpdGVyLCB0dEZvbnQpOgorCQlmcm9tIGZvbnRUb29scy51bmljb2RlIGltcG9ydCBVbmljb2RlCisJCWNvZGVzID0gc2VsZi5jbWFwLml0ZW1zKCkKKwkJY29kZXMuc29ydCgpCisJCXdyaXRlci5iZWdpbnRhZyhzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgWworCQkJCSgicGxhdGZvcm1JRCIsIHNlbGYucGxhdGZvcm1JRCksCisJCQkJKCJwbGF0RW5jSUQiLCBzZWxmLnBsYXRFbmNJRCksCisJCQkJKCJ2ZXJzaW9uIiwgc2VsZi52ZXJzaW9uKSwKKwkJCQldKQorCQl3cml0ZXIubmV3bGluZSgpCisJCQorCQlmb3IgY29kZSwgbmFtZSBpbiBjb2RlczoKKwkJCXdyaXRlci5zaW1wbGV0YWcoIm1hcCIsIGNvZGU9aGV4KGNvZGUpLCBuYW1lPW5hbWUpCisJCQl3cml0ZXIuY29tbWVudChVbmljb2RlW2NvZGVdKQorCQkJd3JpdGVyLm5ld2xpbmUoKQorCQkKKwkJd3JpdGVyLmVuZHRhZyhzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykKKwkJd3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIHR0Rm9udCk6CisJCXNlbGYudmVyc2lvbiA9IHNhZmVFdmFsKGF0dHJzWyJ2ZXJzaW9uIl0pCisJCXNlbGYuY21hcCA9IHt9CisJCWZvciBlbGVtZW50IGluIGNvbnRlbnQ6CisJCQlpZiB0eXBlKGVsZW1lbnQpIDw+IHR5cGUoKCkpOgorCQkJCWNvbnRpbnVlCisJCQluYW1lLCBhdHRycywgY29udGVudCA9IGVsZW1lbnQKKwkJCWlmIG5hbWUgPD4gIm1hcCI6CisJCQkJY29udGludWUKKwkJCXNlbGYuY21hcFtzYWZlRXZhbChhdHRyc1siY29kZSJdKV0gPSBhdHRyc1sibmFtZSJdCisKKworY2xhc3MgY21hcF9mb3JtYXRfNihDbWFwU3VidGFibGUpOgorCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgZGF0YSwgdHRGb250KToKKwkJZm9ybWF0LCBsZW5ndGgsIHZlcnNpb24sIGZpcnN0Q29kZSwgZW50cnlDb3VudCA9IHN0cnVjdC51bnBhY2soCisJCQkJIj5ISEhISCIsIGRhdGFbOjEwXSkKKwkJc2VsZi52ZXJzaW9uID0gaW50KHZlcnNpb24pCisJCWZpcnN0Q29kZSA9IGludChmaXJzdENvZGUpCisJCXNlbGYudmVyc2lvbiA9IGludCh2ZXJzaW9uKQorCQlkYXRhID0gZGF0YVsxMDpdCisJCWFzc2VydCBsZW4oZGF0YSkgPT0gMiAqIGVudHJ5Q291bnQKKwkJZ2x5cGhJbmRleEFycmF5ID0gYXJyYXkuYXJyYXkoIkgiKQorCQlnbHlwaEluZGV4QXJyYXkuZnJvbXN0cmluZyhkYXRhKQorCQlpZiB0dExpYi5lbmRpYW4gPD4gImJpZyI6CisJCQlnbHlwaEluZGV4QXJyYXkuYnl0ZXN3YXAoKQorCQlzZWxmLmNtYXAgPSBjbWFwID0ge30KKwkJZm9yIGkgaW4gcmFuZ2UobGVuKGdseXBoSW5kZXhBcnJheSkpOgorCQkJZ2x5cGhJRCA9IGdseXBoSW5kZXhBcnJheVtpXQorCQkJZ2x5cGhOYW1lID0gdHRGb250LmdldEdseXBoTmFtZShnbHlwaElEKQorCQkJY21hcFtpK2ZpcnN0Q29kZV0gPSBnbHlwaE5hbWUKKwkKKwlkZWYgY29tcGlsZShzZWxmLCB0dEZvbnQpOgorCQljb2RlcyA9IHNlbGYuY21hcC5rZXlzKCkKKwkJY29kZXMuc29ydCgpCisJCWFzc2VydCBjb2RlcyA9PSByYW5nZShjb2Rlc1swXSwgY29kZXNbMF0gKyBsZW4oY29kZXMpKQorCQlnbHlwaEluZGV4QXJyYXkgPSBhcnJheS5hcnJheSgiSCIsIFswXSAqIGxlbihjb2RlcykpCisJCWZpcnN0Q29kZSA9IGNvZGVzWzBdCisJCWZvciBpIGluIHJhbmdlKGxlbihjb2RlcykpOgorCQkJY29kZSA9IGNvZGVzW2ldCisJCQlnbHlwaEluZGV4QXJyYXlbY29kZS1maXJzdENvZGVdID0gdHRGb250LmdldEdseXBoSUQoc2VsZi5jbWFwW2NvZGVdKQorCQlpZiB0dExpYi5lbmRpYW4gPD4gImJpZyI6CisJCQlnbHlwaEluZGV4QXJyYXkuYnl0ZXN3YXAoKQorCQlkYXRhID0gZ2x5cGhJbmRleEFycmF5LnRvc3RyaW5nKCkKKwkJaGVhZGVyID0gc3RydWN0LnBhY2soIj5ISEhISCIsIAorCQkJCTYsIGxlbihkYXRhKSArIDEwLCBzZWxmLnZlcnNpb24sIGZpcnN0Q29kZSwgbGVuKHNlbGYuY21hcCkpCisJCXJldHVybiBoZWFkZXIgKyBkYXRhCisJCisJZGVmIHRvWE1MKHNlbGYsIHdyaXRlciwgdHRGb250KToKKwkJY29kZXMgPSBzZWxmLmNtYXAuaXRlbXMoKQorCQljb2Rlcy5zb3J0KCkKKwkJd3JpdGVyLmJlZ2ludGFnKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBbCisJCQkJKCJwbGF0Zm9ybUlEIiwgc2VsZi5wbGF0Zm9ybUlEKSwKKwkJCQkoInBsYXRFbmNJRCIsIHNlbGYucGxhdEVuY0lEKSwKKwkJCQkoInZlcnNpb24iLCBzZWxmLnZlcnNpb24pLAorCQkJCV0pCisJCXdyaXRlci5uZXdsaW5lKCkKKwkJCisJCWZvciBjb2RlLCBuYW1lIGluIGNvZGVzOgorCQkJd3JpdGVyLnNpbXBsZXRhZygibWFwIiwgY29kZT1oZXgoY29kZSksIG5hbWU9bmFtZSkKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkJCisJCXdyaXRlci5lbmR0YWcoc2VsZi5fX2NsYXNzX18uX19uYW1lX18pCisJCXdyaXRlci5uZXdsaW5lKCkKKwkKKwlkZWYgZnJvbVhNTChzZWxmLCAobmFtZSwgYXR0cnMsIGNvbnRlbnQpLCB0dEZvbnQpOgorCQlzZWxmLnZlcnNpb24gPSBzYWZlRXZhbChhdHRyc1sidmVyc2lvbiJdKQorCQlzZWxmLmNtYXAgPSB7fQorCQlmb3IgZWxlbWVudCBpbiBjb250ZW50OgorCQkJaWYgdHlwZShlbGVtZW50KSA8PiB0eXBlKCgpKToKKwkJCQljb250aW51ZQorCQkJbmFtZSwgYXR0cnMsIGNvbnRlbnQgPSBlbGVtZW50CisJCQlpZiBuYW1lIDw+ICJtYXAiOgorCQkJCWNvbnRpbnVlCisJCQlzZWxmLmNtYXBbc2FmZUV2YWwoYXR0cnNbImNvZGUiXSldID0gYXR0cnNbIm5hbWUiXQorCisKK2NsYXNzIGNtYXBfZm9ybWF0X3Vua25vd24oQ21hcFN1YnRhYmxlKToKKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIGRhdGEsIHR0Rm9udCk6CisJCXNlbGYuZGF0YSA9IGRhdGEKKwkKKwlkZWYgY29tcGlsZShzZWxmLCB0dEZvbnQpOgorCQlyZXR1cm4gc2VsZi5kYXRhCisKKworY21hcF9jbGFzc2VzID0geworCQkwOiBjbWFwX2Zvcm1hdF8wLAorCQkyOiBjbWFwX2Zvcm1hdF8yLAorCQk0OiBjbWFwX2Zvcm1hdF80LAorCQk2OiBjbWFwX2Zvcm1hdF82LAorCQl9CisKKwpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvX2Nfdl90LnB5IGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvX2Nfdl90LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlZDU1MjMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9fY192X3QucHkKQEAgLTAsMCArMSw0OCBAQAoraW1wb3J0IERlZmF1bHRUYWJsZQoraW1wb3J0IGFycmF5Citmcm9tIGZvbnRUb29scyBpbXBvcnQgdHRMaWIKK2Zyb20gZm9udFRvb2xzLm1pc2MudGV4dFRvb2xzIGltcG9ydCBzYWZlRXZhbAorCitjbGFzcyB0YWJsZV9fY192X3QoRGVmYXVsdFRhYmxlLkRlZmF1bHRUYWJsZSk6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCBkYXRhLCB0dEZvbnQpOgorCQl2YWx1ZXMgPSBhcnJheS5hcnJheSgiaCIpCisJCXZhbHVlcy5mcm9tc3RyaW5nKGRhdGEpCisJCWlmIHR0TGliLmVuZGlhbiA8PiAiYmlnIjoKKwkJCXZhbHVlcy5ieXRlc3dhcCgpCisJCXNlbGYudmFsdWVzID0gdmFsdWVzCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgdHRGb250KToKKwkJdmFsdWVzID0gc2VsZi52YWx1ZXNbOl0KKwkJaWYgdHRMaWIuZW5kaWFuIDw+ICJiaWciOgorCQkJdmFsdWVzLmJ5dGVzd2FwKCkKKwkJcmV0dXJuIHZhbHVlcy50b3N0cmluZygpCisJCisJZGVmIHRvWE1MKHNlbGYsIHdyaXRlciwgdHRGb250KToKKwkJZm9yIGkgaW4gcmFuZ2UobGVuKHNlbGYudmFsdWVzKSk6CisJCQl2YWx1ZSA9IHNlbGYudmFsdWVzW2ldCisJCQl3cml0ZXIuc2ltcGxldGFnKCJjdiIsIHZhbHVlPXZhbHVlLCBpbmRleD1pKQorCQkJd3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIHR0Rm9udCk6CisJCWlmIG5vdCBoYXNhdHRyKHNlbGYsICJ2YWx1ZXMiKToKKwkJCXNlbGYudmFsdWVzID0gYXJyYXkuYXJyYXkoImgiKQorCQlpZiBuYW1lID09ICJjdiI6CisJCQlpbmRleCA9IHNhZmVFdmFsKGF0dHJzWyJpbmRleCJdKQorCQkJdmFsdWUgPSBzYWZlRXZhbChhdHRyc1sidmFsdWUiXSkKKwkJCWZvciBpIGluIHJhbmdlKDEgKyBpbmRleCAtIGxlbihzZWxmLnZhbHVlcykpOgorCQkJCXNlbGYudmFsdWVzLmFwcGVuZCgwKQorCQkJc2VsZi52YWx1ZXNbaW5kZXhdID0gdmFsdWUKKwkKKwlkZWYgX19sZW5fXyhzZWxmKToKKwkJcmV0dXJuIGxlbihzZWxmLnZhbHVlcykKKwkKKwlkZWYgX19nZXRpdGVtX18oc2VsZiwgaW5kZXgpOgorCQlyZXR1cm4gc2VsZi52YWx1ZXNbaW5kZXhdCisJCisJZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGluZGV4LCB2YWx1ZSk6CisJCXNlbGYudmFsdWVzW2luZGV4XSA9IHZhbHVlCisJCisJZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGluZGV4KToKKwkJZGVsIHNlbGYudmFsdWVzW2luZGV4XQorCmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9fZl9wX2dfbS5weSBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL19mX3BfZ19tLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3Y2M4YTMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9fZl9wX2dfbS5weQpAQCAtMCwwICsxLDE0IEBACitpbXBvcnQgRGVmYXVsdFRhYmxlCitpbXBvcnQgYXJyYXkKKworY2xhc3MgdGFibGVfX2ZfcF9nX20oRGVmYXVsdFRhYmxlLkRlZmF1bHRUYWJsZSk6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCBkYXRhLCB0dEZvbnQpOgorCQlzZWxmLmZwZ20gPSBkYXRhCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgdHRGb250KToKKwkJcmV0dXJuIHNlbGYuZnBnbQorCQorCWRlZiBfX2xlbl9fKHNlbGYpOgorCQlyZXR1cm4gbGVuKHNlbGYuZnBnbSkKKwkKZGlmZiAtLWdpdCBhL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL19nX2Ffc19wLnB5IGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvX2dfYV9zX3AucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ5Y2NlYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL19nX2Ffc19wLnB5CkBAIC0wLDAgKzEsNDYgQEAKK2ltcG9ydCBEZWZhdWx0VGFibGUKK2ltcG9ydCBzdHJ1Y3QKK2Zyb20gZm9udFRvb2xzLm1pc2MudGV4dFRvb2xzIGltcG9ydCBzYWZlRXZhbAorCisKK0dBU1BfRE9HUkFZID0gMHgwMDAyCitHQVNQX0dSSURGSVQgPSAweDAwMDEKKworY2xhc3MgdGFibGVfX2dfYV9zX3AoRGVmYXVsdFRhYmxlLkRlZmF1bHRUYWJsZSk6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCBkYXRhLCB0dEZvbnQpOgorCQlzZWxmLnZlcnNpb24sIG51bVJhbmdlcyA9IHN0cnVjdC51bnBhY2soIj5ISCIsIGRhdGFbOjRdKQorCQlhc3NlcnQgc2VsZi52ZXJzaW9uID09IDAsICJ1bmtub3duICdnYXNwJyBmb3JtYXQ6ICVzIiAlIHNlbGYudmVyc2lvbgorCQlkYXRhID0gZGF0YVs0Ol0KKwkJc2VsZi5nYXNwUmFuZ2UgPSB7fQorCQlmb3IgaSBpbiByYW5nZShudW1SYW5nZXMpOgorCQkJcmFuZ2VNYXhQUEVNLCByYW5nZUdhc3BCZWhhdmlvciA9IHN0cnVjdC51bnBhY2soIj5ISCIsIGRhdGFbOjRdKQorCQkJc2VsZi5nYXNwUmFuZ2VbaW50KHJhbmdlTWF4UFBFTSldID0gaW50KHJhbmdlR2FzcEJlaGF2aW9yKQorCQkJZGF0YSA9IGRhdGFbNDpdCisJCWFzc2VydCBub3QgZGF0YSwgInRvbyBtdWNoIGRhdGEiCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgdHRGb250KToKKwkJbnVtUmFuZ2VzID0gbGVuKHNlbGYuZ2FzcFJhbmdlKQorCQlkYXRhID0gc3RydWN0LnBhY2soIj5ISCIsIDAsIG51bVJhbmdlcykKKwkJaXRlbXMgPSBzZWxmLmdhc3BSYW5nZS5pdGVtcygpCisJCWl0ZW1zLnNvcnQoKQorCQlmb3IgcmFuZ2VNYXhQUEVNLCByYW5nZUdhc3BCZWhhdmlvciBpbiBpdGVtczoKKwkJCWRhdGEgPSBkYXRhICsgc3RydWN0LnBhY2soIj5ISCIsIHJhbmdlTWF4UFBFTSwgcmFuZ2VHYXNwQmVoYXZpb3IpCisJCXJldHVybiBkYXRhCisJCisJZGVmIHRvWE1MKHNlbGYsIHdyaXRlciwgdHRGb250KToKKwkJaXRlbXMgPSBzZWxmLmdhc3BSYW5nZS5pdGVtcygpCisJCWl0ZW1zLnNvcnQoKQorCQlmb3IgcmFuZ2VNYXhQUEVNLCByYW5nZUdhc3BCZWhhdmlvciBpbiBpdGVtczoKKwkJCXdyaXRlci5zaW1wbGV0YWcoImdhc3BSYW5nZSIsIFsKKwkJCQkJKCJyYW5nZU1heFBQRU0iLCByYW5nZU1heFBQRU0pLAorCQkJCQkoInJhbmdlR2FzcEJlaGF2aW9yIiwgcmFuZ2VHYXNwQmVoYXZpb3IpXSkKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkKKwlkZWYgZnJvbVhNTChzZWxmLCAobmFtZSwgYXR0cnMsIGNvbnRlbnQpLCB0dEZvbnQpOgorCQlpZiBuYW1lIDw+ICJnYXNwUmFuZ2UiOgorCQkJcmV0dXJuCisJCWlmIG5vdCBoYXNhdHRyKHNlbGYsICJnYXNwUmFuZ2UiKToKKwkJCXNlbGYuZ2FzcFJhbmdlID0ge30KKwkJc2VsZi5nYXNwUmFuZ2Vbc2FmZUV2YWwoYXR0cnNbInJhbmdlTWF4UFBFTSJdKV0gPSBzYWZlRXZhbChhdHRyc1sicmFuZ2VHYXNwQmVoYXZpb3IiXSkKKwpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvX2dfbF95X2YucHkgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9fZ19sX3lfZi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWY5YmU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvX2dfbF95X2YucHkKQEAgLTAsMCArMSw3NzggQEAKKyIiIl9nX2xfeV9mLnB5IC0tIENvbnZlcnRlciBjbGFzc2VzIGZvciB0aGUgJ2dseWYnIHRhYmxlLiIiIgorCisKKyMKKyMgVGhlIEFwcGxlIGFuZCBNUyByYXN0ZXJpemVycyBiZWhhdmUgZGlmZmVyZW50bHkgZm9yIAorIyBzY2FsZWQgY29tcG9zaXRlIGNvbXBvbmVudHM6IG9uZSBkb2VzIHNjYWxlIGZpcnN0IGFuZCB0aGVuIHRyYW5zbGF0ZQorIyBhbmQgdGhlIG90aGVyIGRvZXMgaXQgdmljZSB2ZXJzYS4gTVMgZGVmaW5lZCBzb21lIGZsYWdzIHRvIGluZGljYXRlCisjIHRoZSBkaWZmZXJlbmNlLCBidXQgaXQgc2VlbXMgbm9ib2R5IGFjdHVhbGx5IF9zZXRzXyB0aG9zZSBmbGFncy4KKyMKKyMgRnVubnkgdGhpbmc6IEFwcGxlIHNlZW1zIHRvIF9vbmx5XyBkbyB0aGVpciB0aGluZyBpbiB0aGUKKyMgV0VfSEFWRV9BX1NDQUxFIChlZy4gQ2hpY2FnbykgY2FzZSwgYW5kIG5vdCB3aGVuIGl0J3MgV0VfSEFWRV9BTl9YX0FORF9ZX1NDQUxFIAorIyAoZWcuIENoYXJjb2FsKS4uLgorIworU0NBTEVfQ09NUE9ORU5UX09GRlNFVF9ERUZBVUxUID0gMCAgICMgMCA9PSBNUywgMSA9PSBBcHBsZQorCisKK2ltcG9ydCBzdHJ1Y3QsIHNzdHJ1Y3QKK2ltcG9ydCBEZWZhdWx0VGFibGUKK2Zyb20gZm9udFRvb2xzIGltcG9ydCB0dExpYgorZnJvbSBmb250VG9vbHMubWlzYy50ZXh0VG9vbHMgaW1wb3J0IHNhZmVFdmFsLCByZWFkSGV4CitpbXBvcnQgYXJyYXkKK2ltcG9ydCBOdW1lcmljCitpbXBvcnQgdHlwZXMKKworY2xhc3MgdGFibGVfX2dfbF95X2YoRGVmYXVsdFRhYmxlLkRlZmF1bHRUYWJsZSk6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCBkYXRhLCB0dEZvbnQpOgorCQlsb2NhID0gdHRGb250Wydsb2NhJ10KKwkJbGFzdCA9IGxvY2FbMF0KKwkJc2VsZi5nbHlwaHMgPSB7fQorCQlzZWxmLmdseXBoT3JkZXIgPSBbXQorCQlzZWxmLmdseXBoT3JkZXIgPSBnbHlwaE9yZGVyID0gdHRGb250LmdldEdseXBoT3JkZXIoKQorCQlmb3IgaSBpbiByYW5nZSgwLCBsZW4obG9jYSktMSk6CisJCQlnbHlwaE5hbWUgPSBnbHlwaE9yZGVyW2ldCisJCQluZXh0ID0gbG9jYVtpKzFdCisJCQlnbHlwaGRhdGEgPSBkYXRhW2xhc3Q6bmV4dF0KKwkJCWlmIGxlbihnbHlwaGRhdGEpIDw+IChuZXh0IC0gbGFzdCk6CisJCQkJcmFpc2UgdHRMaWIuVFRMaWJFcnJvciwgIm5vdCBlbm91Z2ggJ2dseWYnIHRhYmxlIGRhdGEiCisJCQlnbHlwaCA9IEdseXBoKGdseXBoZGF0YSkKKwkJCXNlbGYuZ2x5cGhzW2dseXBoTmFtZV0gPSBnbHlwaAorCQkJbGFzdCA9IG5leHQKKwkJaWYgbGVuKGRhdGEpID4gbmV4dDoKKwkJCXJhaXNlIHR0TGliLlRUTGliRXJyb3IsICJ0b28gbXVjaCAnZ2x5ZicgdGFibGUgZGF0YSIKKwkKKwlkZWYgY29tcGlsZShzZWxmLCB0dEZvbnQpOgorCQlpbXBvcnQgc3RyaW5nCisJCWxvY2F0aW9ucyA9IFtdCisJCWN1cnJlbnRMb2NhdGlvbiA9IDAKKwkJZGF0YUxpc3QgPSBbXQorCQlmb3IgZ2x5cGhOYW1lIGluIHR0Rm9udC5nZXRHbHlwaE9yZGVyKCk6CisJCQlnbHlwaCA9IHNlbGZbZ2x5cGhOYW1lXQorCQkJZ2x5cGhEYXRhID0gZ2x5cGguY29tcGlsZShzZWxmKQorCQkJbG9jYXRpb25zLmFwcGVuZChjdXJyZW50TG9jYXRpb24pCisJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24gKyBsZW4oZ2x5cGhEYXRhKQorCQkJZGF0YUxpc3QuYXBwZW5kKGdseXBoRGF0YSkKKwkJbG9jYXRpb25zLmFwcGVuZChjdXJyZW50TG9jYXRpb24pCisJCWRhdGEgPSBzdHJpbmcuam9pbihkYXRhTGlzdCwgIiIpCisJCXR0Rm9udFsnbG9jYSddLnNldChsb2NhdGlvbnMpCisJCXR0Rm9udFsnbWF4cCddLm51bUdseXBocyA9IGxlbihzZWxmLmdseXBocykKKwkJcmV0dXJuIGRhdGEKKwkKKwlkZWYgdG9YTUwoc2VsZiwgd3JpdGVyLCB0dEZvbnQsIHByb2dyZXNzPU5vbmUsIGNvbXBhY3RHbHlwaHM9MCk6CisJCXdyaXRlci5uZXdsaW5lKCkKKwkJZ2x5cGhPcmRlciA9IHR0Rm9udC5nZXRHbHlwaE9yZGVyKCkKKwkJd3JpdGVyLmJlZ2ludGFnKCJHbHlwaE9yZGVyIikKKwkJd3JpdGVyLm5ld2xpbmUoKQorCQlmb3IgaSBpbiByYW5nZShsZW4oZ2x5cGhPcmRlcikpOgorCQkJZ2x5cGhOYW1lID0gZ2x5cGhPcmRlcltpXQorCQkJd3JpdGVyLnNpbXBsZXRhZygiR2x5cGhJRCIsIGlkPWksIG5hbWU9Z2x5cGhOYW1lKQorCQkJd3JpdGVyLm5ld2xpbmUoKQorCQl3cml0ZXIuZW5kdGFnKCJHbHlwaE9yZGVyIikKKwkJd3JpdGVyLm5ld2xpbmUoKQorCQl3cml0ZXIubmV3bGluZSgpCisJCWdseXBoTmFtZXMgPSB0dEZvbnQuZ2V0R2x5cGhOYW1lcygpCisJCXdyaXRlci5jb21tZW50KCJUaGUgeE1pbiwgeU1pbiwgeE1heCBhbmQgeU1heCB2YWx1ZXNcbndpbGwgYmUgcmVjYWxjdWxhdGVkIGJ5IHRoZSBjb21waWxlci4iKQorCQl3cml0ZXIubmV3bGluZSgpCisJCXdyaXRlci5uZXdsaW5lKCkKKwkJZm9yIGdseXBoTmFtZSBpbiBnbHlwaE5hbWVzOgorCQkJaWYgcHJvZ3Jlc3M6CisJCQkJcHJvZ3Jlc3Muc2V0bGFiZWwoIkR1bXBpbmcgJ2dseWYnIHRhYmxlLi4uICglcykiICUgZ2x5cGhOYW1lKQorCQkJCXByb2dyZXNzLmluY3JlbWVudCgpCisJCQlnbHlwaCA9IHNlbGZbZ2x5cGhOYW1lXQorCQkJaWYgZ2x5cGgubnVtYmVyT2ZDb250b3VyczoKKwkJCQl3cml0ZXIuYmVnaW50YWcoJ1RUR2x5cGgnLCBbCisJCQkJCQkoIm5hbWUiLCBnbHlwaE5hbWUpLAorCQkJCQkJKCJ4TWluIiwgZ2x5cGgueE1pbiksCisJCQkJCQkoInlNaW4iLCBnbHlwaC55TWluKSwKKwkJCQkJCSgieE1heCIsIGdseXBoLnhNYXgpLAorCQkJCQkJKCJ5TWF4IiwgZ2x5cGgueU1heCksCisJCQkJCQldKQorCQkJCXdyaXRlci5uZXdsaW5lKCkKKwkJCQlnbHlwaC50b1hNTCh3cml0ZXIsIHR0Rm9udCkKKwkJCQlpZiBjb21wYWN0R2x5cGhzOgorCQkJCQlnbHlwaC5jb21wYWN0KHNlbGYpCisJCQkJd3JpdGVyLmVuZHRhZygnVFRHbHlwaCcpCisJCQkJd3JpdGVyLm5ld2xpbmUoKQorCQkJZWxzZToKKwkJCQl3cml0ZXIuc2ltcGxldGFnKCdUVEdseXBoJywgbmFtZT1nbHlwaE5hbWUpCisJCQkJd3JpdGVyLmNvbW1lbnQoImNvbnRhaW5zIG5vIG91dGxpbmUgZGF0YSIpCisJCQkJd3JpdGVyLm5ld2xpbmUoKQorCQkJd3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIHR0Rm9udCk6CisJCWlmIG5hbWUgPT0gIkdseXBoT3JkZXIiOgorCQkJZ2x5cGhPcmRlciA9IFtdCisJCQlmb3IgZWxlbWVudCBpbiBjb250ZW50OgorCQkJCWlmIHR5cGUoZWxlbWVudCkgPT0gdHlwZXMuU3RyaW5nVHlwZToKKwkJCQkJY29udGludWUKKwkJCQluYW1lLCBhdHRycywgY29udGVudCA9IGVsZW1lbnQKKwkJCQlpZiBuYW1lID09ICJHbHlwaElEIjoKKwkJCQkJaW5kZXggPSBzYWZlRXZhbChhdHRyc1siaWQiXSkKKwkJCQkJZ2x5cGhOYW1lID0gYXR0cnNbIm5hbWUiXQorCQkJCQlnbHlwaE9yZGVyID0gZ2x5cGhPcmRlciArICgxICsgaW5kZXggLSBsZW4oZ2x5cGhPcmRlcikpICogWyIubm90ZGVmIl0KKwkJCQkJZ2x5cGhPcmRlcltpbmRleF0gPSBnbHlwaE5hbWUKKwkJCXR0Rm9udC5zZXRHbHlwaE9yZGVyKGdseXBoT3JkZXIpCisJCWVsaWYgbmFtZSA9PSAiVFRHbHlwaCI6CisJCQlpZiBub3QgaGFzYXR0cihzZWxmLCAiZ2x5cGhzIik6CisJCQkJc2VsZi5nbHlwaHMgPSB7fQorCQkJZ2x5cGhOYW1lID0gYXR0cnNbIm5hbWUiXQorCQkJaWYgdHRGb250LnZlcmJvc2U6CisJCQkJdHRMaWIuZGVidWdtc2coInVucGFja2luZyBnbHlwaCAnJXMnIiAlIGdseXBoTmFtZSkKKwkJCWdseXBoID0gR2x5cGgoKQorCQkJZm9yIGF0dHIgaW4gWyd4TWluJywgJ3lNaW4nLCAneE1heCcsICd5TWF4J106CisJCQkJc2V0YXR0cihnbHlwaCwgYXR0ciwgc2FmZUV2YWwoYXR0cnMuZ2V0KGF0dHIsICcwJykpKQorCQkJc2VsZi5nbHlwaHNbZ2x5cGhOYW1lXSA9IGdseXBoCisJCQlmb3IgZWxlbWVudCBpbiBjb250ZW50OgorCQkJCWlmIHR5cGUoZWxlbWVudCkgPT0gdHlwZXMuU3RyaW5nVHlwZToKKwkJCQkJY29udGludWUKKwkJCQlnbHlwaC5mcm9tWE1MKGVsZW1lbnQsIHR0Rm9udCkKKwkKKwlkZWYgc2V0R2x5cGhPcmRlcihzZWxmLCBnbHlwaE9yZGVyKToKKwkJc2VsZi5nbHlwaE9yZGVyID0gZ2x5cGhPcmRlcgorCQorCWRlZiBnZXRHbHlwaE5hbWUoc2VsZiwgZ2x5cGhJRCk6CisJCXJldHVybiBzZWxmLmdseXBoT3JkZXJbZ2x5cGhJRF0KKwkKKwlkZWYgZ2V0R2x5cGhJRChzZWxmLCBnbHlwaE5hbWUpOgorCQkjIFhYWCBvcHRpbWl6ZSB3aXRoIHJldmVyc2UgZGljdCEhIQorCQlyZXR1cm4gc2VsZi5nbHlwaE9yZGVyLmluZGV4KGdseXBoTmFtZSkKKwkKKwkjZGVmIGtleXMoc2VsZik6CisJIwlyZXR1cm4gc2VsZi5nbHlwaE9yZGVyWzpdCisJIworCSNkZWYgaGFzX2tleShzZWxmLCBnbHlwaE5hbWUpOgorCSMJcmV0dXJuIHNlbGYuZ2x5cGhzLmhhc19rZXkoZ2x5cGhOYW1lKQorCSMKKwlkZWYgX19nZXRpdGVtX18oc2VsZiwgZ2x5cGhOYW1lKToKKwkJZ2x5cGggPSBzZWxmLmdseXBoc1tnbHlwaE5hbWVdCisJCWdseXBoLmV4cGFuZChzZWxmKQorCQlyZXR1cm4gZ2x5cGgKKwkKKwlkZWYgX19zZXRpdGVtX18oc2VsZiwgZ2x5cGhOYW1lLCBnbHlwaCk6CisJCXNlbGYuZ2x5cGhzW2dseXBoTmFtZV0gPSBnbHlwaAorCQlpZiBnbHlwaE5hbWUgbm90IGluIHNlbGYuZ2x5cGhPcmRlcjoKKwkJCXNlbGYuZ2x5cGhPcmRlci5hcHBlbmQoZ2x5cGhOYW1lKQorCQorCWRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBnbHlwaE5hbWUpOgorCQlkZWwgc2VsZi5nbHlwaHNbZ2x5cGhOYW1lXQorCQlzZWxmLmdseXBoT3JkZXIucmVtb3ZlKGdseXBoTmFtZSkKKwkKKwlkZWYgX19sZW5fXyhzZWxmKToKKwkJYXNzZXJ0IGxlbihzZWxmLmdseXBoT3JkZXIpID09IGxlbihzZWxmLmdseXBocykKKwkJcmV0dXJuIGxlbihzZWxmLmdseXBocykKKworCitnbHlwaEhlYWRlckZvcm1hdCA9ICIiIgorCQk+CSMgYmlnIGVuZGlhbgorCQludW1iZXJPZkNvbnRvdXJzOgloCisJCXhNaW46CQkJCWgKKwkJeU1pbjoJCQkJaAorCQl4TWF4OgkJCQloCisJCXlNYXg6CQkJCWgKKyIiIgorCisjIGZsYWdzCitmbGFnT25DdXJ2ZSA9IDB4MDEKK2ZsYWdYU2hvcnQgPSAweDAyCitmbGFnWVNob3J0ID0gMHgwNAorZmxhZ1JlcGVhdCA9IDB4MDgKK2ZsYWdYc2FtZSA9ICAweDEwCitmbGFnWXNhbWUgPSAweDIwCitmbGFnUmVzZXJ2ZWQxID0gMHg0MAorZmxhZ1Jlc2VydmVkMiA9IDB4ODAKKworCitBUkdfMV9BTkRfMl9BUkVfV09SRFMgICAgICA9IDB4MDAwMSAgIyBpZiBzZXQgYXJncyBhcmUgd29yZHMgb3RoZXJ3aXNlIHRoZXkgYXJlIGJ5dGVzIAorQVJHU19BUkVfWFlfVkFMVUVTICAgICAgICAgPSAweDAwMDIgICMgaWYgc2V0IGFyZ3MgYXJlIHh5IHZhbHVlcywgb3RoZXJ3aXNlIHRoZXkgYXJlIHBvaW50cyAKK1JPVU5EX1hZX1RPX0dSSUQgICAgICAgICAgID0gMHgwMDA0ICAjIGZvciB0aGUgeHkgdmFsdWVzIGlmIGFib3ZlIGlzIHRydWUgCitXRV9IQVZFX0FfU0NBTEUgICAgICAgICAgICA9IDB4MDAwOCAgIyBTeCA9IFN5LCBvdGhlcndpc2Ugc2NhbGUgPT0gMS4wIAorTk9OX09WRVJMQVBQSU5HICAgICAgICAgICAgPSAweDAwMTAgICMgc2V0IHRvIHNhbWUgdmFsdWUgZm9yIGFsbCBjb21wb25lbnRzIChvYnNvbGV0ZSEpCitNT1JFX0NPTVBPTkVOVFMgICAgICAgICAgICA9IDB4MDAyMCAgIyBpbmRpY2F0ZXMgYXQgbGVhc3Qgb25lIG1vcmUgZ2x5cGggYWZ0ZXIgdGhpcyBvbmUgCitXRV9IQVZFX0FOX1hfQU5EX1lfU0NBTEUgICA9IDB4MDA0MCAgIyBTeCwgU3kgCitXRV9IQVZFX0FfVFdPX0JZX1RXTyAgICAgICA9IDB4MDA4MCAgIyB0MDAsIHQwMSwgdDEwLCB0MTEgCitXRV9IQVZFX0lOU1RSVUNUSU9OUyAgICAgICA9IDB4MDEwMCAgIyBpbnN0cnVjdGlvbnMgZm9sbG93IAorVVNFX01ZX01FVFJJQ1MgICAgICAgICAgICAgPSAweDAyMDAgICMgYXBwbHkgdGhlc2UgbWV0cmljcyB0byBwYXJlbnQgZ2x5cGggCitPVkVSTEFQX0NPTVBPVU5EICAgICAgICAgICA9IDB4MDQwMCAgIyB1c2VkIGJ5IEFwcGxlIGluIEdYIGZvbnRzIAorU0NBTEVEX0NPTVBPTkVOVF9PRkZTRVQgICAgPSAweDA4MDAgICMgY29tcG9zaXRlIGRlc2lnbmVkIHRvIGhhdmUgdGhlIGNvbXBvbmVudCBvZmZzZXQgc2NhbGVkIChkZXNpZ25lZCBmb3IgQXBwbGUpIAorVU5TQ0FMRURfQ09NUE9ORU5UX09GRlNFVCAgPSAweDEwMDAgICMgY29tcG9zaXRlIGRlc2lnbmVkIG5vdCB0byBoYXZlIHRoZSBjb21wb25lbnQgb2Zmc2V0IHNjYWxlZCAoZGVzaWduZWQgZm9yIE1TKSAKKworCitjbGFzcyBHbHlwaDoKKwkKKwlkZWYgX19pbml0X18oc2VsZiwgZGF0YT0iIik6CisJCWlmIG5vdCBkYXRhOgorCQkJIyBlbXB0eSBjaGFyCisJCQlzZWxmLm51bWJlck9mQ29udG91cnMgPSAwCisJCQlyZXR1cm4KKwkJc2VsZi5kYXRhID0gZGF0YQorCQorCWRlZiBjb21wYWN0KHNlbGYsIGdseWZUYWJsZSk6CisJCWRhdGEgPSBzZWxmLmNvbXBpbGUoZ2x5ZlRhYmxlKQorCQlzZWxmLl9fZGljdF9fLmNsZWFyKCkKKwkJc2VsZi5kYXRhID0gZGF0YQorCQorCWRlZiBleHBhbmQoc2VsZiwgZ2x5ZlRhYmxlKToKKwkJaWYgbm90IGhhc2F0dHIoc2VsZiwgImRhdGEiKToKKwkJCSMgYWxyZWFkeSB1bnBhY2tlZAorCQkJcmV0dXJuCisJCWR1bW15LCBkYXRhID0gc3N0cnVjdC51bnBhY2syKGdseXBoSGVhZGVyRm9ybWF0LCBzZWxmLmRhdGEsIHNlbGYpCisJCWRlbCBzZWxmLmRhdGEKKwkJaWYgc2VsZi5udW1iZXJPZkNvbnRvdXJzID09IC0xOgorCQkJc2VsZi5kZWNvbXBpbGVDb21wb25lbnRzKGRhdGEsIGdseWZUYWJsZSkKKwkJZWxzZToKKwkJCXNlbGYuZGVjb21waWxlQ29vcmRpbmF0ZXMoZGF0YSkKKwkKKwlkZWYgY29tcGlsZShzZWxmLCBnbHlmVGFibGUpOgorCQlpZiBoYXNhdHRyKHNlbGYsICJkYXRhIik6CisJCQlyZXR1cm4gc2VsZi5kYXRhCisJCWlmIHNlbGYubnVtYmVyT2ZDb250b3VycyA9PSAwOgorCQkJcmV0dXJuICIiCisJCXNlbGYucmVjYWxjQm91bmRzKGdseWZUYWJsZSkKKwkJZGF0YSA9IHNzdHJ1Y3QucGFjayhnbHlwaEhlYWRlckZvcm1hdCwgc2VsZikKKwkJaWYgc2VsZi5udW1iZXJPZkNvbnRvdXJzID09IC0xOgorCQkJZGF0YSA9IGRhdGEgKyBzZWxmLmNvbXBpbGVDb21wb25lbnRzKGdseWZUYWJsZSkKKwkJZWxzZToKKwkJCWRhdGEgPSBkYXRhICsgc2VsZi5jb21waWxlQ29vcmRpbmF0ZXMoKQorCQkjIGZyb20gdGhlIHNwZWM6ICJOb3RlIHRoYXQgdGhlIGxvY2FsIG9mZnNldHMgc2hvdWxkIGJlIHdvcmQtYWxpZ25lZCIKKwkJaWYgbGVuKGRhdGEpICUgMjoKKwkJCSMgLi4uc28gaWYgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YSBpcyBvZGQsIGFwcGVuZCBhIG51bGwgYnl0ZQorCQkJZGF0YSA9IGRhdGEgKyAiXDAiCisJCXJldHVybiBkYXRhCisJCisJZGVmIHRvWE1MKHNlbGYsIHdyaXRlciwgdHRGb250KToKKwkJaWYgc2VsZi5udW1iZXJPZkNvbnRvdXJzID09IC0xOgorCQkJZm9yIGNvbXBvIGluIHNlbGYuY29tcG9uZW50czoKKwkJCQljb21wby50b1hNTCh3cml0ZXIsIHR0Rm9udCkKKwkJCWlmIGhhc2F0dHIoc2VsZiwgImluc3RydWN0aW9ucyIpOgorCQkJCXdyaXRlci5iZWdpbnRhZygiaW5zdHJ1Y3Rpb25zIikKKwkJCQl3cml0ZXIubmV3bGluZSgpCisJCQkJd3JpdGVyLmR1bXBoZXgoc2VsZi5pbnN0cnVjdGlvbnMpCisJCQkJd3JpdGVyLmVuZHRhZygiaW5zdHJ1Y3Rpb25zIikKKwkJCQl3cml0ZXIubmV3bGluZSgpCisJCWVsc2U6CisJCQlsYXN0ID0gMAorCQkJZm9yIGkgaW4gcmFuZ2Uoc2VsZi5udW1iZXJPZkNvbnRvdXJzKToKKwkJCQl3cml0ZXIuYmVnaW50YWcoImNvbnRvdXIiKQorCQkJCXdyaXRlci5uZXdsaW5lKCkKKwkJCQlmb3IgaiBpbiByYW5nZShsYXN0LCBzZWxmLmVuZFB0c09mQ29udG91cnNbaV0gKyAxKToKKwkJCQkJd3JpdGVyLnNpbXBsZXRhZygicHQiLCBbCisJCQkJCQkJKCJ4Iiwgc2VsZi5jb29yZGluYXRlc1tqXVswXSksIAorCQkJCQkJCSgieSIsIHNlbGYuY29vcmRpbmF0ZXNbal1bMV0pLAorCQkJCQkJCSgib24iLCBzZWxmLmZsYWdzW2pdICYgZmxhZ09uQ3VydmUpXSkKKwkJCQkJd3JpdGVyLm5ld2xpbmUoKQorCQkJCWxhc3QgPSBzZWxmLmVuZFB0c09mQ29udG91cnNbaV0gKyAxCisJCQkJd3JpdGVyLmVuZHRhZygiY29udG91ciIpCisJCQkJd3JpdGVyLm5ld2xpbmUoKQorCQkJaWYgc2VsZi5udW1iZXJPZkNvbnRvdXJzOgorCQkJCXdyaXRlci5iZWdpbnRhZygiaW5zdHJ1Y3Rpb25zIikKKwkJCQl3cml0ZXIubmV3bGluZSgpCisJCQkJd3JpdGVyLmR1bXBoZXgoc2VsZi5pbnN0cnVjdGlvbnMpCisJCQkJd3JpdGVyLmVuZHRhZygiaW5zdHJ1Y3Rpb25zIikKKwkJCQl3cml0ZXIubmV3bGluZSgpCisJCisJZGVmIGZyb21YTUwoc2VsZiwgKG5hbWUsIGF0dHJzLCBjb250ZW50KSwgdHRGb250KToKKwkJaWYgbmFtZSA9PSAiY29udG91ciI6CisJCQlzZWxmLm51bWJlck9mQ29udG91cnMgPSBzZWxmLm51bWJlck9mQ29udG91cnMgKyAxCisJCQlpZiBzZWxmLm51bWJlck9mQ29udG91cnMgPCAwOgorCQkJCXJhaXNlIHR0TGliLlRUTGliRXJyb3IsICJjYW4ndCBtaXggY29tcG9zaXRlcyBhbmQgY29udG91cnMgaW4gZ2x5cGgiCisJCQljb29yZGluYXRlcyA9IFtdCisJCQlmbGFncyA9IFtdCisJCQlmb3IgZWxlbWVudCBpbiBjb250ZW50OgorCQkJCWlmIHR5cGUoZWxlbWVudCkgPT0gdHlwZXMuU3RyaW5nVHlwZToKKwkJCQkJY29udGludWUKKwkJCQluYW1lLCBhdHRycywgY29udGVudCA9IGVsZW1lbnQKKwkJCQlpZiBuYW1lIDw+ICJwdCI6CisJCQkJCWNvbnRpbnVlICAjIGlnbm9yZSBhbnl0aGluZyBidXQgInB0IgorCQkJCWNvb3JkaW5hdGVzLmFwcGVuZChbc2FmZUV2YWwoYXR0cnNbIngiXSksIHNhZmVFdmFsKGF0dHJzWyJ5Il0pXSkKKwkJCQlmbGFncy5hcHBlbmQobm90IG5vdCBzYWZlRXZhbChhdHRyc1sib24iXSkpCisJCQljb29yZGluYXRlcyA9IE51bWVyaWMuYXJyYXkoY29vcmRpbmF0ZXMsIE51bWVyaWMuSW50MTYpCisJCQlmbGFncyA9IE51bWVyaWMuYXJyYXkoZmxhZ3MsIE51bWVyaWMuSW50OCkKKwkJCWlmIG5vdCBoYXNhdHRyKHNlbGYsICJjb29yZGluYXRlcyIpOgorCQkJCXNlbGYuY29vcmRpbmF0ZXMgPSBjb29yZGluYXRlcworCQkJCXNlbGYuZmxhZ3MgPSBmbGFncworCQkJCXNlbGYuZW5kUHRzT2ZDb250b3VycyA9IFtsZW4oY29vcmRpbmF0ZXMpLTFdCisJCQllbHNlOgorCQkJCXNlbGYuY29vcmRpbmF0ZXMgPSBOdW1lcmljLmNvbmNhdGVuYXRlKChzZWxmLmNvb3JkaW5hdGVzLCBjb29yZGluYXRlcykpCisJCQkJc2VsZi5mbGFncyA9IE51bWVyaWMuY29uY2F0ZW5hdGUoKHNlbGYuZmxhZ3MsIGZsYWdzKSkKKwkJCQlzZWxmLmVuZFB0c09mQ29udG91cnMuYXBwZW5kKGxlbihzZWxmLmNvb3JkaW5hdGVzKS0xKQorCQllbGlmIG5hbWUgPT0gImNvbXBvbmVudCI6CisJCQlpZiBzZWxmLm51bWJlck9mQ29udG91cnMgPiAwOgorCQkJCXJhaXNlIHR0TGliLlRUTGliRXJyb3IsICJjYW4ndCBtaXggY29tcG9zaXRlcyBhbmQgY29udG91cnMgaW4gZ2x5cGgiCisJCQlzZWxmLm51bWJlck9mQ29udG91cnMgPSAtMQorCQkJaWYgbm90IGhhc2F0dHIoc2VsZiwgImNvbXBvbmVudHMiKToKKwkJCQlzZWxmLmNvbXBvbmVudHMgPSBbXQorCQkJY29tcG9uZW50ID0gR2x5cGhDb21wb25lbnQoKQorCQkJc2VsZi5jb21wb25lbnRzLmFwcGVuZChjb21wb25lbnQpCisJCQljb21wb25lbnQuZnJvbVhNTCgobmFtZSwgYXR0cnMsIGNvbnRlbnQpLCB0dEZvbnQpCisJCWVsaWYgbmFtZSA9PSAiaW5zdHJ1Y3Rpb25zIjoKKwkJCXNlbGYuaW5zdHJ1Y3Rpb25zID0gcmVhZEhleChjb250ZW50KQorCQorCWRlZiBnZXRDb21wb3NpdGVNYXhwVmFsdWVzKHNlbGYsIGdseWZUYWJsZSwgbWF4Q29tcG9uZW50RGVwdGg9MSk6CisJCWFzc2VydCBzZWxmLm51bWJlck9mQ29udG91cnMgPT0gLTEKKwkJbkNvbnRvdXJzID0gMAorCQluUG9pbnRzID0gMAorCQlmb3IgY29tcG8gaW4gc2VsZi5jb21wb25lbnRzOgorCQkJYmFzZUdseXBoID0gZ2x5ZlRhYmxlW2NvbXBvLmdseXBoTmFtZV0KKwkJCWlmIGJhc2VHbHlwaC5udW1iZXJPZkNvbnRvdXJzID09IDA6CisJCQkJY29udGludWUKKwkJCWVsaWYgYmFzZUdseXBoLm51bWJlck9mQ29udG91cnMgPiAwOgorCQkJCW5QLCBuQyA9IGJhc2VHbHlwaC5nZXRNYXhwVmFsdWVzKCkKKwkJCWVsc2U6CisJCQkJblAsIG5DLCBtYXhDb21wb25lbnREZXB0aCA9IGJhc2VHbHlwaC5nZXRDb21wb3NpdGVNYXhwVmFsdWVzKAorCQkJCQkJZ2x5ZlRhYmxlLCBtYXhDb21wb25lbnREZXB0aCArIDEpCisJCQluUG9pbnRzID0gblBvaW50cyArIG5QCisJCQluQ29udG91cnMgPSBuQ29udG91cnMgKyBuQworCQlyZXR1cm4gblBvaW50cywgbkNvbnRvdXJzLCBtYXhDb21wb25lbnREZXB0aAorCQorCWRlZiBnZXRNYXhwVmFsdWVzKHNlbGYpOgorCQlhc3NlcnQgc2VsZi5udW1iZXJPZkNvbnRvdXJzID4gMAorCQlyZXR1cm4gbGVuKHNlbGYuY29vcmRpbmF0ZXMpLCBsZW4oc2VsZi5lbmRQdHNPZkNvbnRvdXJzKQorCQorCWRlZiBkZWNvbXBpbGVDb21wb25lbnRzKHNlbGYsIGRhdGEsIGdseWZUYWJsZSk6CisJCXNlbGYuY29tcG9uZW50cyA9IFtdCisJCW1vcmUgPSAxCisJCWhhdmVJbnN0cnVjdGlvbnMgPSAwCisJCXdoaWxlIG1vcmU6CisJCQljb21wb25lbnQgPSBHbHlwaENvbXBvbmVudCgpCisJCQltb3JlLCBoYXZlSW5zdHIsIGRhdGEgPSBjb21wb25lbnQuZGVjb21waWxlKGRhdGEsIGdseWZUYWJsZSkKKwkJCWhhdmVJbnN0cnVjdGlvbnMgPSBoYXZlSW5zdHJ1Y3Rpb25zIHwgaGF2ZUluc3RyCisJCQlzZWxmLmNvbXBvbmVudHMuYXBwZW5kKGNvbXBvbmVudCkKKwkJaWYgaGF2ZUluc3RydWN0aW9uczoKKwkJCW51bUluc3RydWN0aW9ucywgPSBzdHJ1Y3QudW5wYWNrKCI+aCIsIGRhdGFbOjJdKQorCQkJZGF0YSA9IGRhdGFbMjpdCisJCQlzZWxmLmluc3RydWN0aW9ucyA9IGRhdGFbOm51bUluc3RydWN0aW9uc10KKwkJCWRhdGEgPSBkYXRhW251bUluc3RydWN0aW9uczpdCisJCQlhc3NlcnQgbGVuKGRhdGEpIGluICgwLCAxKSwgImJhZCBjb21wb3NpdGUgZGF0YSIKKwkKKwlkZWYgZGVjb21waWxlQ29vcmRpbmF0ZXMoc2VsZiwgZGF0YSk6CisJCWVuZFB0c09mQ29udG91cnMgPSBhcnJheS5hcnJheSgiaCIpCisJCWVuZFB0c09mQ29udG91cnMuZnJvbXN0cmluZyhkYXRhWzoyKnNlbGYubnVtYmVyT2ZDb250b3Vyc10pCisJCWlmIHR0TGliLmVuZGlhbiA8PiAiYmlnIjoKKwkJCWVuZFB0c09mQ29udG91cnMuYnl0ZXN3YXAoKQorCQlzZWxmLmVuZFB0c09mQ29udG91cnMgPSBlbmRQdHNPZkNvbnRvdXJzLnRvbGlzdCgpCisJCQorCQlkYXRhID0gZGF0YVsyKnNlbGYubnVtYmVyT2ZDb250b3VyczpdCisJCQorCQlpbnN0cnVjdGlvbkxlbmd0aCwgPSBzdHJ1Y3QudW5wYWNrKCI+aCIsIGRhdGFbOjJdKQorCQlkYXRhID0gZGF0YVsyOl0KKwkJc2VsZi5pbnN0cnVjdGlvbnMgPSBkYXRhWzppbnN0cnVjdGlvbkxlbmd0aF0KKwkJZGF0YSA9IGRhdGFbaW5zdHJ1Y3Rpb25MZW5ndGg6XQorCQluQ29vcmRpbmF0ZXMgPSBzZWxmLmVuZFB0c09mQ29udG91cnNbLTFdICsgMQorCQlmbGFncywgeENvb3JkaW5hdGVzLCB5Q29vcmRpbmF0ZXMgPSBcCisJCQkJc2VsZi5kZWNvbXBpbGVDb29yZGluYXRlc1JhdyhuQ29vcmRpbmF0ZXMsIGRhdGEpCisJCQorCQkjIGZpbGwgaW4gcmVwZXRpdGlvbnMgYW5kIGFwcGx5IHNpZ25zCisJCWNvb3JkaW5hdGVzID0gTnVtZXJpYy56ZXJvcygobkNvb3JkaW5hdGVzLCAyKSwgTnVtZXJpYy5JbnQxNikKKwkJeEluZGV4ID0gMAorCQl5SW5kZXggPSAwCisJCWZvciBpIGluIHJhbmdlKG5Db29yZGluYXRlcyk6CisJCQlmbGFnID0gZmxhZ3NbaV0KKwkJCSMgeCBjb29yZGluYXRlCisJCQlpZiBmbGFnICYgZmxhZ1hTaG9ydDoKKwkJCQlpZiBmbGFnICYgZmxhZ1hzYW1lOgorCQkJCQl4ID0geENvb3JkaW5hdGVzW3hJbmRleF0KKwkJCQllbHNlOgorCQkJCQl4ID0gLXhDb29yZGluYXRlc1t4SW5kZXhdCisJCQkJeEluZGV4ID0geEluZGV4ICsgMQorCQkJZWxpZiBmbGFnICYgZmxhZ1hzYW1lOgorCQkJCXggPSAwCisJCQllbHNlOgorCQkJCXggPSB4Q29vcmRpbmF0ZXNbeEluZGV4XQorCQkJCXhJbmRleCA9IHhJbmRleCArIDEKKwkJCSMgeSBjb29yZGluYXRlCisJCQlpZiBmbGFnICYgZmxhZ1lTaG9ydDoKKwkJCQlpZiBmbGFnICYgZmxhZ1lzYW1lOgorCQkJCQl5ID0geUNvb3JkaW5hdGVzW3lJbmRleF0KKwkJCQllbHNlOgorCQkJCQl5ID0gLXlDb29yZGluYXRlc1t5SW5kZXhdCisJCQkJeUluZGV4ID0geUluZGV4ICsgMQorCQkJZWxpZiBmbGFnICYgZmxhZ1lzYW1lOgorCQkJCXkgPSAwCisJCQllbHNlOgorCQkJCXkgPSB5Q29vcmRpbmF0ZXNbeUluZGV4XQorCQkJCXlJbmRleCA9IHlJbmRleCArIDEKKwkJCWNvb3JkaW5hdGVzW2ldID0gKHgsIHkpCisJCWFzc2VydCB4SW5kZXggPT0gbGVuKHhDb29yZGluYXRlcykKKwkJYXNzZXJ0IHlJbmRleCA9PSBsZW4oeUNvb3JkaW5hdGVzKQorCQkjIGNvbnZlcnQgcmVsYXRpdmUgdG8gYWJzb2x1dGUgY29vcmRpbmF0ZXMKKwkJc2VsZi5jb29yZGluYXRlcyA9IE51bWVyaWMuYWRkLmFjY3VtdWxhdGUoY29vcmRpbmF0ZXMpCisJCSMgZGlzY2FyZCBhbGwgZmxhZ3MgYnV0IGZvciAiZmxhZ09uQ3VydmUiCisJCWlmIGhhc2F0dHIoTnVtZXJpYywgIl9fdmVyc2lvbl9fIik6CisJCQlzZWxmLmZsYWdzID0gTnVtZXJpYy5iaXR3aXNlX2FuZChmbGFncywgZmxhZ09uQ3VydmUpLmFzdHlwZShOdW1lcmljLkludDgpCisJCWVsc2U6CisJCQlzZWxmLmZsYWdzID0gTnVtZXJpYy5ib29sZWFuX2FuZChmbGFncywgZmxhZ09uQ3VydmUpLmFzdHlwZShOdW1lcmljLkludDgpCisJCisJZGVmIGRlY29tcGlsZUNvb3JkaW5hdGVzUmF3KHNlbGYsIG5Db29yZGluYXRlcywgZGF0YSk6CisJCSMgdW5wYWNrIGZsYWdzIGFuZCBwcmVwYXJlIHVucGFja2luZyBvZiBjb29yZGluYXRlcworCQlmbGFncyA9IE51bWVyaWMuYXJyYXkoWzBdICogbkNvb3JkaW5hdGVzLCBOdW1lcmljLkludDgpCisJCSMgV2FybmluZzogZGVlcCBQeXRob24gdHJpY2tlcnkgZ29pbmcgb24uIFdlIHVzZSB0aGUgc3RydWN0IG1vZHVsZSB0byB1bnBhY2sKKwkJIyB0aGUgY29vcmRpbmF0ZXMuIFdlIGJ1aWxkIGEgZm9ybWF0IHN0cmluZyBiYXNlZCBvbiB0aGUgZmxhZ3MsIHNvIHdlIGNhbgorCQkjIHVucGFjayB0aGUgY29vcmRpbmF0ZXMgaW4gb25lIHN0cnVjdC51bnBhY2soKSBjYWxsLgorCQl4Rm9ybWF0ID0gIj4iICMgYmlnIGVuZGlhbgorCQl5Rm9ybWF0ID0gIj4iICMgYmlnIGVuZGlhbgorCQlpID0gaiA9IDAKKwkJd2hpbGUgMToKKwkJCWZsYWcgPSBvcmQoZGF0YVtpXSkKKwkJCWkgPSBpICsgMQorCQkJcmVwZWF0ID0gMQorCQkJaWYgZmxhZyAmIGZsYWdSZXBlYXQ6CisJCQkJcmVwZWF0ID0gb3JkKGRhdGFbaV0pICsgMQorCQkJCWkgPSBpICsgMQorCQkJZm9yIGsgaW4gcmFuZ2UocmVwZWF0KToKKwkJCQlpZiBmbGFnICYgZmxhZ1hTaG9ydDoKKwkJCQkJeEZvcm1hdCA9IHhGb3JtYXQgKyAnQicKKwkJCQllbGlmIG5vdCAoZmxhZyAmIGZsYWdYc2FtZSk6CisJCQkJCXhGb3JtYXQgPSB4Rm9ybWF0ICsgJ2gnCisJCQkJaWYgZmxhZyAmIGZsYWdZU2hvcnQ6CisJCQkJCXlGb3JtYXQgPSB5Rm9ybWF0ICsgJ0InCisJCQkJZWxpZiBub3QgKGZsYWcgJiBmbGFnWXNhbWUpOgorCQkJCQl5Rm9ybWF0ID0geUZvcm1hdCArICdoJworCQkJCWZsYWdzW2pdID0gZmxhZworCQkJCWogPSBqICsgMQorCQkJaWYgaiA+PSBuQ29vcmRpbmF0ZXM6CisJCQkJYnJlYWsKKwkJYXNzZXJ0IGogPT0gbkNvb3JkaW5hdGVzLCAiYmFkIGdseXBoIGZsYWdzIgorCQlkYXRhID0gZGF0YVtpOl0KKwkJIyB1bnBhY2sgcmF3IGNvb3JkaW5hdGVzLCBrcnJycnJyLXRjaGluZyEKKwkJeERhdGFMZW4gPSBzdHJ1Y3QuY2FsY3NpemUoeEZvcm1hdCkKKwkJeURhdGFMZW4gPSBzdHJ1Y3QuY2FsY3NpemUoeUZvcm1hdCkKKwkJaWYgKGxlbihkYXRhKSAtICh4RGF0YUxlbiArIHlEYXRhTGVuKSkgbm90IGluICgwLCAxKToKKwkJCXJhaXNlIHR0TGliLlRUTGliRXJyb3IsICJiYWQgZ2x5cGggcmVjb3JkIgorCQl4Q29vcmRpbmF0ZXMgPSBzdHJ1Y3QudW5wYWNrKHhGb3JtYXQsIGRhdGFbOnhEYXRhTGVuXSkKKwkJeUNvb3JkaW5hdGVzID0gc3RydWN0LnVucGFjayh5Rm9ybWF0LCBkYXRhW3hEYXRhTGVuOnhEYXRhTGVuK3lEYXRhTGVuXSkKKwkJcmV0dXJuIGZsYWdzLCB4Q29vcmRpbmF0ZXMsIHlDb29yZGluYXRlcworCQorCWRlZiBjb21waWxlQ29tcG9uZW50cyhzZWxmLCBnbHlmVGFibGUpOgorCQlkYXRhID0gIiIKKwkJbGFzdGNvbXBvbmVudCA9IGxlbihzZWxmLmNvbXBvbmVudHMpIC0gMQorCQltb3JlID0gMQorCQloYXZlSW5zdHJ1Y3Rpb25zID0gMAorCQlmb3IgaSBpbiByYW5nZShsZW4oc2VsZi5jb21wb25lbnRzKSk6CisJCQlpZiBpID09IGxhc3Rjb21wb25lbnQ6CisJCQkJaGF2ZUluc3RydWN0aW9ucyA9IGhhc2F0dHIoc2VsZiwgImluc3RydWN0aW9ucyIpCisJCQkJbW9yZSA9IDAKKwkJCWNvbXBvID0gc2VsZi5jb21wb25lbnRzW2ldCisJCQlkYXRhID0gZGF0YSArIGNvbXBvLmNvbXBpbGUobW9yZSwgaGF2ZUluc3RydWN0aW9ucywgZ2x5ZlRhYmxlKQorCQlpZiBoYXZlSW5zdHJ1Y3Rpb25zOgorCQkJZGF0YSA9IGRhdGEgKyBzdHJ1Y3QucGFjaygiPmgiLCBsZW4oc2VsZi5pbnN0cnVjdGlvbnMpKSArIHNlbGYuaW5zdHJ1Y3Rpb25zCisJCXJldHVybiBkYXRhCisJCQkKKwkKKwlkZWYgY29tcGlsZUNvb3JkaW5hdGVzKHNlbGYpOgorCQlhc3NlcnQgbGVuKHNlbGYuY29vcmRpbmF0ZXMpID09IGxlbihzZWxmLmZsYWdzKQorCQlkYXRhID0gIiIKKwkJZW5kUHRzT2ZDb250b3VycyA9IGFycmF5LmFycmF5KCJoIiwgc2VsZi5lbmRQdHNPZkNvbnRvdXJzKQorCQlpZiB0dExpYi5lbmRpYW4gPD4gImJpZyI6CisJCQllbmRQdHNPZkNvbnRvdXJzLmJ5dGVzd2FwKCkKKwkJZGF0YSA9IGRhdGEgKyBlbmRQdHNPZkNvbnRvdXJzLnRvc3RyaW5nKCkKKwkJZGF0YSA9IGRhdGEgKyBzdHJ1Y3QucGFjaygiPmgiLCBsZW4oc2VsZi5pbnN0cnVjdGlvbnMpKQorCQlkYXRhID0gZGF0YSArIHNlbGYuaW5zdHJ1Y3Rpb25zCisJCW5Db29yZGluYXRlcyA9IGxlbihzZWxmLmNvb3JkaW5hdGVzKQorCQkKKwkJIyBtYWtlIGEgY29weQorCQljb29yZGluYXRlcyA9IHNlbGYuY29vcmRpbmF0ZXMuYXN0eXBlKHNlbGYuY29vcmRpbmF0ZXMudHlwZWNvZGUoKSkKKwkJIyBhYnNvbHV0ZSB0byByZWxhdGl2ZSBjb29yZGluYXRlcworCQljb29yZGluYXRlc1sxOl0gPSBOdW1lcmljLnN1YnRyYWN0KGNvb3JkaW5hdGVzWzE6XSwgY29vcmRpbmF0ZXNbOi0xXSkKKwkJZmxhZ3MgPSBzZWxmLmZsYWdzCisJCWNvbXByZXNzZWRmbGFncyA9IFtdCisJCXhQb2ludHMgPSBbXQorCQl5UG9pbnRzID0gW10KKwkJeEZvcm1hdCA9ICI+IgorCQl5Rm9ybWF0ID0gIj4iCisJCWxhc3RmbGFnID0gTm9uZQorCQlyZXBlYXQgPSAwCisJCWZvciBpIGluIHJhbmdlKGxlbihjb29yZGluYXRlcykpOgorCQkJIyBPaCwgdGhlIGhvcnJvcnMgb2YgVHJ1ZVR5cGUKKwkJCWZsYWcgPSBzZWxmLmZsYWdzW2ldCisJCQl4LCB5ID0gY29vcmRpbmF0ZXNbaV0KKwkJCSMgZG8geAorCQkJaWYgeCA9PSAwOgorCQkJCWZsYWcgPSBmbGFnIHwgZmxhZ1hzYW1lCisJCQllbGlmIC0yNTUgPD0geCA8PSAyNTU6CisJCQkJZmxhZyA9IGZsYWcgfCBmbGFnWFNob3J0CisJCQkJaWYgeCA+IDA6CisJCQkJCWZsYWcgPSBmbGFnIHwgZmxhZ1hzYW1lCisJCQkJZWxzZToKKwkJCQkJeCA9IC14CisJCQkJeFBvaW50cy5hcHBlbmQoeCkKKwkJCQl4Rm9ybWF0ID0geEZvcm1hdCArICdCJworCQkJZWxzZToKKwkJCQl4UG9pbnRzLmFwcGVuZCh4KQorCQkJCXhGb3JtYXQgPSB4Rm9ybWF0ICsgJ2gnCisJCQkjIGRvIHkKKwkJCWlmIHkgPT0gMDoKKwkJCQlmbGFnID0gZmxhZyB8IGZsYWdZc2FtZQorCQkJZWxpZiAtMjU1IDw9IHkgPD0gMjU1OgorCQkJCWZsYWcgPSBmbGFnIHwgZmxhZ1lTaG9ydAorCQkJCWlmIHkgPiAwOgorCQkJCQlmbGFnID0gZmxhZyB8IGZsYWdZc2FtZQorCQkJCWVsc2U6CisJCQkJCXkgPSAteQorCQkJCXlQb2ludHMuYXBwZW5kKHkpCisJCQkJeUZvcm1hdCA9IHlGb3JtYXQgKyAnQicKKwkJCWVsc2U6CisJCQkJeVBvaW50cy5hcHBlbmQoeSkKKwkJCQl5Rm9ybWF0ID0geUZvcm1hdCArICdoJworCQkJIyBoYW5kbGUgcmVwZWF0aW5nIGZsYWdzCisJCQlpZiBmbGFnID09IGxhc3RmbGFnOgorCQkJCXJlcGVhdCA9IHJlcGVhdCArIDEKKwkJCQlpZiByZXBlYXQgPT0gMToKKwkJCQkJY29tcHJlc3NlZGZsYWdzLmFwcGVuZChmbGFnKQorCQkJCWVsaWYgcmVwZWF0ID4gMToKKwkJCQkJY29tcHJlc3NlZGZsYWdzWy0yXSA9IGZsYWcgfCBmbGFnUmVwZWF0CisJCQkJCWNvbXByZXNzZWRmbGFnc1stMV0gPSByZXBlYXQKKwkJCQllbHNlOgorCQkJCQljb21wcmVzc2VkZmxhZ3NbLTFdID0gcmVwZWF0CisJCQllbHNlOgorCQkJCXJlcGVhdCA9IDAKKwkJCQljb21wcmVzc2VkZmxhZ3MuYXBwZW5kKGZsYWcpCisJCQlsYXN0ZmxhZyA9IGZsYWcKKwkJZGF0YSA9IGRhdGEgKyBhcnJheS5hcnJheSgiQiIsIGNvbXByZXNzZWRmbGFncykudG9zdHJpbmcoKQorCQlkYXRhID0gZGF0YSArIGFwcGx5KHN0cnVjdC5wYWNrLCAoeEZvcm1hdCwpK3R1cGxlKHhQb2ludHMpKQorCQlkYXRhID0gZGF0YSArIGFwcGx5KHN0cnVjdC5wYWNrLCAoeUZvcm1hdCwpK3R1cGxlKHlQb2ludHMpKQorCQlyZXR1cm4gZGF0YQorCQorCWRlZiByZWNhbGNCb3VuZHMoc2VsZiwgZ2x5ZlRhYmxlKToKKwkJY29vcmRpbmF0ZXMsIGVuZFB0cywgZmxhZ3MgPSBzZWxmLmdldENvb3JkaW5hdGVzKGdseWZUYWJsZSkKKwkJc2VsZi54TWluLCBzZWxmLnlNaW4gPSBOdW1lcmljLm1pbmltdW0ucmVkdWNlKGNvb3JkaW5hdGVzKQorCQlzZWxmLnhNYXgsIHNlbGYueU1heCA9IE51bWVyaWMubWF4aW11bS5yZWR1Y2UoY29vcmRpbmF0ZXMpCisJCisJZGVmIGdldENvb3JkaW5hdGVzKHNlbGYsIGdseWZUYWJsZSk6CisJCWlmIHNlbGYubnVtYmVyT2ZDb250b3VycyA+IDA6CisJCQlyZXR1cm4gc2VsZi5jb29yZGluYXRlcywgc2VsZi5lbmRQdHNPZkNvbnRvdXJzLCBzZWxmLmZsYWdzCisJCWVsaWYgc2VsZi5udW1iZXJPZkNvbnRvdXJzID09IC0xOgorCQkJIyBpdCdzIGEgY29tcG9zaXRlCisJCQlhbGxDb29yZHMgPSBOb25lCisJCQlhbGxGbGFncyA9IE5vbmUKKwkJCWFsbEVuZFB0cyA9IE5vbmUKKwkJCWZvciBjb21wbyBpbiBzZWxmLmNvbXBvbmVudHM6CisJCQkJZyA9IGdseWZUYWJsZVtjb21wby5nbHlwaE5hbWVdCisJCQkJY29vcmRpbmF0ZXMsIGVuZFB0cywgZmxhZ3MgPSBnLmdldENvb3JkaW5hdGVzKGdseWZUYWJsZSkKKwkJCQlpZiBoYXNhdHRyKGNvbXBvLCAiZmlyc3RwdCIpOgorCQkJCQkjIG1vdmUgYWNjb3JkaW5nIHRvIHR3byByZWZlcmVuY2UgcG9pbnRzCisJCQkJCW1vdmUgPSBhbGxDb29yZHNbY29tcG8uZmlyc3RwdF0gLSBjb29yZGluYXRlc1tjb21wby5zZWNvbmRwdF0KKwkJCQllbHNlOgorCQkJCQltb3ZlID0gY29tcG8ueCwgY29tcG8ueQorCQkJCQorCQkJCWlmIG5vdCBoYXNhdHRyKGNvbXBvLCAidHJhbnNmb3JtIik6CisJCQkJCWNvb3JkaW5hdGVzID0gY29vcmRpbmF0ZXMgKyBtb3ZlICAjIEkgbG92ZSBOdW1QeSEKKwkJCQllbHNlOgorCQkJCQlhcHBsZV93YXkgPSBjb21wby5mbGFncyAmIFNDQUxFRF9DT01QT05FTlRfT0ZGU0VUCisJCQkJCW1zX3dheSA9IGNvbXBvLmZsYWdzICYgVU5TQ0FMRURfQ09NUE9ORU5UX09GRlNFVAorCQkJCQlhc3NlcnQgbm90IChhcHBsZV93YXkgYW5kIG1zX3dheSkKKwkJCQkJaWYgbm90IChhcHBsZV93YXkgb3IgbXNfd2F5KToKKwkJCQkJCXNjYWxlX2NvbXBvbmVudF9vZmZzZXQgPSBTQ0FMRV9DT01QT05FTlRfT0ZGU0VUX0RFRkFVTFQgICMgc2VlIHRvcCBvZiB0aGlzIGZpbGUKKwkJCQkJZWxzZToKKwkJCQkJCXNjYWxlX2NvbXBvbmVudF9vZmZzZXQgPSBhcHBsZV93YXkKKwkJCQkJaWYgc2NhbGVfY29tcG9uZW50X29mZnNldDoKKwkJCQkJCSMgdGhlIEFwcGxlIHdheTogZmlyc3QgbW92ZSwgdGhlbiBzY2FsZSAoaWUuIHNjYWxlIHRoZSBjb21wb25lbnQgb2Zmc2V0KQorCQkJCQkJY29vcmRpbmF0ZXMgPSBjb29yZGluYXRlcyArIG1vdmUKKwkJCQkJCWNvb3JkaW5hdGVzID0gTnVtZXJpYy5kb3QoY29vcmRpbmF0ZXMsIGNvbXBvLnRyYW5zZm9ybSkKKwkJCQkJZWxzZToKKwkJCQkJCSMgdGhlIE1TIHdheTogZmlyc3Qgc2NhbGUsIHRoZW4gbW92ZQorCQkJCQkJY29vcmRpbmF0ZXMgPSBOdW1lcmljLmRvdChjb29yZGluYXRlcywgY29tcG8udHJhbnNmb3JtKQorCQkJCQkJY29vcmRpbmF0ZXMgPSBjb29yZGluYXRlcyArIG1vdmUKKwkJCQkJIyBkdWUgdG8gdGhlIHRyYW5zZm9ybWF0aW9uIHRoZSBjb29yZHMuIGFyZSBub3cgZmxvYXRzOworCQkJCQkjIHJvdW5kIHRoZW0gb2ZmIG5pY2VseSwgYW5kIGNhc3QgdG8gc2hvcnQKKwkJCQkJY29vcmRpbmF0ZXMgPSBOdW1lcmljLmZsb29yKGNvb3JkaW5hdGVzICsgMC41KS5hc3R5cGUoTnVtZXJpYy5JbnQxNikKKwkJCQlpZiBhbGxDb29yZHMgaXMgTm9uZToKKwkJCQkJYWxsQ29vcmRzID0gY29vcmRpbmF0ZXMKKwkJCQkJYWxsRW5kUHRzID0gZW5kUHRzCisJCQkJCWFsbEZsYWdzID0gZmxhZ3MKKwkJCQllbHNlOgorCQkJCQlhbGxFbmRQdHMgPSBhbGxFbmRQdHMgKyAoTnVtZXJpYy5hcnJheShlbmRQdHMpICsgbGVuKGFsbENvb3JkcykpLnRvbGlzdCgpCisJCQkJCWFsbENvb3JkcyA9IE51bWVyaWMuY29uY2F0ZW5hdGUoKGFsbENvb3JkcywgY29vcmRpbmF0ZXMpKQorCQkJCQlhbGxGbGFncyA9IE51bWVyaWMuY29uY2F0ZW5hdGUoKGFsbEZsYWdzLCBmbGFncykpCisJCQlyZXR1cm4gYWxsQ29vcmRzLCBhbGxFbmRQdHMsIGFsbEZsYWdzCisJCWVsc2U6CisJCQlyZXR1cm4gTnVtZXJpYy5hcnJheShbXSwgTnVtZXJpYy5JbnQxNiksIFtdLCBOdW1lcmljLmFycmF5KFtdLCBOdW1lcmljLkludDgpCisJCisJZGVmIF9fY21wX18oc2VsZiwgb3RoZXIpOgorCQlpZiBzZWxmLm51bWJlck9mQ29udG91cnMgPD0gMDoKKwkJCXJldHVybiBjbXAoc2VsZi5fX2RpY3RfXywgb3RoZXIuX19kaWN0X18pCisJCWVsc2U6CisJCQlpZiBjbXAobGVuKHNlbGYuY29vcmRpbmF0ZXMpLCBsZW4ob3RoZXIuY29vcmRpbmF0ZXMpKToKKwkJCQlyZXR1cm4gMQorCQkJY3Rlc3QgPSBOdW1lcmljLmFsbHRydWUoTnVtZXJpYy5hbGx0cnVlKE51bWVyaWMuZXF1YWwoc2VsZi5jb29yZGluYXRlcywgb3RoZXIuY29vcmRpbmF0ZXMpKSkKKwkJCWZ0ZXN0ID0gTnVtZXJpYy5hbGx0cnVlKE51bWVyaWMuZXF1YWwoc2VsZi5mbGFncywgb3RoZXIuZmxhZ3MpKQorCQkJaWYgbm90IGN0ZXN0IG9yIG5vdCBmdGVzdDoKKwkJCQlyZXR1cm4gMQorCQkJcmV0dXJuICgKKwkJCQkJY21wKHNlbGYuZW5kUHRzT2ZDb250b3Vycywgb3RoZXIuZW5kUHRzT2ZDb250b3Vycykgb3IKKwkJCQkJY21wKHNlbGYuaW5zdHJ1Y3Rpb25zLCBvdGhlci5pbnN0cnVjdGlvbnMpCisJCQkJKQorCisKK2NsYXNzIEdseXBoQ29tcG9uZW50OgorCQorCWRlZiBfX2luaXRfXyhzZWxmKToKKwkJcGFzcworCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgZGF0YSwgZ2x5ZlRhYmxlKToKKwkJZmxhZ3MsIGdseXBoSUQgPSBzdHJ1Y3QudW5wYWNrKCI+SEgiLCBkYXRhWzo0XSkKKwkJc2VsZi5mbGFncyA9IGludChmbGFncykKKwkJZ2x5cGhJRCA9IGludChnbHlwaElEKQorCQlzZWxmLmdseXBoTmFtZSA9IGdseWZUYWJsZS5nZXRHbHlwaE5hbWUoaW50KGdseXBoSUQpKQorCQkjcHJpbnQgIj4+IiwgcmVwcmZsYWcoc2VsZi5mbGFncykKKwkJZGF0YSA9IGRhdGFbNDpdCisJCQorCQlpZiBzZWxmLmZsYWdzICYgQVJHXzFfQU5EXzJfQVJFX1dPUkRTOgorCQkJaWYgc2VsZi5mbGFncyAmIEFSR1NfQVJFX1hZX1ZBTFVFUzoKKwkJCQlzZWxmLngsIHNlbGYueSA9IHN0cnVjdC51bnBhY2soIj5oaCIsIGRhdGFbOjRdKQorCQkJZWxzZToKKwkJCQl4LCB5ID0gc3RydWN0LnVucGFjaygiPkhIIiwgZGF0YVs6NF0pCisJCQkJc2VsZi5maXJzdHB0LCBzZWxmLnNlY29uZHB0ID0gaW50KHgpLCBpbnQoeSkKKwkJCWRhdGEgPSBkYXRhWzQ6XQorCQllbHNlOgorCQkJaWYgc2VsZi5mbGFncyAmIEFSR1NfQVJFX1hZX1ZBTFVFUzoKKwkJCQlzZWxmLngsIHNlbGYueSA9IHN0cnVjdC51bnBhY2soIj5iYiIsIGRhdGFbOjJdKQorCQkJZWxzZToKKwkJCQl4LCB5ID0gc3RydWN0LnVucGFjaygiPkJCIiwgZGF0YVs6NF0pCisJCQkJc2VsZi5maXJzdHB0LCBzZWxmLnNlY29uZHB0ID0gaW50KHgpLCBpbnQoeSkKKwkJCWRhdGEgPSBkYXRhWzI6XQorCQkKKwkJaWYgc2VsZi5mbGFncyAmIFdFX0hBVkVfQV9TQ0FMRToKKwkJCXNjYWxlLCA9IHN0cnVjdC51bnBhY2soIj5oIiwgZGF0YVs6Ml0pCisJCQlzZWxmLnRyYW5zZm9ybSA9IE51bWVyaWMuYXJyYXkoCisJCQkJCVtbc2NhbGUsIDBdLCBbMCwgc2NhbGVdXSkgLyBmbG9hdCgweDQwMDApICAjIGZpeGVkIDIuMTQKKwkJCWRhdGEgPSBkYXRhWzI6XQorCQllbGlmIHNlbGYuZmxhZ3MgJiBXRV9IQVZFX0FOX1hfQU5EX1lfU0NBTEU6CisJCQl4c2NhbGUsIHlzY2FsZSA9IHN0cnVjdC51bnBhY2soIj5oaCIsIGRhdGFbOjRdKQorCQkJc2VsZi50cmFuc2Zvcm0gPSBOdW1lcmljLmFycmF5KAorCQkJCQlbW3hzY2FsZSwgMF0sIFswLCB5c2NhbGVdXSkgLyBmbG9hdCgweDQwMDApICAjIGZpeGVkIDIuMTQKKwkJCWRhdGEgPSBkYXRhWzQ6XQorCQllbGlmIHNlbGYuZmxhZ3MgJiBXRV9IQVZFX0FfVFdPX0JZX1RXTzoKKwkJCSh4c2NhbGUsIHNjYWxlMDEsIAorCQkJCQlzY2FsZTEwLCB5c2NhbGUpID0gc3RydWN0LnVucGFjaygiPmhoaGgiLCBkYXRhWzo4XSkKKwkJCXNlbGYudHJhbnNmb3JtID0gTnVtZXJpYy5hcnJheSgKKwkJCQkJW1t4c2NhbGUsIHNjYWxlMDFdLCBbc2NhbGUxMCwgeXNjYWxlXV0pIC8gZmxvYXQoMHg0MDAwKSAgIyBmaXhlZCAyLjE0CisJCQlkYXRhID0gZGF0YVs4Ol0KKwkJbW9yZSA9IHNlbGYuZmxhZ3MgJiBNT1JFX0NPTVBPTkVOVFMKKwkJaGF2ZUluc3RydWN0aW9ucyA9IHNlbGYuZmxhZ3MgJiBXRV9IQVZFX0lOU1RSVUNUSU9OUworCQlzZWxmLmZsYWdzID0gc2VsZi5mbGFncyAmIChST1VORF9YWV9UT19HUklEIHwgVVNFX01ZX01FVFJJQ1MgfCAKKwkJCQlTQ0FMRURfQ09NUE9ORU5UX09GRlNFVCB8IFVOU0NBTEVEX0NPTVBPTkVOVF9PRkZTRVQgfAorCQkJCU5PTl9PVkVSTEFQUElORykKKwkJcmV0dXJuIG1vcmUsIGhhdmVJbnN0cnVjdGlvbnMsIGRhdGEKKwkKKwlkZWYgY29tcGlsZShzZWxmLCBtb3JlLCBoYXZlSW5zdHJ1Y3Rpb25zLCBnbHlmVGFibGUpOgorCQlkYXRhID0gIiIKKwkJCisJCSMgcmVzZXQgYWxsIGZsYWdzIHdlIHdpbGwgY2FsY3VsYXRlIG91cnNlbHZlcworCQlmbGFncyA9IHNlbGYuZmxhZ3MgJiAoUk9VTkRfWFlfVE9fR1JJRCB8IFVTRV9NWV9NRVRSSUNTIHwgCisJCQkJU0NBTEVEX0NPTVBPTkVOVF9PRkZTRVQgfCBVTlNDQUxFRF9DT01QT05FTlRfT0ZGU0VUIHwKKwkJCQlOT05fT1ZFUkxBUFBJTkcpCisJCWlmIG1vcmU6CisJCQlmbGFncyA9IGZsYWdzIHwgTU9SRV9DT01QT05FTlRTCisJCWlmIGhhdmVJbnN0cnVjdGlvbnM6CisJCQlmbGFncyA9IGZsYWdzIHwgV0VfSEFWRV9JTlNUUlVDVElPTlMKKwkJCisJCWlmIGhhc2F0dHIoc2VsZiwgImZpcnN0cHQiKToKKwkJCWlmICgwIDw9IHNlbGYuZmlyc3RwdCA8PSAyNTUpIGFuZCAoMCA8PSBzZWxmLnNlY29uZHB0IDw9IDI1NSk6CisJCQkJZGF0YSA9IGRhdGEgKyBzdHJ1Y3QucGFjaygiPkJCIiwgc2VsZi5maXJzdHB0LCBzZWxmLnNlY29uZHB0KQorCQkJZWxzZToKKwkJCQlkYXRhID0gZGF0YSArIHN0cnVjdC5wYWNrKCI+SEgiLCBzZWxmLmZpcnN0cHQsIHNlbGYuc2Vjb25kcHQpCisJCQkJZmxhZ3MgPSBmbGFncyB8IEFSR18xX0FORF8yX0FSRV9XT1JEUworCQllbHNlOgorCQkJZmxhZ3MgPSBmbGFncyB8IEFSR1NfQVJFX1hZX1ZBTFVFUworCQkJaWYgKC0xMjggPD0gc2VsZi54IDw9IDEyNykgYW5kICgtMTI4IDw9IHNlbGYueSA8PSAxMjcpOgorCQkJCWRhdGEgPSBkYXRhICsgc3RydWN0LnBhY2soIj5iYiIsIHNlbGYueCwgc2VsZi55KQorCQkJZWxzZToKKwkJCQlkYXRhID0gZGF0YSArIHN0cnVjdC5wYWNrKCI+aGgiLCBzZWxmLngsIHNlbGYueSkKKwkJCQlmbGFncyA9IGZsYWdzIHwgQVJHXzFfQU5EXzJfQVJFX1dPUkRTCisJCQorCQlpZiBoYXNhdHRyKHNlbGYsICJ0cmFuc2Zvcm0iKToKKwkJCSMgWFhYIG5lZWRzIG1vcmUgdGVzdGluZworCQkJdHJhbnNmb3JtID0gTnVtZXJpYy5mbG9vcihzZWxmLnRyYW5zZm9ybSAqIDB4NDAwMCArIDAuNSkKKwkJCWlmIHRyYW5zZm9ybVswXVsxXSBvciB0cmFuc2Zvcm1bMV1bMF06CisJCQkJZmxhZ3MgPSBmbGFncyB8IFdFX0hBVkVfQV9UV09fQllfVFdPCisJCQkJZGF0YSA9IGRhdGEgKyBzdHJ1Y3QucGFjaygiPmhoaGgiLCAKKwkJCQkJCXRyYW5zZm9ybVswXVswXSwgdHJhbnNmb3JtWzBdWzFdLAorCQkJCQkJdHJhbnNmb3JtWzFdWzBdLCB0cmFuc2Zvcm1bMV1bMV0pCisJCQllbGlmIHRyYW5zZm9ybVswXVswXSA8PiB0cmFuc2Zvcm1bMV1bMV06CisJCQkJZmxhZ3MgPSBmbGFncyB8IFdFX0hBVkVfQU5fWF9BTkRfWV9TQ0FMRQorCQkJCWRhdGEgPSBkYXRhICsgc3RydWN0LnBhY2soIj5oaCIsIAorCQkJCQkJdHJhbnNmb3JtWzBdWzBdLCB0cmFuc2Zvcm1bMV1bMV0pCisJCQllbHNlOgorCQkJCWZsYWdzID0gZmxhZ3MgfCBXRV9IQVZFX0FfU0NBTEUKKwkJCQlkYXRhID0gZGF0YSArIHN0cnVjdC5wYWNrKCI+aCIsIAorCQkJCQkJdHJhbnNmb3JtWzBdWzBdKQorCQkKKwkJZ2x5cGhJRCA9IGdseWZUYWJsZS5nZXRHbHlwaElEKHNlbGYuZ2x5cGhOYW1lKQorCQlyZXR1cm4gc3RydWN0LnBhY2soIj5ISCIsIGZsYWdzLCBnbHlwaElEKSArIGRhdGEKKwkKKwlkZWYgdG9YTUwoc2VsZiwgd3JpdGVyLCB0dEZvbnQpOgorCQlhdHRycyA9IFsoImdseXBoTmFtZSIsIHNlbGYuZ2x5cGhOYW1lKV0KKwkJaWYgbm90IGhhc2F0dHIoc2VsZiwgImZpcnN0cHQiKToKKwkJCWF0dHJzID0gYXR0cnMgKyBbKCJ4Iiwgc2VsZi54KSwgKCJ5Iiwgc2VsZi55KV0KKwkJZWxzZToKKwkJCWF0dHJzID0gYXR0cnMgKyBbKCJmaXJzdHB0Iiwgc2VsZi5maXJzdHB0KSwgKCJzZWNvbmRwdCIsIHNlbGYuc2Vjb25kcHQpXQorCQkKKwkJaWYgaGFzYXR0cihzZWxmLCAidHJhbnNmb3JtIik6CisJCQkjIFhYWCBuZWVkcyBtb3JlIHRlc3RpbmcKKwkJCXRyYW5zZm9ybSA9IHNlbGYudHJhbnNmb3JtCisJCQlpZiB0cmFuc2Zvcm1bMF1bMV0gb3IgdHJhbnNmb3JtWzFdWzBdOgorCQkJCWF0dHJzID0gYXR0cnMgKyBbCisJCQkJCQkoInNjYWxleCIsIHRyYW5zZm9ybVswXVswXSksICgic2NhbGUwMSIsIHRyYW5zZm9ybVswXVsxXSksCisJCQkJCQkoInNjYWxlMTAiLCB0cmFuc2Zvcm1bMV1bMF0pLCAoInNjYWxleSIsIHRyYW5zZm9ybVsxXVsxXSksCisJCQkJCQldCisJCQllbGlmIHRyYW5zZm9ybVswXVswXSA8PiB0cmFuc2Zvcm1bMV1bMV06CisJCQkJYXR0cnMgPSBhdHRycyArIFsKKwkJCQkJCSgic2NhbGV4IiwgdHJhbnNmb3JtWzBdWzBdKSwgKCJzY2FsZXkiLCB0cmFuc2Zvcm1bMV1bMV0pLAorCQkJCQkJXQorCQkJZWxzZToKKwkJCQlhdHRycyA9IGF0dHJzICsgWygic2NhbGUiLCB0cmFuc2Zvcm1bMF1bMF0pXQorCQlhdHRycyA9IGF0dHJzICsgWygiZmxhZ3MiLCBoZXgoc2VsZi5mbGFncykpXQorCQl3cml0ZXIuc2ltcGxldGFnKCJjb21wb25lbnQiLCBhdHRycykKKwkJd3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIHR0Rm9udCk6CisJCXNlbGYuZ2x5cGhOYW1lID0gYXR0cnNbImdseXBoTmFtZSJdCisJCWlmIGF0dHJzLmhhc19rZXkoImZpcnN0cHQiKToKKwkJCXNlbGYuZmlyc3RwdCA9IHNhZmVFdmFsKGF0dHJzWyJmaXJzdHB0Il0pCisJCQlzZWxmLnNlY29uZHB0ID0gc2FmZUV2YWwoYXR0cnNbInNlY29uZHB0Il0pCisJCWVsc2U6CisJCQlzZWxmLnggPSBzYWZlRXZhbChhdHRyc1sieCJdKQorCQkJc2VsZi55ID0gc2FmZUV2YWwoYXR0cnNbInkiXSkKKwkJaWYgYXR0cnMuaGFzX2tleSgic2NhbGUwMSIpOgorCQkJc2NhbGV4ID0gc2FmZUV2YWwoYXR0cnNbInNjYWxleCJdKQorCQkJc2NhbGUwMSA9IHNhZmVFdmFsKGF0dHJzWyJzY2FsZTAxIl0pCisJCQlzY2FsZTEwID0gc2FmZUV2YWwoYXR0cnNbInNjYWxlMTAiXSkKKwkJCXNjYWxleSA9IHNhZmVFdmFsKGF0dHJzWyJzY2FsZXkiXSkKKwkJCXNlbGYudHJhbnNmb3JtID0gTnVtZXJpYy5hcnJheShbW3NjYWxleCwgc2NhbGUwMV0sIFtzY2FsZTEwLCBzY2FsZXldXSkKKwkJZWxpZiBhdHRycy5oYXNfa2V5KCJzY2FsZXgiKToKKwkJCXNjYWxleCA9IHNhZmVFdmFsKGF0dHJzWyJzY2FsZXgiXSkKKwkJCXNjYWxleSA9IHNhZmVFdmFsKGF0dHJzWyJzY2FsZXkiXSkKKwkJCXNlbGYudHJhbnNmb3JtID0gTnVtZXJpYy5hcnJheShbW3NjYWxleCwgMF0sIFswLCBzY2FsZXldXSkKKwkJZWxpZiBhdHRycy5oYXNfa2V5KCJzY2FsZSIpOgorCQkJc2NhbGUgPSBzYWZlRXZhbChhdHRyc1sic2NhbGUiXSkKKwkJCXNlbGYudHJhbnNmb3JtID0gTnVtZXJpYy5hcnJheShbW3NjYWxlLCAwXSwgWzAsIHNjYWxlXV0pCisJCXNlbGYuZmxhZ3MgPSBzYWZlRXZhbChhdHRyc1siZmxhZ3MiXSkKKwkKKwlkZWYgX19jbXBfXyhzZWxmLCBvdGhlcik6CisJCWlmIGhhc2F0dHIoc2VsZiwgInRyYW5zZm9ybSIpOgorCQkJaWYgTnVtZXJpYy5hbGx0cnVlKE51bWVyaWMuZXF1YWwoc2VsZi50cmFuc2Zvcm0sIG90aGVyLnRyYW5zZm9ybSkpOgorCQkJCXNlbGZkaWN0ID0gc2VsZi5fX2RpY3RfXy5jb3B5KCkKKwkJCQlvdGhlcmRpY3QgPSBvdGhlci5fX2RpY3RfXy5jb3B5KCkKKwkJCQlkZWwgc2VsZmRpY3RbInRyYW5zZm9ybSJdCisJCQkJZGVsIG90aGVyZGljdFsidHJhbnNmb3JtIl0KKwkJCQlyZXR1cm4gY21wKHNlbGZkaWN0LCBvdGhlcmRpY3QpCisJCQllbHNlOgorCQkJCXJldHVybiAxCisJCWVsc2U6CisJCQlyZXR1cm4gY21wKHNlbGYuX19kaWN0X18sIG90aGVyLl9fZGljdF9fKQorCisKK2RlZiByZXByZmxhZyhmbGFnKToKKwliaW4gPSAiIgorCWlmIHR5cGUoZmxhZykgPT0gdHlwZXMuU3RyaW5nVHlwZToKKwkJZmxhZyA9IG9yZChmbGFnKQorCXdoaWxlIGZsYWc6CisJCWlmIGZsYWcgJiAweDAxOgorCQkJYmluID0gIjEiICsgYmluCisJCWVsc2U6CisJCQliaW4gPSAiMCIgKyBiaW4KKwkJZmxhZyA9IGZsYWcgPj4gMQorCWJpbiA9ICgxNCAtIGxlbihiaW4pKSAqICIwIiArIGJpbgorCXJldHVybiBiaW4KKwpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvX2hfZF9tX3gucHkgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9faF9kX21feC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWMzOTZjCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvX2hfZF9tX3gucHkKQEAgLTAsMCArMSw5NSBAQAoraW1wb3J0IERlZmF1bHRUYWJsZQoraW1wb3J0IHNzdHJ1Y3QKK2ltcG9ydCBzdHJpbmcKKworaGRteEhlYWRlckZvcm1hdCA9ICIiIgorCXZlcnNpb246CUgKKwludW1SZWNvcmRzOglICisJcmVjb3JkU2l6ZToJbAorIiIiCisKK2NsYXNzIHRhYmxlX19oX2RfbV94KERlZmF1bHRUYWJsZS5EZWZhdWx0VGFibGUpOgorCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgZGF0YSwgdHRGb250KToKKwkJbnVtR2x5cGhzID0gdHRGb250WydtYXhwJ10ubnVtR2x5cGhzCisJCWdseXBoT3JkZXIgPSB0dEZvbnQuZ2V0R2x5cGhPcmRlcigpCisJCWR1bW15LCBkYXRhID0gc3N0cnVjdC51bnBhY2syKGhkbXhIZWFkZXJGb3JtYXQsIGRhdGEsIHNlbGYpCisJCXNlbGYuaGRteCA9IHt9CisJCWZvciBpIGluIHJhbmdlKHNlbGYubnVtUmVjb3Jkcyk6CisJCQlwcGVtID0gb3JkKGRhdGFbMF0pCisJCQltYXhTaXplID0gb3JkKGRhdGFbMV0pCisJCQl3aWR0aHMgPSB7fQorCQkJZm9yIGdseXBoSUQgaW4gcmFuZ2UobnVtR2x5cGhzKToKKwkJCQl3aWR0aHNbZ2x5cGhPcmRlcltnbHlwaElEXV0gPSBvcmQoZGF0YVtnbHlwaElEKzJdKQorCQkJc2VsZi5oZG14W3BwZW1dID0gd2lkdGhzCisJCQlkYXRhID0gZGF0YVtzZWxmLnJlY29yZFNpemU6XQorCQlhc3NlcnQgbGVuKGRhdGEpID09IDAsICJ0b28gbXVjaCBoZG14IGRhdGEiCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgdHRGb250KToKKwkJc2VsZi52ZXJzaW9uID0gMAorCQludW1HbHlwaHMgPSB0dEZvbnRbJ21heHAnXS5udW1HbHlwaHMKKwkJZ2x5cGhPcmRlciA9IHR0Rm9udC5nZXRHbHlwaE9yZGVyKCkKKwkJc2VsZi5yZWNvcmRTaXplID0gNCAqICgoMiArIG51bUdseXBocyArIDMpIC8gNCkKKwkJcGFkID0gKHNlbGYucmVjb3JkU2l6ZSAtIDIgLSBudW1HbHlwaHMpICogIlwwIgorCQlzZWxmLm51bVJlY29yZHMgPSBsZW4oc2VsZi5oZG14KQorCQlkYXRhID0gc3N0cnVjdC5wYWNrKGhkbXhIZWFkZXJGb3JtYXQsIHNlbGYpCisJCWl0ZW1zID0gc2VsZi5oZG14Lml0ZW1zKCkKKwkJaXRlbXMuc29ydCgpCisJCWZvciBwcGVtLCB3aWR0aHMgaW4gaXRlbXM6CisJCQlkYXRhID0gZGF0YSArIGNocihwcGVtKSArIGNocihtYXgod2lkdGhzLnZhbHVlcygpKSkKKwkJCWZvciBnbHlwaElEIGluIHJhbmdlKGxlbihnbHlwaE9yZGVyKSk6CisJCQkJd2lkdGggPSB3aWR0aHNbZ2x5cGhPcmRlcltnbHlwaElEXV0KKwkJCQlkYXRhID0gZGF0YSArIGNocih3aWR0aCkKKwkJCWRhdGEgPSBkYXRhICsgcGFkCisJCXJldHVybiBkYXRhCisJCisJZGVmIHRvWE1MKHNlbGYsIHdyaXRlciwgdHRGb250KToKKwkJd3JpdGVyLmJlZ2ludGFnKCJoZG14RGF0YSIpCisJCXdyaXRlci5uZXdsaW5lKCkKKwkJcHBlbXMgPSBzZWxmLmhkbXgua2V5cygpCisJCXBwZW1zLnNvcnQoKQorCQlyZWNvcmRzID0gW10KKwkJZm9ybWF0ID0gIiIKKwkJZm9yIHBwZW0gaW4gcHBlbXM6CisJCQl3aWR0aHMgPSBzZWxmLmhkbXhbcHBlbV0KKwkJCXJlY29yZHMuYXBwZW5kKHdpZHRocykKKwkJCWZvcm1hdCA9IGZvcm1hdCArICIlNGQiCisJCWdseXBoTmFtZXMgPSB0dEZvbnQuZ2V0R2x5cGhPcmRlcigpWzpdCisJCWdseXBoTmFtZXMuc29ydCgpCisJCW1heE5hbWVMZW4gPSBtYXgobWFwKGxlbiwgZ2x5cGhOYW1lcykpCisJCWZvcm1hdCA9ICIlIiArIGBtYXhOYW1lTGVuYCArICdzOicgKyBmb3JtYXQgKyAnIDsnCisJCXdyaXRlci53cml0ZShmb3JtYXQgJSAoKCJwcGVtIiwpICsgdHVwbGUocHBlbXMpKSkKKwkJd3JpdGVyLm5ld2xpbmUoKQorCQl3cml0ZXIubmV3bGluZSgpCisJCWZvciBnbHlwaE5hbWUgaW4gZ2x5cGhOYW1lczoKKwkJCXJvdyA9IFtdCisJCQlmb3IgcHBlbSBpbiBwcGVtczoKKwkJCQl3aWR0aHMgPSBzZWxmLmhkbXhbcHBlbV0KKwkJCQlyb3cuYXBwZW5kKHdpZHRoc1tnbHlwaE5hbWVdKQorCQkJd3JpdGVyLndyaXRlKGZvcm1hdCAlICgoZ2x5cGhOYW1lLCkgKyB0dXBsZShyb3cpKSkKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkJd3JpdGVyLmVuZHRhZygiaGRteERhdGEiKQorCQl3cml0ZXIubmV3bGluZSgpCisJCisJZGVmIGZyb21YTUwoc2VsZiwgKG5hbWUsIGF0dHJzLCBjb250ZW50KSwgdHRGb250KToKKwkJaWYgbmFtZSA8PiAiaGRteERhdGEiOgorCQkJcmV0dXJuCisJCWNvbnRlbnQgPSBzdHJpbmcuam9pbihjb250ZW50LCAiICIpCisJCWxpbmVzID0gc3RyaW5nLnNwbGl0KGNvbnRlbnQsICI7IikKKwkJdG9wUm93ID0gc3RyaW5nLnNwbGl0KGxpbmVzWzBdKQorCQlhc3NlcnQgdG9wUm93WzBdID09ICJwcGVtOiIsICJpbGxlZ2FsIGhkbXggZm9ybWF0IgorCQlwcGVtcyA9IG1hcChpbnQsIHRvcFJvd1sxOl0pCisJCXNlbGYuaGRteCA9IGhkbXggPSB7fQorCQlmb3IgcHBlbSBpbiBwcGVtczoKKwkJCWhkbXhbcHBlbV0gPSB7fQorCQlsaW5lcyA9IG1hcChzdHJpbmcuc3BsaXQsIGxpbmVzWzE6XSkKKwkJZm9yIGxpbmUgaW4gbGluZXM6CisJCQlpZiBub3QgbGluZToKKwkJCQljb250aW51ZQorCQkJYXNzZXJ0IGxpbmVbMF1bLTFdID09ICI6IiwgImlsbGVnYWwgaGRteCBmb3JtYXQiCisJCQlnbHlwaE5hbWUgPSBsaW5lWzBdWzotMV0KKwkJCWxpbmUgPSBtYXAoaW50LCBsaW5lWzE6XSkKKwkJCWFzc2VydCBsZW4obGluZSkgPT0gbGVuKHBwZW1zKSwgImlsbGVnYWwgaGRteCBmb3JtYXQiCisJCQlmb3IgaSBpbiByYW5nZShsZW4ocHBlbXMpKToKKwkJCQloZG14W3BwZW1zW2ldXVtnbHlwaE5hbWVdID0gbGluZVtpXQorCmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9faF9lX2FfZC5weSBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL19oX2VfYV9kLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMzNlZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9faF9lX2FfZC5weQpAQCAtMCwwICsxLDEzNiBAQAoraW1wb3J0IERlZmF1bHRUYWJsZQoraW1wb3J0IHNzdHJ1Y3QKK2ltcG9ydCB0aW1lCitpbXBvcnQgc3RyaW5nCitpbXBvcnQgY2FsZW5kYXIKK2Zyb20gZm9udFRvb2xzLm1pc2MudGV4dFRvb2xzIGltcG9ydCBzYWZlRXZhbCwgbnVtMmJpbmFyeSwgYmluYXJ5Mm51bQorCisKK2hlYWRGb3JtYXQgPSAiIiIKKwkJPgkjIGJpZyBlbmRpYW4KKwkJdGFibGVWZXJzaW9uOgkJMTYuMTZGCisJCWZvbnRSZXZpc2lvbjoJCTE2LjE2RgorCQljaGVja1N1bUFkanVzdG1lbnQ6CWwKKwkJbWFnaWNOdW1iZXI6CQlsCisJCQkJCQkJeAkjIHBhZCBieXRlCisJCWZsYWdzOgkJCQliCisJCXVuaXRzUGVyRW06CQkJSAorCQljcmVhdGVkOgkJCThzCisJCW1vZGlmaWVkOgkJCThzCisJCXhNaW46CQkJCWgKKwkJeU1pbjoJCQkJaAorCQl4TWF4OgkJCQloCisJCXlNYXg6CQkJCWgKKwkJbWFjU3R5bGU6CQkJSAorCQlsb3dlc3RSZWNQUEVNOgkJSAorCQlmb250RGlyZWN0aW9uSGludDoJaAorCQlpbmRleFRvTG9jRm9ybWF0OgloCisJCWdseXBoRGF0YUZvcm1hdDoJaAorIiIiCisKK2NsYXNzIHRhYmxlX19oX2VfYV9kKERlZmF1bHRUYWJsZS5EZWZhdWx0VGFibGUpOgorCQorCWRlcGVuZGVuY2llcyA9IFsnbWF4cCcsICdsb2NhJ10KKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIGRhdGEsIHR0Rm9udCk6CisJCXNzdHJ1Y3QudW5wYWNrKGhlYWRGb3JtYXQsIGRhdGEsIHNlbGYpCisJCXNlbGYudW5pdHNQZXJFbSA9IGludChzZWxmLnVuaXRzUGVyRW0pCisJCXNlbGYuc3RyaW5nczJkYXRlcygpCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgdHRGb250KToKKwkJc2VsZi5tb2RpZmllZCA9IGxvbmcodGltZS50aW1lKCkgLSBtYWNfZXBvY2hfZGlmZikKKwkJc2VsZi5kYXRlczJzdHJpbmdzKCkKKwkJZGF0YSA9IHNzdHJ1Y3QucGFjayhoZWFkRm9ybWF0LCBzZWxmKQorCQlzZWxmLnN0cmluZ3MyZGF0ZXMoKQorCQlyZXR1cm4gZGF0YQorCQorCWRlZiBzdHJpbmdzMmRhdGVzKHNlbGYpOgorCQlzZWxmLmNyZWF0ZWQgPSBiaW4ybG9uZyhzZWxmLmNyZWF0ZWQpCisJCXNlbGYubW9kaWZpZWQgPSBiaW4ybG9uZyhzZWxmLm1vZGlmaWVkKQorCQorCWRlZiBkYXRlczJzdHJpbmdzKHNlbGYpOgorCQlzZWxmLmNyZWF0ZWQgPSBsb25nMmJpbihzZWxmLmNyZWF0ZWQpCisJCXNlbGYubW9kaWZpZWQgPSBsb25nMmJpbihzZWxmLm1vZGlmaWVkKQorCQorCWRlZiB0b1hNTChzZWxmLCB3cml0ZXIsIHR0Rm9udCk6CisJCXdyaXRlci5jb21tZW50KCJNb3N0IG9mIHRoaXMgdGFibGUgd2lsbCBiZSByZWNhbGN1bGF0ZWQgYnkgdGhlIGNvbXBpbGVyIikKKwkJd3JpdGVyLm5ld2xpbmUoKQorCQlmb3JtYXRzdHJpbmcsIG5hbWVzLCBmaXhlcyA9IHNzdHJ1Y3QuZ2V0Zm9ybWF0KGhlYWRGb3JtYXQpCisJCWZvciBuYW1lIGluIG5hbWVzOgorCQkJdmFsdWUgPSBnZXRhdHRyKHNlbGYsIG5hbWUpCisJCQlpZiBuYW1lIGluICgiY3JlYXRlZCIsICJtb2RpZmllZCIpOgorCQkJCXZhbHVlID0gdGltZS5hc2N0aW1lKHRpbWUuZ210aW1lKG1heCgwLCB2YWx1ZSArIG1hY19lcG9jaF9kaWZmKSkpCisJCQlpZiB0eXBlKHZhbHVlKSA9PSB0eXBlKDBMKToKKwkJCQl2YWx1ZT1pbnQodmFsdWUpCisJCQlpZiBuYW1lIGluICgibWFnaWNOdW1iZXIiLCAiY2hlY2tTdW1BZGp1c3RtZW50Iik6CisJCQkJdmFsdWUgPSBoZXgodmFsdWUpCisJCQllbGlmIG5hbWUgPT0gImZsYWdzIjoKKwkJCQl2YWx1ZSA9IG51bTJiaW5hcnkodmFsdWUsIDE2KQorCQkJd3JpdGVyLnNpbXBsZXRhZyhuYW1lLCB2YWx1ZT12YWx1ZSkKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkKKwlkZWYgZnJvbVhNTChzZWxmLCAobmFtZSwgYXR0cnMsIGNvbnRlbnQpLCB0dEZvbnQpOgorCQl2YWx1ZSA9IGF0dHJzWyJ2YWx1ZSJdCisJCWlmIG5hbWUgaW4gKCJjcmVhdGVkIiwgIm1vZGlmaWVkIik6CisJCQl2YWx1ZSA9IHBhcnNlX2RhdGUodmFsdWUpIC0gbWFjX2Vwb2NoX2RpZmYKKwkJZWxpZiBuYW1lID09ICJmbGFncyI6CisJCQl2YWx1ZSA9IGJpbmFyeTJudW0odmFsdWUpCisJCWVsc2U6CisJCQl2YWx1ZSA9IHNhZmVFdmFsKHZhbHVlKQorCQlzZXRhdHRyKHNlbGYsIG5hbWUsIHZhbHVlKQorCQorCWRlZiBfX2NtcF9fKHNlbGYsIG90aGVyKToKKwkJc2VsZmRpY3QgPSBzZWxmLl9fZGljdF9fLmNvcHkoKQorCQlvdGhlcmRpY3QgPSBvdGhlci5fX2RpY3RfXy5jb3B5KCkKKwkJIyBmb3IgdGVzdGluZyBwdXJwb3NlcywgY29tcGFyZSB3aXRob3V0IHRoZSBtb2RpZmllZCBhbmQgY2hlY2tTdW1BZGp1c3RtZW50CisJCSMgZmllbGRzLCBzaW5jZSB0aGV5IGFyZSBhbGxvd2VkIHRvIGJlIGRpZmZlcmVudC4KKwkJZm9yIGtleSBpbiBbIm1vZGlmaWVkIiwgImNoZWNrU3VtQWRqdXN0bWVudCJdOgorCQkJZGVsIHNlbGZkaWN0W2tleV0KKwkJCWRlbCBvdGhlcmRpY3Rba2V5XQorCQlyZXR1cm4gY21wKHNlbGZkaWN0LCBvdGhlcmRpY3QpCisKKworZGVmIGNhbGNfbWFjX2Vwb2NoX2RpZmYoKToKKwkiIiJjYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgb3JpZ2luYWwgTWFjIGVwb2NoICgxOTA0KQorCXRvIHRoZSBlcG9jaCBvbiB0aGlzIG1hY2hpbmUuCisJIiIiCisJc2FmZV9lcG9jaF90ID0gKDE5NzEsIDEsIDEsIDAsIDAsIDAsIDAsIDAsIDApCisJc2FmZV9lcG9jaCA9IHRpbWUubWt0aW1lKHNhZmVfZXBvY2hfdCkgLSB0aW1lLnRpbWV6b25lCisJYXNzZXJ0IHRpbWUuZ210aW1lKHNhZmVfZXBvY2gpWzo2XSA9PSBzYWZlX2Vwb2NoX3RbOjZdCisJc2Vjb25kczE5MDR0bzE5NzEgPSA2MCAqIDYwICogMjQgKiAoMzY1ICogKDE5NzEtMTkwNCkgKyAxNykgIyB0aGFua3MsIExhdXJlbmNlIQorCXJldHVybiBsb25nKHNhZmVfZXBvY2ggLSBzZWNvbmRzMTkwNHRvMTk3MSkKKworbWFjX2Vwb2NoX2RpZmYgPSBjYWxjX21hY19lcG9jaF9kaWZmKCkKKworCitfbW9udGhzID0gbWFwKHN0cmluZy5sb3dlciwgY2FsZW5kYXIubW9udGhfYWJicikKK193ZWVrZGF5cyA9IG1hcChzdHJpbmcubG93ZXIsIGNhbGVuZGFyLmRheV9hYmJyKQorCitkZWYgcGFyc2VfZGF0ZShkYXRlc3RyaW5nKToKKwlkYXRlc3RyaW5nID0gc3RyaW5nLmxvd2VyKGRhdGVzdHJpbmcpCisJd2Vla2RheSwgbW9udGgsIGRheSwgdGltLCB5ZWFyID0gc3RyaW5nLnNwbGl0KGRhdGVzdHJpbmcpCisJd2Vla2RheSA9IF93ZWVrZGF5cy5pbmRleCh3ZWVrZGF5KQorCW1vbnRoID0gX21vbnRocy5pbmRleChtb250aCkKKwl5ZWFyID0gaW50KHllYXIpCisJZGF5ID0gaW50KGRheSkKKwlob3VyLCBtaW51dGUsIHNlY29uZCA9IG1hcChpbnQsIHN0cmluZy5zcGxpdCh0aW0sICI6IikpCisJdCA9ICh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgd2Vla2RheSwgMCwgMCkKKwlyZXR1cm4gbG9uZyh0aW1lLm1rdGltZSh0KSAtIHRpbWUudGltZXpvbmUpCisKKworZGVmIGJpbjJsb25nKGRhdGEpOgorCSMgdGhhbmtzIDwvRj4hCisJdiA9IDBMCisJZm9yIGkgaW4gbWFwKG9yZCwgZGF0YSk6CisJICAgIHYgPSB2PDw4IHwgaQorCXJldHVybiB2CisKK2RlZiBsb25nMmJpbih2LCBieXRlcz04KToKKwlkYXRhID0gIiIKKwl3aGlsZSB2OgorCQlkYXRhID0gY2hyKHYgJiAweGZmKSArIGRhdGEKKwkJdiA9IHYgPj4gOAorCWRhdGEgPSAoYnl0ZXMgLSBsZW4oZGF0YSkpICogIlwwIiArIGRhdGEKKwlhc3NlcnQgbGVuKGRhdGEpID09IDgsICJsb25nIHRvbyBsb25nIgorCXJldHVybiBkYXRhCisKZGlmZiAtLWdpdCBhL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL19oX2hfZV9hLnB5IGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvX2hfaF9lX2EucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNhNzVjYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL19oX2hfZV9hLnB5CkBAIC0wLDAgKzEsNzggQEAKK2ltcG9ydCBEZWZhdWx0VGFibGUKK2ltcG9ydCBzc3RydWN0Citmcm9tIGZvbnRUb29scy5taXNjLnRleHRUb29scyBpbXBvcnQgc2FmZUV2YWwKKworaGhlYUZvcm1hdCA9ICIiIgorCQk+CSMgYmlnIGVuZGlhbgorCQl0YWJsZVZlcnNpb246CQkJMTYuMTZGCisJCWFzY2VudDoJCQkJCWgKKwkJZGVzY2VudDoJCQkJaAorCQlsaW5lR2FwOgkJCQloCisJCWFkdmFuY2VXaWR0aE1heDoJCUgKKwkJbWluTGVmdFNpZGVCZWFyaW5nOgkJaAorCQltaW5SaWdodFNpZGVCZWFyaW5nOgloCisJCXhNYXhFeHRlbnQ6CQkJCWgKKwkJY2FyZXRTbG9wZVJpc2U6CQkJaAorCQljYXJldFNsb3BlUnVuOgkJCWgKKwkJcmVzZXJ2ZWQwOgkJCQloCisJCXJlc2VydmVkMToJCQkJaAorCQlyZXNlcnZlZDI6CQkJCWgKKwkJcmVzZXJ2ZWQzOgkJCQloCisJCXJlc2VydmVkNDoJCQkJaAorCQltZXRyaWNEYXRhRm9ybWF0OgkJaAorCQludW1iZXJPZkhNZXRyaWNzOgkJSAorIiIiCisKK2NsYXNzIHRhYmxlX19oX2hfZV9hKERlZmF1bHRUYWJsZS5EZWZhdWx0VGFibGUpOgorCQorCWRlcGVuZGVuY2llcyA9IFsnaG10eCcsICdnbHlmJ10KKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIGRhdGEsIHR0Rm9udCk6CisJCXNzdHJ1Y3QudW5wYWNrKGhoZWFGb3JtYXQsIGRhdGEsIHNlbGYpCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgdHRGb250KToKKwkJc2VsZi5yZWNhbGModHRGb250KQorCQlyZXR1cm4gc3N0cnVjdC5wYWNrKGhoZWFGb3JtYXQsIHNlbGYpCisJCisJZGVmIHJlY2FsYyhzZWxmLCB0dEZvbnQpOgorCQlobXR4VGFibGUgPSB0dEZvbnRbJ2htdHgnXQorCQlpZiB0dEZvbnQuaGFzX2tleSgnZ2x5ZicpOgorCQkJaWYgbm90IHR0Rm9udC5pc0xvYWRlZCgnZ2x5ZicpOgorCQkJCXJldHVybgorCQkJZ2x5ZlRhYmxlID0gdHRGb250WydnbHlmJ10KKwkJCWFkdmFuY2VXaWR0aE1heCA9IC0xMDAwMDAgICAgIyBhcmJpdHJhcnkgYmlnIG5lZ2F0aXZlIG51bWJlcgorCQkJbWluTGVmdFNpZGVCZWFyaW5nID0gMTAwMDAwICAjIGFyYml0cmFyeSBiaWcgbnVtYmVyCisJCQltaW5SaWdodFNpZGVCZWFyaW5nID0gMTAwMDAwICMgYXJiaXRyYXJ5IGJpZyBudW1iZXIKKwkJCXhNYXhFeHRlbnQgPSAtMTAwMDAwICAgICAgICAgIyBhcmJpdHJhcnkgYmlnIG5lZ2F0aXZlIG51bWJlcgorCQkJCisJCQlmb3IgbmFtZSBpbiB0dEZvbnQuZ2V0R2x5cGhPcmRlcigpOgorCQkJCXdpZHRoLCBsc2IgPSBobXR4VGFibGVbbmFtZV0KKwkJCQlnID0gZ2x5ZlRhYmxlW25hbWVdCisJCQkJaWYgZy5udW1iZXJPZkNvbnRvdXJzIDw9IDA6CisJCQkJCWNvbnRpbnVlCisJCQkJYWR2YW5jZVdpZHRoTWF4ID0gbWF4KGFkdmFuY2VXaWR0aE1heCwgd2lkdGgpCisJCQkJbWluTGVmdFNpZGVCZWFyaW5nID0gbWluKG1pbkxlZnRTaWRlQmVhcmluZywgbHNiKQorCQkJCXJzYiA9IHdpZHRoIC0gbHNiIC0gKGcueE1heCAtIGcueE1pbikKKwkJCQltaW5SaWdodFNpZGVCZWFyaW5nID0gbWluKG1pblJpZ2h0U2lkZUJlYXJpbmcsIHJzYikKKwkJCQlleHRlbnQgPSBsc2IgKyAoZy54TWF4IC0gZy54TWluKQorCQkJCXhNYXhFeHRlbnQgPSBtYXgoeE1heEV4dGVudCwgZXh0ZW50KQorCQkJc2VsZi5hZHZhbmNlV2lkdGhNYXggPSBhZHZhbmNlV2lkdGhNYXgKKwkJCXNlbGYubWluTGVmdFNpZGVCZWFyaW5nID0gbWluTGVmdFNpZGVCZWFyaW5nCisJCQlzZWxmLm1pblJpZ2h0U2lkZUJlYXJpbmcgPSBtaW5SaWdodFNpZGVCZWFyaW5nCisJCQlzZWxmLnhNYXhFeHRlbnQgPSB4TWF4RXh0ZW50CisJCWVsc2U6CisJCQkjIFhYWCBDRkYgcmVjYWxjLi4uCisJCQlwYXNzCisJCisJZGVmIHRvWE1MKHNlbGYsIHdyaXRlciwgdHRGb250KToKKwkJZm9ybWF0c3RyaW5nLCBuYW1lcywgZml4ZXMgPSBzc3RydWN0LmdldGZvcm1hdChoaGVhRm9ybWF0KQorCQlmb3IgbmFtZSBpbiBuYW1lczoKKwkJCXZhbHVlID0gZ2V0YXR0cihzZWxmLCBuYW1lKQorCQkJaWYgdHlwZSh2YWx1ZSkgPT0gdHlwZSgwTCk6CisJCQkJdmFsdWUgPSBpbnQodmFsdWUpCisJCQl3cml0ZXIuc2ltcGxldGFnKG5hbWUsIHZhbHVlPXZhbHVlKQorCQkJd3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIHR0Rm9udCk6CisJCXNldGF0dHIoc2VsZiwgbmFtZSwgc2FmZUV2YWwoYXR0cnNbInZhbHVlIl0pKQorCmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9faF9tX3RfeC5weSBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL19oX21fdF94LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZmE4Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9faF9tX3RfeC5weQpAQCAtMCwwICsxLDk0IEBACitpbXBvcnQgRGVmYXVsdFRhYmxlCitpbXBvcnQgTnVtZXJpYworZnJvbSBmb250VG9vbHMgaW1wb3J0IHR0TGliCitmcm9tIGZvbnRUb29scy5taXNjLnRleHRUb29scyBpbXBvcnQgc2FmZUV2YWwKKworCitjbGFzcyB0YWJsZV9faF9tX3RfeChEZWZhdWx0VGFibGUuRGVmYXVsdFRhYmxlKToKKwkKKwloZWFkZXJUYWcgPSAnaGhlYScKKwlhZHZhbmNlTmFtZSA9ICd3aWR0aCcKKwlzaWRlQmVhcmluZ05hbWUgPSAnbHNiJworCW51bWJlck9mTWV0cmljc05hbWUgPSAnbnVtYmVyT2ZITWV0cmljcycKKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIGRhdGEsIHR0Rm9udCk6CisJCW51bWJlck9mTWV0cmljcyA9IGludChnZXRhdHRyKHR0Rm9udFtzZWxmLmhlYWRlclRhZ10sIHNlbGYubnVtYmVyT2ZNZXRyaWNzTmFtZSkpCisJCW1ldHJpY3MgPSBOdW1lcmljLmZyb21zdHJpbmcoZGF0YVs6NCAqIG51bWJlck9mTWV0cmljc10sIAorCQkJCU51bWVyaWMuSW50MTYpCisJCWlmIHR0TGliLmVuZGlhbiA8PiAiYmlnIjoKKwkJCW1ldHJpY3MgPSBtZXRyaWNzLmJ5dGVzd2FwcGVkKCkKKwkJbWV0cmljcy5zaGFwZSA9IChudW1iZXJPZk1ldHJpY3MsIDIpCisJCWRhdGEgPSBkYXRhWzQgKiBudW1iZXJPZk1ldHJpY3M6XQorCQludW1iZXJPZlNpZGVCZWFyaW5ncyA9IHR0Rm9udFsnbWF4cCddLm51bUdseXBocyAtIG51bWJlck9mTWV0cmljcworCQludW1iZXJPZlNpZGVCZWFyaW5ncyA9IGludChudW1iZXJPZlNpZGVCZWFyaW5ncykKKwkJaWYgbnVtYmVyT2ZTaWRlQmVhcmluZ3M6CisJCQlhc3NlcnQgbnVtYmVyT2ZTaWRlQmVhcmluZ3MgPiAwLCAiYmFkIGhtdHgvdm10eCB0YWJsZSIKKwkJCWxhc3RBZHZhbmNlID0gbWV0cmljc1stMV1bMF0KKwkJCWFkdmFuY2VzID0gTnVtZXJpYy5hcnJheShbbGFzdEFkdmFuY2VdICogbnVtYmVyT2ZTaWRlQmVhcmluZ3MsIAorCQkJCQlOdW1lcmljLkludDE2KQorCQkJc2lkZUJlYXJpbmdzID0gTnVtZXJpYy5mcm9tc3RyaW5nKGRhdGFbOjIgKiBudW1iZXJPZlNpZGVCZWFyaW5nc10sIAorCQkJCQlOdW1lcmljLkludDE2KQorCQkJaWYgdHRMaWIuZW5kaWFuIDw+ICJiaWciOgorCQkJCXNpZGVCZWFyaW5ncyA9IHNpZGVCZWFyaW5ncy5ieXRlc3dhcHBlZCgpCisJCQlkYXRhID0gZGF0YVsyICogbnVtYmVyT2ZTaWRlQmVhcmluZ3M6XQorCQkJYWRkaXRpb25hbE1ldHJpY3MgPSBOdW1lcmljLmFycmF5KFthZHZhbmNlcywgc2lkZUJlYXJpbmdzXSwgCisJCQkJCU51bWVyaWMuSW50MTYpCisJCQltZXRyaWNzID0gTnVtZXJpYy5jb25jYXRlbmF0ZSgobWV0cmljcywgCisJCQkJCU51bWVyaWMudHJhbnNwb3NlKGFkZGl0aW9uYWxNZXRyaWNzKSkpCisJCWlmIGRhdGE6CisJCQlyYWlzZSAgdHRMaWIuVFRMaWJFcnJvciwgInRvbyBtdWNoIGRhdGEgZm9yIGhtdHgvdm10eCB0YWJsZSIKKwkJbWV0cmljcyA9IG1ldHJpY3MudG9saXN0KCkKKwkJc2VsZi5tZXRyaWNzID0ge30KKwkJZm9yIGkgaW4gcmFuZ2UobGVuKG1ldHJpY3MpKToKKwkJCWdseXBoTmFtZSA9IHR0Rm9udC5nZXRHbHlwaE5hbWUoaSkKKwkJCXNlbGYubWV0cmljc1tnbHlwaE5hbWVdID0gbWV0cmljc1tpXQorCQorCWRlZiBjb21waWxlKHNlbGYsIHR0Rm9udCk6CisJCW1ldHJpY3MgPSBbXQorCQlmb3IgZ2x5cGhOYW1lIGluIHR0Rm9udC5nZXRHbHlwaE9yZGVyKCk6CisJCQltZXRyaWNzLmFwcGVuZChzZWxmLm1ldHJpY3NbZ2x5cGhOYW1lXSkKKwkJbGFzdEFkdmFuY2UgPSBtZXRyaWNzWy0xXVswXQorCQlsYXN0SW5kZXggPSBsZW4obWV0cmljcykKKwkJd2hpbGUgbWV0cmljc1tsYXN0SW5kZXgtMl1bMF0gPT0gbGFzdEFkdmFuY2U6CisJCQlsYXN0SW5kZXggPSBsYXN0SW5kZXggLSAxCisJCWFkZGl0aW9uYWxNZXRyaWNzID0gbWV0cmljc1tsYXN0SW5kZXg6XQorCQlhZGRpdGlvbmFsTWV0cmljcyA9IG1hcChsYW1iZGEgKGFkdmFuY2UsIHNiKTogc2IsIGFkZGl0aW9uYWxNZXRyaWNzKQorCQltZXRyaWNzID0gbWV0cmljc1s6bGFzdEluZGV4XQorCQlzZXRhdHRyKHR0Rm9udFtzZWxmLmhlYWRlclRhZ10sIHNlbGYubnVtYmVyT2ZNZXRyaWNzTmFtZSwgbGVuKG1ldHJpY3MpKQorCQkKKwkJbWV0cmljcyA9IE51bWVyaWMuYXJyYXkobWV0cmljcywgTnVtZXJpYy5JbnQxNikKKwkJaWYgdHRMaWIuZW5kaWFuIDw+ICJiaWciOgorCQkJbWV0cmljcyA9IG1ldHJpY3MuYnl0ZXN3YXBwZWQoKQorCQlkYXRhID0gbWV0cmljcy50b3N0cmluZygpCisJCQorCQlhZGRpdGlvbmFsTWV0cmljcyA9IE51bWVyaWMuYXJyYXkoYWRkaXRpb25hbE1ldHJpY3MsIE51bWVyaWMuSW50MTYpCisJCWlmIHR0TGliLmVuZGlhbiA8PiAiYmlnIjoKKwkJCWFkZGl0aW9uYWxNZXRyaWNzID0gYWRkaXRpb25hbE1ldHJpY3MuYnl0ZXN3YXBwZWQoKQorCQlkYXRhID0gZGF0YSArIGFkZGl0aW9uYWxNZXRyaWNzLnRvc3RyaW5nKCkKKwkJcmV0dXJuIGRhdGEKKwkKKwlkZWYgdG9YTUwoc2VsZiwgd3JpdGVyLCB0dEZvbnQpOgorCQluYW1lcyA9IHNlbGYubWV0cmljcy5rZXlzKCkKKwkJbmFtZXMuc29ydCgpCisJCWZvciBnbHlwaE5hbWUgaW4gbmFtZXM6CisJCQlhZHZhbmNlLCBzYiA9IHNlbGYubWV0cmljc1tnbHlwaE5hbWVdCisJCQl3cml0ZXIuc2ltcGxldGFnKCJtdHgiLCBbCisJCQkJCSgibmFtZSIsIGdseXBoTmFtZSksIAorCQkJCQkoc2VsZi5hZHZhbmNlTmFtZSwgYWR2YW5jZSksIAorCQkJCQkoc2VsZi5zaWRlQmVhcmluZ05hbWUsIHNiKSwKKwkJCQkJXSkKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkKKwlkZWYgZnJvbVhNTChzZWxmLCAobmFtZSwgYXR0cnMsIGNvbnRlbnQpLCB0dEZvbnQpOgorCQlpZiBub3QgaGFzYXR0cihzZWxmLCAibWV0cmljcyIpOgorCQkJc2VsZi5tZXRyaWNzID0ge30KKwkJaWYgbmFtZSA9PSAibXR4IjoKKwkJCXNlbGYubWV0cmljc1thdHRyc1sibmFtZSJdXSA9IFtzYWZlRXZhbChhdHRyc1tzZWxmLmFkdmFuY2VOYW1lXSksIAorCQkJCQlzYWZlRXZhbChhdHRyc1tzZWxmLnNpZGVCZWFyaW5nTmFtZV0pXQorCQorCWRlZiBfX2dldGl0ZW1fXyhzZWxmLCBnbHlwaE5hbWUpOgorCQlyZXR1cm4gc2VsZi5tZXRyaWNzW2dseXBoTmFtZV0KKwkKKwlkZWYgX19zZXRpdGVtX18oc2VsZiwgZ2x5cGhOYW1lLCAoYWR2YW5jZSwgc2IpKToKKwkJc2VsZi5tZXRyaWNzW2dseXBoTmFtZV0gPSBhZHZhbmNlLCBzYgorCmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9fa19lX3Jfbi5weSBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL19rX2Vfcl9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4M2M1MmYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9fa19lX3Jfbi5weQpAQCAtMCwwICsxLDE4NiBAQAoraW1wb3J0IERlZmF1bHRUYWJsZQoraW1wb3J0IHN0cnVjdAoraW1wb3J0IHR0TGliLnNmbnQKK2Zyb20gZm9udFRvb2xzLm1pc2MudGV4dFRvb2xzIGltcG9ydCBzYWZlRXZhbCwgcmVhZEhleAorCisKK2NsYXNzIHRhYmxlX19rX2Vfcl9uKERlZmF1bHRUYWJsZS5EZWZhdWx0VGFibGUpOgorCQorCWRlZiBnZXRrZXJuKHNlbGYsIGZvcm1hdCk6CisJCWZvciBzdWJ0YWJsZSBpbiBzZWxmLmtlcm5UYWJsZXM6CisJCQlpZiBzdWJ0YWJsZS52ZXJzaW9uID09IGZvcm1hdDoKKwkJCQlyZXR1cm4gc3VidGFibGUKKwkJcmV0dXJuIE5vbmUgICMgbm90IGZvdW5kCisJCisJZGVmIGRlY29tcGlsZShzZWxmLCBkYXRhLCB0dEZvbnQpOgorCQl2ZXJzaW9uLCBuVGFibGVzID0gc3RydWN0LnVucGFjaygiPkhIIiwgZGF0YVs6NF0pCisJCWlmIHZlcnNpb24gPT0gMToKKwkJCSMgQXBwbGUncyBuZXcgZm9ybWF0LiBIbS4KKwkJCXZlcnNpb24sIG5UYWJsZXMgPSBzdHJ1Y3QudW5wYWNrKCI+bGwiLCBkYXRhWzo4XSkKKwkJCXNlbGYudmVyc2lvbiA9IHZlcnNpb24gLyBmbG9hdCgweDEwMDAwKQorCQkJZGF0YSA9IGRhdGFbODpdCisJCWVsc2U6CisJCQlzZWxmLnZlcnNpb24gPSB2ZXJzaW9uCisJCQlkYXRhID0gZGF0YVs0Ol0KKwkJdGFibGVzSW5kZXggPSBbXQorCQlzZWxmLmtlcm5UYWJsZXMgPSBbXQorCQlmb3IgaSBpbiByYW5nZShuVGFibGVzKToKKwkJCXZlcnNpb24sIGxlbmd0aCA9IHN0cnVjdC51bnBhY2soIj5ISCIsIGRhdGFbOjRdKQorCQkJbGVuZ3RoID0gaW50KGxlbmd0aCkKKwkJCWlmIG5vdCBrZXJuX2NsYXNzZXMuaGFzX2tleSh2ZXJzaW9uKToKKwkJCQlzdWJ0YWJsZSA9IEtlcm5UYWJsZV9mb3JtYXRfdW5rb3duKCkKKwkJCWVsc2U6CisJCQkJc3VidGFibGUgPSBrZXJuX2NsYXNzZXNbdmVyc2lvbl0oKQorCQkJc3VidGFibGUuZGVjb21waWxlKGRhdGFbOmxlbmd0aF0sIHR0Rm9udCkKKwkJCXNlbGYua2VyblRhYmxlcy5hcHBlbmQoc3VidGFibGUpCisJCQlkYXRhID0gZGF0YVtsZW5ndGg6XQorCQorCWRlZiBjb21waWxlKHNlbGYsIHR0Rm9udCk6CisJCW5UYWJsZXMgPSBsZW4oc2VsZi5rZXJuVGFibGVzKQorCQlpZiBzZWxmLnZlcnNpb24gPT0gMS4wOgorCQkJIyBBcHBsZSdzIG5ldyBmb3JtYXQuCisJCQlkYXRhID0gc3RydWN0LnBhY2soIj5sbCIsIHNlbGYudmVyc2lvbiAqIDB4MTAwMCwgblRhYmxlcykKKwkJZWxzZToKKwkJCWRhdGEgPSBzdHJ1Y3QucGFjaygiPkhIIiwgc2VsZi52ZXJzaW9uLCBuVGFibGVzKQorCQlmb3Igc3VidGFibGUgaW4gc2VsZi5rZXJuVGFibGVzOgorCQkJZGF0YSA9IGRhdGEgKyBzdWJ0YWJsZS5jb21waWxlKHR0Rm9udCkKKwkJcmV0dXJuIGRhdGEKKwkKKwlkZWYgdG9YTUwoc2VsZiwgd3JpdGVyLCB0dEZvbnQpOgorCQl3cml0ZXIuc2ltcGxldGFnKCJ2ZXJzaW9uIiwgdmFsdWU9c2VsZi52ZXJzaW9uKQorCQl3cml0ZXIubmV3bGluZSgpCisJCWZvciBzdWJ0YWJsZSBpbiBzZWxmLmtlcm5UYWJsZXM6CisJCQlzdWJ0YWJsZS50b1hNTCh3cml0ZXIsIHR0Rm9udCkKKwkKKwlkZWYgZnJvbVhNTChzZWxmLCAobmFtZSwgYXR0cnMsIGNvbnRlbnQpLCB0dEZvbnQpOgorCQlpZiBuYW1lID09ICJ2ZXJzaW9uIjoKKwkJCXNlbGYudmVyc2lvbiA9IHNhZmVFdmFsKGF0dHJzWyJ2YWx1ZSJdKQorCQkJcmV0dXJuCisJCWlmIG5hbWUgPD4gImtlcm5zdWJ0YWJsZSI6CisJCQlyZXR1cm4KKwkJaWYgbm90IGhhc2F0dHIoc2VsZiwgImtlcm5UYWJsZXMiKToKKwkJCXNlbGYua2VyblRhYmxlcyA9IFtdCisJCWZvcm1hdCA9IHNhZmVFdmFsKGF0dHJzWyJmb3JtYXQiXSkKKwkJaWYgbm90IGtlcm5fY2xhc3Nlcy5oYXNfa2V5KGZvcm1hdCk6CisJCQlzdWJ0YWJsZSA9IEtlcm5UYWJsZV9mb3JtYXRfdW5rb3duKCkKKwkJZWxzZToKKwkJCXN1YnRhYmxlID0ga2Vybl9jbGFzc2VzW2Zvcm1hdF0oKQorCQlzZWxmLmtlcm5UYWJsZXMuYXBwZW5kKHN1YnRhYmxlKQorCQlzdWJ0YWJsZS5mcm9tWE1MKChuYW1lLCBhdHRycywgY29udGVudCksIHR0Rm9udCkKKworCitjbGFzcyBLZXJuVGFibGVfZm9ybWF0XzA6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCBkYXRhLCB0dEZvbnQpOgorCQl2ZXJzaW9uLCBsZW5ndGgsIGNvdmVyYWdlID0gc3RydWN0LnVucGFjaygiPkhISCIsIGRhdGFbOjZdKQorCQlzZWxmLnZlcnNpb24sIHNlbGYuY292ZXJhZ2UgPSBpbnQodmVyc2lvbiksIGludChjb3ZlcmFnZSkKKwkJZGF0YSA9IGRhdGFbNjpdCisJCQorCQlzZWxmLmtlcm5UYWJsZSA9IGtlcm5UYWJsZSA9IHt9CisJCQorCQluUGFpcnMsIHNlYXJjaFJhbmdlLCBlbnRyeVNlbGVjdG9yLCByYW5nZVNoaWZ0ID0gc3RydWN0LnVucGFjaygiPkhISEgiLCBkYXRhWzo4XSkKKwkJZGF0YSA9IGRhdGFbODpdCisJCQorCQlmb3IgayBpbiByYW5nZShuUGFpcnMpOgorCQkJbGVmdCwgcmlnaHQsIHZhbHVlID0gc3RydWN0LnVucGFjaygiPkhIaCIsIGRhdGFbOjZdKQorCQkJZGF0YSA9IGRhdGFbNjpdCisJCQlsZWZ0LCByaWdodCA9IGludChsZWZ0KSwgaW50KHJpZ2h0KQorCQkJa2VyblRhYmxlWyh0dEZvbnQuZ2V0R2x5cGhOYW1lKGxlZnQpLCB0dEZvbnQuZ2V0R2x5cGhOYW1lKHJpZ2h0KSldID0gdmFsdWUKKwkJYXNzZXJ0IGxlbihkYXRhKSA9PSAwCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgdHRGb250KToKKwkJblBhaXJzID0gbGVuKHNlbGYua2VyblRhYmxlKQorCQllbnRyeVNlbGVjdG9yID0gdHRMaWIuc2ZudC5tYXhwb3dlcm9mdHdvKG5QYWlycykKKwkJc2VhcmNoUmFuZ2UgPSAoMiAqKiBlbnRyeVNlbGVjdG9yKSAqIDYKKwkJcmFuZ2VTaGlmdCA9IChuUGFpcnMgLSAoMiAqKiBlbnRyeVNlbGVjdG9yKSkgKiA2CisJCWRhdGEgPSBzdHJ1Y3QucGFjaygiPkhISEgiLCBuUGFpcnMsIHNlYXJjaFJhbmdlLCBlbnRyeVNlbGVjdG9yLCByYW5nZVNoaWZ0KQorCQkKKwkJIyB5ZWVoZWUhIChJIG1lYW4sIHR1cm4gbmFtZXMgaW50byBpbmRpY2VzKQorCQlrZXJuVGFibGUgPSBtYXAobGFtYmRhICgobGVmdCwgcmlnaHQpLCB2YWx1ZSksIGdldEdseXBoSUQ9dHRGb250LmdldEdseXBoSUQ6CisJCQkJCShnZXRHbHlwaElEKGxlZnQpLCBnZXRHbHlwaElEKHJpZ2h0KSwgdmFsdWUpLCAKKwkJCQlzZWxmLmtlcm5UYWJsZS5pdGVtcygpKQorCQlrZXJuVGFibGUuc29ydCgpCisJCWZvciBsZWZ0LCByaWdodCwgdmFsdWUgaW4ga2VyblRhYmxlOgorCQkJZGF0YSA9IGRhdGEgKyBzdHJ1Y3QucGFjaygiPkhIaCIsIGxlZnQsIHJpZ2h0LCB2YWx1ZSkKKwkJcmV0dXJuIHN0cnVjdC5wYWNrKCI+SEhIIiwgc2VsZi52ZXJzaW9uLCBsZW4oZGF0YSkgKyA2LCBzZWxmLmNvdmVyYWdlKSArIGRhdGEKKwkKKwlkZWYgdG9YTUwoc2VsZiwgd3JpdGVyLCB0dEZvbnQpOgorCQl3cml0ZXIuYmVnaW50YWcoImtlcm5zdWJ0YWJsZSIsIGNvdmVyYWdlPXNlbGYuY292ZXJhZ2UsIGZvcm1hdD0wKQorCQl3cml0ZXIubmV3bGluZSgpCisJCWl0ZW1zID0gc2VsZi5rZXJuVGFibGUuaXRlbXMoKQorCQlpdGVtcy5zb3J0KCkKKwkJZm9yIChsZWZ0LCByaWdodCksIHZhbHVlIGluIGl0ZW1zOgorCQkJd3JpdGVyLnNpbXBsZXRhZygicGFpciIsIFsKKwkJCQkJKCJsIiwgbGVmdCksCisJCQkJCSgiciIsIHJpZ2h0KSwKKwkJCQkJKCJ2IiwgdmFsdWUpCisJCQkJCV0pCisJCQl3cml0ZXIubmV3bGluZSgpCisJCXdyaXRlci5lbmR0YWcoImtlcm5zdWJ0YWJsZSIpCisJCXdyaXRlci5uZXdsaW5lKCkKKwkKKwlkZWYgZnJvbVhNTChzZWxmLCAobmFtZSwgYXR0cnMsIGNvbnRlbnQpLCB0dEZvbnQpOgorCQlzZWxmLmNvdmVyYWdlID0gc2FmZUV2YWwoYXR0cnNbImNvdmVyYWdlIl0pCisJCXNlbGYudmVyc2lvbiA9IHNhZmVFdmFsKGF0dHJzWyJmb3JtYXQiXSkKKwkJaWYgbm90IGhhc2F0dHIoc2VsZiwgImtlcm5UYWJsZSIpOgorCQkJc2VsZi5rZXJuVGFibGUgPSB7fQorCQlmb3IgZWxlbWVudCBpbiBjb250ZW50OgorCQkJaWYgdHlwZShlbGVtZW50KSA8PiB0eXBlKCgpKToKKwkJCQljb250aW51ZQorCQkJbmFtZSwgYXR0cnMsIGNvbnRlbnQgPSBlbGVtZW50CisJCQlzZWxmLmtlcm5UYWJsZVsoYXR0cnNbImwiXSwgYXR0cnNbInIiXSldID0gc2FmZUV2YWwoYXR0cnNbInYiXSkKKwkKKwlkZWYgX19nZXRpdGVtX18oc2VsZiwgcGFpcik6CisJCXJldHVybiBzZWxmLmtlcm5UYWJsZVtwYWlyXQorCQorCWRlZiBfX3NldGl0ZW1fXyhzZWxmLCBwYWlyLCB2YWx1ZSk6CisJCXNlbGYua2VyblRhYmxlW3BhaXJdID0gdmFsdWUKKwkKKwlkZWYgX19kZWxpdGVtX18oc2VsZiwgcGFpcik6CisJCWRlbCBzZWxmLmtlcm5UYWJsZVtwYWlyXQorCQorCWRlZiBfX2NtcF9fKHNlbGYsIG90aGVyKToKKwkJcmV0dXJuIGNtcChzZWxmLl9fZGljdF9fLCBvdGhlci5fX2RpY3RfXykKKworCitjbGFzcyBLZXJuVGFibGVfZm9ybWF0XzI6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCBkYXRhLCB0dEZvbnQpOgorCQlzZWxmLmRhdGEgPSBkYXRhCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgdHRGb250LCB0dEZvbnQpOgorCQlyZXR1cm4gZGF0YQorCQorCWRlZiB0b1hNTChzZWxmLCB3cml0ZXIpOgorCQl3cml0ZXIuYmVnaW50YWcoImtlcm5zdWJ0YWJsZSIsIGZvcm1hdD0yKQorCQl3cml0ZXIubmV3bGluZSgpCisJCXdyaXRlci5kdW1waGV4KHNlbGYuZGF0YSkKKwkJd3JpdGVyLmVuZHRhZygia2VybnN1YnRhYmxlIikKKwkJd3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIHR0Rm9udCk6CisJCXNlbGYuZGVjb21waWxlKHJlYWRIZXgoY29udGVudCkpCisKKworY2xhc3MgS2VyblRhYmxlX2Zvcm1hdF91bmtvd246CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCBkYXRhLCB0dEZvbnQpOgorCQlzZWxmLmRhdGEgPSBkYXRhCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgdHRGb250KToKKwkJcmV0dXJuIGRhdGEKKwkKKwlkZWYgdG9YTUwoc2VsZiwgd3JpdGVyLCB0dEZvbnQpOgorCQl3cml0ZXIuYmVnaW50YWcoImtlcm5zdWJ0YWJsZSIsIGZvcm1hdD0iLTEiKQorCQl3cml0ZXIubmV3bGluZSgpCisJCXdyaXRlci5jb21tZW50KCJ1bmtub3duICdrZXJuJyBzdWJ0YWJsZSBmb3JtYXQiKQorCQl3cml0ZXIuZHVtcGhleChzZWxmLmRhdGEpCisJCXdyaXRlci5lbmR0YWcoImtlcm5zdWJ0YWJsZSIpCisJCXdyaXRlci5uZXdsaW5lKCkKKwkKKwlkZWYgZnJvbVhNTChzZWxmLCAobmFtZSwgYXR0cnMsIGNvbnRlbnQpLCB0dEZvbnQpOgorCQlzZWxmLmRlY29tcGlsZShyZWFkSGV4KGNvbnRlbnQpKQorCisKKwora2Vybl9jbGFzc2VzID0gezA6IEtlcm5UYWJsZV9mb3JtYXRfMCwgMTogS2VyblRhYmxlX2Zvcm1hdF8yfQpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvX2xfb19jX2EucHkgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9fbF9vX2NfYS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzJhNzA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvX2xfb19jX2EucHkKQEAgLTAsMCArMSw1NSBAQAoraW1wb3J0IERlZmF1bHRUYWJsZQoraW1wb3J0IGFycmF5CitpbXBvcnQgTnVtZXJpYworZnJvbSBmb250VG9vbHMgaW1wb3J0IHR0TGliCitpbXBvcnQgc3RydWN0CisKK2NsYXNzIHRhYmxlX19sX29fY19hKERlZmF1bHRUYWJsZS5EZWZhdWx0VGFibGUpOgorCQorCWRlcGVuZGVuY2llcyA9IFsnZ2x5ZiddCisJCisJZGVmIGRlY29tcGlsZShzZWxmLCBkYXRhLCB0dEZvbnQpOgorCQlsb25nRm9ybWF0ID0gdHRGb250WydoZWFkJ10uaW5kZXhUb0xvY0Zvcm1hdAorCQlpZiBsb25nRm9ybWF0OgorCQkJZm9ybWF0ID0gImwiCisJCWVsc2U6CisJCQlmb3JtYXQgPSAiSCIKKwkJbG9jYXRpb25zID0gYXJyYXkuYXJyYXkoZm9ybWF0KQorCQlsb2NhdGlvbnMuZnJvbXN0cmluZyhkYXRhKQorCQlpZiB0dExpYi5lbmRpYW4gPD4gImJpZyI6CisJCQlsb2NhdGlvbnMuYnl0ZXN3YXAoKQorCQlsb2NhdGlvbnMgPSBOdW1lcmljLmFycmF5KGxvY2F0aW9ucywgTnVtZXJpYy5JbnQzMikKKwkJaWYgbm90IGxvbmdGb3JtYXQ6CisJCQlsb2NhdGlvbnMgPSBsb2NhdGlvbnMgKiAyCisJCWlmIGxlbihsb2NhdGlvbnMpIDw+ICh0dEZvbnRbJ21heHAnXS5udW1HbHlwaHMgKyAxKToKKwkJCXJhaXNlICB0dExpYi5UVExpYkVycm9yLCAiY29ycnVwdCAnbG9jYScgdGFibGUiCisJCXNlbGYubG9jYXRpb25zID0gbG9jYXRpb25zCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgdHRGb250KToKKwkJbG9jYXRpb25zID0gc2VsZi5sb2NhdGlvbnMKKwkJaWYgbWF4KGxvY2F0aW9ucykgPCAweDIwMDAwOgorCQkJbG9jYXRpb25zID0gbG9jYXRpb25zIC8gMgorCQkJbG9jYXRpb25zID0gbG9jYXRpb25zLmFzdHlwZShOdW1lcmljLkludDE2KQorCQkJdHRGb250WydoZWFkJ10uaW5kZXhUb0xvY0Zvcm1hdCA9IDAKKwkJZWxzZToKKwkJCXR0Rm9udFsnaGVhZCddLmluZGV4VG9Mb2NGb3JtYXQgPSAxCisJCWlmIHR0TGliLmVuZGlhbiA8PiAiYmlnIjoKKwkJCWxvY2F0aW9ucyA9IGxvY2F0aW9ucy5ieXRlc3dhcHBlZCgpCisJCXJldHVybiBsb2NhdGlvbnMudG9zdHJpbmcoKQorCQorCWRlZiBzZXQoc2VsZiwgbG9jYXRpb25zKToKKwkJc2VsZi5sb2NhdGlvbnMgPSBOdW1lcmljLmFycmF5KGxvY2F0aW9ucywgTnVtZXJpYy5JbnQzMikKKwkKKwlkZWYgdG9YTUwoc2VsZiwgd3JpdGVyLCB0dEZvbnQpOgorCQl3cml0ZXIuY29tbWVudCgiVGhlICdsb2NhJyB0YWJsZSB3aWxsIGJlIGNhbGN1bGF0ZWQgYnkgdGhlIGNvbXBpbGVyIikKKwkJd3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpbmRleCk6CisJCXJldHVybiBzZWxmLmxvY2F0aW9uc1tpbmRleF0KKwkKKwlkZWYgX19sZW5fXyhzZWxmKToKKwkJcmV0dXJuIGxlbihzZWxmLmxvY2F0aW9ucykKKwkKKwlkZWYgX19jbXBfXyhzZWxmLCBvdGhlcik6CisJCXJldHVybiBjbXAobGVuKHNlbGYpLCBsZW4ob3RoZXIpKSBvciBub3QgTnVtZXJpYy5hbGx0cnVlKE51bWVyaWMuZXF1YWwoc2VsZi5sb2NhdGlvbnMsIG90aGVyLmxvY2F0aW9ucykpCisKZGlmZiAtLWdpdCBhL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL19tX2FfeF9wLnB5IGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvX21fYV94X3AucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM3NWU2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL19tX2FfeF9wLnB5CkBAIC0wLDAgKzEsMTM4IEBACitpbXBvcnQgRGVmYXVsdFRhYmxlCitpbXBvcnQgc3N0cnVjdAorZnJvbSBmb250VG9vbHMubWlzYy50ZXh0VG9vbHMgaW1wb3J0IHNhZmVFdmFsCisKK21heHBGb3JtYXRfMF81ID0gIiIiCisJCT4JIyBiaWcgZW5kaWFuCisJCXRhYmxlVmVyc2lvbjoJCQlpCisJCW51bUdseXBoczoJCQkJSAorIiIiCisKK21heHBGb3JtYXRfMV8wX2FkZCA9ICIiIgorCQk+CSMgYmlnIGVuZGlhbgorCQltYXhQb2ludHM6CQkJCUgKKwkJbWF4Q29udG91cnM6CQkJSAorCQltYXhDb21wb3NpdGVQb2ludHM6CQlICisJCW1heENvbXBvc2l0ZUNvbnRvdXJzOglICisJCW1heFpvbmVzOgkJCQlICisJCW1heFR3aWxpZ2h0UG9pbnRzOgkJSAorCQltYXhTdG9yYWdlOgkJCQlICisJCW1heEZ1bmN0aW9uRGVmczoJCUgKKwkJbWF4SW5zdHJ1Y3Rpb25EZWZzOgkJSAorCQltYXhTdGFja0VsZW1lbnRzOgkJSAorCQltYXhTaXplT2ZJbnN0cnVjdGlvbnM6CUgKKwkJbWF4Q29tcG9uZW50RWxlbWVudHM6CUgKKwkJbWF4Q29tcG9uZW50RGVwdGg6CQlICisiIiIKKworCitjbGFzcyB0YWJsZV9fbV9hX3hfcChEZWZhdWx0VGFibGUuRGVmYXVsdFRhYmxlKToKKwkKKwlkZXBlbmRlbmNpZXMgPSBbJ2dseWYnXQorCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgZGF0YSwgdHRGb250KToKKwkJZHVtbXksIGRhdGEgPSBzc3RydWN0LnVucGFjazIobWF4cEZvcm1hdF8wXzUsIGRhdGEsIHNlbGYpCisJCXNlbGYubnVtR2x5cGhzID0gaW50KHNlbGYubnVtR2x5cGhzKQorCQlpZiBzZWxmLnRhYmxlVmVyc2lvbiA9PSAweDAwMDEwMDAwOgorCQkJZHVtbXksIGRhdGEgPSBzc3RydWN0LnVucGFjazIobWF4cEZvcm1hdF8xXzBfYWRkLCBkYXRhLCBzZWxmKQorCQllbHNlOgorCQkJYXNzZXJ0IHNlbGYudGFibGVWZXJzaW9uID09IDB4MDAwMDUwMDAsICJ1bmtub3duICdtYXhwJyBmb3JtYXQ6ICV4IiAlIHNlbGYudGFibGVWZXJzaW9uCisJCWFzc2VydCBsZW4oZGF0YSkgPT0gMAorCQorCWRlZiBjb21waWxlKHNlbGYsIHR0Rm9udCk6CisJCWlmIHR0Rm9udC5oYXNfa2V5KCdnbHlmJyk6CisJCQlpZiB0dEZvbnQuaXNMb2FkZWQoJ2dseWYnKToKKwkJCQlzZWxmLnJlY2FsYyh0dEZvbnQpCisJCWVsc2U6CisJCQlwYXNzICMgWFhYIENGRiEhIQorCQlkYXRhID0gc3N0cnVjdC5wYWNrKG1heHBGb3JtYXRfMF81LCBzZWxmKQorCQlpZiBzZWxmLnRhYmxlVmVyc2lvbiA9PSAweDAwMDEwMDAwOgorCQkJZGF0YSA9IGRhdGEgKyBzc3RydWN0LnBhY2sobWF4cEZvcm1hdF8xXzBfYWRkLCBzZWxmKQorCQllbHNlOgorCQkJYXNzZXJ0IHNlbGYudGFibGVWZXJzaW9uID09IDB4MDAwMDUwMDAsICJ1bmtub3duICdtYXhwJyBmb3JtYXQ6ICVmIiAlIHNlbGYudGFibGVWZXJzaW9uCisJCXJldHVybiBkYXRhCisJCisJZGVmIHJlY2FsYyhzZWxmLCB0dEZvbnQpOgorCQkiIiJSZWNhbGN1bGF0ZSB0aGUgZm9udCBib3VuZGluZyBib3gsIGFuZCBtb3N0IG90aGVyIG1heHAgdmFsdWVzIGV4Y2VwdAorCQlmb3IgdGhlIFRUIGluc3RydWN0aW9ucyB2YWx1ZXMuIEFsc28gcmVjYWxjdWxhdGUgdGhlIHZhbHVlIG9mIGJpdCAxCisJCW9mIHRoZSBmbGFncyBmaWVsZCBvZiB0aGUgJ2hlYWQnIHRhYmxlLgorCQkiIiIKKwkJZ2x5ZlRhYmxlID0gdHRGb250WydnbHlmJ10KKwkJaG10eFRhYmxlID0gdHRGb250WydobXR4J10KKwkJaGVhZFRhYmxlID0gdHRGb250WydoZWFkJ10KKwkJc2VsZi5udW1HbHlwaHMgPSBsZW4oZ2x5ZlRhYmxlKQorCQl4TWluID0gMTAwMDAwCisJCXlNaW4gPSAxMDAwMDAKKwkJeE1heCA9IC0xMDAwMDAKKwkJeU1heCA9IC0xMDAwMDAKKwkJbWF4UG9pbnRzID0gMAorCQltYXhDb250b3VycyA9IDAKKwkJbWF4Q29tcG9zaXRlUG9pbnRzID0gMAorCQltYXhDb21wb3NpdGVDb250b3VycyA9IDAKKwkJbWF4Q29tcG9uZW50RWxlbWVudHMgPSAwCisJCW1heENvbXBvbmVudERlcHRoID0gMAorCQlhbGxYTWF4SXNMc2IgPSAxCisJCWZvciBnbHlwaE5hbWUgaW4gdHRGb250LmdldEdseXBoT3JkZXIoKToKKwkJCWcgPSBnbHlmVGFibGVbZ2x5cGhOYW1lXQorCQkJaWYgZy5udW1iZXJPZkNvbnRvdXJzOgorCQkJCWlmIGhtdHhUYWJsZVtnbHlwaE5hbWVdWzFdIDw+IGcueE1pbjoKKwkJCQkJYWxsWE1heElzTHNiID0gMAorCQkJCXhNaW4gPSBtaW4oeE1pbiwgZy54TWluKQorCQkJCXlNaW4gPSBtaW4oeU1pbiwgZy55TWluKQorCQkJCXhNYXggPSBtYXgoeE1heCwgZy54TWF4KQorCQkJCXlNYXggPSBtYXgoeU1heCwgZy55TWF4KQorCQkJCWlmIGcubnVtYmVyT2ZDb250b3VycyA+IDA6CisJCQkJCW5Qb2ludHMsIG5Db250b3VycyA9IGcuZ2V0TWF4cFZhbHVlcygpCisJCQkJCW1heFBvaW50cyA9IG1heChtYXhQb2ludHMsIG5Qb2ludHMpCisJCQkJCW1heENvbnRvdXJzID0gbWF4KG1heENvbnRvdXJzLCBuQ29udG91cnMpCisJCQkJZWxzZToKKwkJCQkJblBvaW50cywgbkNvbnRvdXJzLCBjb21wb25lbnREZXB0aCA9IGcuZ2V0Q29tcG9zaXRlTWF4cFZhbHVlcyhnbHlmVGFibGUpCisJCQkJCW1heENvbXBvc2l0ZVBvaW50cyA9IG1heChtYXhDb21wb3NpdGVQb2ludHMsIG5Qb2ludHMpCisJCQkJCW1heENvbXBvc2l0ZUNvbnRvdXJzID0gbWF4KG1heENvbXBvc2l0ZUNvbnRvdXJzLCBuQ29udG91cnMpCisJCQkJCW1heENvbXBvbmVudEVsZW1lbnRzID0gbWF4KG1heENvbXBvbmVudEVsZW1lbnRzLCBsZW4oZy5jb21wb25lbnRzKSkKKwkJCQkJbWF4Q29tcG9uZW50RGVwdGggPSBtYXgobWF4Q29tcG9uZW50RGVwdGgsIGNvbXBvbmVudERlcHRoKQorCQlzZWxmLnhNaW4gPSB4TWluCisJCXNlbGYueU1pbiA9IHlNaW4KKwkJc2VsZi54TWF4ID0geE1heAorCQlzZWxmLnlNYXggPSB5TWF4CisJCXNlbGYubWF4UG9pbnRzID0gbWF4UG9pbnRzCisJCXNlbGYubWF4Q29udG91cnMgPSBtYXhDb250b3VycworCQlzZWxmLm1heENvbXBvc2l0ZVBvaW50cyA9IG1heENvbXBvc2l0ZVBvaW50cworCQlzZWxmLm1heENvbXBvc2l0ZUNvbnRvdXJzID0gbWF4Q29tcG9zaXRlQ29udG91cnMKKwkJc2VsZi5tYXhDb21wb25lbnREZXB0aCA9IG1heENvbXBvbmVudERlcHRoCisJCWlmIGFsbFhNYXhJc0xzYjoKKwkJCWhlYWRUYWJsZS5mbGFncyA9IGhlYWRUYWJsZS5mbGFncyB8IDB4MgorCQllbHNlOgorCQkJaGVhZFRhYmxlLmZsYWdzID0gaGVhZFRhYmxlLmZsYWdzICYgfjB4MgorCQorCWRlZiB0ZXN0cmVwcihzZWxmKToKKwkJaXRlbXMgPSBzZWxmLl9fZGljdF9fLml0ZW1zKCkKKwkJaXRlbXMuc29ydCgpCisJCXByaW50ICIuIC4gLiAuIC4gLiAuIC4gLiIKKwkJZm9yIGNvbWJvIGluIGl0ZW1zOgorCQkJcHJpbnQgIiAgJXM6ICVzIiAlIGNvbWJvCisJCXByaW50ICIuIC4gLiAuIC4gLiAuIC4gLiIKKwkKKwlkZWYgdG9YTUwoc2VsZiwgd3JpdGVyLCB0dEZvbnQpOgorCQlpZiBzZWxmLnRhYmxlVmVyc2lvbiA8PiAweDAwMDA1MDAwOgorCQkJd3JpdGVyLmNvbW1lbnQoIk1vc3Qgb2YgdGhpcyB0YWJsZSB3aWxsIGJlIHJlY2FsY3VsYXRlZCBieSB0aGUgY29tcGlsZXIiKQorCQkJd3JpdGVyLm5ld2xpbmUoKQorCQlmb3JtYXRzdHJpbmcsIG5hbWVzLCBmaXhlcyA9IHNzdHJ1Y3QuZ2V0Zm9ybWF0KG1heHBGb3JtYXRfMF81KQorCQlpZiBzZWxmLnRhYmxlVmVyc2lvbiA9PSAweDAwMDEwMDAwOgorCQkJZm9ybWF0c3RyaW5nLCBuYW1lc18xXzAsIGZpeGVzID0gc3N0cnVjdC5nZXRmb3JtYXQobWF4cEZvcm1hdF8xXzBfYWRkKQorCQkJbmFtZXMgPSBuYW1lcyArIG5hbWVzXzFfMAorCQllbHNlOgorCQkJYXNzZXJ0IHNlbGYudGFibGVWZXJzaW9uID09IDB4MDAwMDUwMDAsICJ1bmtub3duICdtYXhwJyBmb3JtYXQ6ICVmIiAlIHNlbGYudGFibGVWZXJzaW9uCisJCWZvciBuYW1lIGluIG5hbWVzOgorCQkJdmFsdWUgPSBnZXRhdHRyKHNlbGYsIG5hbWUpCisJCQlpZiB0eXBlKHZhbHVlKSA9PSB0eXBlKDBMKToKKwkJCQl2YWx1ZT1pbnQodmFsdWUpCisJCQlpZiBuYW1lID09ICJ0YWJsZVZlcnNpb24iOgorCQkJCXZhbHVlID0gaGV4KHZhbHVlKQorCQkJd3JpdGVyLnNpbXBsZXRhZyhuYW1lLCB2YWx1ZT12YWx1ZSkKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkKKwlkZWYgZnJvbVhNTChzZWxmLCAobmFtZSwgYXR0cnMsIGNvbnRlbnQpLCB0dEZvbnQpOgorCQlzZXRhdHRyKHNlbGYsIG5hbWUsIHNhZmVFdmFsKGF0dHJzWyJ2YWx1ZSJdKSkKKwkJCisKZGlmZiAtLWdpdCBhL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL19uX2FfbV9lLnB5IGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvX25fYV9tX2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVjZGUzMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL19uX2FfbV9lLnB5CkBAIC0wLDAgKzEsMTM2IEBACitpbXBvcnQgRGVmYXVsdFRhYmxlCitpbXBvcnQgc3RydWN0LCBzc3RydWN0Citmcm9tIGZvbnRUb29scy5taXNjLnRleHRUb29scyBpbXBvcnQgc2FmZUV2YWwKK2ltcG9ydCBzdHJpbmcKK2ltcG9ydCB0eXBlcworCituYW1lUmVjb3JkRm9ybWF0ID0gIiIiCisJCT4JIyBiaWcgZW5kaWFuCisJCXBsYXRmb3JtSUQ6CUgKKwkJcGxhdEVuY0lEOglICisJCWxhbmdJRDoJCUgKKwkJbmFtZUlEOgkJSAorCQlsZW5ndGg6CQlICisJCW9mZnNldDoJCUgKKyIiIgorCitjbGFzcyB0YWJsZV9fbl9hX21fZShEZWZhdWx0VGFibGUuRGVmYXVsdFRhYmxlKToKKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIGRhdGEsIHR0Rm9udCk6CisJCWZvcm1hdCwgbiwgc3RyaW5nb2Zmc2V0ID0gc3RydWN0LnVucGFjaygiPkhISCIsIGRhdGFbOjZdKQorCQlzdHJpbmdvZmZzZXQgPSBpbnQoc3RyaW5nb2Zmc2V0KQorCQlzdHJpbmdEYXRhID0gZGF0YVtzdHJpbmdvZmZzZXQ6XQorCQlkYXRhID0gZGF0YVs2OnN0cmluZ29mZnNldF0KKwkJc2VsZi5uYW1lcyA9IFtdCisJCWZvciBpIGluIHJhbmdlKG4pOgorCQkJbmFtZSwgZGF0YSA9IHNzdHJ1Y3QudW5wYWNrMihuYW1lUmVjb3JkRm9ybWF0LCBkYXRhLCBOYW1lUmVjb3JkKCkpCisJCQluYW1lLmZpeGxvbmdzKCkKKwkJCW5hbWUuc3RyaW5nID0gc3RyaW5nRGF0YVtuYW1lLm9mZnNldDpuYW1lLm9mZnNldCtuYW1lLmxlbmd0aF0KKwkJCWRlbCBuYW1lLm9mZnNldCwgbmFtZS5sZW5ndGgKKwkJCXNlbGYubmFtZXMuYXBwZW5kKG5hbWUpCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgdHRGb250KToKKwkJc2VsZi5uYW1lcy5zb3J0KCkgICMgc29ydCBhY2NvcmRpbmcgdG8gdGhlIHNwZWM7IHNlZSBOYW1lUmVjb3JkLl9fY21wX18oKQorCQlzdHJpbmdEYXRhID0gIiIKKwkJZm9ybWF0ID0gMAorCQluID0gbGVuKHNlbGYubmFtZXMpCisJCXN0cmluZ29mZnNldCA9IDYgKyBuICogc3N0cnVjdC5jYWxjc2l6ZShuYW1lUmVjb3JkRm9ybWF0KQorCQlkYXRhID0gc3RydWN0LnBhY2soIj5ISEgiLCBmb3JtYXQsIG4sIHN0cmluZ29mZnNldCkKKwkJbGFzdG9mZnNldCA9IDAKKwkJZG9uZSA9IHt9ICAjIHJlbWVtYmVyIHRoZSBkYXRhIHNvIHdlIGNhbiByZXVzZSB0aGUgInBvaW50ZXJzIgorCQlmb3IgbmFtZSBpbiBzZWxmLm5hbWVzOgorCQkJaWYgZG9uZS5oYXNfa2V5KG5hbWUuc3RyaW5nKToKKwkJCQluYW1lLm9mZnNldCwgbmFtZS5sZW5ndGggPSBkb25lW25hbWUuc3RyaW5nXQorCQkJZWxzZToKKwkJCQluYW1lLm9mZnNldCwgbmFtZS5sZW5ndGggPSBkb25lW25hbWUuc3RyaW5nXSA9IGxlbihzdHJpbmdEYXRhKSwgbGVuKG5hbWUuc3RyaW5nKQorCQkJCXN0cmluZ0RhdGEgPSBzdHJpbmdEYXRhICsgbmFtZS5zdHJpbmcKKwkJCWRhdGEgPSBkYXRhICsgc3N0cnVjdC5wYWNrKG5hbWVSZWNvcmRGb3JtYXQsIG5hbWUpCisJCXJldHVybiBkYXRhICsgc3RyaW5nRGF0YQorCQorCWRlZiB0b1hNTChzZWxmLCB3cml0ZXIsIHR0Rm9udCk6CisJCWZvciBuYW1lIGluIHNlbGYubmFtZXM6CisJCQluYW1lLnRvWE1MKHdyaXRlciwgdHRGb250KQorCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIHR0Rm9udCk6CisJCWlmIG5hbWUgPD4gIm5hbWVyZWNvcmQiOgorCQkJcmV0dXJuICMgaWdub3JlIHVua25vd24gdGFncworCQlpZiBub3QgaGFzYXR0cihzZWxmLCAibmFtZXMiKToKKwkJCXNlbGYubmFtZXMgPSBbXQorCQluYW1lID0gTmFtZVJlY29yZCgpCisJCXNlbGYubmFtZXMuYXBwZW5kKG5hbWUpCisJCW5hbWUuZnJvbVhNTCgobmFtZSwgYXR0cnMsIGNvbnRlbnQpLCB0dEZvbnQpCisJCisJZGVmIGdldG5hbWUoc2VsZiwgbmFtZUlELCBwbGF0Zm9ybUlELCBwbGF0RW5jSUQsIGxhbmdJRD1Ob25lKToKKwkJZm9yIG5hbWVyZWNvcmQgaW4gc2VsZi5uYW1lczoKKwkJCWlmICgJbmFtZXJlY29yZC5uYW1lSUQgPT0gbmFtZUlEIGFuZCAKKwkJCQkJbmFtZXJlY29yZC5wbGF0Zm9ybUlEID09IHBsYXRmb3JtSUQgYW5kIAorCQkJCQluYW1lcmVjb3JkLnBsYXRFbmNJRCA9PSBwbGF0RW5jSUQpOgorCQkJCWlmIGxhbmdJRCBpcyBOb25lIG9yIG5hbWVyZWNvcmQubGFuZ0lEID09IGxhbmdJRDoKKwkJCQkJcmV0dXJuIG5hbWVyZWNvcmQKKwkJcmV0dXJuIE5vbmUgIyBub3QgZm91bmQKKwkKKwlkZWYgX19jbXBfXyhzZWxmLCBvdGhlcik6CisJCXJldHVybiBjbXAoc2VsZi5uYW1lcywgb3RoZXIubmFtZXMpCisJCisKK2NsYXNzIE5hbWVSZWNvcmQ6CisJCisJZGVmIHRvWE1MKHNlbGYsIHdyaXRlciwgdHRGb250KToKKwkJd3JpdGVyLmJlZ2ludGFnKCJuYW1lcmVjb3JkIiwgWworCQkJCSgibmFtZUlEIiwgc2VsZi5uYW1lSUQpLAorCQkJCSgicGxhdGZvcm1JRCIsIHNlbGYucGxhdGZvcm1JRCksCisJCQkJKCJwbGF0RW5jSUQiLCBzZWxmLnBsYXRFbmNJRCksCisJCQkJKCJsYW5nSUQiLCBoZXgoc2VsZi5sYW5nSUQpKSwKKwkJCQkJCV0pCisJCXdyaXRlci5uZXdsaW5lKCkKKwkJaWYgc2VsZi5wbGF0Zm9ybUlEID09IDAgb3IgKHNlbGYucGxhdGZvcm1JRCA9PSAzIGFuZCBzZWxmLnBsYXRFbmNJRCA9PSAxKToKKwkJCXdyaXRlci53cml0ZTE2Yml0KHNlbGYuc3RyaW5nKQorCQllbHNlOgorCQkJd3JpdGVyLndyaXRlOGJpdChzZWxmLnN0cmluZykKKwkJd3JpdGVyLm5ld2xpbmUoKQorCQl3cml0ZXIuZW5kdGFnKCJuYW1lcmVjb3JkIikKKwkJd3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIHR0Rm9udCk6CisJCXNlbGYubmFtZUlEID0gc2FmZUV2YWwoYXR0cnNbIm5hbWVJRCJdKQorCQlzZWxmLnBsYXRmb3JtSUQgPSBzYWZlRXZhbChhdHRyc1sicGxhdGZvcm1JRCJdKQorCQlzZWxmLnBsYXRFbmNJRCA9IHNhZmVFdmFsKGF0dHJzWyJwbGF0RW5jSUQiXSkKKwkJc2VsZi5sYW5nSUQgPSAgc2FmZUV2YWwoYXR0cnNbImxhbmdJRCJdKQorCQlpZiBzZWxmLnBsYXRmb3JtSUQgPT0gMCBvciAoc2VsZi5wbGF0Zm9ybUlEID09IDMgYW5kIHNlbGYucGxhdEVuY0lEID09IDEpOgorCQkJZnJvbSBmb250VG9vbHMudHRMaWIueG1sSW1wb3J0IGltcG9ydCBVbmljb2RlU3RyaW5nCisJCQlzdHIgPSBVbmljb2RlU3RyaW5nKCIiKQorCQkJZm9yIGVsZW1lbnQgaW4gY29udGVudDoKKwkJCQlzdHIgPSBzdHIgKyBlbGVtZW50CisJCQlzZWxmLnN0cmluZyA9IHN0ci5zdHJpcHBlZCgpLnRvc3RyaW5nKCkKKwkJZWxzZToKKwkJCXNlbGYuc3RyaW5nID0gc3RyaW5nLnN0cmlwKHN0cmluZy5qb2luKGNvbnRlbnQsICIiKSkKKwkKKwlkZWYgX19jbXBfXyhzZWxmLCBvdGhlcik6CisJCSIiIkNvbXBhcmUgbWV0aG9kLCBzbyBhIGxpc3Qgb2YgTmFtZVJlY29yZHMgY2FuIGJlIHNvcnRlZAorCQlhY2NvcmRpbmcgdG8gdGhlIHNwZWMgYnkganVzdCBzb3J0aW5nIGl0Li4uIiIiCisJCXNlbGZ0dXBsZSA9IChzZWxmLnBsYXRmb3JtSUQsCisJCQkJc2VsZi5wbGF0RW5jSUQsCisJCQkJc2VsZi5sYW5nSUQsCisJCQkJc2VsZi5uYW1lSUQsCisJCQkJc2VsZi5zdHJpbmcpCisJCW90aGVydHVwbGUgPSAob3RoZXIucGxhdGZvcm1JRCwKKwkJCQlvdGhlci5wbGF0RW5jSUQsCisJCQkJb3RoZXIubGFuZ0lELAorCQkJCW90aGVyLm5hbWVJRCwKKwkJCQlvdGhlci5zdHJpbmcpCisJCXJldHVybiBjbXAoc2VsZnR1cGxlLCBvdGhlcnR1cGxlKQorCQorCWRlZiBfX3JlcHJfXyhzZWxmKToKKwkJcmV0dXJuICI8TmFtZVJlY29yZCBOYW1lSUQ9JWQ7IFBsYXRmb3JtSUQ9JWQ7IExhbmd1YWdlSUQ9JWQ+IiAlICgKKwkJCQlzZWxmLm5hbWVJRCwgc2VsZi5wbGF0Zm9ybUlELCBzZWxmLmxhbmdJRCkKKwkKKwlkZWYgZml4bG9uZ3Moc2VsZik6CisJCSIiImNvcnJlY3QgZWZmZWN0cyBmcm9tIGJ1ZyBpbiBQeXRob24gMS41LjEsIHdoZXJlICJIIiAKKwkJcmV0dXJucyBhIFB5dGhvbiBMb25nIGludC4gCisJCVRoaXMgaGFzIGJlZW4gZml4ZWQgaW4gUHl0aG9uIDEuNS4yLgorCQkiIiIKKwkJZm9yIGF0dHIgaW4gZGlyKHNlbGYpOgorCQkJdmFsID0gZ2V0YXR0cihzZWxmLCBhdHRyKQorCQkJaWYgdHlwZSh2YWwpID09IHR5cGVzLkxvbmdUeXBlOgorCQkJCXNldGF0dHIoc2VsZiwgYXR0ciwgaW50KHZhbCkpCisKZGlmZiAtLWdpdCBhL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL19wX29fc190LnB5IGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvX3Bfb19zX3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjczZGU3OQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL19wX29fc190LnB5CkBAIC0wLDAgKzEsMjE0IEBACitmcm9tIGZvbnRUb29scy50dExpYi5zdGFuZGFyZEdseXBoT3JkZXIgaW1wb3J0IHN0YW5kYXJkR2x5cGhPcmRlcgoraW1wb3J0IERlZmF1bHRUYWJsZQoraW1wb3J0IHN0cnVjdCwgc3N0cnVjdAoraW1wb3J0IGFycmF5Citmcm9tIGZvbnRUb29scyBpbXBvcnQgdHRMaWIKK2Zyb20gZm9udFRvb2xzLm1pc2MudGV4dFRvb2xzIGltcG9ydCBzYWZlRXZhbCwgcmVhZEhleAorCisKK3Bvc3RGb3JtYXQgPSAiIiIKKwk+CisJZm9ybWF0VHlwZToJCQkxNi4xNkYKKwlpdGFsaWNBbmdsZToJCTE2LjE2RgkJIyBpdGFsaWMgYW5nbGUgaW4gZGVncmVlcwkJCQorCXVuZGVybGluZVBvc2l0aW9uOgloCisJdW5kZXJsaW5lVGhpY2tuZXNzOgloCisJaXNGaXhlZFBpdGNoOgkJbAorCW1pbk1lbVR5cGU0MjoJCWwJCQkjIG1pbmltdW0gbWVtb3J5IGlmIFRydWVUeXBlIGZvbnQgaXMgZG93bmxvYWRlZAorCW1heE1lbVR5cGU0MjoJCWwJCQkjIG1heGltdW0gbWVtb3J5IGlmIFRydWVUeXBlIGZvbnQgaXMgZG93bmxvYWRlZAorCW1pbk1lbVR5cGUxOgkJbAkJCSMgbWluaW11bSBtZW1vcnkgaWYgVHlwZTEgZm9udCBpcyBkb3dubG9hZGVkCisJbWF4TWVtVHlwZTE6CQlsCQkJIyBtYXhpbXVtIG1lbW9yeSBpZiBUeXBlMSBmb250IGlzIGRvd25sb2FkZWQKKyIiIgorCitwb3N0Rm9ybWF0U2l6ZSA9IHNzdHJ1Y3QuY2FsY3NpemUocG9zdEZvcm1hdCkKKworCitjbGFzcyB0YWJsZV9fcF9vX3NfdChEZWZhdWx0VGFibGUuRGVmYXVsdFRhYmxlKToKKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIGRhdGEsIHR0Rm9udCk6CisJCXNzdHJ1Y3QudW5wYWNrKHBvc3RGb3JtYXQsIGRhdGFbOnBvc3RGb3JtYXRTaXplXSwgc2VsZikKKwkJZGF0YSA9IGRhdGFbcG9zdEZvcm1hdFNpemU6XQorCQlpZiBzZWxmLmZvcm1hdFR5cGUgPT0gMS4wOgorCQkJc2VsZi5kZWNvZGVfZm9ybWF0XzFfMChkYXRhLCB0dEZvbnQpCisJCWVsaWYgc2VsZi5mb3JtYXRUeXBlID09IDIuMDoKKwkJCXNlbGYuZGVjb2RlX2Zvcm1hdF8yXzAoZGF0YSwgdHRGb250KQorCQllbGlmIHNlbGYuZm9ybWF0VHlwZSA9PSAzLjA6CisJCQlzZWxmLmRlY29kZV9mb3JtYXRfM18wKGRhdGEsIHR0Rm9udCkKKwkJZWxzZToKKwkJCSMgc3VwcG9ydGVkIGZvcm1hdAorCQkJcmFpc2UgdHRMaWIuVFRMaWJFcnJvciwgIidwb3N0JyB0YWJsZSBmb3JtYXQgJWYgbm90IHN1cHBvcnRlZCIgJSBzZWxmLmZvcm1hdFR5cGUKKwkKKwlkZWYgY29tcGlsZShzZWxmLCB0dEZvbnQpOgorCQlkYXRhID0gc3N0cnVjdC5wYWNrKHBvc3RGb3JtYXQsIHNlbGYpCisJCWlmIHNlbGYuZm9ybWF0VHlwZSA9PSAxLjA6CisJCQlwYXNzICMgd2UncmUgZG9uZQorCQllbGlmIHNlbGYuZm9ybWF0VHlwZSA9PSAyLjA6CisJCQlkYXRhID0gZGF0YSArIHNlbGYuZW5jb2RlX2Zvcm1hdF8yXzAodHRGb250KQorCQllbGlmIHNlbGYuZm9ybWF0VHlwZSA9PSAzLjA6CisJCQlwYXNzICMgd2UncmUgZG9uZQorCQllbHNlOgorCQkJIyBzdXBwb3J0ZWQgZm9ybWF0CisJCQlyYWlzZSB0dExpYi5UVExpYkVycm9yLCAiJ3Bvc3QnIHRhYmxlIGZvcm1hdCAlZiBub3Qgc3VwcG9ydGVkIiAlIHNlbGYuZm9ybWF0VHlwZQorCQlyZXR1cm4gZGF0YQorCQorCWRlZiBnZXRHbHlwaE9yZGVyKHNlbGYpOgorCQkiIiJUaGlzIGZ1bmN0aW9uIHdpbGwgZ2V0IGNhbGxlZCBieSBhIHR0TGliLlRURm9udCBpbnN0YW5jZS4KKwkJRG8gbm90IGNhbGwgdGhpcyBmdW5jdGlvbiB5b3Vyc2VsZiwgdXNlIFRURm9udCgpLmdldEdseXBoT3JkZXIoKQorCQlvciBpdHMgcmVsYXRpdmVzIGluc3RlYWQhCisJCSIiIgorCQlpZiBub3QgaGFzYXR0cihzZWxmLCAiZ2x5cGhPcmRlciIpOgorCQkJcmFpc2UgdHRMaWIuVFRMaWJFcnJvciwgImlsbGVnYWwgdXNlIG9mIGdldEdseXBoT3JkZXIoKSIKKwkJZ2x5cGhPcmRlciA9IHNlbGYuZ2x5cGhPcmRlcgorCQlkZWwgc2VsZi5nbHlwaE9yZGVyCisJCXJldHVybiBnbHlwaE9yZGVyCisJCisJZGVmIGRlY29kZV9mb3JtYXRfMV8wKHNlbGYsIGRhdGEsIHR0Rm9udCk6CisJCXNlbGYuZ2x5cGhPcmRlciA9IHN0YW5kYXJkR2x5cGhPcmRlcls6XQorCQorCWRlZiBkZWNvZGVfZm9ybWF0XzJfMChzZWxmLCBkYXRhLCB0dEZvbnQpOgorCQludW1HbHlwaHMsID0gc3RydWN0LnVucGFjaygiPkgiLCBkYXRhWzoyXSkKKwkJbnVtR2x5cGhzID0gaW50KG51bUdseXBocykKKwkJZGF0YSA9IGRhdGFbMjpdCisJCWluZGljZXMgPSBhcnJheS5hcnJheSgiSCIpCisJCWluZGljZXMuZnJvbXN0cmluZyhkYXRhWzoyKm51bUdseXBoc10pCisJCWlmIHR0TGliLmVuZGlhbiA8PiAiYmlnIjoKKwkJCWluZGljZXMuYnl0ZXN3YXAoKQorCQlkYXRhID0gZGF0YVsyKm51bUdseXBoczpdCisJCXNlbGYuZXh0cmFOYW1lcyA9IGV4dHJhTmFtZXMgPSB1bnBhY2tQU3RyaW5ncyhkYXRhKQorCQlzZWxmLmdseXBoT3JkZXIgPSBnbHlwaE9yZGVyID0gW05vbmVdICogaW50KHR0Rm9udFsnbWF4cCddLm51bUdseXBocykKKwkJZm9yIGdseXBoSUQgaW4gcmFuZ2UobnVtR2x5cGhzKToKKwkJCWluZGV4ID0gaW5kaWNlc1tnbHlwaElEXQorCQkJaWYgaW5kZXggPiAyNTc6CisJCQkJbmFtZSA9IGV4dHJhTmFtZXNbaW5kZXgtMjU4XQorCQkJZWxzZToKKwkJCQkjIGZldGNoIG5hbWVzIGZyb20gc3RhbmRhcmQgbGlzdAorCQkJCW5hbWUgPSBzdGFuZGFyZEdseXBoT3JkZXJbaW5kZXhdCisJCQlnbHlwaE9yZGVyW2dseXBoSURdID0gbmFtZQorCQkjQUw5OTA1MTE6IGNvZGUgYWRkZWQgdG8gaGFuZGxlIHRoZSBjYXNlIG9mIG5ldyBnbHlwaHMgd2l0aG91dAorCQkjICAgICAgICAgIGVudHJpZXMgaW50byB0aGUgJ3Bvc3QnIHRhYmxlCisJCWlmIG51bUdseXBocyA8IHR0Rm9udFsnbWF4cCddLm51bUdseXBoczoKKwkJCWZvciBpIGluIHJhbmdlKG51bUdseXBocywgdHRGb250WydtYXhwJ10ubnVtR2x5cGhzKToKKwkJCQlnbHlwaE9yZGVyW2ldID0gImdseXBoIyUuNWQiICUgaQorCQkJCXNlbGYuZXh0cmFOYW1lcy5hcHBlbmQoZ2x5cGhPcmRlcltpXSkKKwkJc2VsZi5idWlsZF9wc05hbWVNYXBwaW5nKHR0Rm9udCkKKwkKKwlkZWYgYnVpbGRfcHNOYW1lTWFwcGluZyhzZWxmLCB0dEZvbnQpOgorCQltYXBwaW5nID0ge30KKwkJYWxsTmFtZXMgPSB7fQorCQlmb3IgaSBpbiByYW5nZSh0dEZvbnRbJ21heHAnXS5udW1HbHlwaHMpOgorCQkJZ2x5cGhOYW1lID0gcHNOYW1lID0gc2VsZi5nbHlwaE9yZGVyW2ldCisJCQlpZiBhbGxOYW1lcy5oYXNfa2V5KGdseXBoTmFtZSk6CisJCQkJIyBtYWtlIHVwIGEgbmV3IGdseXBoTmFtZSB0aGF0J3MgdW5pcXVlCisJCQkJbiA9IDEKKwkJCQl3aGlsZSBhbGxOYW1lcy5oYXNfa2V5KGdseXBoTmFtZSArICIjIiArIGBuYCk6CisJCQkJCW4gPSBuICsgMQorCQkJCWdseXBoTmFtZSA9IGdseXBoTmFtZSArICIjIiArIGBuYAorCQkJCXNlbGYuZ2x5cGhPcmRlcltpXSA9IGdseXBoTmFtZQorCQkJCW1hcHBpbmdbZ2x5cGhOYW1lXSA9IHBzTmFtZQorCQkJYWxsTmFtZXNbZ2x5cGhOYW1lXSA9IHBzTmFtZQorCQlzZWxmLm1hcHBpbmcgPSBtYXBwaW5nCisJCisJZGVmIGRlY29kZV9mb3JtYXRfM18wKHNlbGYsIGRhdGEsIHR0Rm9udCk6CisJCSMgU2V0dGluZyBzZWxmLmdseXBoT3JkZXIgdG8gTm9uZSB3aWxsIGNhdXNlIHRoZSBUVEZvbnQgb2JqZWN0CisJCSMgdHJ5IGFuZCBjb25zdHJ1Y3QgZ2x5cGggbmFtZXMgZnJvbSBhIFVuaWNvZGUgY21hcCB0YWJsZS4KKwkJc2VsZi5nbHlwaE9yZGVyID0gTm9uZQorCQorCWRlZiBlbmNvZGVfZm9ybWF0XzJfMChzZWxmLCB0dEZvbnQpOgorCQludW1HbHlwaHMgPSB0dEZvbnRbJ21heHAnXS5udW1HbHlwaHMKKwkJZ2x5cGhPcmRlciA9IHR0Rm9udC5nZXRHbHlwaE9yZGVyKCkKKwkJYXNzZXJ0IGxlbihnbHlwaE9yZGVyKSA9PSBudW1HbHlwaHMKKwkJaW5kaWNlcyA9IGFycmF5LmFycmF5KCJIIikKKwkJZm9yIGdseXBoSUQgaW4gcmFuZ2UobnVtR2x5cGhzKToKKwkJCWdseXBoTmFtZSA9IGdseXBoT3JkZXJbZ2x5cGhJRF0KKwkJCWlmIHNlbGYubWFwcGluZy5oYXNfa2V5KGdseXBoTmFtZSk6CisJCQkJcHNOYW1lID0gc2VsZi5tYXBwaW5nW2dseXBoTmFtZV0KKwkJCWVsc2U6CisJCQkJcHNOYW1lID0gZ2x5cGhOYW1lCisJCQlpZiBwc05hbWUgaW4gc2VsZi5leHRyYU5hbWVzOgorCQkJCWluZGV4ID0gMjU4ICsgc2VsZi5leHRyYU5hbWVzLmluZGV4KHBzTmFtZSkKKwkJCWVsaWYgcHNOYW1lIGluIHN0YW5kYXJkR2x5cGhPcmRlcjoKKwkJCQlpbmRleCA9IHN0YW5kYXJkR2x5cGhPcmRlci5pbmRleChwc05hbWUpCisJCQllbHNlOgorCQkJCWluZGV4ID0gMjU4ICsgbGVuKHNlbGYuZXh0cmFOYW1lcykKKwkJCQlleHRyYU5hbWVzLmFwcGVuZChwc05hbWUpCisJCQlpbmRpY2VzLmFwcGVuZChpbmRleCkKKwkJaWYgdHRMaWIuZW5kaWFuIDw+ICJiaWciOgorCQkJaW5kaWNlcy5ieXRlc3dhcCgpCisJCXJldHVybiBzdHJ1Y3QucGFjaygiPkgiLCBudW1HbHlwaHMpICsgaW5kaWNlcy50b3N0cmluZygpICsgcGFja1BTdHJpbmdzKHNlbGYuZXh0cmFOYW1lcykKKwkKKwlkZWYgdG9YTUwoc2VsZiwgd3JpdGVyLCB0dEZvbnQpOgorCQlmb3JtYXRzdHJpbmcsIG5hbWVzLCBmaXhlcyA9IHNzdHJ1Y3QuZ2V0Zm9ybWF0KHBvc3RGb3JtYXQpCisJCWZvciBuYW1lIGluIG5hbWVzOgorCQkJdmFsdWUgPSBnZXRhdHRyKHNlbGYsIG5hbWUpCisJCQl3cml0ZXIuc2ltcGxldGFnKG5hbWUsIHZhbHVlPXZhbHVlKQorCQkJd3JpdGVyLm5ld2xpbmUoKQorCQlpZiBoYXNhdHRyKHNlbGYsICJtYXBwaW5nIik6CisJCQl3cml0ZXIuYmVnaW50YWcoInBzTmFtZXMiKQorCQkJd3JpdGVyLm5ld2xpbmUoKQorCQkJd3JpdGVyLmNvbW1lbnQoIlRoaXMgZmlsZSB1c2VzIHVuaXF1ZSBnbHlwaCBuYW1lcyBiYXNlZCBvbiB0aGUgaW5mb3JtYXRpb25cbiIKKwkJCQkJCSJmb3VuZCBpbiB0aGUgJ3Bvc3QnIHRhYmxlLiBTaW5jZSB0aGVzZSBuYW1lcyBtaWdodCBub3QgYmUgdW5pcXVlLFxuIgorCQkJCQkJIndlIGhhdmUgdG8gaW52ZW50IGFydGlmaWNpYWwgbmFtZXMgaW4gY2FzZSBvZiBjbGFzaGVzLiBJbiBvcmRlciB0b1xuIgorCQkJCQkJImJlIGFibGUgdG8gcmV0YWluIHRoZSBvcmlnaW5hbCBpbmZvcm1hdGlvbiwgd2UgbmVlZCBhIG5hbWUgdG9cbiIKKwkJCQkJCSJwcyBuYW1lIG1hcHBpbmcgZm9yIHRob3NlIGNhc2VzIHdoZXJlIHRoZXkgZGlmZmVyLiBUaGF0J3Mgd2hhdFxuIgorCQkJCQkJInlvdSBzZWUgYmVsb3cuXG4iKQorCQkJd3JpdGVyLm5ld2xpbmUoKQorCQkJaXRlbXMgPSBzZWxmLm1hcHBpbmcuaXRlbXMoKQorCQkJaXRlbXMuc29ydCgpCisJCQlmb3IgbmFtZSwgcHNOYW1lIGluIGl0ZW1zOgorCQkJCXdyaXRlci5zaW1wbGV0YWcoInBzTmFtZSIsIG5hbWU9bmFtZSwgcHNOYW1lPXBzTmFtZSkKKwkJCQl3cml0ZXIubmV3bGluZSgpCisJCQl3cml0ZXIuZW5kdGFnKCJwc05hbWVzIikKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkJaWYgaGFzYXR0cihzZWxmLCAiZXh0cmFOYW1lcyIpOgorCQkJd3JpdGVyLmJlZ2ludGFnKCJleHRyYU5hbWVzIikKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkJCXdyaXRlci5jb21tZW50KCJmb2xsb3dpbmcgYXJlIHRoZSBuYW1lIHRoYXQgYXJlIG5vdCB0YWtlbiBmcm9tIHRoZSBzdGFuZGFyZCBNYWMgZ2x5cGggb3JkZXIiKQorCQkJd3JpdGVyLm5ld2xpbmUoKQorCQkJZm9yIG5hbWUgaW4gc2VsZi5leHRyYU5hbWVzOgorCQkJCXdyaXRlci5zaW1wbGV0YWcoInBzTmFtZSIsIG5hbWU9bmFtZSkKKwkJCQl3cml0ZXIubmV3bGluZSgpCisJCQl3cml0ZXIuZW5kdGFnKCJleHRyYU5hbWVzIikKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkJaWYgaGFzYXR0cihzZWxmLCAiZGF0YSIpOgorCQkJd3JpdGVyLmJlZ2ludGFnKCJoZXhkYXRhIikKKwkJCXdyaXRlci5uZXdsaW5lKCkKKwkJCXdyaXRlci5kdW1waGV4KHNlbGYuZGF0YSkKKwkJCXdyaXRlci5lbmR0YWcoImhleGRhdGEiKQorCQkJd3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIHR0Rm9udCk6CisJCWlmIG5hbWUgbm90IGluICgicHNOYW1lcyIsICJleHRyYU5hbWVzIiwgImhleGRhdGEiKToKKwkJCXNldGF0dHIoc2VsZiwgbmFtZSwgc2FmZUV2YWwoYXR0cnNbInZhbHVlIl0pKQorCQllbGlmIG5hbWUgPT0gInBzTmFtZXMiOgorCQkJc2VsZi5tYXBwaW5nID0ge30KKwkJCWZvciBlbGVtZW50IGluIGNvbnRlbnQ6CisJCQkJaWYgdHlwZShlbGVtZW50KSA8PiB0eXBlKCgpKToKKwkJCQkJY29udGludWUKKwkJCQluYW1lLCBhdHRycywgY29udGVudCA9IGVsZW1lbnQKKwkJCQlpZiBuYW1lID09ICJwc05hbWUiOgorCQkJCQlzZWxmLm1hcHBpbmdbYXR0cnNbIm5hbWUiXV0gPSBhdHRyc1sicHNOYW1lIl0KKwkJZWxpZiBuYW1lID09ICJleHRyYU5hbWVzIjoKKwkJCXNlbGYuZXh0cmFOYW1lcyA9IFtdCisJCQlmb3IgZWxlbWVudCBpbiBjb250ZW50OgorCQkJCWlmIHR5cGUoZWxlbWVudCkgPD4gdHlwZSgoKSk6CisJCQkJCWNvbnRpbnVlCisJCQkJbmFtZSwgYXR0cnMsIGNvbnRlbnQgPSBlbGVtZW50CisJCQkJaWYgbmFtZSA9PSAicHNOYW1lIjoKKwkJCQkJc2VsZi5leHRyYU5hbWVzLmFwcGVuZChhdHRyc1sibmFtZSJdKQorCQllbHNlOgorCQkJc2VsZi5kYXRhID0gcmVhZEhleChjb250ZW50KQorCisKK2RlZiB1bnBhY2tQU3RyaW5ncyhkYXRhKToKKwlzdHJpbmdzID0gW10KKwl3aGlsZSBkYXRhOgorCQlsZW5ndGggPSBvcmQoZGF0YVswXSkKKwkJc3RyaW5ncy5hcHBlbmQoZGF0YVsxOjErbGVuZ3RoXSkKKwkJZGF0YSA9IGRhdGFbMStsZW5ndGg6XQorCXJldHVybiBzdHJpbmdzCisKK2RlZiBwYWNrUFN0cmluZ3Moc3RyaW5ncyk6CisJZGF0YSA9ICIiCisJZm9yIHMgaW4gc3RyaW5nczoKKwkJZGF0YSA9IGRhdGEgKyBjaHIobGVuKHMpKSArIHMKKwlyZXR1cm4gZGF0YQorCmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9fcF9yX2VfcC5weSBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL19wX3JfZV9wLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwNWM4ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9fcF9yX2VfcC5weQpAQCAtMCwwICsxLDE0IEBACitpbXBvcnQgRGVmYXVsdFRhYmxlCitpbXBvcnQgYXJyYXkKKworY2xhc3MgdGFibGVfX3Bfcl9lX3AoRGVmYXVsdFRhYmxlLkRlZmF1bHRUYWJsZSk6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCBkYXRhLCB0dEZvbnQpOgorCQlzZWxmLnByZXAgPSBkYXRhCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgdHRGb250KToKKwkJcmV0dXJuIHNlbGYucHJlcAorCQorCWRlZiBfX2xlbl9fKHNlbGYpOgorCQlyZXR1cm4gbGVuKHNlbGYucHJlcCkKKwkKZGlmZiAtLWdpdCBhL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL192X2hfZV9hLnB5IGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvX3ZfaF9lX2EucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNmZDYxNAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL192X2hfZV9hLnB5CkBAIC0wLDAgKzEsNzggQEAKK2ltcG9ydCBEZWZhdWx0VGFibGUKK2ltcG9ydCBzc3RydWN0Citmcm9tIGZvbnRUb29scy5taXNjLnRleHRUb29scyBpbXBvcnQgc2FmZUV2YWwKKwordmhlYUZvcm1hdCA9ICIiIgorCQk+CSMgYmlnIGVuZGlhbgorCQl0YWJsZVZlcnNpb246CQkJMTYuMTZGCisJCWFzY2VudDoJCQkJCWgKKwkJZGVzY2VudDoJCQkJaAorCQlsaW5lR2FwOgkJCQloCisJCWFkdmFuY2VIZWlnaHRNYXg6CQlICisJCW1pblRvcFNpZGVCZWFyaW5nOgkJaAorCQltaW5Cb3R0b21TaWRlQmVhcmluZzoJaAorCQl5TWF4RXh0ZW50OgkJCQloCisJCWNhcmV0U2xvcGVSaXNlOgkJCWgKKwkJY2FyZXRTbG9wZVJ1bjoJCQloCisJCXJlc2VydmVkMDoJCQkJaAorCQlyZXNlcnZlZDE6CQkJCWgKKwkJcmVzZXJ2ZWQyOgkJCQloCisJCXJlc2VydmVkMzoJCQkJaAorCQlyZXNlcnZlZDQ6CQkJCWgKKwkJbWV0cmljRGF0YUZvcm1hdDoJCWgKKwkJbnVtYmVyT2ZWTWV0cmljczoJCUgKKyIiIgorCitjbGFzcyB0YWJsZV9fdl9oX2VfYShEZWZhdWx0VGFibGUuRGVmYXVsdFRhYmxlKToKKwkKKwlkZXBlbmRlbmNpZXMgPSBbJ3ZtdHgnLCAnZ2x5ZiddCisJCisJZGVmIGRlY29tcGlsZShzZWxmLCBkYXRhLCB0dEZvbnQpOgorCQlzc3RydWN0LnVucGFjayh2aGVhRm9ybWF0LCBkYXRhLCBzZWxmKQorCQorCWRlZiBjb21waWxlKHNlbGYsIHR0Rm9udCk6CisJCXNlbGYucmVjYWxjKHR0Rm9udCkKKwkJcmV0dXJuIHNzdHJ1Y3QucGFjayh2aGVhRm9ybWF0LCBzZWxmKQorCQorCWRlZiByZWNhbGMoc2VsZiwgdHRGb250KToKKwkJdnRteFRhYmxlID0gdHRGb250Wyd2bXR4J10KKwkJaWYgdHRGb250Lmhhc19rZXkoJ2dseWYnKToKKwkJCWlmIG5vdCB0dEZvbnQuaXNMb2FkZWQoJ2dseWYnKToKKwkJCQlyZXR1cm4KKwkJCWdseWZUYWJsZSA9IHR0Rm9udFsnZ2x5ZiddCisJCQlhZHZhbmNlSGVpZ2h0TWF4ID0gLTEwMDAwMCAgICAjIGFyYml0cmFyeSBiaWcgbmVnYXRpdmUgbnVtYmVyCisJCQltaW5Ub3BTaWRlQmVhcmluZyA9IDEwMDAwMCAgICAjIGFyYml0cmFyeSBiaWcgbnVtYmVyCisJCQltaW5Cb3R0b21TaWRlQmVhcmluZyA9IDEwMDAwMCAjIGFyYml0cmFyeSBiaWcgbnVtYmVyCisJCQl5TWF4RXh0ZW50ID0gLTEwMDAwMCAgICAgICAgICAjIGFyYml0cmFyeSBiaWcgbmVnYXRpdmUgbnVtYmVyCisJCQkKKwkJCWZvciBuYW1lIGluIHR0Rm9udC5nZXRHbHlwaE9yZGVyKCk6CisJCQkJaGVpZ2h0LCB0c2IgPSB2dG14VGFibGVbbmFtZV0KKwkJCQlnID0gZ2x5ZlRhYmxlW25hbWVdCisJCQkJaWYgZy5udW1iZXJPZkNvbnRvdXJzIDw9IDA6CisJCQkJCWNvbnRpbnVlCisJCQkJYWR2YW5jZUhlaWdodE1heCA9IG1heChhZHZhbmNlSGVpZ2h0TWF4LCBoZWlnaHQpCisJCQkJbWluVG9wU2lkZUJlYXJpbmcgPSBtaW4obWluVG9wU2lkZUJlYXJpbmcsIHRzYikKKwkJCQlyc2IgPSBoZWlnaHQgLSB0c2IgLSAoZy55TWF4IC0gZy55TWluKQorCQkJCW1pbkJvdHRvbVNpZGVCZWFyaW5nID0gbWluKG1pbkJvdHRvbVNpZGVCZWFyaW5nLCByc2IpCisJCQkJZXh0ZW50ID0gdHNiICsgKGcueU1heCAtIGcueU1pbikKKwkJCQl5TWF4RXh0ZW50ID0gbWF4KHlNYXhFeHRlbnQsIGV4dGVudCkKKwkJCXNlbGYuYWR2YW5jZUhlaWdodE1heCA9IGFkdmFuY2VIZWlnaHRNYXgKKwkJCXNlbGYubWluVG9wU2lkZUJlYXJpbmcgPSBtaW5Ub3BTaWRlQmVhcmluZworCQkJc2VsZi5taW5Cb3R0b21TaWRlQmVhcmluZyA9IG1pbkJvdHRvbVNpZGVCZWFyaW5nCisJCQlzZWxmLnlNYXhFeHRlbnQgPSB5TWF4RXh0ZW50CisJCWVsc2U6CisJCQkjIFhYWCBDRkYgcmVjYWxjLi4uCisJCQlwYXNzCisJCisJZGVmIHRvWE1MKHNlbGYsIHdyaXRlciwgdHRGb250KToKKwkJZm9ybWF0c3RyaW5nLCBuYW1lcywgZml4ZXMgPSBzc3RydWN0LmdldGZvcm1hdCh2aGVhRm9ybWF0KQorCQlmb3IgbmFtZSBpbiBuYW1lczoKKwkJCXZhbHVlID0gZ2V0YXR0cihzZWxmLCBuYW1lKQorCQkJaWYgdHlwZSh2YWx1ZSkgPT0gdHlwZSgwTCk6CisJCQkJdmFsdWUgPSBpbnQodmFsdWUpCisJCQl3cml0ZXIuc2ltcGxldGFnKG5hbWUsIHZhbHVlPXZhbHVlKQorCQkJd3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIHR0Rm9udCk6CisJCXNldGF0dHIoc2VsZiwgbmFtZSwgc2FmZUV2YWwoYXR0cnNbInZhbHVlIl0pKQorCmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9fdl9tX3RfeC5weSBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL192X21fdF94LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhYmVmZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy9fdl9tX3RfeC5weQpAQCAtMCwwICsxLDE0IEBACitpbXBvcnQgRGVmYXVsdFRhYmxlCitpbXBvcnQgTnVtZXJpYworZnJvbSBmb250VG9vbHMgaW1wb3J0IHR0TGliCitmcm9tIGZvbnRUb29scy5taXNjLnRleHRUb29scyBpbXBvcnQgc2FmZUV2YWwKKworc3VwZXJjbGFzcyA9IHR0TGliLmdldFRhYmxlQ2xhc3MoImhtdHgiKQorCitjbGFzcyB0YWJsZV9fdl9tX3RfeChzdXBlcmNsYXNzKToKKwkKKwloZWFkZXJUYWcgPSAndmhlYScKKwlhZHZhbmNlTmFtZSA9ICdoZWlnaHQnCisJc2lkZUJlYXJpbmdOYW1lID0gJ3RzYicKKwludW1iZXJPZk1ldHJpY3NOYW1lID0gJ251bWJlck9mVk1ldHJpY3MnCisKZGlmZiAtLWdpdCBhL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL290Q29tbW9uLnB5IGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvb3RDb21tb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMxMmM2MwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL290Q29tbW9uLnB5CkBAIC0wLDAgKzEsNjA1IEBACisiIiJ0dExpYi50YWJsZXMub3RDb21tb24ucHkgLS0gVmFyaW91cyBkYXRhIHN0cnVjdHVyZXMgdXNlZCBieSB2YXJpb3VzIE9wZW5UeXBlIHRhYmxlcy4KKyIiIgorCitpbXBvcnQgc3RydWN0LCBzc3RydWN0CitpbXBvcnQgRGVmYXVsdFRhYmxlCitmcm9tIGZvbnRUb29scyBpbXBvcnQgdHRMaWIKKworCitjbGFzcyBiYXNlX0dQT1NfR1NVQihEZWZhdWx0VGFibGUuRGVmYXVsdFRhYmxlKToKKwkKKwkiIiJCYXNlIGNsYXNzIGZvciBHUE9TIGFuZCBHU1VCIHRhYmxlczsgdGhleSBzaGFyZSB0aGUgc2FtZSBoaWdoLWxldmVsIHN0cnVjdHVyZS4iIiIKKwkKKwl2ZXJzaW9uID0gMHgwMDAxMDAwMAorCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgZGF0YSwgb3RGb250KToKKwkJcmVhZGVyID0gT1RUYWJsZVJlYWRlcihkYXRhKQorCQlzZWxmLnZlcnNpb24gPSByZWFkZXIucmVhZExvbmcoKQorCQlpZiBzZWxmLnZlcnNpb24gPD4gMHgwMDAxMDAwMDoKKwkJCXJhaXNlIHR0TGliLlRUTGliRXJyb3IsICJ1bmtub3duIHRhYmxlIHZlcnNpb246IDB4JTh4IiAlIHNlbGYudmVyc2lvbgorCQkKKwkJc2VsZi5zY3JpcHRMaXN0ID0gcmVhZGVyLnJlYWRUYWJsZShTY3JpcHRMaXN0LCBvdEZvbnQsIHNlbGYudGFibGVUYWcpCisJCXNlbGYuZmVhdHVyZUxpc3QgPSByZWFkZXIucmVhZFRhYmxlKEZlYXR1cmVMaXN0LCBvdEZvbnQsIHNlbGYudGFibGVUYWcpCisJCXNlbGYubG9va3VwTGlzdCA9IHJlYWRlci5yZWFkVGFibGUoTG9va3VwTGlzdCwgb3RGb250LCBzZWxmLnRhYmxlVGFnKQorCQorCWRlZiBjb21waWxlKHNlbGYsIG90Rm9udCk6CisJCVhYWFhYWAorCQorCWRlZiB0b1hNTChzZWxmLCB4bWxXcml0ZXIsIG90Rm9udCk6CisJCW5hbWVzID0gWygiU2NyaXB0TGlzdCIsICJzY3JpcHRMaXN0IiksIAorCQkJCSgiRmVhdHVyZUxpc3QiLCAiZmVhdHVyZUxpc3QiKSwgCisJCQkJKCJMb29rdXBMaXN0IiwgImxvb2t1cExpc3QiKV0KKwkJZm9yIG5hbWUsIGF0dHIgaW4gbmFtZXM6CisJCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCQl4bWxXcml0ZXIuYmVnaW50YWcobmFtZSkKKwkJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkJCXRhYmxlID0gZ2V0YXR0cihzZWxmLCBhdHRyKQorCQkJdGFibGUudG9YTUwoeG1sV3JpdGVyLCBvdEZvbnQpCisJCQl4bWxXcml0ZXIuZW5kdGFnKG5hbWUpCisJCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkKKwlkZWYgZnJvbVhNTChzZWxmLCAobmFtZSwgYXR0cnMsIGNvbnRlbnQpLCBvdEZvbnQpOgorCQl4eHgKKworCisjCisjIFNjcmlwdCBMaXN0IGFuZCBzdWJ0YWJsZXMKKyMKKworY2xhc3MgU2NyaXB0TGlzdDoKKwkKKwlkZWYgX19pbml0X18oc2VsZiwgcGFyZW50VGFnKToKKwkJc2VsZi5wYXJlbnRUYWcgPSBwYXJlbnRUYWcKKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIHJlYWRlciwgb3RGb250KToKKwkJc2NyaXB0Q291bnQgPSByZWFkZXIucmVhZFVTaG9ydCgpCisJCXNlbGYuc2NyaXB0cyA9IHJlYWRlci5yZWFkVGFnTGlzdChzY3JpcHRDb3VudCwgU2NyaXB0LCBvdEZvbnQpCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgb3RGb250KToKKwkJWFhYWFhYCisJCisJZGVmIHRvWE1MKHNlbGYsIHhtbFdyaXRlciwgb3RGb250KToKKwkJZm9yIHRhZywgc2NyaXB0IGluIHNlbGYuc2NyaXB0czoKKwkJCXhtbFdyaXRlci5iZWdpbnRhZygiU2NyaXB0IiwgdGFnPXRhZykKKwkJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkJCXNjcmlwdC50b1hNTCh4bWxXcml0ZXIsIG90Rm9udCkKKwkJCXhtbFdyaXRlci5lbmR0YWcoIlNjcmlwdCIpCisJCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCisJZGVmIGZyb21YTUwoc2VsZiwgKG5hbWUsIGF0dHJzLCBjb250ZW50KSwgb3RGb250KToKKwkJeHh4CisKKworY2xhc3MgU2NyaXB0OgorCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgcmVhZGVyLCBvdEZvbnQpOgorCQlzZWxmLmRlZmF1bHRMYW5nU3lzdGVtID0gTm9uZQorCQlzZWxmLmRlZmF1bHRMYW5nU3lzdGVtID0gcmVhZGVyLnJlYWRUYWJsZShMYW5ndWFnZVN5c3RlbSwgb3RGb250KQorCQlsYW5nU3lzQ291bnQgPSByZWFkZXIucmVhZFVTaG9ydCgpCisJCXNlbGYubGFuZ3VhZ2VTeXN0ZW1zID0gcmVhZGVyLnJlYWRUYWdMaXN0KGxhbmdTeXNDb3VudCwgTGFuZ3VhZ2VTeXN0ZW0sIG90Rm9udCkKKwkKKwlkZWYgY29tcGlsZShzZWxmLCBvdEZvbnQpOgorCQlYWFhYWAorCQorCWRlZiB0b1hNTChzZWxmLCB4bWxXcml0ZXIsIG90Rm9udCk6CisJCXhtbFdyaXRlci5iZWdpbnRhZygiRGVmYXVsdExhbmd1YWdlU3lzdGVtIikKKwkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQlzZWxmLmRlZmF1bHRMYW5nU3lzdGVtLnRvWE1MKHhtbFdyaXRlciwgb3RGb250KQorCQl4bWxXcml0ZXIuZW5kdGFnKCJEZWZhdWx0TGFuZ3VhZ2VTeXN0ZW0iKQorCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCWZvciB0YWcsIGxhbmdTeXMgaW4gc2VsZi5sYW5ndWFnZVN5c3RlbXM6CisJCQl4bWxXcml0ZXIuYmVnaW50YWcoIkxhbmd1YWdlU3lzdGVtIiwgdGFnPXRhZykKKwkJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkJCWxhbmdTeXMudG9YTUwoeG1sV3JpdGVyLCBvdEZvbnQpCisJCQl4bWxXcml0ZXIuZW5kdGFnKCJMYW5ndWFnZVN5c3RlbSIpCisJCQl4bWxXcml0ZXIubmV3bGluZSgpCisKKworY2xhc3MgTGFuZ3VhZ2VTeXN0ZW06CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCByZWFkZXIsIG90Rm9udCk6CisJCXNlbGYubG9va3VwT3JkZXIgPSByZWFkZXIucmVhZFVTaG9ydCgpCisJCXNlbGYucmVxRmVhdHVyZUluZGV4ID0gcmVhZGVyLnJlYWRVU2hvcnQoKQorCQlmZWF0dXJlQ291bnQgPSByZWFkZXIucmVhZFVTaG9ydCgpCisJCXNlbGYuZmVhdHVyZUluZGV4ID0gcmVhZGVyLnJlYWRVU2hvcnRBcnJheShmZWF0dXJlQ291bnQpCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgb3RGb250KToKKwkJeHh4CisJCisJZGVmIHRvWE1MKHNlbGYsIHhtbFdyaXRlciwgb3RGb250KToKKwkJeG1sV3JpdGVyLnNpbXBsZXRhZygiTG9va3VwT3JkZXIiLCB2YWx1ZT1zZWxmLmxvb2t1cE9yZGVyKQorCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCXhtbFdyaXRlci5zaW1wbGV0YWcoIlJlcUZlYXR1cmUiLCBpbmRleD1oZXgoc2VsZi5yZXFGZWF0dXJlSW5kZXgpKQorCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCWZvciBpbmRleCBpbiBzZWxmLmZlYXR1cmVJbmRleDoKKwkJCXhtbFdyaXRlci5zaW1wbGV0YWcoIkZlYXR1cmUiLCBpbmRleD1pbmRleCkKKwkJCXhtbFdyaXRlci5uZXdsaW5lKCkKKworCisjCisjIEZlYXR1cmUgTGlzdCBhbmQgc3VidGFibGVzCisjCisKK2NsYXNzIEZlYXR1cmVMaXN0OgorCQorCWRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnRUYWcpOgorCQlzZWxmLnBhcmVudFRhZyA9IHBhcmVudFRhZworCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgcmVhZGVyLCBvdEZvbnQpOgorCQlmZWF0dXJlQ291bnQgPSByZWFkZXIucmVhZFVTaG9ydCgpCisJCXNlbGYuZmVhdHVyZXMgPSByZWFkZXIucmVhZFRhZ0xpc3QoZmVhdHVyZUNvdW50LCBGZWF0dXJlLCBvdEZvbnQpCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgb3RGb250KToKKwkJWFhYWFgKKwkKKwlkZWYgdG9YTUwoc2VsZiwgeG1sV3JpdGVyLCBvdEZvbnQpOgorCQlmb3IgaW5kZXggaW4gcmFuZ2UobGVuKHNlbGYuZmVhdHVyZXMpKToKKwkJCXRhZywgZmVhdHVyZSA9IHNlbGYuZmVhdHVyZXNbaW5kZXhdCisJCQl4bWxXcml0ZXIuYmVnaW50YWcoIkZlYXR1cmUiLCBpbmRleD1pbmRleCwgdGFnPXRhZykKKwkJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkJCWZlYXR1cmUudG9YTUwoeG1sV3JpdGVyLCBvdEZvbnQpCisJCQl4bWxXcml0ZXIuZW5kdGFnKCJGZWF0dXJlIikKKwkJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkJCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIG90Rm9udCk6CisJCXh4eAorCisKK2NsYXNzIEZlYXR1cmU6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCByZWFkZXIsIG90Rm9udCk6CisJCXNlbGYuZmVhdHVyZVBhcmFtcyA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJbG9va3VwQ291bnQgPSByZWFkZXIucmVhZFVTaG9ydCgpCisJCXNlbGYubG9va3VwTGlzdEluZGV4ID0gcmVhZGVyLnJlYWRVU2hvcnRBcnJheShsb29rdXBDb3VudCkKKwkKKwlkZWYgY29tcGlsZShzZWxmLCBvdEZvbnQpOgorCQlYWFhYWAorCQorCWRlZiB0b1hNTChzZWxmLCB4bWxXcml0ZXIsIG90Rm9udCk6CisJCXhtbFdyaXRlci5zaW1wbGV0YWcoIkZlYXR1cmVQYXJhbXMiLCB2YWx1ZT1oZXgoc2VsZi5mZWF0dXJlUGFyYW1zKSkKKwkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQlmb3IgbG9va3VwSW5kZXggaW4gc2VsZi5sb29rdXBMaXN0SW5kZXg6CisJCQl4bWxXcml0ZXIuc2ltcGxldGFnKCJMb29rdXBUYWJsZSIsIGluZGV4PWxvb2t1cEluZGV4KQorCQkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIG90Rm9udCk6CisJCXh4eAorCisKKyMKKyMgTG9va3VwIExpc3QgYW5kIHN1YnRhYmxlcworIworCitjbGFzcyBMb29rdXBMaXN0OgorCQorCWRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnRUYWcpOgorCQlzZWxmLnBhcmVudFRhZyA9IHBhcmVudFRhZworCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgcmVhZGVyLCBvdEZvbnQpOgorCQlsb29rdXBDb3VudCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJc2VsZi5sb29rdXAgPSBsb29rdXAgPSBbXQorCQlmb3IgaSBpbiByYW5nZShsb29rdXBDb3VudCk6CisJCQlsb29rdXAuYXBwZW5kKHJlYWRlci5yZWFkVGFibGUoTG9va3VwVGFibGUsIG90Rm9udCwgc2VsZi5wYXJlbnRUYWcpKQorCQorCWRlZiBjb21waWxlKHNlbGYsIG90Rm9udCk6CisJCVhYWFhYCisJCisJZGVmIHRvWE1MKHNlbGYsIHhtbFdyaXRlciwgb3RGb250KToKKwkJZm9yIGkgaW4gcmFuZ2UobGVuKHNlbGYubG9va3VwKSk6CisJCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCQlsb29rdXBUYWJsZSA9IHNlbGYubG9va3VwW2ldCisJCQl4bWxXcml0ZXIuYmVnaW50YWcoIkxvb2t1cFRhYmxlIiwgaW5kZXg9aSkKKwkJCXhtbFdyaXRlci5uZXdsaW5lKCkKKwkJCWxvb2t1cFRhYmxlLnRvWE1MKHhtbFdyaXRlciwgb3RGb250KQorCQkJeG1sV3JpdGVyLmVuZHRhZygiTG9va3VwVGFibGUiKQorCQkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIG90Rm9udCk6CisJCXh4eAorCisKK2NsYXNzIExvb2t1cFRhYmxlOgorCQorCWRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnRUYWcpOgorCQlzZWxmLnBhcmVudFRhZyA9IHBhcmVudFRhZworCQorCWRlZiBkZWNvbXBpbGUoc2VsZiwgcmVhZGVyLCBvdEZvbnQpOgorCQlwYXJlbnRUYWJsZSA9IG90Rm9udFtzZWxmLnBhcmVudFRhZ10KKwkJc2VsZi5sb29rdXBUeXBlID0gcmVhZGVyLnJlYWRVU2hvcnQoKQorCQlzZWxmLmxvb2t1cEZsYWcgPSByZWFkZXIucmVhZFVTaG9ydCgpCisJCXN1YlRhYmxlQ291bnQgPSByZWFkZXIucmVhZFVTaG9ydCgpCisJCXNlbGYuc3ViVGFibGVzID0gc3ViVGFibGVzID0gW10KKwkJbG9va3VwVHlwZUNsYXNzID0gcGFyZW50VGFibGUuZ2V0TG9va3VwVHlwZUNsYXNzKHNlbGYubG9va3VwVHlwZSkKKwkJZm9yIGkgaW4gcmFuZ2Uoc3ViVGFibGVDb3VudCk6CisJCQlzdWJUYWJsZXMuYXBwZW5kKHJlYWRlci5yZWFkVGFibGUobG9va3VwVHlwZUNsYXNzLCBvdEZvbnQpKQorCQorCWRlZiBjb21waWxlKHNlbGYsIG90Rm9udCk6CisJCVhYWFhYWAorCQorCWRlZiBfX3JlcHJfXyhzZWxmKToKKwkJaWYgbm90IGhhc2F0dHIoc2VsZiwgImxvb2t1cFR5cGVOYW1lIik6CisJCQltID0gdHRMaWIuZ2V0VGFibGVNb2R1bGUoc2VsZi5wYXJlbnRUYWcpCisJCQlzZWxmLmxvb2t1cFR5cGVOYW1lID0gbS5sb29rdXBUeXBlQ2xhc3Nlc1tzZWxmLmxvb2t1cFR5cGVdLl9fbmFtZV9fCisJCXJldHVybiAiPCVzIExvb2t1cFRhYmxlIGF0ICV4PiIgJSAoc2VsZi5sb29rdXBUeXBlTmFtZSwgaWQoc2VsZikpCisJCisJZGVmIHRvWE1MKHNlbGYsIHhtbFdyaXRlciwgb3RGb250KToKKwkJeG1sV3JpdGVyLnNpbXBsZXRhZygiTG9va3VwRmxhZyIsIHZhbHVlPWhleChzZWxmLmxvb2t1cEZsYWcpKQorCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCWZvciBzdWJUYWJsZSBpbiBzZWxmLnN1YlRhYmxlczoKKwkJCW5hbWUgPSBzdWJUYWJsZS5fX2NsYXNzX18uX19uYW1lX18KKwkJCXhtbFdyaXRlci5iZWdpbnRhZyhuYW1lKQorCQkJeG1sV3JpdGVyLm5ld2xpbmUoKQorCQkJc3ViVGFibGUudG9YTUwoeG1sV3JpdGVyLCBvdEZvbnQpCisJCQl4bWxXcml0ZXIuZW5kdGFnKG5hbWUpCisJCQl4bWxXcml0ZXIubmV3bGluZSgpCisJCisJZGVmIGZyb21YTUwoc2VsZiwgKG5hbWUsIGF0dHJzLCBjb250ZW50KSwgb3RGb250KToKKwkJeHh4CisKKworIworIyBPdGhlciBjb21tb24gZm9ybWF0cworIworCitjbGFzcyBDb3ZlcmFnZVRhYmxlOgorCQorCWRlZiBnZXRHbHlwaElEcyhzZWxmKToKKwkJcmV0dXJuIHNlbGYuZ2x5cGhJRHMKKwkKKwlkZWYgZ2V0R2x5cGhOYW1lcyhzZWxmKToKKwkJcmV0dXJuIHNlbGYuZ2x5cGhOYW1lcworCQorCWRlZiBtYWtlR2x5cGhOYW1lcyhzZWxmLCBvdEZvbnQpOgorCQlzZWxmLmdseXBoTmFtZXMgPSBtYXAobGFtYmRhIGksIG89b3RGb250LmdldEdseXBoT3JkZXIoKTogb1tpXSwgc2VsZi5nbHlwaElEcykKKwkKKwlkZWYgZGVjb21waWxlKHNlbGYsIHJlYWRlciwgb3RGb250KToKKwkJZm9ybWF0ID0gcmVhZGVyLnJlYWRVU2hvcnQoKQorCQlpZiBmb3JtYXQgPT0gMToKKwkJCXNlbGYuZGVjb21waWxlRm9ybWF0MShyZWFkZXIsIG90Rm9udCkKKwkJZWxpZiBmb3JtYXQgPT0gMjoKKwkJCXNlbGYuZGVjb21waWxlRm9ybWF0MihyZWFkZXIsIG90Rm9udCkKKwkJZWxzZToKKwkJCXJhaXNlIHR0TGliLlRUTGliRXJyb3IsICJ1bmtub3duIENvdmVyYWdlIHRhYmxlIGZvcm1hdDogJWQiICUgZm9ybWF0CisJCXNlbGYubWFrZUdseXBoTmFtZXMob3RGb250KQorCQorCWRlZiBkZWNvbXBpbGVGb3JtYXQxKHNlbGYsIHJlYWRlciwgb3RGb250KToKKwkJZ2x5cGhDb3VudCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJc2VsZi5nbHlwaElEcyA9IGdseXBoSURzID0gW10KKwkJZm9yIGkgaW4gcmFuZ2UoZ2x5cGhDb3VudCk6CisJCQlnbHlwaElEID0gcmVhZGVyLnJlYWRVU2hvcnQoKQorCQkJZ2x5cGhJRHMuYXBwZW5kKGdseXBoSUQpCisJCisJZGVmIGRlY29tcGlsZUZvcm1hdDIoc2VsZiwgcmVhZGVyLCBvdEZvbnQpOgorCQlyYW5nZUNvdW50ID0gcmVhZGVyLnJlYWRVU2hvcnQoKQorCQlzZWxmLmdseXBoSURzID0gZ2x5cGhJRHMgPSBbXQorCQlmb3IgaSBpbiByYW5nZShyYW5nZUNvdW50KToKKwkJCXN0YXJ0SUQgPSByZWFkZXIucmVhZFVTaG9ydCgpCisJCQllbmRJRCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJCXN0YXJ0Q292ZXJhZ2VJbmRleCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJCWZvciBnbHlwaElEIGluIHJhbmdlKHN0YXJ0SUQsIGVuZElEICsgMSk6CisJCQkJZ2x5cGhJRHMuYXBwZW5kKGdseXBoSUQpCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgb3RGb250KToKKwkJIyBicnV0ZSBmb3JjZSA7LSkKKwkJZGF0YTEgPSBzZWxmLmNvbXBpbGVGb3JtYXQxKG90Rm9udCkKKwkJZGF0YTIgPSBzZWxmLmNvbXBpbGVGb3JtYXQyKG90Rm9udCkKKwkJaWYgbGVuKGRhdGExKSA8PSBsZW4oZGF0YTIpOgorCQkJZm9ybWF0ID0gMQorCQkJcmVhZGVyID0gZGF0YTEKKwkJZWxzZToKKwkJCWZvcm1hdCA9IDIKKwkJCXJlYWRlciA9IGRhdGEyCisJCXJldHVybiBzdHJ1Y3QucGFjaygiPkgiLCBmb3JtYXQpICsgcmVhZGVyCisJCisJZGVmIGNvbXBpbGVGb3JtYXQxKHNlbGYsIG90Rm9udCk6CisJCXh4eHh4CisJCWdseXBoSURzID0gbWFwKG90Rm9udC5nZXRHbHlwaElELCBzZWxmLmdseXBoTmFtZXMpCisJCWRhdGEgPSBwYWNrKCI+SCIsIGxlbihnbHlwaElEcykpCisJCXBhY2sgPSBzdHJ1Y3QucGFjaworCQlmb3IgZ2x5cGhJRCBpbiBnbHlwaElEczoKKwkJCWRhdGEgPSBkYXRhICsgcGFjaygiPkgiLCBnbHlwaElEKQorCQlyZXR1cm4gZGF0YQorCQorCWRlZiBjb21waWxlRm9ybWF0MihzZWxmLCBvdEZvbnQpOgorCQl4eHh4eAorCQlnbHlwaElEcyA9IG1hcChvdEZvbnQuZ2V0R2x5cGhJRCwgc2VsZi5nbHlwaE5hbWVzKQorCQlyYW5nZXMgPSBbXQorCQlsYXN0SUQgPSBzdGFydElEID0gZ2x5cGhJRHNbMF0KKwkJc3RhcnRDb3ZlcmFnZUluZGV4ID0gMAorCQlnbHlwaENvdW50ID0gbGVuKGdseXBoSURzKQorCQlmb3IgaSBpbiByYW5nZSgxLCBnbHlwaENvdW50KzEpOgorCQkJaWYgaSA9PSBnbHlwaENvdW50OgorCQkJCWdseXBoSUQgPSAweDFmZmZmICAjIGFyYml0cmFyeSwgYnV0IGxhcmdlciB0aGFuIDB4MTAwMDAKKwkJCWVsc2U6CisJCQkJZ2x5cGhJRCA9IGdseXBoSURzW2ldCisJCQlpZiBnbHlwaElEIDw+IChsYXN0SUQgKyAxKToKKwkJCQlyYW5nZXMuYXBwZW5kKChzdGFydElELCBsYXN0SUQsIHN0YXJ0Q292ZXJhZ2VJbmRleCkpCisJCQkJc3RhcnRDb3ZlcmFnZUluZGV4ID0gaQorCQkJCXN0YXJ0SUQgPSBnbHlwaElECisJCQlsYXN0SUQgPSBnbHlwaElECisJCXJhbmdlcy5zb3J0KCkgICMgc29ydCBieSBzdGFydElECisJCXJhbmdlRGF0YSA9ICIiCisJCWZvciBzdGFydElELCBlbmRJRCwgc3RhcnRDb3ZlcmFnZUluZGV4IGluIHJhbmdlczoKKwkJCXJhbmdlRGF0YSA9IHJhbmdlRGF0YSArIHN0cnVjdC5wYWNrKCI+SEhIIiwgc3RhcnRJRCwgZW5kSUQsIHN0YXJ0Q292ZXJhZ2VJbmRleCkKKwkJcmV0dXJuIHBhY2soIj5IIiwgbGVuKHJhbmdlcykpICsgcmFuZ2VEYXRhCisKKworY2xhc3MgQ2xhc3NEZWZpbml0aW9uVGFibGU6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCByZWFkZXIsIG90Rm9udCk6CisJCWZvcm1hdCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJaWYgZm9ybWF0ID09IDE6CisJCQlzZWxmLmRlY29tcGlsZUZvcm1hdDEocmVhZGVyLCBvdEZvbnQpCisJCWVsaWYgZm9ybWF0ID09IDI6CisJCQlzZWxmLmRlY29tcGlsZUZvcm1hdDIocmVhZGVyLCBvdEZvbnQpCisJCWVsc2U6CisJCQlyYWlzZSB0dExpYi5UVExpYkVycm9yLCAidW5rbm93biBDbGFzcyB0YWJsZSBmb3JtYXQ6ICVkIiAlIGZvcm1hdAorCQlzZWxmLnJldmVyc2UoKQorCQorCWRlZiByZXZlcnNlKHNlbGYpOgorCQljbGFzc0RlZnMgPSB7fQorCQlmb3IgZ2x5cGhOYW1lLCBjbGFzc0NvZGUgaW4gc2VsZi5jbGFzc0RlZnM6CisJCQl0cnk6CisJCQkJY2xhc3NEZWZzW2NsYXNzQ29kZV0uYXBwZW5kKGdseXBoTmFtZSkKKwkJCWV4Y2VwdCBLZXlFcnJvcjoKKwkJCQljbGFzc0RlZnNbY2xhc3NDb2RlXSA9IFtnbHlwaE5hbWVdCisJCXNlbGYuY2xhc3NEZWZzID0gY2xhc3NEZWZzCisJCisJZGVmIGRlY29tcGlsZUZvcm1hdDEoc2VsZiwgcmVhZGVyLCBvdEZvbnQpOgorCQlzZWxmLmNsYXNzRGVmcyA9IGNsYXNzRGVmcyA9IFtdCisJCXN0YXJ0R2x5cGhJRCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJZ2x5cGhDb3VudCA9IHJlYWRlci5yZWFkVVNob3J0KCkKKwkJZm9yIGkgaW4gcmFuZ2UoZ2x5cGhDb3VudCk6CisJCQlnbHlwaE5hbWUgPSBvdEZvbnQuZ2V0Z2x5cGhOYW1lKHN0YXJ0R2x5cGhJRCArIGkpCisJCQljbGFzc1ZhbHVlID0gcmVhZGVyLnJlYWRVU2hvcnQoKQorCQkJaWYgY2xhc3NWYWx1ZToKKwkJCQljbGFzc0RlZnMuYXBwZW5kKChnbHlwaE5hbWUsIGNsYXNzVmFsdWUpKQorCQorCWRlZiBkZWNvbXBpbGVGb3JtYXQyKHNlbGYsIHJlYWRlciwgb3RGb250KToKKwkJc2VsZi5jbGFzc0RlZnMgPSBjbGFzc0RlZnMgPSBbXQorCQljbGFzc1JhbmdlQ291bnQgPSByZWFkZXIucmVhZFVTaG9ydCgpCisJCWZvciBpIGluIHJhbmdlKGNsYXNzUmFuZ2VDb3VudCk6CisJCQlzdGFydElEID0gcmVhZGVyLnJlYWRVU2hvcnQoKQorCQkJZW5kSUQgPSByZWFkZXIucmVhZFVTaG9ydCgpCisJCQljbGFzc1ZhbHVlID0gcmVhZGVyLnJlYWRVU2hvcnQoKQorCQkJZm9yIGdseXBoSUQgaW4gcmFuZ2Uoc3RhcnRJRCwgZW5kSUQgKyAxKToKKwkJCQlpZiBjbGFzc1ZhbHVlOgorCQkJCQlnbHlwaE5hbWUgPSBvdEZvbnQuZ2V0R2x5cGhOYW1lKGdseXBoSUQpCisJCQkJCWNsYXNzRGVmcy5hcHBlbmQoKGdseXBoTmFtZSwgY2xhc3NWYWx1ZSkpCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgb3RGb250KToKKwkJIyBicnV0ZSBmb3JjZSBhZ2FpbgorCQlkYXRhMSA9IHNlbGYuY29tcGlsZUZvcm1hdDEob3RGb250KQorCQlkYXRhMiA9IHNlbGYuY29tcGlsZUZvcm1hdDIob3RGb250KQorCQlpZiBsZW4oZGF0YTEpIDw9IGxlbihkYXRhMik6CisJCQlmb3JtYXQgPSAxCisJCQlkYXRhID0gZGF0YTEKKwkJZWxzZToKKwkJCWZvcm1hdCA9IDIKKwkJCWRhdGEgPSBkYXRhMgorCQlyZXR1cm4gc3RydWN0LnBhY2soIj5IIiwgZm9ybWF0KSArIGRhdGEKKwkKKwlkZWYgY29tcGlsZUZvcm1hdDEoc2VsZiwgb3RGb250KToKKwkJaXRlbXMgPSBtYXAobGFtYmRhIChnbHlwaE5hbWUsIGNsYXNzVmFsdWUpLCBnZXRHbHlwaElEPW90Rm9udC5nZXRHbHlwaElEOgorCQkJCShnZXRHbHlwaElEKGdseXBoTmFtZSksIGNsYXNzVmFsdWUpLCBzZWxmLmdseXBocy5pdGVtcygpKQorCQlpdGVtcy5zb3J0KCkKKwkJc3RhcnRHbHlwaElEID0gaXRlbXNbMF1bMF0KKwkJZW5kR2x5cGhJRCA9IGl0ZW1zWy0xXVswXQorCQlkYXRhID0gIiIKKwkJbGFzdElEID0gc3RhcnRHbHlwaElECisJCWZvciBnbHlwaElELCBjbGFzc1ZhbHVlIGluIGl0ZW1zOgorCQkJZm9yIGkgaW4gcmFuZ2UobGFzdElEICsgMSwgZ2x5cGhJRCAtIDEpOgorCQkJCWRhdGEgPSBkYXRhICsgIlwwXDAiICAjIDAgPT0gZGVmYXVsdCBjbGFzcworCQkJZGF0YSA9IGRhdGEgKyBzdHJ1Y3QucGFjaygiPkgiLCBjbGFzc1ZhbHVlKQorCQkJbGFzdElEID0gZ2x5cGhJRAorCQlyZXR1cm4gc3RydWN0LnBhY2soIj5IIiwgZW5kR2x5cGhJRCAtIHN0YXJ0R2x5cGhJRCArIDEpICsgZGF0YQorCQorCWRlZiBjb21waWxlRm9ybWF0MihzZWxmLCBvdEZvbnQpOgorCQlpdGVtcyA9IG1hcChsYW1iZGEgKGdseXBoTmFtZSwgY2xhc3NWYWx1ZSksIGdldEdseXBoSUQ9b3RGb250LmdldEdseXBoSUQ6CisJCQkJKGdldEdseXBoSUQoZ2x5cGhOYW1lKSwgY2xhc3NWYWx1ZSksIHNlbGYuZ2x5cGhzLml0ZW1zKCkpCisJCWl0ZW1zLnNvcnQoKQorCQlyYW5nZXMgPSBbXQorCQlsYXN0SUQsIGxhc3RDbGFzc1ZhbHVlID0gaXRlbXNbMF1bMF0KKwkJc3RhcnRJRCA9IGxhc3RJRAorCQlpdGVtQ291bnQgPSBsZW4oaXRlbXMpCisJCWZvciBpIGluIHJhbmdlKDEsIGl0ZW1Db3VudCsxKToKKwkJCWlmIGkgPT0gaXRlbUNvdW50OgorCQkJCWdseXBoSUQgPSAweDFmZmZmICAjIGFyYml0cmFyeSwgYnV0IGxhcmdlciB0aGFuIDB4MTAwMDAKKwkJCQljbGFzc1ZhbHVlID0gMAorCQkJZWxzZToKKwkJCQlnbHlwaElELCBjbGFzc1ZhbHVlID0gaXRlbXNbaV0KKwkJCWlmIGdseXBoSUQgPD4gKGxhc3RJRCArIDEpIG9yIGxhc3RDbGFzc1ZhbHVlIDw+IGNsYXNzVmFsdWU6CisJCQkJcmFuZ2VzLmFwcGVuZCgoc3RhcnRJRCwgbGFzdElELCBsYXN0Q2xhc3NWYWx1ZSkpCisJCQkJc3RhcnRJRCA9IGdseXBoSUQKKwkJCQlsYXN0Q2xhc3NWYWx1ZSA9IGNsYXNzVmFsdWUKKwkJCWxhc3RJRCA9IGdseXBoSUQKKwkJCWxhc3RDbGFzc1ZhbHVlID0gY2xhc3NWYWx1ZQorCQlyYW5nZURhdGEgPSAiIgorCQlmb3Igc3RhcnRJRCwgZW5kSUQsIGNsYXNzVmFsdWUgaW4gcmFuZ2VzOgorCQkJcmFuZ2VEYXRhID0gcmFuZ2VEYXRhICsgc3RydWN0LnBhY2soIj5ISEgiLCBzdGFydElELCBlbmRJRCwgY2xhc3NWYWx1ZSkKKwkJcmV0dXJuIHBhY2soIj5IIiwgbGVuKHJhbmdlcykpICsgcmFuZ2VEYXRhCisJCisJZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGdseXBoTmFtZSk6CisJCWlmIHNlbGYuZ2x5cGhzLmhhc19rZXkoZ2x5cGhOYW1lKToKKwkJCXJldHVybiBzZWxmLmdseXBoc1tnbHlwaE5hbWVdCisJCWVsc2U6CisJCQlyZXR1cm4gMCAgIyBkZWZhdWx0IGNsYXNzCisKKworY2xhc3MgRGV2aWNlVGFibGU6CisJCisJZGVmIGRlY29tcGlsZShzZWxmLCByZWFkZXIsIG90Rm9udCk6CisJCXh4eHh4eAorCQlzZWxmLnN0YXJ0U2l6ZSA9IHVucGFja191aW50MTYocmVhZGVyWzoyXSkKKwkJZW5kU2l6ZSA9IHVucGFja191aW50MTYocmVhZGVyWzI6NF0pCisJCWRlbHRhRm9ybWF0ID0gdW5wYWNrX3VpbnQxNihyZWFkZXJbNDo2XSkKKwkJcmVhZGVyID0gcmVhZGVyWzY6XQorCQlpZiBkZWx0YUZvcm1hdCA9PSAxOgorCQkJYml0cyA9IDIKKwkJZWxpZiBkZWx0YUZvcm1hdCA9PSAyOgorCQkJYml0cyA9IDQKKwkJZWxpZiBkZWx0YUZvcm1hdCA9PSAzOgorCQkJYml0cyA9IDgKKwkJZWxzZToKKwkJCXJhaXNlIHR0TGliLlRUTGliRXJyb3IsICJ1bmtub3duIERldmljZSB0YWJsZSBkZWx0YSBmb3JtYXQ6ICVkIiAlIGRlbHRhRm9ybWF0CisJCW51bUNvdW50ID0gMTYgLyBiaXRzCisJCWRlbHRhQ291bnQgPSBlbmRTaXplIC0gc2VsZi5zdGFydFNpemUgKyAxCisJCWRlbHRhVmFsdWVzID0gW10KKwkJbWFzayA9ICgxIDw8IGJpdHMpIC0gMQorCQl0aHJlc2hvbGQgPSAoMSA8PCBiaXRzKSAvIDIKKwkJc2hpZnQgPSAxIDw8IGJpdHMKKwkJZm9yIGkgaW4gcmFuZ2UoMCwgZGVsdGFDb3VudCwgbnVtQ291bnQpOgorCQkJb2Zmc2V0ID0gMippL251bUNvdW50CisJCQljaHVuayA9IHVucGFja191aW50MTYocmVhZGVyW29mZnNldDpvZmZzZXQrMl0pCisJCQlkZWx0YXMgPSBbXQorCQkJZm9yIGogaW4gcmFuZ2UobnVtQ291bnQpOgorCQkJCWRlbHRhID0gY2h1bmsgJiBtYXNrCisJCQkJaWYgZGVsdGEgPj0gdGhyZXNob2xkOgorCQkJCQlkZWx0YSA9IGRlbHRhIC0gc2hpZnQKKwkJCQlkZWx0YXMuYXBwZW5kKGRlbHRhKQorCQkJCWNodW5rID0gY2h1bmsgPj4gYml0cworCQkJZGVsdGFzLnJldmVyc2UoKQorCQkJZGVsdGFWYWx1ZXMgPSBkZWx0YVZhbHVlcyArIGRlbHRhcworCQlzZWxmLmRlbHRhVmFsdWVzID0gZGVsdGFWYWx1ZXNbOmRlbHRhQ291bnRdCisJCisJZGVmIGNvbXBpbGUoc2VsZiwgb3RGb250KToKKwkJZGVsdGFWYWx1ZXMgPSBzZWxmLmRlbHRhVmFsdWVzCisJCXN0YXJ0U2l6ZSA9IHNlbGYuc3RhcnRTaXplCisJCWVuZFNpemUgPSBzdGFydFNpemUgKyBsZW4oZGVsdGFWYWx1ZXMpIC0gMQorCQlzbWFsbGVzdERlbHRhID0gbWluKGRlbHRhcykKKwkJbGFyZ2VzdERlbHRhID0gbWEoZGVsdGFzKQorCQlpZiBzbWFsbGVzdERlbHRhID49IC0yIGFuZCBsYXJnZXN0RGVsdGEgPCAyOgorCQkJZGVsdGFGb3JtYXQgPSAxCisJCQliaXRzID0gMgorCQllbGlmIHNtYWxsZXN0RGVsdGEgPj0gLTggYW5kIGxhcmdlc3REZWx0YSA8IDg6CisJCQlkZWx0YUZvcm1hdCA9IDIKKwkJCWJpdHMgPSA0CisJCWVsaWYgc21hbGxlc3REZWx0YSA+PSAtMTI4IGFuZCBsYXJnZXN0RGVsdGEgPCAxMjg6CisJCQlkZWx0YUZvcm1hdCA9IDMKKwkJCWJpdHMgPSA4CisJCWVsc2U6CisJCQlyYWlzZSB0dExpYi5UVExpYkVycm9yLCAiZGVsdGEgdmFsdWUgdG9vIGxhcmdlOiBtaW49JWQsIG1heD0lZCIgJSAoc21hbGxlc3REZWx0YSwgbGFyZ2VzdERlbHRhKQorCQlkYXRhID0gc3RydWN0LnBhY2soIj5ISEgiLCBzdGFydFNpemUsIGVuZFNpemUsIGRlbHRhRm9ybWF0KQorCQludW1Db3VudCA9IDE2IC8gYml0cworCQkjIHBhZCB0aGUgbGlzdCB0byBhIG11bHRpcGxlIG9mIG51bUNvdW50IHZhbHVlcworCQlyZW1haW5kZXIgPSBsZW4oZGVsdGFWYWx1ZXMpICUgbnVtQ291bnQKKwkJaWYgcmVtYWluZGVyOgorCQkJZGVsdGFWYWx1ZXMgPSBkZWx0YVZhbHVlcyArIFswXSAqIChudW1Db3VudCAtIHJlbWFpbmRlcikKKwkJZGVsdGFEYXRhID0gIiIKKwkJZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGRlbHRhVmFsdWVzKSwgbnVtQ291bnQpOgorCQkJY2h1bmsgPSAwCisJCQlmb3IgaiBpbiByYW5nZShudW1Db3VudCk6CisJCQkJY2h1bmsgPSBjaHVuayA8PCBiaXRzCisJCQkJY2h1bmsgPSBjaHVuayB8IGRlbHRhVmFsdWVzW2kral0KKwkJCWRlbHRhRGF0YSA9IGRlbHRhRGF0YSArIHN0cnVjdC5wYWNrKCI+SCIsIGNodW5rKQorCQlyZXR1cm4gZGF0YSArIGRlbHRhRGF0YQorCisKKyMKKyMgTWlzY2VsYW5lb3VzIGhlbHBlciByb3V0aW5lcyBhbmQgY2xhc3NlcworIworCitjbGFzcyBPVFRhYmxlUmVhZGVyOgorCQorCSIiIkRhdGEgd3JhcHBlciwgbW9zdGx5IGRlc2lnbmVkIHRvIG1ha2UgcmVhZGluZyBPVCBkYXRhIGxlc3MgY3VtYmVyc29tZS4iIiIKKwkKKwlkZWYgX19pbml0X18oc2VsZiwgZGF0YSwgb2Zmc2V0PTApOgorCQlzZWxmLmRhdGEgPSBkYXRhCisJCXNlbGYub2Zmc2V0ID0gb2Zmc2V0CisJCXNlbGYucG9zID0gb2Zmc2V0CisJCisJZGVmIHJlYWRVU2hvcnQoc2VsZik6CisJCXBvcyA9IHNlbGYucG9zCisJCW5ld3BvcyA9IHBvcyArIDIKKwkJdmFsdWUgPSBpbnQoc3RydWN0LnVucGFjaygiPkgiLCBzZWxmLmRhdGFbcG9zOm5ld3Bvc10pWzBdKQorCQlzZWxmLnBvcyA9IG5ld3BvcworCQlyZXR1cm4gdmFsdWUKKwkKKwlyZWFkT2Zmc2V0ID0gcmVhZFVTaG9ydAorCQorCWRlZiByZWFkU2hvcnQoc2VsZik6CisJCXBvcyA9IHNlbGYucG9zCisJCW5ld3BvcyA9IHBvcyArIDIKKwkJdmFsdWUgPSBpbnQoc3RydWN0LnVucGFjaygiPmgiLCBzZWxmLmRhdGFbcG9zOm5ld3Bvc10pWzBdKQorCQlzZWxmLnBvcyA9IG5ld3BvcworCQlyZXR1cm4gdmFsdWUKKwkKKwlkZWYgcmVhZExvbmcoc2VsZik6CisJCXBvcyA9IHNlbGYucG9zCisJCW5ld3BvcyA9IHBvcyArIDQKKwkJdmFsdWUgPSBpbnQoc3RydWN0LnVucGFjaygiPmwiLCBzZWxmLmRhdGFbcG9zOm5ld3Bvc10pWzBdKQorCQlzZWxmLnBvcyA9IG5ld3BvcworCQlyZXR1cm4gdmFsdWUKKwkKKwlkZWYgcmVhZFRhZyhzZWxmKToKKwkJcG9zID0gc2VsZi5wb3MKKwkJbmV3cG9zID0gcG9zICsgNAorCQl2YWx1ZSA9IHNlbGYuZGF0YVtwb3M6bmV3cG9zXQorCQlhc3NlcnQgbGVuKHZhbHVlKSA9PSA0CisJCXNlbGYucG9zID0gbmV3cG9zCisJCXJldHVybiB2YWx1ZQorCQorCWRlZiByZWFkVVNob3J0QXJyYXkoc2VsZiwgY291bnQpOgorCQlyZXR1cm4gc2VsZi5yZWFkQXJyYXkoY291bnQsICJIIikKKwkKKwlyZWFkT2Zmc2V0QXJyYXkgPSByZWFkVVNob3J0QXJyYXkKKwkKKwlkZWYgcmVhZFNob3J0QXJyYXkoc2VsZiwgY291bnQpOgorCQlyZXR1cm4gc2VsZi5yZWFkQXJyYXkoY291bnQsICJoIikKKwkKKwlkZWYgcmVhZEFycmF5KHNlbGYsIGNvdW50LCBmb3JtYXQpOgorCQlhc3NlcnQgZm9ybWF0IGluICJIaCIKKwkJZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKKwkJcG9zID0gc2VsZi5wb3MKKwkJbmV3cG9zID0gcG9zICsgMiAqIGNvdW50CisJCWEgPSBhcnJheShmb3JtYXQpCisJCWEuZnJvbXN0cmluZyhzZWxmLmRhdGFbcG9zOm5ld3Bvc10pCisJCWlmIHR0TGliLmVuZGlhbiA8PiAnYmlnJzoKKwkJCWEuYnl0ZXN3YXAoKQorCQlzZWxmLnBvcyA9IG5ld3BvcworCQlyZXR1cm4gYS50b2xpc3QoKQorCQorCWRlZiByZWFkVGFibGUoc2VsZiwgdGFibGVDbGFzcywgb3RGb250LCAqYXJncyk6CisJCW9mZnNldCA9IHNlbGYucmVhZE9mZnNldCgpCisJCWlmIG9mZnNldCA9PSAwOgorCQkJcmV0dXJuIE5vbmUKKwkJbmV3UmVhZGVyID0gc2VsZi5nZXRTdWJTdHJpbmcob2Zmc2V0KQorCQl0YWJsZSA9IGFwcGx5KHRhYmxlQ2xhc3MsIGFyZ3MpCisJCXRhYmxlLmRlY29tcGlsZShuZXdSZWFkZXIsIG90Rm9udCkKKwkJcmV0dXJuIHRhYmxlCisJCisJZGVmIHJlYWRUYWJsZUFycmF5KHNlbGYsIGNvdW50LCB0YWJsZUNsYXNzLCBvdEZvbnQsICphcmdzKToKKwkJbGlzdCA9IFtdCisJCWZvciBpIGluIHJhbmdlKGNvdW50KToKKwkJCWxpc3QuYXBwZW5kKGFwcGx5KHNlbGYucmVhZFRhYmxlLCAodGFibGVDbGFzcywgb3RGb250KSArIGFyZ3MpKQorCQlyZXR1cm4gbGlzdAorCQorCWRlZiByZWFkVGFnTGlzdChzZWxmLCBjb3VudCwgdGFibGVDbGFzcywgb3RGb250LCAqYXJncyk6CisJCWxpc3QgPSBbXQorCQlmb3IgaSBpbiByYW5nZShjb3VudCk6CisJCQl0YWcgPSBzZWxmLnJlYWRUYWcoKQorCQkJdGFibGUgPSBhcHBseShzZWxmLnJlYWRUYWJsZSwgKHRhYmxlQ2xhc3MsIG90Rm9udCkgKyBhcmdzKQorCQkJbGlzdC5hcHBlbmQoKHRhZywgdGFibGUpKQorCQlyZXR1cm4gbGlzdAorCQorCWRlZiByZWFkU3RydWN0KHNlbGYsIGZvcm1hdCwgc2l6ZT1Ob25lKToKKwkJaWYgc2l6ZSBpcyBOb25lOgorCQkJc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmb3JtYXQpCisJCWVsc2U6CisJCQlhc3NlcnQgc2l6ZSA9PSBzdHJ1Y3QuY2FsY3NpemUoZm9ybWF0KQorCQlwb3MgPSBzZWxmLnBvcworCQluZXdwb3MgPSBwb3MgKyBzaXplCisJCXZhbHVlcyA9IHN0cnVjdC51bnBhY2soZm9ybWF0LCBzZWxmLmRhdGFbcG9zOm5ld3Bvc10pCisJCXNlbGYucG9zID0gbmV3cG9zCisJCXJldHVybiB2YWx1ZXMKKwkKKwlkZWYgZ2V0U3ViU3RyaW5nKHNlbGYsIG9mZnNldCk6CisJCXJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEsIHNlbGYub2Zmc2V0K29mZnNldCkKKwkKKwlkZWYgc2VlayhzZWxmLCBuKToKKwkJIiIiUmVsYXRpdmUgc2Vlay4iIiIKKwkJc2VsZi5wb3MgPSBzZWxmLnBvcyArIG4KKworCmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy90YWJsZV9BUElfcmVhZG1lLnR4dCBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL3RhYmxlX0FQSV9yZWFkbWUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjMDRiZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZm9udFRvb2xzL3R0TGliL3RhYmxlcy90YWJsZV9BUElfcmVhZG1lLnR4dApAQCAtMCwwICsxLDkxIEBACitUaGlzIGZvbGRlciBpcyBhIHN1YnBhY2thZ2Ugb2YgdHRMaWIuIEVhY2ggbW9kdWxlIGhlcmUgaXMgYSAKK3NwZWNpYWxpemVkIFRUL09UIHRhYmxlIGNvbnZlcnRlcjogdGhleSBjYW4gY29udmVydCByYXcgZGF0YSAKK3RvIFB5dGhvbiBvYmplY3RzIGFuZCB2aWNlIHZlcnNhLiBVc3VhbGx5IHlvdSBkb24ndCBuZWVkIHRvIAordXNlIHRoZSBtb2R1bGVzIGRpcmVjdGx5OiB0aGV5IGFyZSBpbXBvcnRlZCBhbmQgdXNlZCAKK2F1dG9tYXRpY2FsbHkgd2hlbiBuZWVkZWQgYnkgdHRMaWIuCisKK0lmIHlvdSBhcmUgd3JpdGluZyB5b3Ugb3duIHRhYmxlIGNvbnZlcnRlciB0aGUgZm9sbG93aW5nIGlzIAoraW1wb3J0YW50LgorCitUaGUgbW9kdWxlcyBoZXJlIGhhdmUgcHJldHR5IHN0cmFuZ2UgbmFtZXM6IHRoaXMgaXMgZHVlIHRvIHRoZSAKK2ZhY3QgdGhhdCB3ZSBuZWVkIHRvIG1hcCBUVCB0YWJsZSB0YWdzICh3aGljaCBhcmUgY2FzZSBzZW5zaXRpdmUpIAordG8gZmlsZW5hbWVzICh3aGljaCBvbiBNYWMgYW5kIFdpbiBhcmVuJ3QgY2FzZSBzZW5zaXRpdmUpIGFzIHdlbGwgCithcyB0byBQeXRob24gaWRlbnRpZmllcnMuIFRoZSBsYXR0ZXIgbWVhbnMgaXQgY2FuIG9ubHkgY29udGFpbiAKK1tBLVphLXowLTlfXSBhbmQgY2Fubm90IHN0YXJ0IHdpdGggYSBudW1iZXIuIAorCit0dExpYiBwcm92aWRlcyBmdW5jdGlvbnMgdG8gZXhwYW5kIGEgdGFnIGludG8gdGhlIGZvcm1hdCB1c2VkIGhlcmU6CisKKz4+PiBmcm9tIGZvbnRUb29scyBpbXBvcnQgdHRMaWIKKz4+PiB0dExpYi50YWcyaWRlbnRpZmllcigiRk9PICIpCisnRl9PX09fJworPj4+IHR0TGliLnRhZzJpZGVudGlmaWVyKCJjdnQgIikKKydfY192X3QnCis+Pj4gdHRMaWIudGFnMmlkZW50aWZpZXIoIk9TLzIiKQorJ09fU18yZl8yJworPj4+IHR0TGliLnRhZzJpZGVudGlmaWVyKCJnbHlmIikKKydfZ19sX3lfZicKKz4+PiAKKworQW5kIHZpY2UgdmVyc2E6CisKKz4+PiB0dExpYi5pZGVudGlmaWVyMnRhZygiRl9PX09fIikKKydGT08gJworPj4+IHR0TGliLmlkZW50aWZpZXIydGFnKCJfY192X3QiKQorJ2N2dCAnCis+Pj4gdHRMaWIuaWRlbnRpZmllcjJ0YWcoIk9fU18yZl8yIikKKydPUy8yJworPj4+IHR0TGliLmlkZW50aWZpZXIydGFnKCJfZ19sX3lfZiIpCisnZ2x5ZicKKz4+PiAKKworRWcuIHRoZSAnZ2x5ZicgdGFibGUgY29udmVydGVyIGxpdmVzIGluIGEgUHl0aG9uIGZpbGUgY2FsbGVkOgorCisJX2dfbF95X2YucHkKKworVGhlIGNvbnZlcnRlciBpdHNlbGYgaXMgYSBjbGFzcywgbmFtZWQgInRhYmxlXyIgKyBleHBhbmRlZHRhZy4gRWc6CisKKwljbGFzcyB0YWJsZV9fZ19sX3lfZjoKKwkJZXRjLgorCitOb3RlIHRoYXQgaWYgeW91IF9kb18gbmVlZCB0byB1c2Ugc3VjaCBtb2R1bGVzIG9yIGNsYXNzZXMgbWFudWFsbHksIAordGhlcmUgYXJlIHR3byBjb252ZW5pZW50IEFQSSBmdW5jdGlvbnMgdGhhdCBsZXQgeW91IGZpbmQgdGhlbSBieSB0YWc6CisKKz4+PiB0dExpYi5nZXRUYWJsZU1vZHVsZSgnZ2x5ZicpCis8bW9kdWxlICd0dExpYi50YWJsZXMuX2dfbF95X2YnPgorPj4+IHR0TGliLmdldFRhYmxlQ2xhc3MoJ2dseWYnKQorPGNsYXNzIHR0TGliLnRhYmxlcy5fZ19sX3lfZi50YWJsZV9fZ19sX3lfZiBhdCA2NDVmNDAwPgorPj4+IAorCitZb3UgbXVzdCBzdWJjbGFzcyBmcm9tIERlZmF1bHRUYWJsZS5EZWZhdWx0VGFibGUuIEl0IHByb3ZpZGVzIHNvbWUgZGVmYXVsdAorYmVoYXZpb3IsIGFzIHdlbGwgYXMgYSBjb25zdHJ1Y3RvciBtZXRob2QgKF9faW5pdF9fKSB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIAorb3ZlcnJpZGUuCisKK1lvdXIgY29udmVydGVyIHNob3VsZCBtaW5pbWFsbHkgcHJvdmlkZSB0d28gbWV0aG9kczoKKworY2xhc3MgdGFibGVfRl9PX09fKERlZmF1bHRUYWJsZS5EZWZhdWx0VGFibGUpOiAjIGNvbnZlcnRlciBmb3IgdGFibGUgJ0ZPTyAnCisJCisJZGVmIGRlY29tcGlsZShzZWxmLCBkYXRhLCB0dEZvbnQpOgorCQkjICdkYXRhJyBpcyB0aGUgcmF3IHRhYmxlIGRhdGEuIFVucGFjayBpdCBpbnRvIGEKKwkJIyBQeXRob24gZGF0YSBzdHJ1Y3R1cmUuCisJCSMgJ3R0Rm9udCcgaXMgYSB0dExpYi5UVGZpbGUgaW5zdGFuY2UsIGVuYWJsaW5nIHlvdSB0bworCQkjIHJlZmVyIHRvIG90aGVyIHRhYmxlcy4gRG8gKioqbm90KioqIGtlZXAgYSByZWZlcmVuY2UgdG8KKwkJIyBpdDogaXQgd2lsbCBjYXVzZSBhIGNpcmN1bGFyIHJlZmVyZW5jZSAodHRGb250IHNhdmVzIAorCQkjIGEgcmVmZXJlbmNlIHRvIHVzKSwgYW5kIHRoYXQgbWVhbnMgd2UnbGwgYmUgbGVha2luZyAKKwkJIyBtZW1vcnkuIElmIHlvdSBuZWVkIHRvIHVzZSBpdCBpbiBvdGhlciBtZXRob2RzLCBqdXN0IAorCQkjIHBhc3MgaXQgYXJvdW5kIGFzIGEgbWV0aG9kIGFyZ3VtZW50LgorCQorCWRlZiBjb21waWxlKHNlbGYsIHR0Rm9udCk6CisJCSMgUmV0dXJuIHRoZSByYXcgZGF0YSwgYXMgY29udmVydGVkIGZyb20gdGhlIFB5dGhvbgorCQkjIGRhdGEgc3RydWN0dXJlLiAKKwkJIyBBZ2FpbiwgJ3R0Rm9udCcgaXMgdGhlcmUgc28geW91IGNhbiBhY2Nlc3Mgb3RoZXIgdGFibGVzLgorCQkjIFNhbWUgd2FybmluZyBhcHBsaWVzLgorCitJZiB5b3Ugd2FudCB0byBzdXBwb3J0IFhNTCBpbXBvcnQvZXhwb3J0IGFzIHdlbGwsIHlvdSBuZWVkIHRvIHByb3ZpZGUgdHdvCithZGRpdGlvbmFsIG1ldGhvZHM6CisKKwlkZWYgdG9YTUwoc2VsZiwgd3JpdGVyLCB0dEZvbnQpOgorCQkjIFhYWAorCQorCWRlZiBmcm9tWE1MKHNlbGYsIChuYW1lLCBhdHRycywgY29udGVudCksIHR0Rm9udCk6CisJCSMgWFhYCisKZGlmZiAtLWdpdCBhL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL3R0UHJvZ3JhbS5weSBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGFibGVzL3R0UHJvZ3JhbS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGQ5ZmFhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2ZvbnRUb29scy90dExpYi90YWJsZXMvdHRQcm9ncmFtLnB5CkBAIC0wLDAgKzEsMjQ5IEBACisiIiJ0dExpYi50YWJsZXMudHRQcm9ncmFtLnB5IC0tIEFzc2VtYmxlci9kaXNhc3NlbWJsZXIgZm9yIFRydWVUeXBlIGJ5dGVjb2RlIHByb2dyYW1zLiIiIgorCitpbXBvcnQgYXJyYXkKKworCisjIGZpcnN0LCB0aGUgbGlzdCBvZiBpbnN0cnVjdGlvbnMgdGhhdCBlYXQgYnl0ZXMgb3Igd29yZHMgZnJvbSB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtCisKK3N0cmVhbUluc3RydWN0aW9ucyA9IFsKKyMJLS0tLS0tICAtLS0tLS0tLS0tLSAgLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0gIC0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0KKyMJb3Bjb2RlICAgICBtbmVtb25pYyBhcmdiaXRzICAgICAgICAgZGVzY3JpcHRpdmUgbmFtZSBwb3BzIHB1c2hlcyAgICAgICAgZWF0cyBmcm9tIGluc3RydWN0aW9uIHN0cmVhbSAgICAgICAgICBwdXNoZXMKKyMJLS0tLS0tICAtLS0tLS0tLS0tLSAgLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0gIC0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0KKwkoMHg0MCwgICAgJ05QVVNIQicsICAgICAwLCAgICAgICAgICAgICAnUHVzaE5CeXRlcycsICAwLCAtMSksICMgICAgICAgICAgICAgICAgICAgICAgbiwgYjEsIGIyLC4uLmJuICAgICAgYjEsYjIuLi5ibgorCSgweDQxLCAgICAnTlBVU0hXJywgICAgIDAsICAgICAgICAgICAgICdQdXNoTldvcmRzJywgIDAsIC0xKSwgIyAgICAgICAgICAgICAgICAgICAgICAgbiwgdzEsIHcyLC4uLncgICAgICB3MSx3Mi4uLnduCisJKDB4YjAsICAgICAnUFVTSEInLCAgICAgMywgICAgICAgICAgICAgICdQdXNoQnl0ZXMnLCAgMCwgLTEpLCAjICAgICAgICAgICAgICAgICAgICAgICAgICBiMCwgYjEsLi5ibiAgYjAsIGIxLCAuLi4sYm4KKwkoMHhiOCwgICAgICdQVVNIVycsICAgICAzLCAgICAgICAgICAgICAgJ1B1c2hXb3JkcycsICAwLCAtMSksICMgICAgICAgICAgICAgICAgICAgICAgICAgICB3MCx3MSwuLnduICAgdzAgLHcxLCAuLi53bgorIwktLS0tLS0gIC0tLS0tLS0tLS0tICAtLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLSAgLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLQorXQorCisKKyMgbmV4dCwgdGhlIGxpc3Qgb2YgIm5vcm1hbCIgaW5zdHJ1Y3Rpb25zCisKK2luc3RydWN0aW9ucyA9IFsKKyMJLS0tLS0tICAtLS0tLS0tLS0tLSAgLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0gIC0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0KKyMJb3Bjb2RlICAgICBtbmVtb25pYyAgYXJnYml0cyAgICAgICAgZGVzY3JpcHRpdmUgbmFtZSBwb3BzIHB1c2hlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wcyAgICAgICAgICBwdXNoZXMKKyMJLS0tLS0tICAtLS0tLS0tLS0tLSAgLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0gIC0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0KKwkoMHg3ZiwgICAgICAgICdBQScsICAgICAwLCAgICAgICAgICAgICdBZGp1c3RBbmdsZScsICAxLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwICAgICAgICAgICAgICAgLQorCSgweDY0LCAgICAgICAnQUJTJywgICAgIDAsICAgICAgICAgICAgICAgJ0Fic29sdXRlJywgIDEsICAxKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gICAgICAgICAgICAgfG58CisJKDB4NjAsICAgICAgICdBREQnLCAgICAgMCwgICAgICAgICAgICAgICAgICAgICdBZGQnLCAgMiwgIDEpLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4yLCBuMSAgICAgICAobjEgKyBuMikKKwkoMHgyNywgICdBTElHTlBUUycsICAgICAwLCAgICAgICAgICAgICAgICdBbGlnblB0cycsICAyLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDIsIHAxICAgICAgICAgICAgICAgLQorCSgweDNjLCAgICdBTElHTlJQJywgICAgIDAsICAgICAgICAnQWxpZ25SZWxhdGl2ZVB0JywgLTEsICAwKSwgIyAgICAgICAgICAgICBwMSwgcDIsIC4uLiAsIHBsb29wdmFsdWUgICAgICAgICAgICAgICAtCisJKDB4NWEsICAgICAgICdBTkQnLCAgICAgMCwgICAgICAgICAgICAgJ0xvZ2ljYWxBbmQnLCAgMiwgIDEpLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUyLCBlMSAgICAgICAgICAgICAgIGIKKwkoMHgyYiwgICAgICAnQ0FMTCcsICAgICAwLCAgICAgICAgICAgJ0NhbGxGdW5jdGlvbicsICAxLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmICAgICAgICAgICAgICAgLQorCSgweDY3LCAgICdDRUlMSU5HJywgICAgIDAsICAgICAgICAgICAgICAgICdDZWlsaW5nJywgIDEsICAxKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gICAgICAgICBjZWlsKG4pCisJKDB4MjUsICAgICdDSU5ERVgnLCAgICAgMCwgICAgICAgICdDb3B5WFRvVG9wU3RhY2snLCAgMSwgIDEpLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayAgICAgICAgICAgICAgZWsKKwkoMHgyMiwgICAgICdDTEVBUicsICAgICAwLCAgICAgICAgICAgICAnQ2xlYXJTdGFjaycsIC0xLCAgMCksICMgICAgICAgICAgICAgICBhbGwgaXRlbXMgb24gdGhlIHN0YWNrICAgICAgICAgICAgICAgLQorCSgweDRmLCAgICAgJ0RFQlVHJywgICAgIDAsICAgICAgICAgICAgICAnRGVidWdDYWxsJywgIDEsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gICAgICAgICAgICAgICAtCisJKDB4NzMsICAgJ0RFTFRBQzEnLCAgICAgMCwgICAgICAgJ0RlbHRhRXhjZXB0aW9uQzEnLCAtMSwgIDApLCAjICAgIGFyZ24sIGNuLCBhcmduLTEsY24tMSwgLCBhcmcxLCBjMSAgICAgICAgICAgICAgIC0KKwkoMHg3NCwgICAnREVMVEFDMicsICAgICAwLCAgICAgICAnRGVsdGFFeGNlcHRpb25DMicsIC0xLCAgMCksICMgICAgYXJnbiwgY24sIGFyZ24tMSxjbi0xLCAsIGFyZzEsIGMxICAgICAgICAgICAgICAgLQorCSgweDc1LCAgICdERUxUQUMzJywgICAgIDAsICAgICAgICdEZWx0YUV4Y2VwdGlvbkMzJywgLTEsICAwKSwgIyAgICBhcmduLCBjbiwgYXJnbi0xLGNuLTEsICwgYXJnMSwgYzEgICAgICAgICAgICAgICAtCisJKDB4NWQsICAgJ0RFTFRBUDEnLCAgICAgMCwgICAgICAgJ0RlbHRhRXhjZXB0aW9uUDEnLCAtMSwgIDApLCAjICAgYXJnbiwgcG4sIGFyZ24tMSwgcG4tMSwgLCBhcmcxLCBwMSAgICAgICAgICAgICAgIC0KKwkoMHg3MSwgICAnREVMVEFQMicsICAgICAwLCAgICAgICAnRGVsdGFFeGNlcHRpb25QMicsIC0xLCAgMCksICMgICBhcmduLCBwbiwgYXJnbi0xLCBwbi0xLCAsIGFyZzEsIHAxICAgICAgICAgICAgICAgLQorCSgweDcyLCAgICdERUxUQVAzJywgICAgIDAsICAgICAgICdEZWx0YUV4Y2VwdGlvblAzJywgLTEsICAwKSwgIyAgIGFyZ24sIHBuLCBhcmduLTEsIHBuLTEsICwgYXJnMSwgcDEgICAgICAgICAgICAgICAtCisJKDB4MjQsICAgICAnREVQVEgnLCAgICAgMCwgICAgICAgICAgJ0dldERlcHRoU3RhY2snLCAgMCwgIDEpLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAgICAgICAgICAgICAgIG4KKwkoMHg2MiwgICAgICAgJ0RJVicsICAgICAwLCAgICAgICAgICAgICAgICAgJ0RpdmlkZScsICAyLCAgMSksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjIsIG4xICAgKG4xICogNjQpLyBuMgorCSgweDIwLCAgICAgICAnRFVQJywgICAgIDAsICAgICAgJ0R1cGxpY2F0ZVRvcFN0YWNrJywgIDEsICAyKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgICAgICAgICAgICBlLCBlCisJKDB4NTksICAgICAgICdFSUYnLCAgICAgMCwgICAgICAgICAgICAgICAgICAnRW5kSWYnLCAgMCwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAgICAgICAgICAgICAgIC0KKwkoMHgxYiwgICAgICAnRUxTRScsICAgICAwLCAgICAgICAgICAgICAgICAgICAnRWxzZScsICAwLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgLQorCSgweDJkLCAgICAgICdFTkRGJywgICAgIDAsICAnRW5kRnVuY3Rpb25EZWZpbml0aW9uJywgIDAsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAtCisJKDB4NTQsICAgICAgICAnRVEnLCAgICAgMCwgICAgICAgICAgICAgICAgICAnRXF1YWwnLCAgMiwgIDEpLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUyLCBlMSAgICAgICAgICAgICAgIGIKKwkoMHg1NywgICAgICAnRVZFTicsICAgICAwLCAgICAgICAgICAgICAgICAgICAnRXZlbicsICAxLCAgMSksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlICAgICAgICAgICAgICAgYgorCSgweDJjLCAgICAgICdGREVGJywgICAgIDAsICAgICAnRnVuY3Rpb25EZWZpbml0aW9uJywgIDEsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgICAgICAgICAgICAgICAtCisJKDB4NGUsICAgJ0ZMSVBPRkYnLCAgICAgMCwgICAgICAgICAnU2V0QXV0b0ZsaXBPZmYnLCAgMCwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAgICAgICAgICAgICAgIC0KKwkoMHg0ZCwgICAgJ0ZMSVBPTicsICAgICAwLCAgICAgICAgICAnU2V0QXV0b0ZsaXBPbicsICAwLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgLQorCSgweDgwLCAgICAnRkxJUFBUJywgICAgIDAsICAgICAgICAgICAgICAnRmxpcFBvaW50JywgLTEsICAwKSwgIyAgICAgICAgICAgICAgcDEsIHAyLCAuLi4sIHBsb29wdmFsdWUgICAgICAgICAgICAgICAtCisJKDB4ODIsICdGTElQUkdPRkYnLCAgICAgMCwgICAgICAgICAgICdGbGlwUmFuZ2VPZmYnLCAgMiwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCwgbCAgICAgICAgICAgICAgIC0KKwkoMHg4MSwgICdGTElQUkdPTicsICAgICAwLCAgICAgICAgICAgICdGbGlwUmFuZ2VPbicsICAyLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLCBsICAgICAgICAgICAgICAgLQorCSgweDY2LCAgICAgJ0ZMT09SJywgICAgIDAsICAgICAgICAgICAgICAgICAgJ0Zsb29yJywgIDEsICAxKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gICAgICAgIGZsb29yKG4pCisJKDB4NDYsICAgICAgICAnR0MnLCAgICAgMSwgICAgICAnR2V0Q29vcmRPblBWZWN0b3InLCAgMSwgIDEpLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCAgICAgICAgICAgICAgIGMKKwkoMHg4OCwgICAnR0VUSU5GTycsICAgICAwLCAgICAgICAgICAgICAgICAnR2V0SW5mbycsICAxLCAgMSksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yICAgICAgICAgIHJlc3VsdAorCSgweDBkLCAgICAgICAnR0ZWJywgICAgIDAsICAgICAgICAgICAgICdHZXRGVmVjdG9yJywgIDAsICAyKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gICAgICAgICAgcHgsIHB5CisJKDB4MGMsICAgICAgICdHUFYnLCAgICAgMCwgICAgICAgICAgICAgJ0dldFBWZWN0b3InLCAgMCwgIDIpLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAgICAgICAgICBweCwgcHkKKwkoMHg1MiwgICAgICAgICdHVCcsICAgICAwLCAgICAgICAgICAgICdHcmVhdGVyVGhhbicsICAyLCAgMSksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZTIsIGUxICAgICAgICAgICAgICAgYgorCSgweDUzLCAgICAgICdHVEVRJywgICAgIDAsICAgICAnR3JlYXRlclRoYW5PckVxdWFsJywgIDIsICAxKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlMiwgZTEgICAgICAgICAgICAgICBiCisJKDB4ODksICAgICAgJ0lERUYnLCAgICAgMCwgICdJbnN0cnVjdGlvbkRlZmluaXRpb24nLCAgMSwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiAgICAgICAgICAgICAgIC0KKwkoMHg1OCwgICAgICAgICdJRicsICAgICAwLCAgICAgICAgICAgICAgICAgICAgICdJZicsICAxLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlICAgICAgICAgICAgICAgLQorCSgweDhlLCAgJ0lOU1RDVFJMJywgICAgIDAsICAgICdTZXRJbnN0ckV4ZWNDb250cm9sJywgIDIsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIHYgICAgICAgICAgICAgICAtCisJKDB4MzksICAgICAgICAnSVAnLCAgICAgMCwgICAgICAgICAnSW50ZXJwb2xhdGVQdHMnLCAtMSwgIDApLCAjICAgICAgICAgICAgIHAxLCBwMiwgLi4uICwgcGxvb3B2YWx1ZSAgICAgICAgICAgICAgIC0KKwkoMHgwZiwgICAgICdJU0VDVCcsICAgICAwLCAgICAgICdNb3ZlUHRUb0ludGVyc2VjdCcsICA1LCAgMCksICMgICAgICAgICAgICAgICAgICAgIGExLCBhMCwgYjEsIGIwLCBwICAgICAgICAgICAgICAgLQorCSgweDMwLCAgICAgICAnSVVQJywgICAgIDEsICAgICAgJ0ludGVycG9sYXRlVW50UHRzJywgIDAsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAtCisJKDB4MWMsICAgICAgJ0pNUFInLCAgICAgMCwgICAgICAgICAgICAgICAgICAgJ0p1bXAnLCAgMSwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCAgICAgICAgICAgICAgIC0KKwkoMHg3OSwgICAgICAnSlJPRicsICAgICAwLCAgICAnSnVtcFJlbGF0aXZlT25GYWxzZScsICAyLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSwgb2Zmc2V0ICAgICAgICAgICAgICAgLQorCSgweDc4LCAgICAgICdKUk9UJywgICAgIDAsICAgICAnSnVtcFJlbGF0aXZlT25UcnVlJywgIDIsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLCBvZmZzZXQgICAgICAgICAgICAgICAtCisJKDB4MmEsICAnTE9PUENBTEwnLCAgICAgMCwgICAgJ0xvb3BBbmRDYWxsRnVuY3Rpb24nLCAgMiwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLCBjb3VudCAgICAgICAgICAgICAgIC0KKwkoMHg1MCwgICAgICAgICdMVCcsICAgICAwLCAgICAgICAgICAgICAgICdMZXNzVGhhbicsICAyLCAgMSksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZTIsIGUxICAgICAgICAgICAgICAgYgorCSgweDUxLCAgICAgICdMVEVRJywgICAgIDAsICAgICAgICAnTGVzc1RoZW5PckVxdWFsJywgIDIsICAxKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlMiwgZTEgICAgICAgICAgICAgICBiCisJKDB4OGIsICAgICAgICdNQVgnLCAgICAgMCwgICAgICAgICAgICAgICAgJ01heGltdW0nLCAgMiwgIDEpLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUyLCBlMSAgICAgbWF4KGUxLCBlMikKKwkoMHg0OSwgICAgICAgICdNRCcsICAgICAxLCAgICAgICAgJ01lYXN1cmVEaXN0YW5jZScsICAyLCAgMSksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAyLHAxICAgICAgICAgICAgICAgZAorCSgweDJlLCAgICAgICdNREFQJywgICAgIDEsICAgICAgICAnTW92ZURpcmVjdEFic1B0JywgIDEsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgICAgICAgICAgICAgICAtCisJKDB4YzAsICAgICAgJ01EUlAnLCAgICAgNSwgICAgICAgICdNb3ZlRGlyZWN0UmVsUHQnLCAgMSwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCAgICAgICAgICAgICAgIC0KKwkoMHgzZSwgICAgICAnTUlBUCcsICAgICAxLCAgICAgICdNb3ZlSW5kaXJlY3RBYnNQdCcsICAyLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLCBwICAgICAgICAgICAgICAgLQorCSgweDhjLCAgICAgICAnTUlOJywgICAgIDAsICAgICAgICAgICAgICAgICdNaW5pbXVtJywgIDIsICAxKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlMiwgZTEgICAgIG1pbihlMSwgZTIpCisJKDB4MjYsICAgICdNSU5ERVgnLCAgICAgMCwgICAgICAgICdNb3ZlWFRvVG9wU3RhY2snLCAgMiwgIDEpLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayAgICAgICAgICAgICAgZWsKKwkoMHhlMCwgICAgICAnTUlSUCcsICAgICA1LCAgICAgICdNb3ZlSW5kaXJlY3RSZWxQdCcsICAxLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLCBwICAgICAgICAgICAgICAgLQorCSgweDRiLCAgICAgJ01QUEVNJywgICAgIDAsICAgICAgJ01lYXN1cmVQaXhlbFBlckVtJywgIDAsICAxKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gICAgICAgICAgICBwcGVtCisJKDB4NGMsICAgICAgICdNUFMnLCAgICAgMCwgICAgICAgJ01lYXN1cmVQb2ludFNpemUnLCAgMCwgIDEpLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAgICAgICBwb2ludFNpemUKKwkoMHgzYSwgICAgICdNU0lSUCcsICAgICAxLCAgICAnTW92ZVN0YWNrSW5kaXJSZWxQdCcsICAyLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLCBwICAgICAgICAgICAgICAgLQorCSgweDYzLCAgICAgICAnTVVMJywgICAgIDAsICAgICAgICAgICAgICAgJ011bHRpcGx5JywgIDIsICAxKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuMiwgbjEgICAgKG4xICogbjIpLzY0CisJKDB4NjUsICAgICAgICdORUcnLCAgICAgMCwgICAgICAgICAgICAgICAgICdOZWdhdGUnLCAgMSwgIDEpLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAgICAgICAgICAgICAgLW4KKwkoMHg1NSwgICAgICAgJ05FUScsICAgICAwLCAgICAgICAgICAgICAgICdOb3RFcXVhbCcsICAyLCAgMSksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZTIsIGUxICAgICAgICAgICAgICAgYgorCSgweDVjLCAgICAgICAnTk9UJywgICAgIDAsICAgICAgICAgICAgICdMb2dpY2FsTm90JywgIDEsICAxKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgICAgICAgKCBub3QgZSApCisJKDB4NmMsICAgICdOUk9VTkQnLCAgICAgMiwgICAgICAgICAgICAgICAgJ05vUm91bmQnLCAgMSwgIDEpLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuMSAgICAgICAgICAgICAgbjIKKwkoMHg1NiwgICAgICAgJ09ERCcsICAgICAwLCAgICAgICAgICAgICAgICAgICAgJ09kZCcsICAxLCAgMSksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlICAgICAgICAgICAgICAgYgorCSgweDViLCAgICAgICAgJ09SJywgICAgIDAsICAgICAgICAgICAgICAnTG9naWNhbE9yJywgIDIsICAxKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlMiwgZTEgICAgICAgICAgICAgICBiCisJKDB4MjEsICAgICAgICdQT1AnLCAgICAgMCwgICAgICAgICAgICAnUG9wVG9wU3RhY2snLCAgMSwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAgICAgICAgICAgICAgIC0KKwkoMHg0NSwgICAgICAnUkNWVCcsICAgICAwLCAgICAgICAgICAgICAgICAnUmVhZENWVCcsICAxLCAgMSksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uICAgICAgICAgICB2YWx1ZQorCSgweDdkLCAgICAgICdSRFRHJywgICAgIDAsICAgICAgICAnUm91bmREb3duVG9HcmlkJywgIDAsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAtCisJKDB4N2EsICAgICAgJ1JPRkYnLCAgICAgMCwgICAgICAgICAgICAgICAnUm91bmRPZmYnLCAgMCwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAgICAgICAgICAgICAgIC0KKwkoMHg4YSwgICAgICAnUk9MTCcsICAgICAwLCAgICAgICdSb2xsVG9wVGhyZWVTdGFjaycsICAzLCAgMyksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEsYixjICAgICAgICAgICBiLGEsYworCSgweDY4LCAgICAgJ1JPVU5EJywgICAgIDIsICAgICAgICAgICAgICAgICAgJ1JvdW5kJywgIDEsICAxKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjEgICAgICAgICAgICAgIG4yCisJKDB4NDMsICAgICAgICAnUlMnLCAgICAgMCwgICAgICAgICAgICAgICdSZWFkU3RvcmUnLCAgMSwgIDEpLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAgICAgICAgICAgICAgIHYKKwkoMHgzZCwgICAgICAnUlRERycsICAgICAwLCAgICAgICdSb3VuZFRvRG91YmxlR3JpZCcsICAwLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgLQorCSgweDE4LCAgICAgICAnUlRHJywgICAgIDAsICAgICAgICAgICAgJ1JvdW5kVG9HcmlkJywgIDAsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAtCisJKDB4MTksICAgICAgJ1JUSEcnLCAgICAgMCwgICAgICAgICdSb3VuZFRvSGFsZkdyaWQnLCAgMCwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAgICAgICAgICAgICAgIC0KKwkoMHg3YywgICAgICAnUlVURycsICAgICAwLCAgICAgICAgICAnUm91bmRVcFRvR3JpZCcsICAwLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgLQorCSgweDc3LCAgJ1M0NVJPVU5EJywgICAgIDAsICAgICdTdXBlclJvdW5kNDVEZWdyZWVzJywgIDEsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gICAgICAgICAgICAgICAtCisJKDB4N2UsICAgICAnU0FOR1cnLCAgICAgMCwgICAgICAgICAnU2V0QW5nbGVXZWlnaHQnLCAgMSwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlaWdodCAgICAgICAgICAgICAgIC0KKwkoMHg4NSwgICdTQ0FOQ1RSTCcsICAgICAwLCAgJ1NjYW5Db252ZXJzaW9uQ29udHJvbCcsICAxLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICAgICAgICAgICAgICAgLQorCSgweDhkLCAgJ1NDQU5UWVBFJywgICAgIDAsICAgICAgICAgICAgICAgJ1NjYW5UeXBlJywgIDEsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gICAgICAgICAgICAgICAtCisJKDB4NDgsICAgICAgJ1NDRlMnLCAgICAgMCwgICAgJ1NldENvb3JkRnJvbVN0YWNrRlAnLCAgMiwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYywgcCAgICAgICAgICAgICAgIC0KKwkoMHgxZCwgICAgJ1NDVlRDSScsICAgICAwLCAgICAgICAgICAgICdTZXRDVlRDdXRJbicsICAxLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICAgICAgICAgICAgICAgLQorCSgweDVlLCAgICAgICAnU0RCJywgICAgIDAsICAgJ1NldERlbHRhQmFzZUluR1N0YXRlJywgIDEsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gICAgICAgICAgICAgICAtCisJKDB4ODYsICAgICdTRFBWVEwnLCAgICAgMSwgICAnU2V0RHVhbFBWZWN0b3JUb0xpbmUnLCAgMiwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAyLCBwMSAgICAgICAgICAgICAgIC0KKwkoMHg1ZiwgICAgICAgJ1NEUycsICAgICAwLCAgJ1NldERlbHRhU2hpZnRJbkdTdGF0ZScsICAxLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICAgICAgICAgICAgICAgLQorCSgweDBiLCAgICAgJ1NGVkZTJywgICAgIDAsICAgICdTZXRGVmVjdG9yRnJvbVN0YWNrJywgIDIsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHksIHggICAgICAgICAgICAgICAtCisJKDB4MDQsICAgICdTRlZUQ0EnLCAgICAgMSwgICAgICAgJ1NldEZWZWN0b3JUb0F4aXMnLCAgMCwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAgICAgICAgICAgICAgIC0KKwkoMHgwOCwgICAgICdTRlZUTCcsICAgICAxLCAgICAgICAnU2V0RlZlY3RvclRvTGluZScsICAyLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDIsIHAxICAgICAgICAgICAgICAgLQorCSgweDBlLCAgICAnU0ZWVFBWJywgICAgIDAsICAgICdTZXRGVmVjdG9yVG9QVmVjdG9yJywgIDAsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAtCisJKDB4MzQsICAgICAgICdTSEMnLCAgICAgMSwgICAnU2hpZnRDb250b3VyQnlMYXN0UHQnLCAgMSwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgIC0KKwkoMHgzMiwgICAgICAgJ1NIUCcsICAgICAxLCAgJ1NoaWZ0UG9pbnRCeUxhc3RQb2ludCcsIC0xLCAgMCksICMgICAgICAgICAgICAgIHAxLCBwMiwgLi4uLCBwbG9vcHZhbHVlICAgICAgICAgICAgICAgLQorCSgweDM4LCAgICAgJ1NIUElYJywgICAgIDAsICAgICAgICdTaGlmdFpvbmVCeVBpeGVsJywgLTEsICAwKSwgIyAgICAgICAgICAgZCwgcDEsIHAyLCAuLi4sIHBsb29wdmFsdWUgICAgICAgICAgICAgICAtCisJKDB4MzYsICAgICAgICdTSFonLCAgICAgMSwgICAnU2hpZnRab25lQnlMYXN0UG9pbnQnLCAgMSwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAgICAgICAgICAgICAgIC0KKwkoMHgxNywgICAgICdTTE9PUCcsICAgICAwLCAgICAgICAgJ1NldExvb3BWYXJpYWJsZScsICAxLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICAgICAgICAgICAgICAgLQorCSgweDFhLCAgICAgICAnU01EJywgICAgIDAsICAgICAnU2V0TWluaW11bURpc3RhbmNlJywgIDEsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2UgICAgICAgICAgICAgICAtCisJKDB4MGEsICAgICAnU1BWRlMnLCAgICAgMCwgICAgJ1NldFBWZWN0b3JGcm9tU3RhY2snLCAgMiwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwgeCAgICAgICAgICAgICAgIC0KKwkoMHgwMiwgICAgJ1NQVlRDQScsICAgICAxLCAgICAgICAnU2V0UFZlY3RvclRvQXhpcycsICAwLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgLQorCSgweDA2LCAgICAgJ1NQVlRMJywgICAgIDEsICAgICAgICdTZXRQVmVjdG9yVG9MaW5lJywgIDIsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMiwgcDEgICAgICAgICAgICAgICAtCisJKDB4NzYsICAgICdTUk9VTkQnLCAgICAgMCwgICAgICAgICAgICAgJ1N1cGVyUm91bmQnLCAgMSwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAgICAgICAgICAgICAgIC0KKwkoMHgxMCwgICAgICAnU1JQMCcsICAgICAwLCAgICAgICAgICAgJ1NldFJlZlBvaW50MCcsICAxLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwICAgICAgICAgICAgICAgLQorCSgweDExLCAgICAgICdTUlAxJywgICAgIDAsICAgICAgICAgICAnU2V0UmVmUG9pbnQxJywgIDEsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgICAgICAgICAgICAgICAtCisJKDB4MTIsICAgICAgJ1NSUDInLCAgICAgMCwgICAgICAgICAgICdTZXRSZWZQb2ludDInLCAgMSwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCAgICAgICAgICAgICAgIC0KKwkoMHgxZiwgICAgICAgJ1NTVycsICAgICAwLCAgICAgICAgICdTZXRTaW5nbGVXaWR0aCcsICAxLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICAgICAgICAgICAgICAgLQorCSgweDFlLCAgICAgJ1NTV0NJJywgICAgIDAsICAgICdTZXRTaW5nbGVXaWR0aEN1dEluJywgIDEsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gICAgICAgICAgICAgICAtCisJKDB4NjEsICAgICAgICdTVUInLCAgICAgMCwgICAgICAgICAgICAgICAnU3VidHJhY3QnLCAgMiwgIDEpLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4yLCBuMSAgICAgICAobjEgLSBuMikKKwkoMHgwMCwgICAgICdTVlRDQScsICAgICAxLCAgICAgICdTZXRGUFZlY3RvclRvQXhpcycsICAwLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgLQorCSgweDIzLCAgICAgICdTV0FQJywgICAgIDAsICAgICAgICAgICAnU3dhcFRvcFN0YWNrJywgIDIsICAyKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlMiwgZTEgICAgICAgICAgZTEsIGUyCisJKDB4MTMsICAgICAgJ1NaUDAnLCAgICAgMCwgICAgICAgICdTZXRab25lUG9pbnRlcjAnLCAgMSwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAgICAgICAgICAgICAgIC0KKwkoMHgxNCwgICAgICAnU1pQMScsICAgICAwLCAgICAgICAgJ1NldFpvbmVQb2ludGVyMScsICAxLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICAgICAgICAgICAgICAgLQorCSgweDE1LCAgICAgICdTWlAyJywgICAgIDAsICAgICAgICAnU2V0Wm9uZVBvaW50ZXIyJywgIDEsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gICAgICAgICAgICAgICAtCisJKDB4MTYsICAgICAgJ1NaUFMnLCAgICAgMCwgICAgICAgICdTZXRab25lUG9pbnRlclMnLCAgMSwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAgICAgICAgICAgICAgIC0KKwkoMHgyOSwgICAgICAgJ1VUUCcsICAgICAwLCAgICAgICAgICAgICAgJ1VuVG91Y2hQdCcsICAxLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwICAgICAgICAgICAgICAgLQorCSgweDcwLCAgICAgJ1dDVlRGJywgICAgIDAsICAgICAgICdXcml0ZUNWVEluRlVuaXRzJywgIDIsICAwKSwgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4sIGwgICAgICAgICAgICAgICAtCisJKDB4NDQsICAgICAnV0NWVFAnLCAgICAgMCwgICAgICAgJ1dyaXRlQ1ZUSW5QaXhlbHMnLCAgMiwgIDApLCAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiwgbCAgICAgICAgICAgICAgIC0KKwkoMHg0MiwgICAgICAgICdXUycsICAgICAwLCAgICAgICAgICAgICAnV3JpdGVTdG9yZScsICAyLCAgMCksICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LCBsICAgICAgICAgICAgICAgLQorIwktLS0tLS0gIC0tLS0tLS0tLS0tICAtLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLSAgLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLQorXQorCisKK2RlZiBiaXRSZXByKHZhbHVlLCBiaXRzKToKKwlzID0gIiIKKwlmb3IgaSBpbiByYW5nZShiaXRzKToKKwkJcyA9ICIwMSJbdmFsdWUgJiAweDFdICsgcworCQl2YWx1ZSA9IHZhbHVlID4+IDEKKwlyZXR1cm4gcworCitkZWYgbWFrZU9wY29kZURpY3QoaW5zdHJ1Y3Rpb25MaXN0KToKKwlvcGNvZGVEaWN0ID0ge30KKwlmb3Igb3AsIG1uZW1vbmljLCBhcmdiaXRzLCBuYW1lLCBwb3BzLCBwdXNoZXMgaW4gaW5zdHJ1Y3Rpb25MaXN0OgorCQlpZiBhcmdiaXRzOgorCQkJYXJnb2Zmc2V0ID0gb3AKKwkJCWZvciBpIGluIHJhbmdlKDEgPDwgYXJnYml0cyk6CisJCQkJb3Bjb2RlRGljdFtvcCtpXSA9IG1uZW1vbmljLCBhcmdiaXRzLCBhcmdvZmZzZXQsIG5hbWUKKwkJZWxzZToKKwkJCQlvcGNvZGVEaWN0W29wXSA9IG1uZW1vbmljLCAwLCAwLCBuYW1lCisJcmV0dXJuIG9wY29kZURpY3QKKworc3RyZWFtT3Bjb2RlRGljdCA9IG1ha2VPcGNvZGVEaWN0KHN0cmVhbUluc3RydWN0aW9ucykKK29wY29kZURpY3QgPSBtYWtlT3Bjb2RlRGljdChpbnN0cnVjdGlvbnMpCisKK3R0X2luc3RydWN0aW9uc19lcnJvciA9ICJUVCBpbnN0cnVjdGlvbnMgZXJyb3IiCisKKworY2xhc3MgUHJvZ3JhbToKKwkKKwlkZWYgX19pbml0X18oc2VsZik6CisJCXBhc3MKKwkKKwlkZWYgZnJvbUJ5dGVjb2RlKHNlbGYsIGJ5dGVjb2RlKToKKwkJc2VsZi5ieXRlY29kZSA9IGFycmF5LmFycmF5KCJCIikKKwkJc2VsZi5ieXRlY29kZS5mcm9tc3RyaW5nKGJ5dGVjb2RlKQorCQorCWRlZiBmcm9tQXNzZW1ibHkoc2VsZiwgYXNzZW1ibHkpOgorCQlzZWxmLmFzc2VtYmx5ID0gYXNzZW1ibHkKKwkKKwlkZWYgZ2V0Qnl0ZWNvZGUoc2VsZik6CisJCWlmIG5vdCBoYXNhdHRyKHNlbGYsICJieXRlY29kZSIpOgorCQkJc2VsZi5fYXNzZW1ibGUoKQorCQlyZXR1cm4gc2VsZi5ieXRlY29kZS50b3N0cmluZygpCisJCisJZGVmIGdldEFzc2VtYmx5KHNlbGYpOgorCQlpZiBub3QgaGFzYXR0cihzZWxmLCAiYXNzZW1ibHkiKToKKwkJCXNlbGYuX2Rpc2Fzc2VtYmxlKCkKKwkJcmV0dXJuIHNlbGYuYXNzZW1ibHkKKwkKKwlkZWYgX2Fzc2VtYmxlKHNlbGYpOgorCQl4eHgKKwkKKwlkZWYgX2Rpc2Fzc2VtYmxlKHNlbGYpOgorCQlhc3NlbWJseSA9IFtdCisJCWkgPSAwCisJCWJ5dGVjb2RlID0gc2VsZi5ieXRlY29kZQorCQludW1CeXRlY29kZSA9IGxlbihieXRlY29kZSkKKwkJd2hpbGUgaSA8IG51bUJ5dGVjb2RlOgorCQkJb3AgPSBieXRlY29kZVtpXQorCQkJYXJnID0gMAorCQkJdHJ5OgorCQkJCW1uZW1vbmljLCBhcmdiaXRzLCBhcmdvZmZzZXQsIG5hbWUgPSBvcGNvZGVEaWN0W29wXQorCQkJZXhjZXB0IEtleUVycm9yOgorCQkJCXRyeToKKwkJCQkJbW5lbW9uaWMsIGFyZ2JpdHMsIGFyZ29mZnNldCwgbmFtZSA9IHN0cmVhbU9wY29kZURpY3Rbb3BdCisJCQkJZXhjZXB0IEtleUVycm9yOgorCQkJCQlyYWlzZSB0dF9pbnN0cnVjdGlvbnNfZXJyb3IsICJpbGxlZ2FsIG9wY29kZTogMHglLjJ4IiAlIG9wCisJCQkJcHVzaGJ5dGVzID0gcHVzaHdvcmRzID0gMAorCQkJCWlmIGFyZ2JpdHM6CisJCQkJCWlmIG1uZW1vbmljID09ICJQVVNIQiI6CisJCQkJCQlwdXNoYnl0ZXMgPSBvcCAtIGFyZ29mZnNldCArIDEKKwkJCQkJZWxzZToKKwkJCQkJCXB1c2h3b3JkcyA9IG9wIC0gYXJnb2Zmc2V0ICsgMQorCQkJCWVsc2U6CisJCQkJCWkgPSBpICsgMQorCQkJCQlpZiBtbmVtb25pYyA9PSAiTlBVU0hCIjoKKwkJCQkJCXB1c2hieXRlcyA9IGJ5dGVjb2RlW2ldCisJCQkJCWVsc2U6CisJCQkJCQlwdXNod29yZHMgPSBieXRlY29kZVtpXQorCQkJCWkgPSBpICsgMQorCQkJCWFzc2VtYmx5LmFwcGVuZChtbmVtb25pYyArICJbIF0iKQorCQkJCWZvciBqIGluIHJhbmdlKHB1c2hieXRlcyk6CisJCQkJCWFzc2VtYmx5LmFwcGVuZChgYnl0ZWNvZGVbaV1gKQorCQkJCQlpID0gaSArIDEKKwkJCQlmb3IgaiBpbiByYW5nZSgwLCBwdXNod29yZHMsIDIpOgorCQkJCQlhc3NlbWJseS5hcHBlbmQoYChieXRlY29kZVtpXSA8PCA4KSArIGJ5dGVjb2RlW2krMV1gKQorCQkJCQlpID0gaSArIDIKKwkJCWVsc2U6CisJCQkJaWYgYXJnYml0czoKKwkJCQkJYXNzZW1ibHkuYXBwZW5kKG1uZW1vbmljICsgIlslc10iICUgYml0UmVwcihvcCAtIGFyZ29mZnNldCwgYXJnYml0cykpCisJCQkJZWxzZToKKwkJCQkJYXNzZW1ibHkuYXBwZW5kKG1uZW1vbmljICsgIlsgXSIpCisJCQkJaSA9IGkgKyAxCisJCXNlbGYuYXNzZW1ibHkgPSBhc3NlbWJseQorCQlkZWwgc2VsZi5ieXRlY29kZQorCisKK2ZwZ20gPSAnQFwwMTQ3NiYlXDAzN1wwMjNcMDIyXDAxNVwwMTRcMDA1XDAwNFwwMDIsIFwyNjBcMDAzJUUjRSNhaFwyMTIgRWggXDIxMiNEYEQtLEtSWEVEXDAzMyEhWS0sICBFaEQgXDI2MFwwMDFgIEVcMjYwRnZoXDAzMFwyMTJFYEQtLFwyNjBcMDIyK1wyNjBcMDAyJUVcMjYwXDAwMiVFalwyNjBAXDIxM2BcMjYwXDAwMiUjRCEhIS0sXDI2MFwwMjMrXDI2MFwwMDIlRVwyNjBcMDAyJUVqXDI3MFwzNzdcMzAwXDIxNGBcMjYwXDAwMiUjRCEhIS0sXDI2MVwwMDBcMDAzJUVoVFhcMjYwXDAwMyVFXDI2MFwwMDMlRWBoIFwyNjBcMDA0JSNEXDI2MFwwMDQlI0RcMDMzXDI2MFwwMDMlIEVoIFwyMTIjRFwyNjBcMDAzJUVoYFwyNjBcMDAzJSNEWS0sXDI2MFwwMDMlIEVoIFwyMTIjRFwyNjBcMDAzJUVoYFwyNjBcMDAzJSNELSxLUlhFRFwwMzMhIVktLEYjRmBcMjEyXDIxMkYjIEZcMjEyYFwyMTJhXDI3MFwzNzdcMjAwYiMgXDAyMCNcMjEyXDI2MUtLXDIxMnBFYCBcMjYwXDAwMFBYXDI2MFwwMDFhXDI3MFwzNzdcMjcyXDIxM1wwMzNcMjYwRlwyMTRZXDI2MFwwMjBgaFwwMDE6LSwgRVwyNjBcMDAzJUZSWD9cMDMzIVwwMjFZLSxLUyNLUVpYIEVcMjEyYERcMDMzISFZLSxLUyNLUVpYOFwwMzMhIVktJworZ3BnbSA9ICdAXDAyMlwwMTFcMDAzXDIwN0BcMDA1XDIwMFwwMDRcMjA3XDAwMFwwMTBcMDA3XDIwMlwwMDFcMDEwXDAwNFwyMDJcMDAwXDAxMFwwMDBcMDIwXDMyMFwzNTVcMDIwXDMzNlwzNTVcMDAxXDAyMFwzMzZcMzc1XDAzMn1cMzM2XDAzMlwwMzBcMzc1XDMxNjEwJworCitwID0gUHJvZ3JhbSgpCitwLmZyb21CeXRlY29kZShmcGdtKQorZm9yIGxpbmUgaW4gcC5nZXRBc3NlbWJseSgpOgorCXByaW50IGxpbmUKKwpkaWZmIC0tZ2l0IGEvTGliL2ZvbnRUb29scy90dExpYi90ZXN0L3R0QnJvd3Nlci5weSBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGVzdC90dEJyb3dzZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM1NDM3NQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvdHRMaWIvdGVzdC90dEJyb3dzZXIucHkKQEAgLTAsMCArMSwzMzIgQEAKK2Zyb20gZm9udFRvb2xzIGltcG9ydCB0dExpYgorZnJvbSBmb250VG9vbHMudHRMaWIgaW1wb3J0IG1hY1V0aWxzCitpbXBvcnQgbWFjZnMKK2ltcG9ydCBQeUJyb3dzZXIKK2ltcG9ydCBXLCBMaXN0cworaW1wb3J0IG9zCitpbXBvcnQgQVRNCitpbXBvcnQgTnVtZXJpYworaW1wb3J0IFFkCitmcm9tIHJmLnZpZXdzLndHbHlwaExpc3QgaW1wb3J0IEdseXBoTGlzdAorCisKK2NsYXNzIFRhYmxlQnJvd3NlcjoKKwkKKwlkZWYgX19pbml0X18oc2VsZiwgcGF0aD1Ob25lLCB0dEZvbnQ9Tm9uZSwgcmVzX2luZGV4PU5vbmUpOgorCQlXLlNldEN1cnNvcignd2F0Y2gnKQorCQlpZiBwYXRoIGlzIE5vbmU6CisJCQlzZWxmLnR0Rm9udCA9IHR0Rm9udAorCQkJc2VsZi5maWxlbmFtZSA9ICI/Pz8/IgorCQllbHNlOgorCQkJc2VsZi50dEZvbnQgPSB0dExpYi5UVEZvbnQocGF0aCwgcmVzX2luZGV4KQorCQkJaWYgcmVzX2luZGV4IGlzIE5vbmU6CisJCQkJc2VsZi5maWxlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUocGF0aCkKKwkJCWVsc2U6CisJCQkJc2VsZi5maWxlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUocGF0aCkgKyAiIC0gIiArIHN0cihyZXNfaW5kZXgpCisJCXNlbGYuY3VycmVudGdseXBoID0gTm9uZQorCQlzZWxmLmdseXBocyA9IHt9CisJCXNlbGYuYnVpbGRpbnRlcmZhY2UoKQorCQorCWRlZiBidWlsZGludGVyZmFjZShzZWxmKToKKwkJYnV0dG9ud2lkdGggPSAxMjAKKwkJZ2x5cGhsaXN0d2lkdGggPSAxNTAKKwkJaG1hcmdpbiA9IDEwCisJCXZtYXJnaW4gPSA4CisJCXRpdGxlID0gc2VsZi5maWxlbmFtZQorCQl0YWJsZXMgPSBzZWxmLnR0Rm9udC5rZXlzKCkKKwkJdGFibGVzLnNvcnQoKQorCQlzZWxmLncgPSB3ID0gVy5XaW5kb3coKDUwMCwgMzAwKSwgdGl0bGUsIG1pbnNpemUgPSAoNDAwLCAyMDApKQorCQl3LmJyb3dzZXRhYmxlYnV0dG9uID0gVy5CdXR0b24oKGhtYXJnaW4sIDMyLCBidXR0b253aWR0aCwgMTYpLCAiQnJvd3NlIHRhYmxliiIsIAorCQkJCXNlbGYuYnJvd3NldGFibGUpCisJCXcuYnJvd3NlZm9udGJ1dHRvbiA9IFcuQnV0dG9uKChobWFyZ2luLCB2bWFyZ2luLCBidXR0b253aWR0aCwgMTYpLCAiQnJvd3NlIGZvbnSKIiwgCisJCQkJc2VsZi5icm93c2Vmb250KQorCQl3LnRhYmxlbGlzdCA9IFcuTGlzdCgoaG1hcmdpbiwgNTYsIGJ1dHRvbndpZHRoLCAtMTI4KSwgdGFibGVzLCBzZWxmLnRhYmxlbGlzdGhpdCkKKwkJCisJCXcuZGl2bGluZTEgPSBXLlZlcnRpY2FsTGluZSgoYnV0dG9ud2lkdGggKyAyICogaG1hcmdpbiwgdm1hcmdpbiwgMSwgLXZtYXJnaW4pKQorCQkKKwkJZ2xlZnQgPSBidXR0b253aWR0aCArIDMgKiBobWFyZ2luICsgMQorCQkKKwkJaGFzR2x5ZlRhYmxlID0gc2VsZi50dEZvbnQuaGFzX2tleSgnZ2x5ZicpCisJCQorCQlnbHlwaG5hbWVzID0gc2VsZi50dEZvbnQuZ2V0R2x5cGhOYW1lczIoKSAgIyBjYXNlbGVzc2x5IHNvcnRlZCBnbHlwaCBuYW1lcworCQkKKwkJaWYgaGFzR2x5ZlRhYmxlOgorCQkJdy5nbHlwaGxpc3QgPSBHbHlwaExpc3QoKGdsZWZ0LCA1NiwgZ2x5cGhsaXN0d2lkdGgsIC12bWFyZ2luKSwgCisJCQkJCWdseXBobmFtZXMsIHNlbGYuZ2x5cGhsaXN0aGl0KQorCQkJCisJCQl3LmRpdmxpbmUyID0gVy5WZXJ0aWNhbExpbmUoKGJ1dHRvbndpZHRoICsgZ2x5cGhsaXN0d2lkdGggKyA0ICogaG1hcmdpbiArIDIsIAorCQkJCQl2bWFyZ2luLCAxLCAtdm1hcmdpbikpCisJCQkKKwkJCXlNaW4gPSBzZWxmLnR0Rm9udFsnaGVhZCddLnlNaW4KKwkJCXlNYXggPSBzZWxmLnR0Rm9udFsnaGVhZCddLnlNYXgKKwkJCXcuZ3ZpZXdlciA9IEdseXBoVmlld2VyKChidXR0b253aWR0aCArIGdseXBobGlzdHdpZHRoICsgNSAqIGhtYXJnaW4gKyAzLCAKKwkJCQkJdm1hcmdpbiwgLWhtYXJnaW4sIC12bWFyZ2luKSwgeU1pbiwgeU1heCkKKwkJCQorCQkJdy5zaG93cG9pbnRzID0gVy5DaGVja0JveCgoZ2xlZnQsIHZtYXJnaW4sIGdseXBobGlzdHdpZHRoLCAxNiksICJTaG93IHBvaW50cyIsIAorCQkJCQlzZWxmLncuZ3ZpZXdlci50b2dnbGVzaG93cG9pbnRzKQorCQkJdy5zaG93cG9pbnRzLnNldChzZWxmLncuZ3ZpZXdlci5zaG93cG9pbnRzKQorCQkJdy5zaG93bGluZXMgPSBXLkNoZWNrQm94KChnbGVmdCwgdm1hcmdpbiArIDI0LCBnbHlwaGxpc3R3aWR0aCwgMTYpLCAiU2hvdyBsaW5lcyIsCisJCQkJCXNlbGYudy5ndmlld2VyLnRvZ2dsZXNob3dsaW5lcykKKwkJCXcuc2hvd2xpbmVzLnNldChzZWxmLncuZ3ZpZXdlci5zaG93bGluZXMpCisJCWVsc2U6CisJCQl3LmdseXBobGlzdCA9IEdseXBoTGlzdCgoZ2xlZnQsIDU2LCBnbHlwaGxpc3R3aWR0aCwgLXZtYXJnaW4pLCAKKwkJCQkJZ2x5cGhuYW1lcykKKwkJCXcubm9HbHlwaFRhYmxlID0gVy5UZXh0Qm94KChnbGVmdCwgdm1hcmdpbiwgLTIwLCAyMCksICJubyAnZ2x5ZicgdGFibGUgZm91bmQiKQorCQkKKwkJCisJCXcuc2V0ZGVmYXVsdGJ1dHRvbih3LmJyb3dzZXRhYmxlYnV0dG9uKQorCQkKKwkJdy50b2N1cnJlbnRmb250ID0gVy5CdXR0b24oKGhtYXJnaW4sIC0xMjAsIGJ1dHRvbndpZHRoLCAxNiksICJDb3B5IHRvIGN1cnJlbnQgZm9udCIsIHNlbGYuY29weXRvY3VycmVudGZvbnQpCisJCXcuZnJvbWN1cnJlbnRmb250ID0gVy5CdXR0b24oKGhtYXJnaW4sIC05NiwgYnV0dG9ud2lkdGgsIDE2KSwgIkNvcHkgZnJvbSBjdXJyZW50IGZvbnQiLCBzZWxmLmNvcHlmcm9tY3VycmVudGZvbnQpCisJCXcuc2F2ZWZsYXQgPSBXLkJ1dHRvbigoaG1hcmdpbiwgLTcyLCBidXR0b253aWR0aCwgMTYpLCAiU2F2ZSBhcyBmbGF0IGZpbGWKIiwgc2VsZi5zYXZlZmxhdCkKKwkJdy5zYXZlc3VpdGNhc2VidXR0b24gPSBXLkJ1dHRvbigoaG1hcmdpbiwgLTQ4LCBidXR0b253aWR0aCwgMTYpLCAiU2F2ZSBhcyBzdWl0Y2FzZYoiLCBzZWxmLnNhdmVzdWl0Y2FzZSkKKwkJdy5zYXZleG1sYnV0dG9uID0gVy5CdXR0b24oKGhtYXJnaW4sIC0yNCwgYnV0dG9ud2lkdGgsIDE2KSwgIlNhdmUgYXMgWE1MiiIsIHNlbGYuc2F2ZVhNTCkKKwkJCisJCXcub3BlbigpCisJCXcuYnJvd3NldGFibGVidXR0b24uZW5hYmxlKDApCisJCisJZGVmIGJyb3dzZXRhYmxlKHNlbGYpOgorCQlzZWxmLnRhYmxlbGlzdGhpdCgxKQorCQorCWRlZiBicm93c2Vmb250KHNlbGYpOgorCQlQeUJyb3dzZXIuQnJvd3NlcihzZWxmLnR0Rm9udCkKKwkKKwlkZWYgY29weXRvY3VycmVudGZvbnQoc2VsZik6CisJCXBhc3MKKwkJCisJZGVmIGNvcHlmcm9tY3VycmVudGZvbnQoc2VsZik6CisJCXBhc3MKKwkJCisJZGVmIHNhdmVmbGF0KHNlbGYpOgorCQlwYXRoID0gcHV0ZmlsZSgiU2F2ZSBmb250IGFzIGZsYXQgZmlsZToiLCBzZWxmLmZpbGVuYW1lLCAiLlRURiIpCisJCWlmIHBhdGg6CisJCQlXLlNldEN1cnNvcignd2F0Y2gnKQorCQkJc2VsZi50dEZvbnQuc2F2ZShwYXRoKQorCQorCWRlZiBzYXZlc3VpdGNhc2Uoc2VsZik6CisJCXBhdGggPSBwdXRmaWxlKCJTYXZlIGZvbnQgYXMgc3VpdGNhc2U6Iiwgc2VsZi5maWxlbmFtZSwgIi5zdWl0IikKKwkJaWYgcGF0aDoKKwkJCVcuU2V0Q3Vyc29yKCd3YXRjaCcpCisJCQlzZWxmLnR0Rm9udC5zYXZlKHBhdGgsIDEpCisJCisJZGVmIHNhdmVYTUwoc2VsZik6CisJCXBhdGggPSBwdXRmaWxlKCJTYXZlIGZvbnQgYXMgWE1MIHRleHQgZmlsZToiLCBzZWxmLmZpbGVuYW1lLCAiLnhtbCIpCisJCWlmIHBhdGg6CisJCQlXLlNldEN1cnNvcignd2F0Y2gnKQorCQkJcGIgPSBtYWNVdGlscy5Qcm9ncmVzc0JhcigiU2F2aW5nICVzIGFzIFhNTIoiICUgc2VsZi5maWxlbmFtZSkKKwkJCXRyeToKKwkJCQlzZWxmLnR0Rm9udC5zYXZlWE1MKHBhdGgsIHBiKQorCQkJZmluYWxseToKKwkJCQlwYi5jbG9zZSgpCisJCisJZGVmIGdseXBobGlzdGhpdChzZWxmLCBpc0RibCk6CisJCXNlbCA9IHNlbGYudy5nbHlwaGxpc3QuZ2V0c2VsZWN0ZWRvYmplY3RzKCkKKwkJaWYgbm90IHNlbCBvciBzZWxbMF0gPT0gc2VsZi5jdXJyZW50Z2x5cGg6CisJCQlyZXR1cm4KKwkJc2VsZi5jdXJyZW50Z2x5cGggPSBzZWxbMF0KKwkJaWYgc2VsZi5nbHlwaHMuaGFzX2tleShzZWxmLmN1cnJlbnRnbHlwaCk6CisJCQlnID0gc2VsZi5nbHlwaHNbc2VsZi5jdXJyZW50Z2x5cGhdCisJCWVsc2U6CisJCQlnID0gR2x5cGgoc2VsZi50dEZvbnQsIHNlbGYuY3VycmVudGdseXBoKQorCQkJc2VsZi5nbHlwaHNbc2VsZi5jdXJyZW50Z2x5cGhdID0gZworCQlzZWxmLncuZ3ZpZXdlci5zZXRnbHlwaChnKQorCQorCWRlZiB0YWJsZWxpc3RoaXQoc2VsZiwgaXNkYmwpOgorCQlpZiBpc2RibDoKKwkJCWZvciB0YWcgaW4gc2VsZi53LnRhYmxlbGlzdC5nZXRzZWxlY3RlZG9iamVjdHMoKToKKwkJCQl0YWJsZSA9IHNlbGYudHRGb250W3RhZ10KKwkJCQlpZiB0YWcgPT0gJ2dseWYnOgorCQkJCQlXLlNldEN1cnNvcignd2F0Y2gnKQorCQkJCQlmb3IgZ2x5cGhuYW1lIGluIHNlbGYudHRGb250LmdldEdseXBoT3JkZXIoKToKKwkJCQkJCXRyeToKKwkJCQkJCQlnbHlwaCA9IHRhYmxlW2dseXBobmFtZV0KKwkJCQkJCWV4Y2VwdCBLZXlFcnJvcjoKKwkJCQkJCQlwYXNzICMgaW5jb21wbGV0ZSBmb250LCBvaCB3ZWxsLgorCQkJCVB5QnJvd3Nlci5Ccm93c2VyKHRhYmxlKQorCQllbHNlOgorCQkJc2VsID0gc2VsZi53LnRhYmxlbGlzdC5nZXRzZWxlY3Rpb24oKQorCQkJaWYgc2VsOgorCQkJCXNlbGYudy5icm93c2V0YWJsZWJ1dHRvbi5lbmFibGUoMSkKKwkJCWVsc2U6CisJCQkJc2VsZi53LmJyb3dzZXRhYmxlYnV0dG9uLmVuYWJsZSgwKQorCisKK2NsYXNzIEdseXBoOgorCQorCWRlZiBfX2luaXRfXyhzZWxmLCB0dEZvbnQsIGdseXBoTmFtZSk6CisJCXR0Z2x5cGggPSB0dEZvbnRbJ2dseWYnXVtnbHlwaE5hbWVdCisJCXNlbGYuaXNjb21wb3NpdGUgPSB0dGdseXBoLm51bWJlck9mQ29udG91cnMgPT0gLTEKKwkJc2VsZi53aWR0aCwgc2VsZi5sc2IgPSB0dEZvbnRbJ2htdHgnXVtnbHlwaE5hbWVdCisJCWlmIHR0Z2x5cGgubnVtYmVyT2ZDb250b3VycyA9PSAwOgorCQkJc2VsZi54TWluID0gMAorCQkJc2VsZi5jb250b3VycyA9IFtdCisJCQlyZXR1cm4KKwkJc2VsZi54TWluID0gdHRnbHlwaC54TWluCisJCWNvb3JkaW5hdGVzLCBlbmRQdHMsIGZsYWdzID0gdHRnbHlwaC5nZXRDb29yZGluYXRlcyh0dEZvbnRbJ2dseWYnXSkKKwkJc2VsZi5jb250b3VycyA9IFtdCisJCXNlbGYuZmxhZ3MgPSBbXQorCQlzdGFydHB0ID0gMAorCQlmb3IgZW5kcHQgaW4gZW5kUHRzOgorCQkJc2VsZi5jb250b3Vycy5hcHBlbmQoTnVtZXJpYy5hcnJheShjb29yZGluYXRlc1tzdGFydHB0OmVuZHB0KzFdKSkKKwkJCXNlbGYuZmxhZ3MuYXBwZW5kKGZsYWdzW3N0YXJ0cHQ6ZW5kcHQrMV0pCisJCQlzdGFydHB0ID0gZW5kcHQgKyAxCisJCisJZGVmIGdldGNvbnRvdXJzKHNlbGYsIHNjYWxlLCBtb3ZlKToKKwkJY29udG91cnMgPSBbXQorCQlmb3IgaSBpbiByYW5nZShsZW4oc2VsZi5jb250b3VycykpOgorCQkJY29udG91cnMuYXBwZW5kKChzZWxmLmNvbnRvdXJzW2ldICogTnVtZXJpYy5hcnJheShzY2FsZSkgKyBtb3ZlKSwgc2VsZi5mbGFnc1tpXSkKKwkJcmV0dXJuIGNvbnRvdXJzCisKKworY2xhc3MgR2x5cGhWaWV3ZXIoVy5XaWRnZXQpOgorCQorCWRlZiBfX2luaXRfXyhzZWxmLCBwb3NzaXplLCB5TWluLCB5TWF4KToKKwkJVy5XaWRnZXQuX19pbml0X18oc2VsZiwgcG9zc2l6ZSkKKwkJc2VsZi5nbHlwaCA9IE5vbmUKKwkJZXh0cmEgPSAwLjAyICogKHlNYXgteU1pbikKKwkJc2VsZi55TWluLCBzZWxmLnlNYXggPSB5TWluIC0gZXh0cmEsIHlNYXggKyBleHRyYQorCQlzZWxmLnNob3dwb2ludHMgPSAxCisJCXNlbGYuc2hvd2xpbmVzID0gMQorCQorCWRlZiB0b2dnbGVzaG93cG9pbnRzKHNlbGYsIG9ub2ZmKToKKwkJc2VsZi5zaG93cG9pbnRzID0gb25vZmYKKwkJc2VsZi5TZXRQb3J0KCkKKwkJc2VsZi5kcmF3KCkKKwkKKwlkZWYgdG9nZ2xlc2hvd2xpbmVzKHNlbGYsIG9ub2ZmKToKKwkJc2VsZi5zaG93bGluZXMgPSBvbm9mZgorCQlzZWxmLlNldFBvcnQoKQorCQlzZWxmLmRyYXcoKQorCQorCWRlZiBzZXRnbHlwaChzZWxmLCBnbHlwaCk6CisJCXNlbGYuZ2x5cGggPSBnbHlwaAorCQlzZWxmLlNldFBvcnQoKQorCQlzZWxmLmRyYXcoKQorCQkKKwlkZWYgZHJhdyhzZWxmLCB2aXNSZ249Tm9uZSk6CisJCSMgVGhpcyBhIEhFTEwgb2YgYSByb3V0aW5lLCBidXQgaXQncyBwcmV0dHkgZGFtbiBmYXN0Li4uCisJCWltcG9ydCBRZAorCQlpZiBub3Qgc2VsZi5fdmlzaWJsZToKKwkJCXJldHVybgorCQlRZC5FcmFzZVJlY3QoUWQuSW5zZXRSZWN0KHNlbGYuX2JvdW5kcywgMSwgMSkpCisJCWNsaXByZ24gPSBRZC5OZXdSZ24oKQorCQlzYXZlcmduID0gUWQuTmV3UmduKCkKKwkJUWQuUmVjdFJnbihjbGlwcmduLCBzZWxmLl9ib3VuZHMpCisJCVFkLkdldENsaXAoc2F2ZXJnbikKKwkJUWQuU2V0Q2xpcChjbGlwcmduKQorCQl0cnk6CisJCQlpZiBzZWxmLmdseXBoOgorCQkJCWwsIHQsIHIsIGIgPSBRZC5JbnNldFJlY3Qoc2VsZi5fYm91bmRzLCAxLCAxKQorCQkJCWhlaWdodCA9IGIgLSB0CisJCQkJc2NhbGUgPSBmbG9hdChoZWlnaHQpIC8gKHNlbGYueU1heCAtIHNlbGYueU1pbikKKwkJCQl0b3BvZmZzZXQgPSB0ICsgc2NhbGUgKiBzZWxmLnlNYXgKKwkJCQl3aWR0aCA9IHNjYWxlICogc2VsZi5nbHlwaC53aWR0aAorCQkJCWxzYiA9IHNjYWxlICogc2VsZi5nbHlwaC5sc2IKKwkJCQl4TWluID0gc2NhbGUgKiBzZWxmLmdseXBoLnhNaW4KKwkJCQkjIFhYWFggdGhpcyBpcyBub3QgY29ycmVjdCB3aGVuIFVTRV9NWV9NRVRSSUNTIGlzIHNldCBpbiBjb21wb25lbnQhCisJCQkJbGVmdG9mZnNldCA9IGwgKyAwLjUgKiAociAtIGwgLSB3aWR0aCkKKwkJCQlnbGVmdG9mZnNldCA9IGxlZnRvZmZzZXQgLSB4TWluICsgbHNiCisJCQkJaWYgc2VsZi5zaG93bGluZXM6CisJCQkJCVFkLlJHQkZvcmVDb2xvcigoMHhhZmZmLCAweGFmZmYsIDB4YWZmZikpCisJCQkJCSMgbGVmdCBzaWRlYmVhcmluZworCQkJCQlRZC5Nb3ZlVG8obGVmdG9mZnNldCwgdCkKKwkJCQkJUWQuTGluZVRvKGxlZnRvZmZzZXQsIGIgLSAxKQorCQkJCQkjIHJpZ2h0IHNpZGViZWFyaW5nCisJCQkJCVFkLk1vdmVUbyhsZWZ0b2Zmc2V0ICsgd2lkdGgsIHQpCisJCQkJCVFkLkxpbmVUbyhsZWZ0b2Zmc2V0ICsgd2lkdGgsIGIgLSAxKQorCQkJCQkjIGJhc2VsaW5lCisJCQkJCVFkLk1vdmVUbyhsLCB0b3BvZmZzZXQpCisJCQkJCVFkLkxpbmVUbyhyIC0gMSwgdG9wb2Zmc2V0KQorCQkJCQkKKwkJCQkJIyBvcmlnaW4KKwkJCQkJUWQuUkdCRm9yZUNvbG9yKCgweDVmZmYsIDAsIDApKQorCQkJCQlRZC5Nb3ZlVG8oZ2xlZnRvZmZzZXQsIHRvcG9mZnNldCAtIDE2KQorCQkJCQlRZC5MaW5lVG8oZ2xlZnRvZmZzZXQsIHRvcG9mZnNldCArIDE2KQorCQkJCQkjIHJlc2V0IGNvbG9yCisJCQkJCVFkLlJHQkZvcmVDb2xvcigoMCwgMCwgMCkpCisJCQkJCisJCQkJaWYgc2VsZi5nbHlwaC5pc2NvbXBvc2l0ZToKKwkJCQkJUWQuUkdCRm9yZUNvbG9yKCgweDdmZmYsIDB4N2ZmZiwgMHg3ZmZmKSkKKwkJCQkKKwkJCQlBVE0uc3RhcnRGaWxsQVRNKCkKKwkJCQljb250b3VycyA9IHNlbGYuZ2x5cGguZ2V0Y29udG91cnMoKHNjYWxlLCAtc2NhbGUpLCAoZ2xlZnRvZmZzZXQsIHRvcG9mZnNldCkpCisJCQkJZm9yIGNvbnRvdXIsIGZsYWdzIGluIGNvbnRvdXJzOgorCQkJCQljdXJyZW50cG9pbnQgPSBOb25lCisJCQkJCWRvbmVfbW92ZXRvID0gMAorCQkJCQlpID0gMAorCQkJCQluUG9pbnRzID0gbGVuKGNvbnRvdXIpCisJCQkJCXdoaWxlIGkgPCBuUG9pbnRzOgorCQkJCQkJcHQgPSBjb250b3VyW2ldCisJCQkJCQlpZiBmbGFnc1tpXToKKwkJCQkJCQkjIG9uQ3VydmUKKwkJCQkJCQljdXJyZW50cG9pbnQgPSBsaW5ldG8ocHQsIGRvbmVfbW92ZXRvKQorCQkJCQkJZWxzZToKKwkJCQkJCQlpZiBub3QgY3VycmVudHBvaW50OgorCQkJCQkJCQlpZiBub3QgZmxhZ3NbaS0xXToKKwkJCQkJCQkJCWN1cnJlbnRwb2ludCA9IDAuNSAqIChjb250b3VyW2ktMV0gKyBwdCkKKwkJCQkJCQkJZWxzZToKKwkJCQkJCQkJCWN1cnJlbnRwb2ludCA9IGNvbnRvdXJbaS0xXQorCQkJCQkJCWlmIG5vdCBmbGFnc1soaSsxKSAlIG5Qb2ludHNdOgorCQkJCQkJCQllbmRQdCA9IDAuNSAqIChwdCArIGNvbnRvdXJbKGkrMSkgJSBuUG9pbnRzXSkKKwkJCQkJCQllbHNlOgorCQkJCQkJCQllbmRQdCA9IGNvbnRvdXJbKGkrMSkgJSBuUG9pbnRzXQorCQkJCQkJCQlpID0gaSArIDEKKwkJCQkJCQkjIG9mZkN1cnZlCisJCQkJCQkJY3VycmVudHBvaW50ID0gcWN1cnZldG8oY3VycmVudHBvaW50LCAKKwkJCQkJCQkJCXB0LCBlbmRQdCwgZG9uZV9tb3ZldG8pCisJCQkJCQlkb25lX21vdmV0byA9IDEKKwkJCQkJCWkgPSBpICsgMQorCQkJCQlBVE0uZmlsbENsb3NlUGF0aEFUTSgpCisJCQkJQVRNLmVuZEZpbGxBVE0oKQorCQkJCSMgZHJhdyBwb2ludCBtYXJrZXJzCisJCQkJaWYgc2VsZi5zaG93cG9pbnRzOgorCQkJCQlmb3IgY29udG91ciwgZmxhZ3MgaW4gY29udG91cnM6CisJCQkJCQlRZC5SR0JGb3JlQ29sb3IoKDAsIDB4ZmZmZiwgMCkpCisJCQkJCQlmb3IgaSBpbiByYW5nZShsZW4oY29udG91cikpOgorCQkJCQkJCSh4LCB5KSA9IGNvbnRvdXJbaV0KKwkJCQkJCQlvbkN1cnZlID0gZmxhZ3NbaV0gJiAweDEKKwkJCQkJCQlpZiBvbkN1cnZlOgorCQkJCQkJCQlRZC5QYWludFJlY3QoUWQuSW5zZXRSZWN0KCh4LCB5LCB4LCB5KSwgLTIsIC0yKSkKKwkJCQkJCQllbHNlOgorCQkJCQkJCQlRZC5QYWludE92YWwoUWQuSW5zZXRSZWN0KCh4LCB5LCB4LCB5KSwgLTIsIC0yKSkKKwkJCQkJCQlRZC5SR0JGb3JlQ29sb3IoKDB4ZmZmZiwgMCwgMCkpCisJCQkJCQlRZC5SR0JGb3JlQ29sb3IoKDAsIDAsIDApKQorCQkJUWQuRnJhbWVSZWN0KHNlbGYuX2JvdW5kcykKKwkJZmluYWxseToKKwkJCVFkLlNldENsaXAoc2F2ZXJnbikKKwkJCVFkLkRpc3Bvc2VSZ24oY2xpcHJnbikKKwkJCVFkLkRpc3Bvc2VSZ24oc2F2ZXJnbikKKworCitleHRlbnNpb25zID0gWyIuc3VpdCIsICIueG1sIiwgIi5UVEYiLCAiLnR0ZiJdCisKK2RlZiBwdXRmaWxlKHByb21wdCwgZmlsZW5hbWUsIG5ld2V4dGVuc2lvbik6CisJZm9yIGV4dCBpbiBleHRlbnNpb25zOgorCQlpZiBmaWxlbmFtZVstbGVuKGV4dCk6XSA9PSBleHQ6CisJCQlmaWxlbmFtZSA9IGZpbGVuYW1lWzotbGVuKGV4dCldICsgbmV3ZXh0ZW5zaW9uCisJCQlicmVhaworCWVsc2U6CisJCWZpbGVuYW1lID0gZmlsZW5hbWUgKyBuZXdleHRlbnNpb24KKwlmc3MsIG9rID0gbWFjZnMuU3RhbmRhcmRQdXRGaWxlKHByb21wdCwgZmlsZW5hbWUpCisJaWYgb2s6CisJCXJldHVybiBmc3MuYXNfcGF0aG5hbWUoKQorCisKK2RlZiBsaW5ldG8ocHQsIGRvbmVfbW92ZXRvKToKKwl4LCB5ID0gcHQKKwlpZiBkb25lX21vdmV0bzoKKwkJQVRNLmZpbGxMaW5lVG9BVE0oKHgsIHkpKQorCWVsc2U6CisJCUFUTS5maWxsTW92ZVRvQVRNKCh4LCB5KSkKKwlyZXR1cm4gcHQKKworZGVmIHFjdXJ2ZXRvKHB0MCwgcHQxLCBwdDIsIGRvbmVfbW92ZXRvKToKKwlpZiBub3QgZG9uZV9tb3ZldG86CisJCXgwLCB5MCA9IHB0MAorCQlBVE0uZmlsbE1vdmVUb0FUTSgoeDAsIHkwKSkKKwl4MWEsIHkxYSA9IHB0MCArIDAuNjY2NjY2NjY2NjY2NyAqIChwdDEgLSBwdDApCisJeDFiLCB5MWIgPSBwdDIgKyAwLjY2NjY2NjY2NjY2NjcgKiAocHQxIC0gcHQyKQorCXgyLCB5MiA9IHB0MgorCUFUTS5maWxsQ3VydmVUb0FUTSgoeDFhLCB5MWEpLCAoeDFiLCB5MWIpLCAoeDIsIHkyKSkKKwlyZXR1cm4gcHQyCisKZGlmZiAtLWdpdCBhL0xpYi9mb250VG9vbHMvdHRMaWIveG1sSW1wb3J0LnB5IGIvTGliL2ZvbnRUb29scy90dExpYi94bWxJbXBvcnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJkM2I0MgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvdHRMaWIveG1sSW1wb3J0LnB5CkBAIC0wLDAgKzEsMTk2IEBACitmcm9tIGZvbnRUb29scyBpbXBvcnQgdHRMaWIKK2Zyb20gZm9udFRvb2xzLm1pc2MudGV4dFRvb2xzIGltcG9ydCBzYWZlRXZhbAoraW1wb3J0IHR5cGVzCitpbXBvcnQgc3RyaW5nCitpbXBvcnQgTnVtZXJpYywgYXJyYXkKK2Zyb20geG1sLnBhcnNlcnMueG1scHJvYyBpbXBvcnQgeG1scHJvYworCisKK3htbGVycm9yID0gInhtbGVycm9yIgoreG1sX3BhcnNlX2Vycm9yID0gIlhNTCBwYXJzZSBlcnJvciIKKworCitjbGFzcyBVbmljb2RlU3RyaW5nOgorCQorCWRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6CisJCWlmIGlzaW5zdGFuY2UodmFsdWUsIFVuaWNvZGVTdHJpbmcpOgorCQkJc2VsZi52YWx1ZSA9IHZhbHVlLnZhbHVlCisJCWVsc2U6CisJCQlpZiB0eXBlKHZhbHVlKSA9PSB0eXBlcy5TdHJpbmdUeXBlOgorCQkJCSMgU2luY2UgTnVtZXJpYyBpbnRlcnByZXRzIGNoYXIgY29kZXMgYXMgKnNpZ25lZCosCisJCQkJIyB3ZSBmZWVkIGl0IHRocm91Z2ggdGhlIGFycmF5IG1vZHVsZS4KKwkJCQl2YWx1ZSA9IGFycmF5LmFycmF5KCJCIiwgdmFsdWUpCisJCQlzZWxmLnZhbHVlID0gTnVtZXJpYy5hcnJheSh2YWx1ZSwgTnVtZXJpYy5JbnQxNikKKwkKKwlkZWYgX19sZW5fXyhzZWxmKToKKwkJcmV0dXJuIGxlbihzZWxmLnZhbHVlKQorCQorCSNkZWYgX19oYXNoX18oc2VsZik6CisJIwlyZXR1cm4gaGFzaChzZWxmLnZhbHVlLnRvc3RyaW5nKCkpCisJIworCSNkZWYgX19jbXBfXyhzZWxmLCBvdGhlcik6CisJIwlpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgVW5pY29kZVN0cmluZyk6CisJIwkJcmV0dXJuIDEKKwkjCWVsc2U6CisJIwkJcmV0dXJuIG5vdCBOdW1lcmljLmFsbHRydWUoCisJIwkJCQlOdW1lcmljLmVxdWFsKHNlbGYudmFsdWUsIG90aGVyLnZhbHVlKSkKKwkKKwlkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CisJCWlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBVbmljb2RlU3RyaW5nKToKKwkJCW90aGVyID0gc2VsZi5fX2NsYXNzX18ob3RoZXIpCisJCXJldHVybiBzZWxmLl9fY2xhc3NfXyhOdW1lcmljLmNvbmNhdGVuYXRlKChzZWxmLnZhbHVlLCBvdGhlci52YWx1ZSkpKQorCQorCWRlZiBfX3JhZGRfXyhzZWxmLCBvdGhlcik6CisJCWlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBVbmljb2RlU3RyaW5nKToKKwkJCW90aGVyID0gc2VsZi5fX2NsYXNzX18ob3RoZXIpCisJCXJldHVybiBzZWxmLl9fY2xhc3NfXyhOdW1lcmljLmNvbmNhdGVuYXRlKChvdGhlci52YWx1ZSwgc2VsZi52YWx1ZSkpKQorCQorCWRlZiBfX2dldHNsaWNlX18oc2VsZiwgaSwgaik6CisJCXJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLnZhbHVlW2k6al0pCisJCisJZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOgorCQlyZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi52YWx1ZVtpOmkrMV0pCisJCisJZGVmIHRvc3RyaW5nKHNlbGYpOgorCQl2YWx1ZSA9IHNlbGYudmFsdWUKKwkJaWYgdHRMaWIuZW5kaWFuIDw+ICJiaWciOgorCQkJdmFsdWUgPSB2YWx1ZS5ieXRlc3dhcHBlZCgpCisJCXJldHVybiB2YWx1ZS50b3N0cmluZygpCisJCisJZGVmIHN0cmlwcGVkKHNlbGYpOgorCQl2YWx1ZSA9IHNlbGYudmFsdWUKKwkJaSA9IDAKKwkJZm9yIGkgaW4gcmFuZ2UobGVuKHZhbHVlKSk6CisJCQlpZiB2YWx1ZVtpXSBub3QgaW4gKDB4YSwgMHhkLCAweDksIDB4MjApOgorCQkJCWJyZWFrCisJCXZhbHVlID0gdmFsdWVbaTpdCisJCWkgPSAwCisJCWZvciBpIGluIHJhbmdlKGxlbih2YWx1ZSktMSwgLTEsIC0xKToKKwkJCWlmIHZhbHVlW2ldIG5vdCBpbiAoMHhhLCAweGQsIDB4OSwgMHgyMCk6CisJCQkJYnJlYWsKKwkJdmFsdWUgPSB2YWx1ZVs6aSsxXQorCQlyZXR1cm4gc2VsZi5fX2NsYXNzX18odmFsdWUpCisJCisJZGVmIF9fcmVwcl9fKHNlbGYpOgorCQlyZXR1cm4gIjwlcyAlcyBhdCAleD4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBgc2VsZi52YWx1ZS50b3N0cmluZygpYCwgaWQoc2VsZikpCisKKworY2xhc3MgVW5pY29kZVByb2Nlc3Nvcih4bWxwcm9jLlhNTFByb2Nlc3Nvcik6CisJCisJZGVmIHBhcnNlX2NoYXJyZWYoc2VsZik6CisJCSJQYXJzZXMgYSBjaGFyYWN0ZXIgcmVmZXJlbmNlLiIKKwkJCisJCWlmIHNlbGYubm93X2F0KCJ4Iik6CisJCQlkaWdzPXVuaGV4KHNlbGYuZ2V0X21hdGNoKHhtbHByb2MucmVnX2hleF9kaWdpdHMpKQorCQllbHNlOgorCQkJdHJ5OgorCQkJCWRpZ3M9c3RyaW5nLmF0b2koc2VsZi5nZXRfbWF0Y2goeG1scHJvYy5yZWdfZGlnaXRzKSkKKwkJCWV4Y2VwdCBWYWx1ZUVycm9yLGU6CisJCQkJc2VsZi5yZXBvcnRfZXJyb3IoMzAyNykKKwkJCQlkaWdzPU5vbmUKKwkJaWYgZGlncyA9PSAxNjk6CisJCQlwYXNzCisJCWlmIG5vdCBzZWxmLm5vd19hdCgiOyIpOiBzZWxmLnJlcG9ydF9lcnJvcigzMDA1LCI7IikKKwkJaWYgZGlncz09Tm9uZTogcmV0dXJuCisJCQorCQlpZiBub3QgKGRpZ3M9PTkgb3IgZGlncz09MTAgb3IgZGlncz09MTMgb3IgXAorCQkJCShkaWdzPj0zMiBhbmQgZGlnczw9MjU1KSk6CisJCQlpZiBkaWdzPjI1NToKKwkJCQlzZWxmLmFwcC5oYW5kbGVfZGF0YShVbmljb2RlU3RyaW5nKFtkaWdzXSksMCwxKQorCQkJZWxzZToKKwkJCQkjIGhybSwgSSBuZWVkIHRvIGxldCBzb21lIG51bGwgYnl0ZXMgZ28gdGhyb3VnaC4uLgorCQkJCXNlbGYuYXBwLmhhbmRsZV9kYXRhKGNocihkaWdzKSwwLDEpCisJCQkJI3NlbGYucmVwb3J0X2Vycm9yKDMwMTgsZGlncykKKwkJZWxzZToKKwkJCWlmIHNlbGYuc3RhY2s9PVtdOgorCQkJCXNlbGYucmVwb3J0X2Vycm9yKDMwMjgpCisJCQlzZWxmLmFwcC5oYW5kbGVfZGF0YShjaHIoZGlncyksMCwxKQorCisKK2NsYXNzIFhNTEVycm9ySGFuZGxlcih4bWxwcm9jLkVycm9ySGFuZGxlcik6CisJCisJZGVmIGZhdGFsKHNlbGYsIG1zZyk6CisJCSJIYW5kbGVzIGEgZmF0YWwgZXJyb3IgbWVzc2FnZS4iCisJCSMgd2UgZG9uJ3Qgd2FudCBubyBzdGlua2luJyBzeXMuZXhpdCgxKQorCQlyYWlzZSB4bWxfcGFyc2VfZXJyb3IsIG1zZworCisKK2NsYXNzIFhNTEFwcGxpY2F0aW9uKHhtbHByb2MuQXBwbGljYXRpb24pOgorCQorCWRlZiBfX2luaXRfXyhzZWxmLCB0dEZvbnQsIHByb2dyZXNzPU5vbmUpOgorCQlzZWxmLnR0Rm9udCA9IHR0Rm9udAorCQlzZWxmLnByb2dyZXNzID0gcHJvZ3Jlc3MKKwkJc2VsZi5yb290ID0gTm9uZQorCQlzZWxmLmNvbnRlbnRfc3RhY2sgPSBbXQorCQlzZWxmLmxhc3Rwb3MgPSAwCisJCisJZGVmIGhhbmRsZV9zdGFydF90YWcoc2VsZiwgbmFtZSwgYXR0cnMpOgorCQlpZiBzZWxmLnByb2dyZXNzOgorCQkJcG9zID0gc2VsZi5sb2NhdG9yLnBvcyArIHNlbGYubG9jYXRvci5ibG9ja19vZmZzZXQKKwkJCWlmIChwb3MgLSBzZWxmLmxhc3Rwb3MpID4gNDAwMDoKKwkJCQlzZWxmLnByb2dyZXNzLnNldChwb3MgLyAxMDApCisJCQkJc2VsZi5sYXN0cG9zID0gcG9zCisJCXN0YWNrID0gc2VsZi5sb2NhdG9yLnN0YWNrCisJCXN0YWNrc2l6ZSA9IGxlbihzdGFjaykKKwkJaWYgbm90IHN0YWNrc2l6ZToKKwkJCWlmIG5hbWUgPD4gInR0Rm9udCI6CisJCQkJcmFpc2UgeG1sX3BhcnNlX2Vycm9yLCAiaWxsZWdhbCByb290IHRhZzogJXMiICUgbmFtZQorCQkJc2ZudFZlcnNpb24gPSBhdHRycy5nZXQoInNmbnRWZXJzaW9uIiwgIlwwMDBcMDAxXDAwMFwwMDAiKQorCQkJaWYgbGVuKHNmbnRWZXJzaW9uKSA8PiA0OgorCQkJCXNmbnRWZXJzaW9uID0gc2FmZUV2YWwoJyInICsgc2ZudFZlcnNpb24gKyAnIicpCisJCQlzZWxmLnR0Rm9udC5zZm50VmVyc2lvbiA9IHNmbnRWZXJzaW9uCisJCQlzZWxmLmNvbnRlbnRfc3RhY2suYXBwZW5kKFtdKQorCQllbGlmIHN0YWNrc2l6ZSA9PSAxOgorCQkJbXNnID0gIlBhcnNpbmcgJyVzJyB0YWJsZS4uLiIgJSB0dExpYi54bWx0YWcydGFnKG5hbWUpCisJCQlpZiBzZWxmLnByb2dyZXNzOgorCQkJCXNlbGYucHJvZ3Jlc3Muc2V0bGFiZWwobXNnKQorCQkJZWxpZiBzZWxmLnR0Rm9udC52ZXJib3NlOgorCQkJCXR0TGliLmRlYnVnbXNnKG1zZykKKwkJCWVsc2U6CisJCQkJcHJpbnQgbXNnCisJCQl0YWcgPSB0dExpYi54bWx0YWcydGFnKG5hbWUpCisJCQl0YWJsZWNsYXNzID0gdHRMaWIuZ2V0VGFibGVDbGFzcyh0YWcpCisJCQlpZiB0YWJsZWNsYXNzIGlzIE5vbmU6CisJCQkJZnJvbSBmb250VG9vbHMudHRMaWIudGFibGVzLkRlZmF1bHRUYWJsZSBpbXBvcnQgRGVmYXVsdFRhYmxlCisJCQkJdGFibGVjbGFzcyA9IERlZmF1bHRUYWJsZQorCQkJc2VsZi5jdXJyZW50X3RhYmxlID0gdGFibGVjbGFzcyh0YWcpCisJCQlzZWxmLnR0Rm9udFt0YWddID0gc2VsZi5jdXJyZW50X3RhYmxlCisJCQlzZWxmLmNvbnRlbnRfc3RhY2suYXBwZW5kKFtdKQorCQllbGlmIHN0YWNrc2l6ZSA9PSAyOgorCQkJc2VsZi5jb250ZW50X3N0YWNrLmFwcGVuZChbXSkKKwkJCXNlbGYucm9vdCA9IChuYW1lLCBhdHRycywgc2VsZi5jb250ZW50X3N0YWNrWy0xXSkKKwkJZWxzZToKKwkJCWxpc3QgPSBbXQorCQkJc2VsZi5jb250ZW50X3N0YWNrWy0xXS5hcHBlbmQobmFtZSwgYXR0cnMsIGxpc3QpCisJCQlzZWxmLmNvbnRlbnRfc3RhY2suYXBwZW5kKGxpc3QpCisJCisJZGVmIGhhbmRsZV9kYXRhKHNlbGYsIGRhdGEsIHN0YXJ0LCBlbmQpOgorCQlpZiBsZW4oc2VsZi5sb2NhdG9yLnN0YWNrKSA+IDE6CisJCQlzZWxmLmNvbnRlbnRfc3RhY2tbLTFdLmFwcGVuZChkYXRhW3N0YXJ0OmVuZF0pCisJCisJZGVmIGhhbmRsZV9lbmRfdGFnKHNlbGYsIG5hbWUpOgorCQlkZWwgc2VsZi5jb250ZW50X3N0YWNrWy0xXQorCQlzdGFjayA9IHNlbGYubG9jYXRvci5zdGFjaworCQlzdGFja3NpemUgPSBsZW4oc3RhY2spCisJCWlmIHN0YWNrc2l6ZSA9PSAxOgorCQkJc2VsZi5yb290ID0gTm9uZQorCQllbGlmIHN0YWNrc2l6ZSA9PSAyOgorCQkJc2VsZi5jdXJyZW50X3RhYmxlLmZyb21YTUwoc2VsZi5yb290LCBzZWxmLnR0Rm9udCkKKwkJCXNlbGYucm9vdCA9IE5vbmUKKworCitjbGFzcyBQcm9ncmVzc1ByaW50ZXI6CisJCisJZGVmIF9faW5pdF9fKHNlbGYsIHRpdGxlLCBtYXh2YWw9MTAwKToKKwkJcHJpbnQgdGl0bGUKKwkKKwlkZWYgc2V0KHNlbGYsIHZhbCwgbWF4dmFsPU5vbmUpOgorCQlwYXNzCisJCisJZGVmIGluY3JlbWVudChzZWxmLCB2YWw9MSk6CisJCXBhc3MKKwkKKwlkZWYgc2V0bGFiZWwoc2VsZiwgdGV4dCk6CisJCXByaW50IHRleHQKKworCmRpZmYgLS1naXQgYS9MaWIvZm9udFRvb2xzL3VuaWNvZGUucHkgYi9MaWIvZm9udFRvb2xzL3VuaWNvZGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM2YmEwYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9mb250VG9vbHMvdW5pY29kZS5weQpAQCAtMCwwICsxLDY2NDYgQEAKKyIiIlVuaWNvZGUgdmVyc2lvbiAyLjEuMiIiIgorCitfdW5pY29kZSA9ICIiIlwKKzAwMDAJPGNvbnRyb2w+CiswMDAxCTxjb250cm9sPgorMDAwMgk8Y29udHJvbD4KKzAwMDMJPGNvbnRyb2w+CiswMDA0CTxjb250cm9sPgorMDAwNQk8Y29udHJvbD4KKzAwMDYJPGNvbnRyb2w+CiswMDA3CTxjb250cm9sPgorMDAwOAk8Y29udHJvbD4KKzAwMDkJPGNvbnRyb2w+CiswMDBBCTxjb250cm9sPgorMDAwQgk8Y29udHJvbD4KKzAwMEMJPGNvbnRyb2w+CiswMDBECTxjb250cm9sPgorMDAwRQk8Y29udHJvbD4KKzAwMEYJPGNvbnRyb2w+CiswMDEwCTxjb250cm9sPgorMDAxMQk8Y29udHJvbD4KKzAwMTIJPGNvbnRyb2w+CiswMDEzCTxjb250cm9sPgorMDAxNAk8Y29udHJvbD4KKzAwMTUJPGNvbnRyb2w+CiswMDE2CTxjb250cm9sPgorMDAxNwk8Y29udHJvbD4KKzAwMTgJPGNvbnRyb2w+CiswMDE5CTxjb250cm9sPgorMDAxQQk8Y29udHJvbD4KKzAwMUIJPGNvbnRyb2w+CiswMDFDCTxjb250cm9sPgorMDAxRAk8Y29udHJvbD4KKzAwMUUJPGNvbnRyb2w+CiswMDFGCTxjb250cm9sPgorMDAyMAlTUEFDRQorMDAyMQlFWENMQU1BVElPTiBNQVJLCiswMDIyCVFVT1RBVElPTiBNQVJLCiswMDIzCU5VTUJFUiBTSUdOCiswMDI0CURPTExBUiBTSUdOCiswMDI1CVBFUkNFTlQgU0lHTgorMDAyNglBTVBFUlNBTkQKKzAwMjcJQVBPU1RST1BIRQorMDAyOAlMRUZUIFBBUkVOVEhFU0lTCiswMDI5CVJJR0hUIFBBUkVOVEhFU0lTCiswMDJBCUFTVEVSSVNLCiswMDJCCVBMVVMgU0lHTgorMDAyQwlDT01NQQorMDAyRAlIWVBIRU4tTUlOVVMKKzAwMkUJRlVMTCBTVE9QCiswMDJGCVNPTElEVVMKKzAwMzAJRElHSVQgWkVSTworMDAzMQlESUdJVCBPTkUKKzAwMzIJRElHSVQgVFdPCiswMDMzCURJR0lUIFRIUkVFCiswMDM0CURJR0lUIEZPVVIKKzAwMzUJRElHSVQgRklWRQorMDAzNglESUdJVCBTSVgKKzAwMzcJRElHSVQgU0VWRU4KKzAwMzgJRElHSVQgRUlHSFQKKzAwMzkJRElHSVQgTklORQorMDAzQQlDT0xPTgorMDAzQglTRU1JQ09MT04KKzAwM0MJTEVTUy1USEFOIFNJR04KKzAwM0QJRVFVQUxTIFNJR04KKzAwM0UJR1JFQVRFUi1USEFOIFNJR04KKzAwM0YJUVVFU1RJT04gTUFSSworMDA0MAlDT01NRVJDSUFMIEFUCiswMDQxCUxBVElOIENBUElUQUwgTEVUVEVSIEEKKzAwNDIJTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgorMDA0MwlMQVRJTiBDQVBJVEFMIExFVFRFUiBDCiswMDQ0CUxBVElOIENBUElUQUwgTEVUVEVSIEQKKzAwNDUJTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQorMDA0NglMQVRJTiBDQVBJVEFMIExFVFRFUiBGCiswMDQ3CUxBVElOIENBUElUQUwgTEVUVEVSIEcKKzAwNDgJTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAorMDA0OQlMQVRJTiBDQVBJVEFMIExFVFRFUiBJCiswMDRBCUxBVElOIENBUElUQUwgTEVUVEVSIEoKKzAwNEIJTEFUSU4gQ0FQSVRBTCBMRVRURVIgSworMDA0QwlMQVRJTiBDQVBJVEFMIExFVFRFUiBMCiswMDRECUxBVElOIENBUElUQUwgTEVUVEVSIE0KKzAwNEUJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgorMDA0RglMQVRJTiBDQVBJVEFMIExFVFRFUiBPCiswMDUwCUxBVElOIENBUElUQUwgTEVUVEVSIFAKKzAwNTEJTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQorMDA1MglMQVRJTiBDQVBJVEFMIExFVFRFUiBSCiswMDUzCUxBVElOIENBUElUQUwgTEVUVEVSIFMKKzAwNTQJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAorMDA1NQlMQVRJTiBDQVBJVEFMIExFVFRFUiBVCiswMDU2CUxBVElOIENBUElUQUwgTEVUVEVSIFYKKzAwNTcJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVworMDA1OAlMQVRJTiBDQVBJVEFMIExFVFRFUiBYCiswMDU5CUxBVElOIENBUElUQUwgTEVUVEVSIFkKKzAwNUEJTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgorMDA1QglMRUZUIFNRVUFSRSBCUkFDS0VUCiswMDVDCVJFVkVSU0UgU09MSURVUworMDA1RAlSSUdIVCBTUVVBUkUgQlJBQ0tFVAorMDA1RQlDSVJDVU1GTEVYIEFDQ0VOVAorMDA1RglMT1cgTElORQorMDA2MAlHUkFWRSBBQ0NFTlQKKzAwNjEJTEFUSU4gU01BTEwgTEVUVEVSIEEKKzAwNjIJTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjMJTEFUSU4gU01BTEwgTEVUVEVSIEMKKzAwNjQJTEFUSU4gU01BTEwgTEVUVEVSIEQKKzAwNjUJTEFUSU4gU01BTEwgTEVUVEVSIEUKKzAwNjYJTEFUSU4gU01BTEwgTEVUVEVSIEYKKzAwNjcJTEFUSU4gU01BTEwgTEVUVEVSIEcKKzAwNjgJTEFUSU4gU01BTEwgTEVUVEVSIEgKKzAwNjkJTEFUSU4gU01BTEwgTEVUVEVSIEkKKzAwNkEJTEFUSU4gU01BTEwgTEVUVEVSIEoKKzAwNkIJTEFUSU4gU01BTEwgTEVUVEVSIEsKKzAwNkMJTEFUSU4gU01BTEwgTEVUVEVSIEwKKzAwNkQJTEFUSU4gU01BTEwgTEVUVEVSIE0KKzAwNkUJTEFUSU4gU01BTEwgTEVUVEVSIE4KKzAwNkYJTEFUSU4gU01BTEwgTEVUVEVSIE8KKzAwNzAJTEFUSU4gU01BTEwgTEVUVEVSIFAKKzAwNzEJTEFUSU4gU01BTEwgTEVUVEVSIFEKKzAwNzIJTEFUSU4gU01BTEwgTEVUVEVSIFIKKzAwNzMJTEFUSU4gU01BTEwgTEVUVEVSIFMKKzAwNzQJTEFUSU4gU01BTEwgTEVUVEVSIFQKKzAwNzUJTEFUSU4gU01BTEwgTEVUVEVSIFUKKzAwNzYJTEFUSU4gU01BTEwgTEVUVEVSIFYKKzAwNzcJTEFUSU4gU01BTEwgTEVUVEVSIFcKKzAwNzgJTEFUSU4gU01BTEwgTEVUVEVSIFgKKzAwNzkJTEFUSU4gU01BTEwgTEVUVEVSIFkKKzAwN0EJTEFUSU4gU01BTEwgTEVUVEVSIFoKKzAwN0IJTEVGVCBDVVJMWSBCUkFDS0VUCiswMDdDCVZFUlRJQ0FMIExJTkUKKzAwN0QJUklHSFQgQ1VSTFkgQlJBQ0tFVAorMDA3RQlUSUxERQorMDA3Rgk8Y29udHJvbD4KKzAwODAJPGNvbnRyb2w+CiswMDgxCTxjb250cm9sPgorMDA4Mgk8Y29udHJvbD4KKzAwODMJPGNvbnRyb2w+CiswMDg0CTxjb250cm9sPgorMDA4NQk8Y29udHJvbD4KKzAwODYJPGNvbnRyb2w+CiswMDg3CTxjb250cm9sPgorMDA4OAk8Y29udHJvbD4KKzAwODkJPGNvbnRyb2w+CiswMDhBCTxjb250cm9sPgorMDA4Qgk8Y29udHJvbD4KKzAwOEMJPGNvbnRyb2w+CiswMDhECTxjb250cm9sPgorMDA4RQk8Y29udHJvbD4KKzAwOEYJPGNvbnRyb2w+CiswMDkwCTxjb250cm9sPgorMDA5MQk8Y29udHJvbD4KKzAwOTIJPGNvbnRyb2w+CiswMDkzCTxjb250cm9sPgorMDA5NAk8Y29udHJvbD4KKzAwOTUJPGNvbnRyb2w+CiswMDk2CTxjb250cm9sPgorMDA5Nwk8Y29udHJvbD4KKzAwOTgJPGNvbnRyb2w+CiswMDk5CTxjb250cm9sPgorMDA5QQk8Y29udHJvbD4KKzAwOUIJPGNvbnRyb2w+CiswMDlDCTxjb250cm9sPgorMDA5RAk8Y29udHJvbD4KKzAwOUUJPGNvbnRyb2w+CiswMDlGCTxjb250cm9sPgorMDBBMAlOTy1CUkVBSyBTUEFDRQorMDBBMQlJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCiswMEEyCUNFTlQgU0lHTgorMDBBMwlQT1VORCBTSUdOCiswMEE0CUNVUlJFTkNZIFNJR04KKzAwQTUJWUVOIFNJR04KKzAwQTYJQlJPS0VOIEJBUgorMDBBNwlTRUNUSU9OIFNJR04KKzAwQTgJRElBRVJFU0lTCiswMEE5CUNPUFlSSUdIVCBTSUdOCiswMEFBCUZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCiswMEFCCUxFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiswMEFDCU5PVCBTSUdOCiswMEFECVNPRlQgSFlQSEVOCiswMEFFCVJFR0lTVEVSRUQgU0lHTgorMDBBRglNQUNST04KKzAwQjAJREVHUkVFIFNJR04KKzAwQjEJUExVUy1NSU5VUyBTSUdOCiswMEIyCVNVUEVSU0NSSVBUIFRXTworMDBCMwlTVVBFUlNDUklQVCBUSFJFRQorMDBCNAlBQ1VURSBBQ0NFTlQKKzAwQjUJTUlDUk8gU0lHTgorMDBCNglQSUxDUk9XIFNJR04KKzAwQjcJTUlERExFIERPVAorMDBCOAlDRURJTExBCiswMEI5CVNVUEVSU0NSSVBUIE9ORQorMDBCQQlNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKKzAwQkIJUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCiswMEJDCVZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgorMDBCRAlWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKKzAwQkUJVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCiswMEJGCUlOVkVSVEVEIFFVRVNUSU9OIE1BUksKKzAwQzAJTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCiswMEMxCUxBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQorMDBDMglMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAorMDBDMwlMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKKzAwQzQJTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUworMDBDNQlMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQorMDBDNglMQVRJTiBDQVBJVEFMIExFVFRFUiBBRQorMDBDNwlMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQorMDBDOAlMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKKzAwQzkJTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCiswMENBCUxBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiswMENCCUxBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKKzAwQ0MJTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCiswMENECUxBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQorMDBDRQlMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAorMDBDRglMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiswMEQwCUxBVElOIENBUElUQUwgTEVUVEVSIEVUSAorMDBEMQlMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKKzAwRDIJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCiswMEQzCUxBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQorMDBENAlMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAorMDBENQlMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKKzAwRDYJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUworMDBENwlNVUxUSVBMSUNBVElPTiBTSUdOCiswMEQ4CUxBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKKzAwRDkJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiswMERBCUxBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQorMDBEQglMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAorMDBEQwlMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiswMERECUxBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBBQ1VURQorMDBERQlMQVRJTiBDQVBJVEFMIExFVFRFUiBUSE9STgorMDBERglMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUworMDBFMAlMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCiswMEUxCUxBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKKzAwRTIJTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiswMEUzCUxBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggVElMREUKKzAwRTQJTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKzAwRTUJTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiswMEU2CUxBVElOIFNNQUxMIExFVFRFUiBBRQorMDBFNwlMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKKzAwRTgJTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQorMDBFOQlMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCiswMEVBCUxBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAorMDBFQglMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUworMDBFQwlMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEdSQVZFCiswMEVECUxBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKKzAwRUUJTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiswMEVGCUxBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCiswMEYwCUxBVElOIFNNQUxMIExFVFRFUiBFVEgKKzAwRjEJTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQorMDBGMglMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFCiswMEYzCUxBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKKzAwRjQJTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiswMEY1CUxBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKKzAwRjYJTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKKzAwRjcJRElWSVNJT04gU0lHTgorMDBGOAlMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQorMDBGOQlMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCiswMEZBCUxBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKKzAwRkIJTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiswMEZDCUxBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiswMEZECUxBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKKzAwRkUJTEFUSU4gU01BTEwgTEVUVEVSIFRIT1JOCiswMEZGCUxBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCiswMTAwCUxBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBNQUNST04KKzAxMDEJTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBNQUNST04KKzAxMDIJTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFCiswMTAzCUxBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkUKKzAxMDQJTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE9HT05FSworMDEwNQlMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIE9HT05FSworMDEwNglMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQUNVVEUKKzAxMDcJTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBBQ1VURQorMDEwOAlMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0lSQ1VNRkxFWAorMDEwOQlMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENJUkNVTUZMRVgKKzAxMEEJTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIERPVCBBQk9WRQorMDEwQglMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIERPVCBBQk9WRQorMDEwQwlMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0FST04KKzAxMEQJTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDQVJPTgorMDEwRQlMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggQ0FST04KKzAxMEYJTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDQVJPTgorMDExMAlMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggU1RST0tFCiswMTExCUxBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggU1RST0tFCiswMTEyCUxBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST04KKzAxMTMJTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBNQUNST04KKzAxMTQJTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEJSRVZFCiswMTE1CUxBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQlJFVkUKKzAxMTYJTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRQorMDExNwlMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRQorMDExOAlMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggT0dPTkVLCiswMTE5CUxBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggT0dPTkVLCiswMTFBCUxBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDQVJPTgorMDExQglMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENBUk9OCiswMTFDCUxBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBDSVJDVU1GTEVYCiswMTFECUxBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQ0lSQ1VNRkxFWAorMDExRQlMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQlJFVkUKKzAxMUYJTEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBCUkVWRQorMDEyMAlMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggRE9UIEFCT1ZFCiswMTIxCUxBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggRE9UIEFCT1ZFCiswMTIyCUxBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBDRURJTExBCiswMTIzCUxBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQ0VESUxMQQorMDEyNAlMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggQ0lSQ1VNRkxFWAorMDEyNQlMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIENJUkNVTUZMRVgKKzAxMjYJTEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIFNUUk9LRQorMDEyNwlMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIFNUUk9LRQorMDEyOAlMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggVElMREUKKzAxMjkJTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBUSUxERQorMDEyQQlMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggTUFDUk9OCiswMTJCCUxBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggTUFDUk9OCiswMTJDCUxBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBCUkVWRQorMDEyRAlMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEJSRVZFCiswMTJFCUxBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBPR09ORUsKKzAxMkYJTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBPR09ORUsKKzAxMzAJTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVCBBQk9WRQorMDEzMQlMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBJCiswMTMyCUxBVElOIENBUElUQUwgTElHQVRVUkUgSUoKKzAxMzMJTEFUSU4gU01BTEwgTElHQVRVUkUgSUoKKzAxMzQJTEFUSU4gQ0FQSVRBTCBMRVRURVIgSiBXSVRIIENJUkNVTUZMRVgKKzAxMzUJTEFUSU4gU01BTEwgTEVUVEVSIEogV0lUSCBDSVJDVU1GTEVYCiswMTM2CUxBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBDRURJTExBCiswMTM3CUxBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggQ0VESUxMQQorMDEzOAlMQVRJTiBTTUFMTCBMRVRURVIgS1JBCiswMTM5CUxBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBBQ1VURQorMDEzQQlMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIEFDVVRFCiswMTNCCUxBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDRURJTExBCiswMTNDCUxBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0VESUxMQQorMDEzRAlMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0FST04KKzAxM0UJTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDQVJPTgorMDEzRglMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggTUlERExFIERPVAorMDE0MAlMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIE1JRERMRSBET1QKKzAxNDEJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIFNUUk9LRQorMDE0MglMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFNUUk9LRQorMDE0MwlMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQUNVVEUKKzAxNDQJTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBBQ1VURQorMDE0NQlMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0VESUxMQQorMDE0NglMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENFRElMTEEKKzAxNDcJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENBUk9OCiswMTQ4CUxBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0FST04KKzAxNDkJTEFUSU4gU01BTEwgTEVUVEVSIE4gUFJFQ0VERUQgQlkgQVBPU1RST1BIRQorMDE0QQlMQVRJTiBDQVBJVEFMIExFVFRFUiBFTkcKKzAxNEIJTEFUSU4gU01BTEwgTEVUVEVSIEVORworMDE0QwlMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUFDUk9OCiswMTRECUxBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggTUFDUk9OCiswMTRFCUxBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBCUkVWRQorMDE0RglMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEJSRVZFCiswMTUwCUxBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKKzAxNTEJTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKKzAxNTIJTEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBPRQorMDE1MwlMQVRJTiBTTUFMTCBMSUdBVFVSRSBPRQorMDE1NAlMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQUNVVEUKKzAxNTUJTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBBQ1VURQorMDE1NglMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQ0VESUxMQQorMDE1NwlMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENFRElMTEEKKzAxNTgJTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENBUk9OCiswMTU5CUxBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQ0FST04KKzAxNUEJTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIEFDVVRFCiswMTVCCUxBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQUNVVEUKKzAxNUMJTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENJUkNVTUZMRVgKKzAxNUQJTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDSVJDVU1GTEVYCiswMTVFCUxBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDRURJTExBCiswMTVGCUxBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0VESUxMQQorMDE2MAlMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KKzAxNjEJTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgorMDE2MglMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggQ0VESUxMQQorMDE2MwlMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIENFRElMTEEKKzAxNjQJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENBUk9OCiswMTY1CUxBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ0FST04KKzAxNjYJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIFNUUk9LRQorMDE2NwlMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIFNUUk9LRQorMDE2OAlMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggVElMREUKKzAxNjkJTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBUSUxERQorMDE2QQlMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OCiswMTZCCUxBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OCiswMTZDCUxBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBCUkVWRQorMDE2RAlMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEJSRVZFCiswMTZFCUxBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCiswMTZGCUxBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggUklORyBBQk9WRQorMDE3MAlMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCiswMTcxCUxBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCiswMTcyCUxBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBPR09ORUsKKzAxNzMJTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBPR09ORUsKKzAxNzQJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIENJUkNVTUZMRVgKKzAxNzUJTEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBDSVJDVU1GTEVYCiswMTc2CUxBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBDSVJDVU1GTEVYCiswMTc3CUxBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQ0lSQ1VNRkxFWAorMDE3OAlMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCiswMTc5CUxBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBBQ1VURQorMDE3QQlMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIEFDVVRFCiswMTdCCUxBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKKzAxN0MJTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKKzAxN0QJTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENBUk9OCiswMTdFCUxBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST04KKzAxN0YJTEFUSU4gU01BTEwgTEVUVEVSIExPTkcgUworMDE4MAlMQVRJTiBTTUFMTCBMRVRURVIgQiBXSVRIIFNUUk9LRQorMDE4MQlMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggSE9PSworMDE4MglMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggVE9QQkFSCiswMTgzCUxBVElOIFNNQUxMIExFVFRFUiBCIFdJVEggVE9QQkFSCiswMTg0CUxBVElOIENBUElUQUwgTEVUVEVSIFRPTkUgU0lYCiswMTg1CUxBVElOIFNNQUxMIExFVFRFUiBUT05FIFNJWAorMDE4NglMQVRJTiBDQVBJVEFMIExFVFRFUiBPUEVOIE8KKzAxODcJTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIEhPT0sKKzAxODgJTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBIT09LCiswMTg5CUxBVElOIENBUElUQUwgTEVUVEVSIEFGUklDQU4gRAorMDE4QQlMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggSE9PSworMDE4QglMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggVE9QQkFSCiswMThDCUxBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggVE9QQkFSCiswMThECUxBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgREVMVEEKKzAxOEUJTEFUSU4gQ0FQSVRBTCBMRVRURVIgUkVWRVJTRUQgRQorMDE4RglMQVRJTiBDQVBJVEFMIExFVFRFUiBTQ0hXQQorMDE5MAlMQVRJTiBDQVBJVEFMIExFVFRFUiBPUEVOIEUKKzAxOTEJTEFUSU4gQ0FQSVRBTCBMRVRURVIgRiBXSVRIIEhPT0sKKzAxOTIJTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCiswMTkzCUxBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBIT09LCiswMTk0CUxBVElOIENBUElUQUwgTEVUVEVSIEdBTU1BCiswMTk1CUxBVElOIFNNQUxMIExFVFRFUiBIVgorMDE5NglMQVRJTiBDQVBJVEFMIExFVFRFUiBJT1RBCiswMTk3CUxBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBTVFJPS0UKKzAxOTgJTEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIEhPT0sKKzAxOTkJTEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBIT09LCiswMTlBCUxBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQkFSCiswMTlCCUxBVElOIFNNQUxMIExFVFRFUiBMQU1CREEgV0lUSCBTVFJPS0UKKzAxOUMJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVFVSTkVEIE0KKzAxOUQJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIExFRlQgSE9PSworMDE5RQlMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIExPTkcgUklHSFQgTEVHCiswMTlGCUxBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNSURETEUgVElMREUKKzAxQTAJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4KKzAxQTEJTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT1JOCiswMUEyCUxBVElOIENBUElUQUwgTEVUVEVSIE9JCiswMUEzCUxBVElOIFNNQUxMIExFVFRFUiBPSQorMDFBNAlMQVRJTiBDQVBJVEFMIExFVFRFUiBQIFdJVEggSE9PSworMDFBNQlMQVRJTiBTTUFMTCBMRVRURVIgUCBXSVRIIEhPT0sKKzAxQTYJTEFUSU4gTEVUVEVSIFlSCiswMUE3CUxBVElOIENBUElUQUwgTEVUVEVSIFRPTkUgVFdPCiswMUE4CUxBVElOIFNNQUxMIExFVFRFUiBUT05FIFRXTworMDFBOQlMQVRJTiBDQVBJVEFMIExFVFRFUiBFU0gKKzAxQUEJTEFUSU4gTEVUVEVSIFJFVkVSU0VEIEVTSCBMT09QCiswMUFCCUxBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggUEFMQVRBTCBIT09LCiswMUFDCUxBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBIT09LCiswMUFECUxBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggSE9PSworMDFBRQlMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggUkVUUk9GTEVYIEhPT0sKKzAxQUYJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4KKzAxQjAJTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT1JOCiswMUIxCUxBVElOIENBUElUQUwgTEVUVEVSIFVQU0lMT04KKzAxQjIJTEFUSU4gQ0FQSVRBTCBMRVRURVIgViBXSVRIIEhPT0sKKzAxQjMJTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEhPT0sKKzAxQjQJTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBIT09LCiswMUI1CUxBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBTVFJPS0UKKzAxQjYJTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBTVFJPS0UKKzAxQjcJTEFUSU4gQ0FQSVRBTCBMRVRURVIgRVpICiswMUI4CUxBVElOIENBUElUQUwgTEVUVEVSIEVaSCBSRVZFUlNFRAorMDFCOQlMQVRJTiBTTUFMTCBMRVRURVIgRVpIIFJFVkVSU0VECiswMUJBCUxBVElOIFNNQUxMIExFVFRFUiBFWkggV0lUSCBUQUlMCiswMUJCCUxBVElOIExFVFRFUiBUV08gV0lUSCBTVFJPS0UKKzAxQkMJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVE9ORSBGSVZFCiswMUJECUxBVElOIFNNQUxMIExFVFRFUiBUT05FIEZJVkUKKzAxQkUJTEFUSU4gTEVUVEVSIElOVkVSVEVEIEdMT1RUQUwgU1RPUCBXSVRIIFNUUk9LRQorMDFCRglMQVRJTiBMRVRURVIgV1lOTgorMDFDMAlMQVRJTiBMRVRURVIgREVOVEFMIENMSUNLCiswMUMxCUxBVElOIExFVFRFUiBMQVRFUkFMIENMSUNLCiswMUMyCUxBVElOIExFVFRFUiBBTFZFT0xBUiBDTElDSworMDFDMwlMQVRJTiBMRVRURVIgUkVUUk9GTEVYIENMSUNLCiswMUM0CUxBVElOIENBUElUQUwgTEVUVEVSIERaIFdJVEggQ0FST04KKzAxQzUJTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST04KKzAxQzYJTEFUSU4gU01BTEwgTEVUVEVSIERaIFdJVEggQ0FST04KKzAxQzcJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTEoKKzAxQzgJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIFNNQUxMIExFVFRFUiBKCiswMUM5CUxBVElOIFNNQUxMIExFVFRFUiBMSgorMDFDQQlMQVRJTiBDQVBJVEFMIExFVFRFUiBOSgorMDFDQglMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggU01BTEwgTEVUVEVSIEoKKzAxQ0MJTEFUSU4gU01BTEwgTEVUVEVSIE5KCiswMUNECUxBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDQVJPTgorMDFDRQlMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENBUk9OCiswMUNGCUxBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDQVJPTgorMDFEMAlMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENBUk9OCiswMUQxCUxBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDQVJPTgorMDFEMglMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENBUk9OCiswMUQzCUxBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDQVJPTgorMDFENAlMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENBUk9OCiswMUQ1CUxBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIE1BQ1JPTgorMDFENglMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgTUFDUk9OCiswMUQ3CUxBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIEFDVVRFCiswMUQ4CUxBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBBQ1VURQorMDFEOQlMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBDQVJPTgorMDFEQQlMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgQ0FST04KKzAxREIJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgR1JBVkUKKzAxREMJTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIEdSQVZFCiswMURECUxBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgRQorMDFERQlMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTIEFORCBNQUNST04KKzAxREYJTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMgQU5EIE1BQ1JPTgorMDFFMAlMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRE9UIEFCT1ZFIEFORCBNQUNST04KKzAxRTEJTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBET1QgQUJPVkUgQU5EIE1BQ1JPTgorMDFFMglMQVRJTiBDQVBJVEFMIExFVFRFUiBBRSBXSVRIIE1BQ1JPTgorMDFFMwlMQVRJTiBTTUFMTCBMRVRURVIgQUUgV0lUSCBNQUNST04KKzAxRTQJTEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIFNUUk9LRQorMDFFNQlMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIFNUUk9LRQorMDFFNglMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQ0FST04KKzAxRTcJTEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBDQVJPTgorMDFFOAlMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggQ0FST04KKzAxRTkJTEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBDQVJPTgorMDFFQQlMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggT0dPTkVLCiswMUVCCUxBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggT0dPTkVLCiswMUVDCUxBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBPR09ORUsgQU5EIE1BQ1JPTgorMDFFRAlMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIE9HT05FSyBBTkQgTUFDUk9OCiswMUVFCUxBVElOIENBUElUQUwgTEVUVEVSIEVaSCBXSVRIIENBUk9OCiswMUVGCUxBVElOIFNNQUxMIExFVFRFUiBFWkggV0lUSCBDQVJPTgorMDFGMAlMQVRJTiBTTUFMTCBMRVRURVIgSiBXSVRIIENBUk9OCiswMUYxCUxBVElOIENBUElUQUwgTEVUVEVSIERaCiswMUYyCUxBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBTTUFMTCBMRVRURVIgWgorMDFGMwlMQVRJTiBTTUFMTCBMRVRURVIgRFoKKzAxRjQJTEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIEFDVVRFCiswMUY1CUxBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQUNVVEUKKzAxRkEJTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUgQU5EIEFDVVRFCiswMUZCCUxBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRSBBTkQgQUNVVEUKKzAxRkMJTEFUSU4gQ0FQSVRBTCBMRVRURVIgQUUgV0lUSCBBQ1VURQorMDFGRAlMQVRJTiBTTUFMTCBMRVRURVIgQUUgV0lUSCBBQ1VURQorMDFGRQlMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFIEFORCBBQ1VURQorMDFGRglMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRSBBTkQgQUNVVEUKKzAyMDAJTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERPVUJMRSBHUkFWRQorMDIwMQlMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERPVUJMRSBHUkFWRQorMDIwMglMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggSU5WRVJURUQgQlJFVkUKKzAyMDMJTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBJTlZFUlRFRCBCUkVWRQorMDIwNAlMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRE9VQkxFIEdSQVZFCiswMjA1CUxBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRE9VQkxFIEdSQVZFCiswMjA2CUxBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBJTlZFUlRFRCBCUkVWRQorMDIwNwlMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIElOVkVSVEVEIEJSRVZFCiswMjA4CUxBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBET1VCTEUgR1JBVkUKKzAyMDkJTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBET1VCTEUgR1JBVkUKKzAyMEEJTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIElOVkVSVEVEIEJSRVZFCiswMjBCCUxBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggSU5WRVJURUQgQlJFVkUKKzAyMEMJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVUJMRSBHUkFWRQorMDIwRAlMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVUJMRSBHUkFWRQorMDIwRQlMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSU5WRVJURUQgQlJFVkUKKzAyMEYJTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBJTlZFUlRFRCBCUkVWRQorMDIxMAlMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggRE9VQkxFIEdSQVZFCiswMjExCUxBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggRE9VQkxFIEdSQVZFCiswMjEyCUxBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBJTlZFUlRFRCBCUkVWRQorMDIxMwlMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIElOVkVSVEVEIEJSRVZFCiswMjE0CUxBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBET1VCTEUgR1JBVkUKKzAyMTUJTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBET1VCTEUgR1JBVkUKKzAyMTYJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIElOVkVSVEVEIEJSRVZFCiswMjE3CUxBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSU5WRVJURUQgQlJFVkUKKzAyNTAJTEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBBCiswMjUxCUxBVElOIFNNQUxMIExFVFRFUiBBTFBIQQorMDI1MglMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIEFMUEhBCiswMjUzCUxBVElOIFNNQUxMIExFVFRFUiBCIFdJVEggSE9PSworMDI1NAlMQVRJTiBTTUFMTCBMRVRURVIgT1BFTiBPCiswMjU1CUxBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ1VSTAorMDI1NglMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIFRBSUwKKzAyNTcJTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBIT09LCiswMjU4CUxBVElOIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBFCiswMjU5CUxBVElOIFNNQUxMIExFVFRFUiBTQ0hXQQorMDI1QQlMQVRJTiBTTUFMTCBMRVRURVIgU0NIV0EgV0lUSCBIT09LCiswMjVCCUxBVElOIFNNQUxMIExFVFRFUiBPUEVOIEUKKzAyNUMJTEFUSU4gU01BTEwgTEVUVEVSIFJFVkVSU0VEIE9QRU4gRQorMDI1RAlMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgT1BFTiBFIFdJVEggSE9PSworMDI1RQlMQVRJTiBTTUFMTCBMRVRURVIgQ0xPU0VEIFJFVkVSU0VEIE9QRU4gRQorMDI1RglMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKIFdJVEggU1RST0tFCiswMjYwCUxBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggSE9PSworMDI2MQlMQVRJTiBTTUFMTCBMRVRURVIgU0NSSVBUIEcKKzAyNjIJTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgRworMDI2MwlMQVRJTiBTTUFMTCBMRVRURVIgR0FNTUEKKzAyNjQJTEFUSU4gU01BTEwgTEVUVEVSIFJBTVMgSE9STgorMDI2NQlMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIEgKKzAyNjYJTEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBIT09LCiswMjY3CUxBVElOIFNNQUxMIExFVFRFUiBIRU5HIFdJVEggSE9PSworMDI2OAlMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIFNUUk9LRQorMDI2OQlMQVRJTiBTTUFMTCBMRVRURVIgSU9UQQorMDI2QQlMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBJCiswMjZCCUxBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggTUlERExFIFRJTERFCiswMjZDCUxBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQkVMVAorMDI2RAlMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFJFVFJPRkxFWCBIT09LCiswMjZFCUxBVElOIFNNQUxMIExFVFRFUiBMRVpICiswMjZGCUxBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgTQorMDI3MAlMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIE0gV0lUSCBMT05HIExFRworMDI3MQlMQVRJTiBTTUFMTCBMRVRURVIgTSBXSVRIIEhPT0sKKzAyNzIJTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBMRUZUIEhPT0sKKzAyNzMJTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBSRVRST0ZMRVggSE9PSworMDI3NAlMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBOCiswMjc1CUxBVElOIFNNQUxMIExFVFRFUiBCQVJSRUQgTworMDI3NglMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBPRQorMDI3NwlMQVRJTiBTTUFMTCBMRVRURVIgQ0xPU0VEIE9NRUdBCiswMjc4CUxBVElOIFNNQUxMIExFVFRFUiBQSEkKKzAyNzkJTEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBSCiswMjdBCUxBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgUiBXSVRIIExPTkcgTEVHCiswMjdCCUxBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgUiBXSVRIIEhPT0sKKzAyN0MJTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBMT05HIExFRworMDI3RAlMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIFRBSUwKKzAyN0UJTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBGSVNISE9PSworMDI3RglMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgUiBXSVRIIEZJU0hIT09LCiswMjgwCUxBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFIKKzAyODEJTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgSU5WRVJURUQgUgorMDI4MglMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIEhPT0sKKzAyODMJTEFUSU4gU01BTEwgTEVUVEVSIEVTSAorMDI4NAlMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKIFdJVEggU1RST0tFIEFORCBIT09LCiswMjg1CUxBVElOIFNNQUxMIExFVFRFUiBTUVVBVCBSRVZFUlNFRCBFU0gKKzAyODYJTEFUSU4gU01BTEwgTEVUVEVSIEVTSCBXSVRIIENVUkwKKzAyODcJTEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBUCiswMjg4CUxBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggUkVUUk9GTEVYIEhPT0sKKzAyODkJTEFUSU4gU01BTEwgTEVUVEVSIFUgQkFSCiswMjhBCUxBVElOIFNNQUxMIExFVFRFUiBVUFNJTE9OCiswMjhCCUxBVElOIFNNQUxMIExFVFRFUiBWIFdJVEggSE9PSworMDI4QwlMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFYKKzAyOEQJTEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBXCiswMjhFCUxBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgWQorMDI4RglMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBZCiswMjkwCUxBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggUkVUUk9GTEVYIEhPT0sKKzAyOTEJTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBDVVJMCiswMjkyCUxBVElOIFNNQUxMIExFVFRFUiBFWkgKKzAyOTMJTEFUSU4gU01BTEwgTEVUVEVSIEVaSCBXSVRIIENVUkwKKzAyOTQJTEFUSU4gTEVUVEVSIEdMT1RUQUwgU1RPUAorMDI5NQlMQVRJTiBMRVRURVIgUEhBUllOR0VBTCBWT0lDRUQgRlJJQ0FUSVZFCiswMjk2CUxBVElOIExFVFRFUiBJTlZFUlRFRCBHTE9UVEFMIFNUT1AKKzAyOTcJTEFUSU4gTEVUVEVSIFNUUkVUQ0hFRCBDCiswMjk4CUxBVElOIExFVFRFUiBCSUxBQklBTCBDTElDSworMDI5OQlMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBCCiswMjlBCUxBVElOIFNNQUxMIExFVFRFUiBDTE9TRUQgT1BFTiBFCiswMjlCCUxBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEcgV0lUSCBIT09LCiswMjlDCUxBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEgKKzAyOUQJTEFUSU4gU01BTEwgTEVUVEVSIEogV0lUSCBDUk9TU0VELVRBSUwKKzAyOUUJTEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBLCiswMjlGCUxBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEwKKzAyQTAJTEFUSU4gU01BTEwgTEVUVEVSIFEgV0lUSCBIT09LCiswMkExCUxBVElOIExFVFRFUiBHTE9UVEFMIFNUT1AgV0lUSCBTVFJPS0UKKzAyQTIJTEFUSU4gTEVUVEVSIFJFVkVSU0VEIEdMT1RUQUwgU1RPUCBXSVRIIFNUUk9LRQorMDJBMwlMQVRJTiBTTUFMTCBMRVRURVIgRFogRElHUkFQSAorMDJBNAlMQVRJTiBTTUFMTCBMRVRURVIgREVaSCBESUdSQVBICiswMkE1CUxBVElOIFNNQUxMIExFVFRFUiBEWiBESUdSQVBIIFdJVEggQ1VSTAorMDJBNglMQVRJTiBTTUFMTCBMRVRURVIgVFMgRElHUkFQSAorMDJBNwlMQVRJTiBTTUFMTCBMRVRURVIgVEVTSCBESUdSQVBICiswMkE4CUxBVElOIFNNQUxMIExFVFRFUiBUQyBESUdSQVBIIFdJVEggQ1VSTAorMDJCMAlNT0RJRklFUiBMRVRURVIgU01BTEwgSAorMDJCMQlNT0RJRklFUiBMRVRURVIgU01BTEwgSCBXSVRIIEhPT0sKKzAyQjIJTU9ESUZJRVIgTEVUVEVSIFNNQUxMIEoKKzAyQjMJTU9ESUZJRVIgTEVUVEVSIFNNQUxMIFIKKzAyQjQJTU9ESUZJRVIgTEVUVEVSIFNNQUxMIFRVUk5FRCBSCiswMkI1CU1PRElGSUVSIExFVFRFUiBTTUFMTCBUVVJORUQgUiBXSVRIIEhPT0sKKzAyQjYJTU9ESUZJRVIgTEVUVEVSIFNNQUxMIENBUElUQUwgSU5WRVJURUQgUgorMDJCNwlNT0RJRklFUiBMRVRURVIgU01BTEwgVworMDJCOAlNT0RJRklFUiBMRVRURVIgU01BTEwgWQorMDJCOQlNT0RJRklFUiBMRVRURVIgUFJJTUUKKzAyQkEJTU9ESUZJRVIgTEVUVEVSIERPVUJMRSBQUklNRQorMDJCQglNT0RJRklFUiBMRVRURVIgVFVSTkVEIENPTU1BCiswMkJDCU1PRElGSUVSIExFVFRFUiBBUE9TVFJPUEhFCiswMkJECU1PRElGSUVSIExFVFRFUiBSRVZFUlNFRCBDT01NQQorMDJCRQlNT0RJRklFUiBMRVRURVIgUklHSFQgSEFMRiBSSU5HCiswMkJGCU1PRElGSUVSIExFVFRFUiBMRUZUIEhBTEYgUklORworMDJDMAlNT0RJRklFUiBMRVRURVIgR0xPVFRBTCBTVE9QCiswMkMxCU1PRElGSUVSIExFVFRFUiBSRVZFUlNFRCBHTE9UVEFMIFNUT1AKKzAyQzIJTU9ESUZJRVIgTEVUVEVSIExFRlQgQVJST1dIRUFECiswMkMzCU1PRElGSUVSIExFVFRFUiBSSUdIVCBBUlJPV0hFQUQKKzAyQzQJTU9ESUZJRVIgTEVUVEVSIFVQIEFSUk9XSEVBRAorMDJDNQlNT0RJRklFUiBMRVRURVIgRE9XTiBBUlJPV0hFQUQKKzAyQzYJTU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVggQUNDRU5UCiswMkM3CUNBUk9OCiswMkM4CU1PRElGSUVSIExFVFRFUiBWRVJUSUNBTCBMSU5FCiswMkM5CU1PRElGSUVSIExFVFRFUiBNQUNST04KKzAyQ0EJTU9ESUZJRVIgTEVUVEVSIEFDVVRFIEFDQ0VOVAorMDJDQglNT0RJRklFUiBMRVRURVIgR1JBVkUgQUNDRU5UCiswMkNDCU1PRElGSUVSIExFVFRFUiBMT1cgVkVSVElDQUwgTElORQorMDJDRAlNT0RJRklFUiBMRVRURVIgTE9XIE1BQ1JPTgorMDJDRQlNT0RJRklFUiBMRVRURVIgTE9XIEdSQVZFIEFDQ0VOVAorMDJDRglNT0RJRklFUiBMRVRURVIgTE9XIEFDVVRFIEFDQ0VOVAorMDJEMAlNT0RJRklFUiBMRVRURVIgVFJJQU5HVUxBUiBDT0xPTgorMDJEMQlNT0RJRklFUiBMRVRURVIgSEFMRiBUUklBTkdVTEFSIENPTE9OCiswMkQyCU1PRElGSUVSIExFVFRFUiBDRU5UUkVEIFJJR0hUIEhBTEYgUklORworMDJEMwlNT0RJRklFUiBMRVRURVIgQ0VOVFJFRCBMRUZUIEhBTEYgUklORworMDJENAlNT0RJRklFUiBMRVRURVIgVVAgVEFDSworMDJENQlNT0RJRklFUiBMRVRURVIgRE9XTiBUQUNLCiswMkQ2CU1PRElGSUVSIExFVFRFUiBQTFVTIFNJR04KKzAyRDcJTU9ESUZJRVIgTEVUVEVSIE1JTlVTIFNJR04KKzAyRDgJQlJFVkUKKzAyRDkJRE9UIEFCT1ZFCiswMkRBCVJJTkcgQUJPVkUKKzAyREIJT0dPTkVLCiswMkRDCVNNQUxMIFRJTERFCiswMkRECURPVUJMRSBBQ1VURSBBQ0NFTlQKKzAyREUJTU9ESUZJRVIgTEVUVEVSIFJIT1RJQyBIT09LCiswMkUwCU1PRElGSUVSIExFVFRFUiBTTUFMTCBHQU1NQQorMDJFMQlNT0RJRklFUiBMRVRURVIgU01BTEwgTAorMDJFMglNT0RJRklFUiBMRVRURVIgU01BTEwgUworMDJFMwlNT0RJRklFUiBMRVRURVIgU01BTEwgWAorMDJFNAlNT0RJRklFUiBMRVRURVIgU01BTEwgUkVWRVJTRUQgR0xPVFRBTCBTVE9QCiswMkU1CU1PRElGSUVSIExFVFRFUiBFWFRSQS1ISUdIIFRPTkUgQkFSCiswMkU2CU1PRElGSUVSIExFVFRFUiBISUdIIFRPTkUgQkFSCiswMkU3CU1PRElGSUVSIExFVFRFUiBNSUQgVE9ORSBCQVIKKzAyRTgJTU9ESUZJRVIgTEVUVEVSIExPVyBUT05FIEJBUgorMDJFOQlNT0RJRklFUiBMRVRURVIgRVhUUkEtTE9XIFRPTkUgQkFSCiswMzAwCUNPTUJJTklORyBHUkFWRSBBQ0NFTlQKKzAzMDEJQ09NQklOSU5HIEFDVVRFIEFDQ0VOVAorMDMwMglDT01CSU5JTkcgQ0lSQ1VNRkxFWCBBQ0NFTlQKKzAzMDMJQ09NQklOSU5HIFRJTERFCiswMzA0CUNPTUJJTklORyBNQUNST04KKzAzMDUJQ09NQklOSU5HIE9WRVJMSU5FCiswMzA2CUNPTUJJTklORyBCUkVWRQorMDMwNwlDT01CSU5JTkcgRE9UIEFCT1ZFCiswMzA4CUNPTUJJTklORyBESUFFUkVTSVMKKzAzMDkJQ09NQklOSU5HIEhPT0sgQUJPVkUKKzAzMEEJQ09NQklOSU5HIFJJTkcgQUJPVkUKKzAzMEIJQ09NQklOSU5HIERPVUJMRSBBQ1VURSBBQ0NFTlQKKzAzMEMJQ09NQklOSU5HIENBUk9OCiswMzBECUNPTUJJTklORyBWRVJUSUNBTCBMSU5FIEFCT1ZFCiswMzBFCUNPTUJJTklORyBET1VCTEUgVkVSVElDQUwgTElORSBBQk9WRQorMDMwRglDT01CSU5JTkcgRE9VQkxFIEdSQVZFIEFDQ0VOVAorMDMxMAlDT01CSU5JTkcgQ0FORFJBQklORFUKKzAzMTEJQ09NQklOSU5HIElOVkVSVEVEIEJSRVZFCiswMzEyCUNPTUJJTklORyBUVVJORUQgQ09NTUEgQUJPVkUKKzAzMTMJQ09NQklOSU5HIENPTU1BIEFCT1ZFCiswMzE0CUNPTUJJTklORyBSRVZFUlNFRCBDT01NQSBBQk9WRQorMDMxNQlDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQKKzAzMTYJQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVworMDMxNwlDT01CSU5JTkcgQUNVVEUgQUNDRU5UIEJFTE9XCiswMzE4CUNPTUJJTklORyBMRUZUIFRBQ0sgQkVMT1cKKzAzMTkJQ09NQklOSU5HIFJJR0hUIFRBQ0sgQkVMT1cKKzAzMUEJQ09NQklOSU5HIExFRlQgQU5HTEUgQUJPVkUKKzAzMUIJQ09NQklOSU5HIEhPUk4KKzAzMUMJQ09NQklOSU5HIExFRlQgSEFMRiBSSU5HIEJFTE9XCiswMzFECUNPTUJJTklORyBVUCBUQUNLIEJFTE9XCiswMzFFCUNPTUJJTklORyBET1dOIFRBQ0sgQkVMT1cKKzAzMUYJQ09NQklOSU5HIFBMVVMgU0lHTiBCRUxPVworMDMyMAlDT01CSU5JTkcgTUlOVVMgU0lHTiBCRUxPVworMDMyMQlDT01CSU5JTkcgUEFMQVRBTElaRUQgSE9PSyBCRUxPVworMDMyMglDT01CSU5JTkcgUkVUUk9GTEVYIEhPT0sgQkVMT1cKKzAzMjMJQ09NQklOSU5HIERPVCBCRUxPVworMDMyNAlDT01CSU5JTkcgRElBRVJFU0lTIEJFTE9XCiswMzI1CUNPTUJJTklORyBSSU5HIEJFTE9XCiswMzI2CUNPTUJJTklORyBDT01NQSBCRUxPVworMDMyNwlDT01CSU5JTkcgQ0VESUxMQQorMDMyOAlDT01CSU5JTkcgT0dPTkVLCiswMzI5CUNPTUJJTklORyBWRVJUSUNBTCBMSU5FIEJFTE9XCiswMzJBCUNPTUJJTklORyBCUklER0UgQkVMT1cKKzAzMkIJQ09NQklOSU5HIElOVkVSVEVEIERPVUJMRSBBUkNIIEJFTE9XCiswMzJDCUNPTUJJTklORyBDQVJPTiBCRUxPVworMDMyRAlDT01CSU5JTkcgQ0lSQ1VNRkxFWCBBQ0NFTlQgQkVMT1cKKzAzMkUJQ09NQklOSU5HIEJSRVZFIEJFTE9XCiswMzJGCUNPTUJJTklORyBJTlZFUlRFRCBCUkVWRSBCRUxPVworMDMzMAlDT01CSU5JTkcgVElMREUgQkVMT1cKKzAzMzEJQ09NQklOSU5HIE1BQ1JPTiBCRUxPVworMDMzMglDT01CSU5JTkcgTE9XIExJTkUKKzAzMzMJQ09NQklOSU5HIERPVUJMRSBMT1cgTElORQorMDMzNAlDT01CSU5JTkcgVElMREUgT1ZFUkxBWQorMDMzNQlDT01CSU5JTkcgU0hPUlQgU1RST0tFIE9WRVJMQVkKKzAzMzYJQ09NQklOSU5HIExPTkcgU1RST0tFIE9WRVJMQVkKKzAzMzcJQ09NQklOSU5HIFNIT1JUIFNPTElEVVMgT1ZFUkxBWQorMDMzOAlDT01CSU5JTkcgTE9ORyBTT0xJRFVTIE9WRVJMQVkKKzAzMzkJQ09NQklOSU5HIFJJR0hUIEhBTEYgUklORyBCRUxPVworMDMzQQlDT01CSU5JTkcgSU5WRVJURUQgQlJJREdFIEJFTE9XCiswMzNCCUNPTUJJTklORyBTUVVBUkUgQkVMT1cKKzAzM0MJQ09NQklOSU5HIFNFQUdVTEwgQkVMT1cKKzAzM0QJQ09NQklOSU5HIFggQUJPVkUKKzAzM0UJQ09NQklOSU5HIFZFUlRJQ0FMIFRJTERFCiswMzNGCUNPTUJJTklORyBET1VCTEUgT1ZFUkxJTkUKKzAzNDAJQ09NQklOSU5HIEdSQVZFIFRPTkUgTUFSSworMDM0MQlDT01CSU5JTkcgQUNVVEUgVE9ORSBNQVJLCiswMzQyCUNPTUJJTklORyBHUkVFSyBQRVJJU1BPTUVOSQorMDM0MwlDT01CSU5JTkcgR1JFRUsgS09ST05JUworMDM0NAlDT01CSU5JTkcgR1JFRUsgRElBTFlUSUtBIFRPTk9TCiswMzQ1CUNPTUJJTklORyBHUkVFSyBZUE9HRUdSQU1NRU5JCiswMzYwCUNPTUJJTklORyBET1VCTEUgVElMREUKKzAzNjEJQ09NQklOSU5HIERPVUJMRSBJTlZFUlRFRCBCUkVWRQorMDM3NAlHUkVFSyBOVU1FUkFMIFNJR04KKzAzNzUJR1JFRUsgTE9XRVIgTlVNRVJBTCBTSUdOCiswMzdBCUdSRUVLIFlQT0dFR1JBTU1FTkkKKzAzN0UJR1JFRUsgUVVFU1RJT04gTUFSSworMDM4NAlHUkVFSyBUT05PUworMDM4NQlHUkVFSyBESUFMWVRJS0EgVE9OT1MKKzAzODYJR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBUT05PUworMDM4NwlHUkVFSyBBTk8gVEVMRUlBCiswMzg4CUdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBUT05PUworMDM4OQlHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBUT05PUworMDM4QQlHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggVE9OT1MKKzAzOEMJR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFRPTk9TCiswMzhFCUdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBUT05PUworMDM4RglHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFRPTk9TCiswMzkwCUdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBUT05PUworMDM5MQlHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQQorMDM5MglHUkVFSyBDQVBJVEFMIExFVFRFUiBCRVRBCiswMzkzCUdSRUVLIENBUElUQUwgTEVUVEVSIEdBTU1BCiswMzk0CUdSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBCiswMzk1CUdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04KKzAzOTYJR1JFRUsgQ0FQSVRBTCBMRVRURVIgWkVUQQorMDM5NwlHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEKKzAzOTgJR1JFRUsgQ0FQSVRBTCBMRVRURVIgVEhFVEEKKzAzOTkJR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQQorMDM5QQlHUkVFSyBDQVBJVEFMIExFVFRFUiBLQVBQQQorMDM5QglHUkVFSyBDQVBJVEFMIExFVFRFUiBMQU1EQQorMDM5QwlHUkVFSyBDQVBJVEFMIExFVFRFUiBNVQorMDM5RAlHUkVFSyBDQVBJVEFMIExFVFRFUiBOVQorMDM5RQlHUkVFSyBDQVBJVEFMIExFVFRFUiBYSQorMDM5RglHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OCiswM0EwCUdSRUVLIENBUElUQUwgTEVUVEVSIFBJCiswM0ExCUdSRUVLIENBUElUQUwgTEVUVEVSIFJITworMDNBMwlHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQQorMDNBNAlHUkVFSyBDQVBJVEFMIExFVFRFUiBUQVUKKzAzQTUJR1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTgorMDNBNglHUkVFSyBDQVBJVEFMIExFVFRFUiBQSEkKKzAzQTcJR1JFRUsgQ0FQSVRBTCBMRVRURVIgQ0hJCiswM0E4CUdSRUVLIENBUElUQUwgTEVUVEVSIFBTSQorMDNBOQlHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQQorMDNBQQlHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBCiswM0FCCUdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EKKzAzQUMJR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVE9OT1MKKzAzQUQJR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBUT05PUworMDNBRQlHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggVE9OT1MKKzAzQUYJR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBUT05PUworMDNCMAlHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgVE9OT1MKKzAzQjEJR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBCiswM0IyCUdSRUVLIFNNQUxMIExFVFRFUiBCRVRBCiswM0IzCUdSRUVLIFNNQUxMIExFVFRFUiBHQU1NQQorMDNCNAlHUkVFSyBTTUFMTCBMRVRURVIgREVMVEEKKzAzQjUJR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04KKzAzQjYJR1JFRUsgU01BTEwgTEVUVEVSIFpFVEEKKzAzQjcJR1JFRUsgU01BTEwgTEVUVEVSIEVUQQorMDNCOAlHUkVFSyBTTUFMTCBMRVRURVIgVEhFVEEKKzAzQjkJR1JFRUsgU01BTEwgTEVUVEVSIElPVEEKKzAzQkEJR1JFRUsgU01BTEwgTEVUVEVSIEtBUFBBCiswM0JCCUdSRUVLIFNNQUxMIExFVFRFUiBMQU1EQQorMDNCQwlHUkVFSyBTTUFMTCBMRVRURVIgTVUKKzAzQkQJR1JFRUsgU01BTEwgTEVUVEVSIE5VCiswM0JFCUdSRUVLIFNNQUxMIExFVFRFUiBYSQorMDNCRglHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTgorMDNDMAlHUkVFSyBTTUFMTCBMRVRURVIgUEkKKzAzQzEJR1JFRUsgU01BTEwgTEVUVEVSIFJITworMDNDMglHUkVFSyBTTUFMTCBMRVRURVIgRklOQUwgU0lHTUEKKzAzQzMJR1JFRUsgU01BTEwgTEVUVEVSIFNJR01BCiswM0M0CUdSRUVLIFNNQUxMIExFVFRFUiBUQVUKKzAzQzUJR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04KKzAzQzYJR1JFRUsgU01BTEwgTEVUVEVSIFBISQorMDNDNwlHUkVFSyBTTUFMTCBMRVRURVIgQ0hJCiswM0M4CUdSRUVLIFNNQUxMIExFVFRFUiBQU0kKKzAzQzkJR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBCiswM0NBCUdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBCiswM0NCCUdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBCiswM0NDCUdSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggVE9OT1MKKzAzQ0QJR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBUT05PUworMDNDRQlHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBUT05PUworMDNEMAlHUkVFSyBCRVRBIFNZTUJPTAorMDNEMQlHUkVFSyBUSEVUQSBTWU1CT0wKKzAzRDIJR1JFRUsgVVBTSUxPTiBXSVRIIEhPT0sgU1lNQk9MCiswM0QzCUdSRUVLIFVQU0lMT04gV0lUSCBBQ1VURSBBTkQgSE9PSyBTWU1CT0wKKzAzRDQJR1JFRUsgVVBTSUxPTiBXSVRIIERJQUVSRVNJUyBBTkQgSE9PSyBTWU1CT0wKKzAzRDUJR1JFRUsgUEhJIFNZTUJPTAorMDNENglHUkVFSyBQSSBTWU1CT0wKKzAzREEJR1JFRUsgTEVUVEVSIFNUSUdNQQorMDNEQwlHUkVFSyBMRVRURVIgRElHQU1NQQorMDNERQlHUkVFSyBMRVRURVIgS09QUEEKKzAzRTAJR1JFRUsgTEVUVEVSIFNBTVBJCiswM0UyCUNPUFRJQyBDQVBJVEFMIExFVFRFUiBTSEVJCiswM0UzCUNPUFRJQyBTTUFMTCBMRVRURVIgU0hFSQorMDNFNAlDT1BUSUMgQ0FQSVRBTCBMRVRURVIgRkVJCiswM0U1CUNPUFRJQyBTTUFMTCBMRVRURVIgRkVJCiswM0U2CUNPUFRJQyBDQVBJVEFMIExFVFRFUiBLSEVJCiswM0U3CUNPUFRJQyBTTUFMTCBMRVRURVIgS0hFSQorMDNFOAlDT1BUSUMgQ0FQSVRBTCBMRVRURVIgSE9SSQorMDNFOQlDT1BUSUMgU01BTEwgTEVUVEVSIEhPUkkKKzAzRUEJQ09QVElDIENBUElUQUwgTEVUVEVSIEdBTkdJQQorMDNFQglDT1BUSUMgU01BTEwgTEVUVEVSIEdBTkdJQQorMDNFQwlDT1BUSUMgQ0FQSVRBTCBMRVRURVIgU0hJTUEKKzAzRUQJQ09QVElDIFNNQUxMIExFVFRFUiBTSElNQQorMDNFRQlDT1BUSUMgQ0FQSVRBTCBMRVRURVIgREVJCiswM0VGCUNPUFRJQyBTTUFMTCBMRVRURVIgREVJCiswM0YwCUdSRUVLIEtBUFBBIFNZTUJPTAorMDNGMQlHUkVFSyBSSE8gU1lNQk9MCiswM0YyCUdSRUVLIExVTkFURSBTSUdNQSBTWU1CT0wKKzAzRjMJR1JFRUsgTEVUVEVSIFlPVAorMDQwMQlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJTworMDQwMglDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBESkUKKzA0MDMJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0pFCiswNDA0CUNZUklMTElDIENBUElUQUwgTEVUVEVSIFVLUkFJTklBTiBJRQorMDQwNQlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBEWkUKKzA0MDYJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCiswNDA3CUNZUklMTElDIENBUElUQUwgTEVUVEVSIFlJCiswNDA4CUNZUklMTElDIENBUElUQUwgTEVUVEVSIEpFCiswNDA5CUNZUklMTElDIENBUElUQUwgTEVUVEVSIExKRQorMDQwQQlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBOSkUKKzA0MEIJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNIRQorMDQwQwlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLSkUKKzA0MEUJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgVQorMDQwRglDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBEWkhFCiswNDEwCUNZUklMTElDIENBUElUQUwgTEVUVEVSIEEKKzA0MTEJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkUKKzA0MTIJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkUKKzA0MTMJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCiswNDE0CUNZUklMTElDIENBUElUQUwgTEVUVEVSIERFCiswNDE1CUNZUklMTElDIENBUElUQUwgTEVUVEVSIElFCiswNDE2CUNZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQorMDQxNwlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRQorMDQxOAlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJCiswNDE5CUNZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKKzA0MUEJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EKKzA0MUIJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwKKzA0MUMJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KKzA0MUQJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4KKzA0MUUJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTworMDQxRglDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQorMDQyMAlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUgorMDQyMQlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUworMDQyMglDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURQorMDQyMwlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVCiswNDI0CUNZUklMTElDIENBUElUQUwgTEVUVEVSIEVGCiswNDI1CUNZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCiswNDI2CUNZUklMTElDIENBUElUQUwgTEVUVEVSIFRTRQorMDQyNwlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUKKzA0MjgJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCiswNDI5CUNZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCiswNDJBCUNZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTgorMDQyQglDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCiswNDJDCUNZUklMTElDIENBUElUQUwgTEVUVEVSIFNPRlQgU0lHTgorMDQyRAlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFCiswNDJFCUNZUklMTElDIENBUElUQUwgTEVUVEVSIFlVCiswNDJGCUNZUklMTElDIENBUElUQUwgTEVUVEVSIFlBCiswNDMwCUNZUklMTElDIFNNQUxMIExFVFRFUiBBCiswNDMxCUNZUklMTElDIFNNQUxMIExFVFRFUiBCRQorMDQzMglDWVJJTExJQyBTTUFMTCBMRVRURVIgVkUKKzA0MzMJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRQorMDQzNAlDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKKzA0MzUJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCiswNDM2CUNZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKKzA0MzcJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCiswNDM4CUNZUklMTElDIFNNQUxMIExFVFRFUiBJCiswNDM5CUNZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCiswNDNBCUNZUklMTElDIFNNQUxMIExFVFRFUiBLQQorMDQzQglDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKKzA0M0MJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCiswNDNECUNZUklMTElDIFNNQUxMIExFVFRFUiBFTgorMDQzRQlDWVJJTExJQyBTTUFMTCBMRVRURVIgTworMDQzRglDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUKKzA0NDAJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCiswNDQxCUNZUklMTElDIFNNQUxMIExFVFRFUiBFUworMDQ0MglDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKKzA0NDMJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKKzA0NDQJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVGCiswNDQ1CUNZUklMTElDIFNNQUxMIExFVFRFUiBIQQorMDQ0NglDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFCiswNDQ3CUNZUklMTElDIFNNQUxMIExFVFRFUiBDSEUKKzA0NDgJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQQorMDQ0OQlDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hDSEEKKzA0NEEJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBUkQgU0lHTgorMDQ0QglDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVQorMDQ0QwlDWVJJTExJQyBTTUFMTCBMRVRURVIgU09GVCBTSUdOCiswNDRECUNZUklMTElDIFNNQUxMIExFVFRFUiBFCiswNDRFCUNZUklMTElDIFNNQUxMIExFVFRFUiBZVQorMDQ0RglDWVJJTExJQyBTTUFMTCBMRVRURVIgWUEKKzA0NTEJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElPCiswNDUyCUNZUklMTElDIFNNQUxMIExFVFRFUiBESkUKKzA0NTMJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdKRQorMDQ1NAlDWVJJTExJQyBTTUFMTCBMRVRURVIgVUtSQUlOSUFOIElFCiswNDU1CUNZUklMTElDIFNNQUxMIExFVFRFUiBEWkUKKzA0NTYJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQorMDQ1NwlDWVJJTExJQyBTTUFMTCBMRVRURVIgWUkKKzA0NTgJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEpFCiswNDU5CUNZUklMTElDIFNNQUxMIExFVFRFUiBMSkUKKzA0NUEJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE5KRQorMDQ1QglDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNIRQorMDQ1QwlDWVJJTExJQyBTTUFMTCBMRVRURVIgS0pFCiswNDVFCUNZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBVCiswNDVGCUNZUklMTElDIFNNQUxMIExFVFRFUiBEWkhFCiswNDYwCUNZUklMTElDIENBUElUQUwgTEVUVEVSIE9NRUdBCiswNDYxCUNZUklMTElDIFNNQUxMIExFVFRFUiBPTUVHQQorMDQ2MglDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZQVQKKzA0NjMJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBVAorMDQ2NAlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJT1RJRklFRCBFCiswNDY1CUNZUklMTElDIFNNQUxMIExFVFRFUiBJT1RJRklFRCBFCiswNDY2CUNZUklMTElDIENBUElUQUwgTEVUVEVSIExJVFRMRSBZVVMKKzA0NjcJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIExJVFRMRSBZVVMKKzA0NjgJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU9USUZJRUQgTElUVExFIFlVUworMDQ2OQlDWVJJTExJQyBTTUFMTCBMRVRURVIgSU9USUZJRUQgTElUVExFIFlVUworMDQ2QQlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCSUcgWVVTCiswNDZCCUNZUklMTElDIFNNQUxMIExFVFRFUiBCSUcgWVVTCiswNDZDCUNZUklMTElDIENBUElUQUwgTEVUVEVSIElPVElGSUVEIEJJRyBZVVMKKzA0NkQJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElPVElGSUVEIEJJRyBZVVMKKzA0NkUJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS1NJCiswNDZGCUNZUklMTElDIFNNQUxMIExFVFRFUiBLU0kKKzA0NzAJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUFNJCiswNDcxCUNZUklMTElDIFNNQUxMIExFVFRFUiBQU0kKKzA0NzIJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRklUQQorMDQ3MwlDWVJJTExJQyBTTUFMTCBMRVRURVIgRklUQQorMDQ3NAlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJWkhJVFNBCiswNDc1CUNZUklMTElDIFNNQUxMIExFVFRFUiBJWkhJVFNBCiswNDc2CUNZUklMTElDIENBUElUQUwgTEVUVEVSIElaSElUU0EgV0lUSCBET1VCTEUgR1JBVkUgQUNDRU5UCiswNDc3CUNZUklMTElDIFNNQUxMIExFVFRFUiBJWkhJVFNBIFdJVEggRE9VQkxFIEdSQVZFIEFDQ0VOVAorMDQ3OAlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVSworMDQ3OQlDWVJJTExJQyBTTUFMTCBMRVRURVIgVUsKKzA0N0EJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUk9VTkQgT01FR0EKKzA0N0IJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFJPVU5EIE9NRUdBCiswNDdDCUNZUklMTElDIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggVElUTE8KKzA0N0QJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggVElUTE8KKzA0N0UJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgT1QKKzA0N0YJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE9UCiswNDgwCUNZUklMTElDIENBUElUQUwgTEVUVEVSIEtPUFBBCiswNDgxCUNZUklMTElDIFNNQUxMIExFVFRFUiBLT1BQQQorMDQ4MglDWVJJTExJQyBUSE9VU0FORFMgU0lHTgorMDQ4MwlDT01CSU5JTkcgQ1lSSUxMSUMgVElUTE8KKzA0ODQJQ09NQklOSU5HIENZUklMTElDIFBBTEFUQUxJWkFUSU9OCiswNDg1CUNPTUJJTklORyBDWVJJTExJQyBEQVNJQSBQTkVVTUFUQQorMDQ4NglDT01CSU5JTkcgQ1lSSUxMSUMgUFNJTEkgUE5FVU1BVEEKKzA0OTAJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFIFdJVEggVVBUVVJOCiswNDkxCUNZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBVUFRVUk4KKzA0OTIJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFIFdJVEggU1RST0tFCiswNDkzCUNZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBTVFJPS0UKKzA0OTQJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFIFdJVEggTUlERExFIEhPT0sKKzA0OTUJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRSBXSVRIIE1JRERMRSBIT09LCiswNDk2CUNZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRSBXSVRIIERFU0NFTkRFUgorMDQ5NwlDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFIFdJVEggREVTQ0VOREVSCiswNDk4CUNZUklMTElDIENBUElUQUwgTEVUVEVSIFpFIFdJVEggREVTQ0VOREVSCiswNDk5CUNZUklMTElDIFNNQUxMIExFVFRFUiBaRSBXSVRIIERFU0NFTkRFUgorMDQ5QQlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgorMDQ5QglDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVIKKzA0OUMJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBWRVJUSUNBTCBTVFJPS0UKKzA0OUQJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggVkVSVElDQUwgU1RST0tFCiswNDlFCUNZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggU1RST0tFCiswNDlGCUNZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIFNUUk9LRQorMDRBMAlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVNIS0lSIEtBCiswNEExCUNZUklMTElDIFNNQUxMIExFVFRFUiBCQVNIS0lSIEtBCiswNEEyCUNZUklMTElDIENBUElUQUwgTEVUVEVSIEVOIFdJVEggREVTQ0VOREVSCiswNEEzCUNZUklMTElDIFNNQUxMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUgorMDRBNAlDWVJJTExJQyBDQVBJVEFMIExJR0FUVVJFIEVOIEdIRQorMDRBNQlDWVJJTExJQyBTTUFMTCBMSUdBVFVSRSBFTiBHSEUKKzA0QTYJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEUgV0lUSCBNSURETEUgSE9PSworMDRBNwlDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUgV0lUSCBNSURETEUgSE9PSworMDRBOAlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBQktIQVNJQU4gSEEKKzA0QTkJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEFCS0hBU0lBTiBIQQorMDRBQQlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUyBXSVRIIERFU0NFTkRFUgorMDRBQglDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMgV0lUSCBERVNDRU5ERVIKKzA0QUMJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUgV0lUSCBERVNDRU5ERVIKKzA0QUQJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFIFdJVEggREVTQ0VOREVSCiswNEFFCUNZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUKKzA0QUYJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFUKKzA0QjAJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRQorMDRCMQlDWVJJTExJQyBTTUFMTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRQorMDRCMglDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQSBXSVRIIERFU0NFTkRFUgorMDRCMwlDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVIKKzA0QjQJQ1lSSUxMSUMgQ0FQSVRBTCBMSUdBVFVSRSBURSBUU0UKKzA0QjUJQ1lSSUxMSUMgU01BTEwgTElHQVRVUkUgVEUgVFNFCiswNEI2CUNZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIERFU0NFTkRFUgorMDRCNwlDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSCiswNEI4CUNZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQorMDRCOQlDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggVkVSVElDQUwgU1RST0tFCiswNEJBCUNZUklMTElDIENBUElUQUwgTEVUVEVSIFNISEEKKzA0QkIJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNISEEKKzA0QkMJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQUJLSEFTSUFOIENIRQorMDRCRAlDWVJJTExJQyBTTUFMTCBMRVRURVIgQUJLSEFTSUFOIENIRQorMDRCRQlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBQktIQVNJQU4gQ0hFIFdJVEggREVTQ0VOREVSCiswNEJGCUNZUklMTElDIFNNQUxMIExFVFRFUiBBQktIQVNJQU4gQ0hFIFdJVEggREVTQ0VOREVSCiswNEMwCUNZUklMTElDIExFVFRFUiBQQUxPQ0hLQQorMDRDMQlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUgV0lUSCBCUkVWRQorMDRDMglDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFIFdJVEggQlJFVkUKKzA0QzMJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBIT09LCiswNEM0CUNZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIEhPT0sKKzA0QzcJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBIT09LCiswNEM4CUNZUklMTElDIFNNQUxMIExFVFRFUiBFTiBXSVRIIEhPT0sKKzA0Q0IJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0hBS0FTU0lBTiBDSEUKKzA0Q0MJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtIQUtBU1NJQU4gQ0hFCiswNEQwCUNZUklMTElDIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRQorMDREMQlDWVJJTExJQyBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFCiswNEQyCUNZUklMTElDIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKzA0RDMJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKzA0RDQJQ1lSSUxMSUMgQ0FQSVRBTCBMSUdBVFVSRSBBIElFCiswNEQ1CUNZUklMTElDIFNNQUxMIExJR0FUVVJFIEEgSUUKKzA0RDYJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUgV0lUSCBCUkVWRQorMDRENwlDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUgV0lUSCBCUkVWRQorMDREOAlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTQ0hXQQorMDREOQlDWVJJTExJQyBTTUFMTCBMRVRURVIgU0NIV0EKKzA0REEJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0NIV0EgV0lUSCBESUFFUkVTSVMKKzA0REIJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNDSFdBIFdJVEggRElBRVJFU0lTCiswNERDCUNZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRSBXSVRIIERJQUVSRVNJUworMDRERAlDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFIFdJVEggRElBRVJFU0lTCiswNERFCUNZUklMTElDIENBUElUQUwgTEVUVEVSIFpFIFdJVEggRElBRVJFU0lTCiswNERGCUNZUklMTElDIFNNQUxMIExFVFRFUiBaRSBXSVRIIERJQUVSRVNJUworMDRFMAlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBQktIQVNJQU4gRFpFCiswNEUxCUNZUklMTElDIFNNQUxMIExFVFRFUiBBQktIQVNJQU4gRFpFCiswNEUyCUNZUklMTElDIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST04KKzA0RTMJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST04KKzA0RTQJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUworMDRFNQlDWVJJTExJQyBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUworMDRFNglDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiswNEU3CUNZUklMTElDIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiswNEU4CUNZUklMTElDIENBUElUQUwgTEVUVEVSIEJBUlJFRCBPCiswNEU5CUNZUklMTElDIFNNQUxMIExFVFRFUiBCQVJSRUQgTworMDRFQQlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTyBXSVRIIERJQUVSRVNJUworMDRFQglDWVJJTExJQyBTTUFMTCBMRVRURVIgQkFSUkVEIE8gV0lUSCBESUFFUkVTSVMKKzA0RUUJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgorMDRFRglDWVJJTExJQyBTTUFMTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgorMDRGMAlDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiswNEYxCUNZUklMTElDIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCiswNEYyCUNZUklMTElDIENBUElUQUwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEUKKzA0RjMJQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEUKKzA0RjQJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggRElBRVJFU0lTCiswNEY1CUNZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBESUFFUkVTSVMKKzA0RjgJQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSVSBXSVRIIERJQUVSRVNJUworMDRGOQlDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVSBXSVRIIERJQUVSRVNJUworMDUzMQlBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBBWUIKKzA1MzIJQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgQkVOCiswNTMzCUFSTUVOSUFOIENBUElUQUwgTEVUVEVSIEdJTQorMDUzNAlBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBEQQorMDUzNQlBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBFQ0gKKzA1MzYJQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgWkEKKzA1MzcJQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgRUgKKzA1MzgJQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgRVQKKzA1MzkJQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgVE8KKzA1M0EJQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgWkhFCiswNTNCCUFSTUVOSUFOIENBUElUQUwgTEVUVEVSIElOSQorMDUzQwlBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBMSVdOCiswNTNECUFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFhFSAorMDUzRQlBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBDQQorMDUzRglBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBLRU4KKzA1NDAJQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgSE8KKzA1NDEJQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgSkEKKzA1NDIJQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgR0hBRAorMDU0MwlBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBDSEVICiswNTQ0CUFSTUVOSUFOIENBUElUQUwgTEVUVEVSIE1FTgorMDU0NQlBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBZSQorMDU0NglBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBOT1cKKzA1NDcJQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgU0hBCiswNTQ4CUFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFZPCiswNTQ5CUFSTUVOSUFOIENBUElUQUwgTEVUVEVSIENIQQorMDU0QQlBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBQRUgKKzA1NEIJQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgSkhFSAorMDU0QwlBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBSQQorMDU0RAlBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBTRUgKKzA1NEUJQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgVkVXCiswNTRGCUFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFRJV04KKzA1NTAJQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgUkVICiswNTUxCUFSTUVOSUFOIENBUElUQUwgTEVUVEVSIENPCiswNTUyCUFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFlJV04KKzA1NTMJQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgUElXUgorMDU1NAlBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBLRUgKKzA1NTUJQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgT0gKKzA1NTYJQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgRkVICiswNTU5CUFSTUVOSUFOIE1PRElGSUVSIExFVFRFUiBMRUZUIEhBTEYgUklORworMDU1QQlBUk1FTklBTiBBUE9TVFJPUEhFCiswNTVCCUFSTUVOSUFOIEVNUEhBU0lTIE1BUksKKzA1NUMJQVJNRU5JQU4gRVhDTEFNQVRJT04gTUFSSworMDU1RAlBUk1FTklBTiBDT01NQQorMDU1RQlBUk1FTklBTiBRVUVTVElPTiBNQVJLCiswNTVGCUFSTUVOSUFOIEFCQlJFVklBVElPTiBNQVJLCiswNTYxCUFSTUVOSUFOIFNNQUxMIExFVFRFUiBBWUIKKzA1NjIJQVJNRU5JQU4gU01BTEwgTEVUVEVSIEJFTgorMDU2MwlBUk1FTklBTiBTTUFMTCBMRVRURVIgR0lNCiswNTY0CUFSTUVOSUFOIFNNQUxMIExFVFRFUiBEQQorMDU2NQlBUk1FTklBTiBTTUFMTCBMRVRURVIgRUNICiswNTY2CUFSTUVOSUFOIFNNQUxMIExFVFRFUiBaQQorMDU2NwlBUk1FTklBTiBTTUFMTCBMRVRURVIgRUgKKzA1NjgJQVJNRU5JQU4gU01BTEwgTEVUVEVSIEVUCiswNTY5CUFSTUVOSUFOIFNNQUxMIExFVFRFUiBUTworMDU2QQlBUk1FTklBTiBTTUFMTCBMRVRURVIgWkhFCiswNTZCCUFSTUVOSUFOIFNNQUxMIExFVFRFUiBJTkkKKzA1NkMJQVJNRU5JQU4gU01BTEwgTEVUVEVSIExJV04KKzA1NkQJQVJNRU5JQU4gU01BTEwgTEVUVEVSIFhFSAorMDU2RQlBUk1FTklBTiBTTUFMTCBMRVRURVIgQ0EKKzA1NkYJQVJNRU5JQU4gU01BTEwgTEVUVEVSIEtFTgorMDU3MAlBUk1FTklBTiBTTUFMTCBMRVRURVIgSE8KKzA1NzEJQVJNRU5JQU4gU01BTEwgTEVUVEVSIEpBCiswNTcyCUFSTUVOSUFOIFNNQUxMIExFVFRFUiBHSEFECiswNTczCUFSTUVOSUFOIFNNQUxMIExFVFRFUiBDSEVICiswNTc0CUFSTUVOSUFOIFNNQUxMIExFVFRFUiBNRU4KKzA1NzUJQVJNRU5JQU4gU01BTEwgTEVUVEVSIFlJCiswNTc2CUFSTUVOSUFOIFNNQUxMIExFVFRFUiBOT1cKKzA1NzcJQVJNRU5JQU4gU01BTEwgTEVUVEVSIFNIQQorMDU3OAlBUk1FTklBTiBTTUFMTCBMRVRURVIgVk8KKzA1NzkJQVJNRU5JQU4gU01BTEwgTEVUVEVSIENIQQorMDU3QQlBUk1FTklBTiBTTUFMTCBMRVRURVIgUEVICiswNTdCCUFSTUVOSUFOIFNNQUxMIExFVFRFUiBKSEVICiswNTdDCUFSTUVOSUFOIFNNQUxMIExFVFRFUiBSQQorMDU3RAlBUk1FTklBTiBTTUFMTCBMRVRURVIgU0VICiswNTdFCUFSTUVOSUFOIFNNQUxMIExFVFRFUiBWRVcKKzA1N0YJQVJNRU5JQU4gU01BTEwgTEVUVEVSIFRJV04KKzA1ODAJQVJNRU5JQU4gU01BTEwgTEVUVEVSIFJFSAorMDU4MQlBUk1FTklBTiBTTUFMTCBMRVRURVIgQ08KKzA1ODIJQVJNRU5JQU4gU01BTEwgTEVUVEVSIFlJV04KKzA1ODMJQVJNRU5JQU4gU01BTEwgTEVUVEVSIFBJV1IKKzA1ODQJQVJNRU5JQU4gU01BTEwgTEVUVEVSIEtFSAorMDU4NQlBUk1FTklBTiBTTUFMTCBMRVRURVIgT0gKKzA1ODYJQVJNRU5JQU4gU01BTEwgTEVUVEVSIEZFSAorMDU4NwlBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBFQ0ggWUlXTgorMDU4OQlBUk1FTklBTiBGVUxMIFNUT1AKKzA1OTEJSEVCUkVXIEFDQ0VOVCBFVE5BSFRBCiswNTkyCUhFQlJFVyBBQ0NFTlQgU0VHT0wKKzA1OTMJSEVCUkVXIEFDQ0VOVCBTSEFMU0hFTEVUCiswNTk0CUhFQlJFVyBBQ0NFTlQgWkFRRUYgUUFUQU4KKzA1OTUJSEVCUkVXIEFDQ0VOVCBaQVFFRiBHQURPTAorMDU5NglIRUJSRVcgQUNDRU5UIFRJUEVIQQorMDU5NwlIRUJSRVcgQUNDRU5UIFJFVklBCiswNTk4CUhFQlJFVyBBQ0NFTlQgWkFSUUEKKzA1OTkJSEVCUkVXIEFDQ0VOVCBQQVNIVEEKKzA1OUEJSEVCUkVXIEFDQ0VOVCBZRVRJVgorMDU5QglIRUJSRVcgQUNDRU5UIFRFVklSCiswNTlDCUhFQlJFVyBBQ0NFTlQgR0VSRVNICiswNTlECUhFQlJFVyBBQ0NFTlQgR0VSRVNIIE1VUURBTQorMDU5RQlIRUJSRVcgQUNDRU5UIEdFUlNIQVlJTQorMDU5RglIRUJSRVcgQUNDRU5UIFFBUk5FWSBQQVJBCiswNUEwCUhFQlJFVyBBQ0NFTlQgVEVMSVNIQSBHRURPTEEKKzA1QTEJSEVCUkVXIEFDQ0VOVCBQQVpFUgorMDVBMwlIRUJSRVcgQUNDRU5UIE1VTkFICiswNUE0CUhFQlJFVyBBQ0NFTlQgTUFIQVBBS0gKKzA1QTUJSEVCUkVXIEFDQ0VOVCBNRVJLSEEKKzA1QTYJSEVCUkVXIEFDQ0VOVCBNRVJLSEEgS0VGVUxBCiswNUE3CUhFQlJFVyBBQ0NFTlQgREFSR0EKKzA1QTgJSEVCUkVXIEFDQ0VOVCBRQURNQQorMDVBOQlIRUJSRVcgQUNDRU5UIFRFTElTSEEgUUVUQU5BCiswNUFBCUhFQlJFVyBBQ0NFTlQgWUVSQUggQkVOIFlPTU8KKzA1QUIJSEVCUkVXIEFDQ0VOVCBPTEUKKzA1QUMJSEVCUkVXIEFDQ0VOVCBJTFVZCiswNUFECUhFQlJFVyBBQ0NFTlQgREVISQorMDVBRQlIRUJSRVcgQUNDRU5UIFpJTk9SCiswNUFGCUhFQlJFVyBNQVJLIE1BU09SQSBDSVJDTEUKKzA1QjAJSEVCUkVXIFBPSU5UIFNIRVZBCiswNUIxCUhFQlJFVyBQT0lOVCBIQVRBRiBTRUdPTAorMDVCMglIRUJSRVcgUE9JTlQgSEFUQUYgUEFUQUgKKzA1QjMJSEVCUkVXIFBPSU5UIEhBVEFGIFFBTUFUUworMDVCNAlIRUJSRVcgUE9JTlQgSElSSVEKKzA1QjUJSEVCUkVXIFBPSU5UIFRTRVJFCiswNUI2CUhFQlJFVyBQT0lOVCBTRUdPTAorMDVCNwlIRUJSRVcgUE9JTlQgUEFUQUgKKzA1QjgJSEVCUkVXIFBPSU5UIFFBTUFUUworMDVCOQlIRUJSRVcgUE9JTlQgSE9MQU0KKzA1QkIJSEVCUkVXIFBPSU5UIFFVQlVUUworMDVCQwlIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElRCiswNUJECUhFQlJFVyBQT0lOVCBNRVRFRworMDVCRQlIRUJSRVcgUFVOQ1RVQVRJT04gTUFRQUYKKzA1QkYJSEVCUkVXIFBPSU5UIFJBRkUKKzA1QzAJSEVCUkVXIFBVTkNUVUFUSU9OIFBBU0VRCiswNUMxCUhFQlJFVyBQT0lOVCBTSElOIERPVAorMDVDMglIRUJSRVcgUE9JTlQgU0lOIERPVAorMDVDMwlIRUJSRVcgUFVOQ1RVQVRJT04gU09GIFBBU1VRCiswNUM0CUhFQlJFVyBNQVJLIFVQUEVSIERPVAorMDVEMAlIRUJSRVcgTEVUVEVSIEFMRUYKKzA1RDEJSEVCUkVXIExFVFRFUiBCRVQKKzA1RDIJSEVCUkVXIExFVFRFUiBHSU1FTAorMDVEMwlIRUJSRVcgTEVUVEVSIERBTEVUCiswNUQ0CUhFQlJFVyBMRVRURVIgSEUKKzA1RDUJSEVCUkVXIExFVFRFUiBWQVYKKzA1RDYJSEVCUkVXIExFVFRFUiBaQVlJTgorMDVENwlIRUJSRVcgTEVUVEVSIEhFVAorMDVEOAlIRUJSRVcgTEVUVEVSIFRFVAorMDVEOQlIRUJSRVcgTEVUVEVSIFlPRAorMDVEQQlIRUJSRVcgTEVUVEVSIEZJTkFMIEtBRgorMDVEQglIRUJSRVcgTEVUVEVSIEtBRgorMDVEQwlIRUJSRVcgTEVUVEVSIExBTUVECiswNURECUhFQlJFVyBMRVRURVIgRklOQUwgTUVNCiswNURFCUhFQlJFVyBMRVRURVIgTUVNCiswNURGCUhFQlJFVyBMRVRURVIgRklOQUwgTlVOCiswNUUwCUhFQlJFVyBMRVRURVIgTlVOCiswNUUxCUhFQlJFVyBMRVRURVIgU0FNRUtICiswNUUyCUhFQlJFVyBMRVRURVIgQVlJTgorMDVFMwlIRUJSRVcgTEVUVEVSIEZJTkFMIFBFCiswNUU0CUhFQlJFVyBMRVRURVIgUEUKKzA1RTUJSEVCUkVXIExFVFRFUiBGSU5BTCBUU0FESQorMDVFNglIRUJSRVcgTEVUVEVSIFRTQURJCiswNUU3CUhFQlJFVyBMRVRURVIgUU9GCiswNUU4CUhFQlJFVyBMRVRURVIgUkVTSAorMDVFOQlIRUJSRVcgTEVUVEVSIFNISU4KKzA1RUEJSEVCUkVXIExFVFRFUiBUQVYKKzA1RjAJSEVCUkVXIExJR0FUVVJFIFlJRERJU0ggRE9VQkxFIFZBVgorMDVGMQlIRUJSRVcgTElHQVRVUkUgWUlERElTSCBWQVYgWU9ECiswNUYyCUhFQlJFVyBMSUdBVFVSRSBZSURESVNIIERPVUJMRSBZT0QKKzA1RjMJSEVCUkVXIFBVTkNUVUFUSU9OIEdFUkVTSAorMDVGNAlIRUJSRVcgUFVOQ1RVQVRJT04gR0VSU0hBWUlNCiswNjBDCUFSQUJJQyBDT01NQQorMDYxQglBUkFCSUMgU0VNSUNPTE9OCiswNjFGCUFSQUJJQyBRVUVTVElPTiBNQVJLCiswNjIxCUFSQUJJQyBMRVRURVIgSEFNWkEKKzA2MjIJQVJBQklDIExFVFRFUiBBTEVGIFdJVEggTUFEREEgQUJPVkUKKzA2MjMJQVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkUKKzA2MjQJQVJBQklDIExFVFRFUiBXQVcgV0lUSCBIQU1aQSBBQk9WRQorMDYyNQlBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBIQU1aQSBCRUxPVworMDYyNglBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFCiswNjI3CUFSQUJJQyBMRVRURVIgQUxFRgorMDYyOAlBUkFCSUMgTEVUVEVSIEJFSAorMDYyOQlBUkFCSUMgTEVUVEVSIFRFSCBNQVJCVVRBCiswNjJBCUFSQUJJQyBMRVRURVIgVEVICiswNjJCCUFSQUJJQyBMRVRURVIgVEhFSAorMDYyQwlBUkFCSUMgTEVUVEVSIEpFRU0KKzA2MkQJQVJBQklDIExFVFRFUiBIQUgKKzA2MkUJQVJBQklDIExFVFRFUiBLSEFICiswNjJGCUFSQUJJQyBMRVRURVIgREFMCiswNjMwCUFSQUJJQyBMRVRURVIgVEhBTAorMDYzMQlBUkFCSUMgTEVUVEVSIFJFSAorMDYzMglBUkFCSUMgTEVUVEVSIFpBSU4KKzA2MzMJQVJBQklDIExFVFRFUiBTRUVOCiswNjM0CUFSQUJJQyBMRVRURVIgU0hFRU4KKzA2MzUJQVJBQklDIExFVFRFUiBTQUQKKzA2MzYJQVJBQklDIExFVFRFUiBEQUQKKzA2MzcJQVJBQklDIExFVFRFUiBUQUgKKzA2MzgJQVJBQklDIExFVFRFUiBaQUgKKzA2MzkJQVJBQklDIExFVFRFUiBBSU4KKzA2M0EJQVJBQklDIExFVFRFUiBHSEFJTgorMDY0MAlBUkFCSUMgVEFUV0VFTAorMDY0MQlBUkFCSUMgTEVUVEVSIEZFSAorMDY0MglBUkFCSUMgTEVUVEVSIFFBRgorMDY0MwlBUkFCSUMgTEVUVEVSIEtBRgorMDY0NAlBUkFCSUMgTEVUVEVSIExBTQorMDY0NQlBUkFCSUMgTEVUVEVSIE1FRU0KKzA2NDYJQVJBQklDIExFVFRFUiBOT09OCiswNjQ3CUFSQUJJQyBMRVRURVIgSEVICiswNjQ4CUFSQUJJQyBMRVRURVIgV0FXCiswNjQ5CUFSQUJJQyBMRVRURVIgQUxFRiBNQUtTVVJBCiswNjRBCUFSQUJJQyBMRVRURVIgWUVICiswNjRCCUFSQUJJQyBGQVRIQVRBTgorMDY0QwlBUkFCSUMgREFNTUFUQU4KKzA2NEQJQVJBQklDIEtBU1JBVEFOCiswNjRFCUFSQUJJQyBGQVRIQQorMDY0RglBUkFCSUMgREFNTUEKKzA2NTAJQVJBQklDIEtBU1JBCiswNjUxCUFSQUJJQyBTSEFEREEKKzA2NTIJQVJBQklDIFNVS1VOCiswNjYwCUFSQUJJQy1JTkRJQyBESUdJVCBaRVJPCiswNjYxCUFSQUJJQy1JTkRJQyBESUdJVCBPTkUKKzA2NjIJQVJBQklDLUlORElDIERJR0lUIFRXTworMDY2MwlBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUUKKzA2NjQJQVJBQklDLUlORElDIERJR0lUIEZPVVIKKzA2NjUJQVJBQklDLUlORElDIERJR0lUIEZJVkUKKzA2NjYJQVJBQklDLUlORElDIERJR0lUIFNJWAorMDY2NwlBUkFCSUMtSU5ESUMgRElHSVQgU0VWRU4KKzA2NjgJQVJBQklDLUlORElDIERJR0lUIEVJR0hUCiswNjY5CUFSQUJJQy1JTkRJQyBESUdJVCBOSU5FCiswNjZBCUFSQUJJQyBQRVJDRU5UIFNJR04KKzA2NkIJQVJBQklDIERFQ0lNQUwgU0VQQVJBVE9SCiswNjZDCUFSQUJJQyBUSE9VU0FORFMgU0VQQVJBVE9SCiswNjZECUFSQUJJQyBGSVZFIFBPSU5URUQgU1RBUgorMDY3MAlBUkFCSUMgTEVUVEVSIFNVUEVSU0NSSVBUIEFMRUYKKzA2NzEJQVJBQklDIExFVFRFUiBBTEVGIFdBU0xBCiswNjcyCUFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIFdBVlkgSEFNWkEgQUJPVkUKKzA2NzMJQVJBQklDIExFVFRFUiBBTEVGIFdJVEggV0FWWSBIQU1aQSBCRUxPVworMDY3NAlBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkEKKzA2NzUJQVJBQklDIExFVFRFUiBISUdIIEhBTVpBIEFMRUYKKzA2NzYJQVJBQklDIExFVFRFUiBISUdIIEhBTVpBIFdBVworMDY3NwlBUkFCSUMgTEVUVEVSIFUgV0lUSCBIQU1aQSBBQk9WRQorMDY3OAlBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkEgWUVICiswNjc5CUFSQUJJQyBMRVRURVIgVFRFSAorMDY3QQlBUkFCSUMgTEVUVEVSIFRURUhFSAorMDY3QglBUkFCSUMgTEVUVEVSIEJFRUgKKzA2N0MJQVJBQklDIExFVFRFUiBURUggV0lUSCBSSU5HCiswNjdECUFSQUJJQyBMRVRURVIgVEVIIFdJVEggVEhSRUUgRE9UUyBBQk9WRSBET1dOV0FSRFMKKzA2N0UJQVJBQklDIExFVFRFUiBQRUgKKzA2N0YJQVJBQklDIExFVFRFUiBURUhFSAorMDY4MAlBUkFCSUMgTEVUVEVSIEJFSEVICiswNjgxCUFSQUJJQyBMRVRURVIgSEFIIFdJVEggSEFNWkEgQUJPVkUKKzA2ODIJQVJBQklDIExFVFRFUiBIQUggV0lUSCBUV08gRE9UUyBWRVJUSUNBTCBBQk9WRQorMDY4MwlBUkFCSUMgTEVUVEVSIE5ZRUgKKzA2ODQJQVJBQklDIExFVFRFUiBEWUVICiswNjg1CUFSQUJJQyBMRVRURVIgSEFIIFdJVEggVEhSRUUgRE9UUyBBQk9WRQorMDY4NglBUkFCSUMgTEVUVEVSIFRDSEVICiswNjg3CUFSQUJJQyBMRVRURVIgVENIRUhFSAorMDY4OAlBUkFCSUMgTEVUVEVSIEREQUwKKzA2ODkJQVJBQklDIExFVFRFUiBEQUwgV0lUSCBSSU5HCiswNjhBCUFSQUJJQyBMRVRURVIgREFMIFdJVEggRE9UIEJFTE9XCiswNjhCCUFSQUJJQyBMRVRURVIgREFMIFdJVEggRE9UIEJFTE9XIEFORCBTTUFMTCBUQUgKKzA2OEMJQVJBQklDIExFVFRFUiBEQUhBTAorMDY4RAlBUkFCSUMgTEVUVEVSIEREQUhBTAorMDY4RQlBUkFCSUMgTEVUVEVSIERVTAorMDY4RglBUkFCSUMgTEVUVEVSIERBTCBXSVRIIFRIUkVFIERPVFMgQUJPVkUgRE9XTldBUkRTCiswNjkwCUFSQUJJQyBMRVRURVIgREFMIFdJVEggRk9VUiBET1RTIEFCT1ZFCiswNjkxCUFSQUJJQyBMRVRURVIgUlJFSAorMDY5MglBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIFNNQUxMIFYKKzA2OTMJQVJBQklDIExFVFRFUiBSRUggV0lUSCBSSU5HCiswNjk0CUFSQUJJQyBMRVRURVIgUkVIIFdJVEggRE9UIEJFTE9XCiswNjk1CUFSQUJJQyBMRVRURVIgUkVIIFdJVEggU01BTEwgViBCRUxPVworMDY5NglBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIERPVCBCRUxPVyBBTkQgRE9UIEFCT1ZFCiswNjk3CUFSQUJJQyBMRVRURVIgUkVIIFdJVEggVFdPIERPVFMgQUJPVkUKKzA2OTgJQVJBQklDIExFVFRFUiBKRUgKKzA2OTkJQVJBQklDIExFVFRFUiBSRUggV0lUSCBGT1VSIERPVFMgQUJPVkUKKzA2OUEJQVJBQklDIExFVFRFUiBTRUVOIFdJVEggRE9UIEJFTE9XIEFORCBET1QgQUJPVkUKKzA2OUIJQVJBQklDIExFVFRFUiBTRUVOIFdJVEggVEhSRUUgRE9UUyBCRUxPVworMDY5QwlBUkFCSUMgTEVUVEVSIFNFRU4gV0lUSCBUSFJFRSBET1RTIEJFTE9XIEFORCBUSFJFRSBET1RTIEFCT1ZFCiswNjlECUFSQUJJQyBMRVRURVIgU0FEIFdJVEggVFdPIERPVFMgQkVMT1cKKzA2OUUJQVJBQklDIExFVFRFUiBTQUQgV0lUSCBUSFJFRSBET1RTIEFCT1ZFCiswNjlGCUFSQUJJQyBMRVRURVIgVEFIIFdJVEggVEhSRUUgRE9UUyBBQk9WRQorMDZBMAlBUkFCSUMgTEVUVEVSIEFJTiBXSVRIIFRIUkVFIERPVFMgQUJPVkUKKzA2QTEJQVJBQklDIExFVFRFUiBET1RMRVNTIEZFSAorMDZBMglBUkFCSUMgTEVUVEVSIEZFSCBXSVRIIERPVCBNT1ZFRCBCRUxPVworMDZBMwlBUkFCSUMgTEVUVEVSIEZFSCBXSVRIIERPVCBCRUxPVworMDZBNAlBUkFCSUMgTEVUVEVSIFZFSAorMDZBNQlBUkFCSUMgTEVUVEVSIEZFSCBXSVRIIFRIUkVFIERPVFMgQkVMT1cKKzA2QTYJQVJBQklDIExFVFRFUiBQRUhFSAorMDZBNwlBUkFCSUMgTEVUVEVSIFFBRiBXSVRIIERPVCBBQk9WRQorMDZBOAlBUkFCSUMgTEVUVEVSIFFBRiBXSVRIIFRIUkVFIERPVFMgQUJPVkUKKzA2QTkJQVJBQklDIExFVFRFUiBLRUhFSAorMDZBQQlBUkFCSUMgTEVUVEVSIFNXQVNIIEtBRgorMDZBQglBUkFCSUMgTEVUVEVSIEtBRiBXSVRIIFJJTkcKKzA2QUMJQVJBQklDIExFVFRFUiBLQUYgV0lUSCBET1QgQUJPVkUKKzA2QUQJQVJBQklDIExFVFRFUiBORworMDZBRQlBUkFCSUMgTEVUVEVSIEtBRiBXSVRIIFRIUkVFIERPVFMgQkVMT1cKKzA2QUYJQVJBQklDIExFVFRFUiBHQUYKKzA2QjAJQVJBQklDIExFVFRFUiBHQUYgV0lUSCBSSU5HCiswNkIxCUFSQUJJQyBMRVRURVIgTkdPRUgKKzA2QjIJQVJBQklDIExFVFRFUiBHQUYgV0lUSCBUV08gRE9UUyBCRUxPVworMDZCMwlBUkFCSUMgTEVUVEVSIEdVRUgKKzA2QjQJQVJBQklDIExFVFRFUiBHQUYgV0lUSCBUSFJFRSBET1RTIEFCT1ZFCiswNkI1CUFSQUJJQyBMRVRURVIgTEFNIFdJVEggU01BTEwgVgorMDZCNglBUkFCSUMgTEVUVEVSIExBTSBXSVRIIERPVCBBQk9WRQorMDZCNwlBUkFCSUMgTEVUVEVSIExBTSBXSVRIIFRIUkVFIERPVFMgQUJPVkUKKzA2QkEJQVJBQklDIExFVFRFUiBOT09OIEdIVU5OQQorMDZCQglBUkFCSUMgTEVUVEVSIFJOT09OCiswNkJDCUFSQUJJQyBMRVRURVIgTk9PTiBXSVRIIFJJTkcKKzA2QkQJQVJBQklDIExFVFRFUiBOT09OIFdJVEggVEhSRUUgRE9UUyBBQk9WRQorMDZCRQlBUkFCSUMgTEVUVEVSIEhFSCBET0FDSEFTSE1FRQorMDZDMAlBUkFCSUMgTEVUVEVSIEhFSCBXSVRIIFlFSCBBQk9WRQorMDZDMQlBUkFCSUMgTEVUVEVSIEhFSCBHT0FMCiswNkMyCUFSQUJJQyBMRVRURVIgSEVIIEdPQUwgV0lUSCBIQU1aQSBBQk9WRQorMDZDMwlBUkFCSUMgTEVUVEVSIFRFSCBNQVJCVVRBIEdPQUwKKzA2QzQJQVJBQklDIExFVFRFUiBXQVcgV0lUSCBSSU5HCiswNkM1CUFSQUJJQyBMRVRURVIgS0lSR0hJWiBPRQorMDZDNglBUkFCSUMgTEVUVEVSIE9FCiswNkM3CUFSQUJJQyBMRVRURVIgVQorMDZDOAlBUkFCSUMgTEVUVEVSIFlVCiswNkM5CUFSQUJJQyBMRVRURVIgS0lSR0hJWiBZVQorMDZDQQlBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIFRXTyBET1RTIEFCT1ZFCiswNkNCCUFSQUJJQyBMRVRURVIgVkUKKzA2Q0MJQVJBQklDIExFVFRFUiBGQVJTSSBZRUgKKzA2Q0QJQVJBQklDIExFVFRFUiBZRUggV0lUSCBUQUlMCiswNkNFCUFSQUJJQyBMRVRURVIgWUVIIFdJVEggU01BTEwgVgorMDZEMAlBUkFCSUMgTEVUVEVSIEUKKzA2RDEJQVJBQklDIExFVFRFUiBZRUggV0lUSCBUSFJFRSBET1RTIEJFTE9XCiswNkQyCUFSQUJJQyBMRVRURVIgWUVIIEJBUlJFRQorMDZEMwlBUkFCSUMgTEVUVEVSIFlFSCBCQVJSRUUgV0lUSCBIQU1aQSBBQk9WRQorMDZENAlBUkFCSUMgRlVMTCBTVE9QCiswNkQ1CUFSQUJJQyBMRVRURVIgQUUKKzA2RDYJQVJBQklDIFNNQUxMIEhJR0ggTElHQVRVUkUgU0FEIFdJVEggTEFNIFdJVEggQUxFRiBNQUtTVVJBCiswNkQ3CUFSQUJJQyBTTUFMTCBISUdIIExJR0FUVVJFIFFBRiBXSVRIIExBTSBXSVRIIEFMRUYgTUFLU1VSQQorMDZEOAlBUkFCSUMgU01BTEwgSElHSCBNRUVNIElOSVRJQUwgRk9STQorMDZEOQlBUkFCSUMgU01BTEwgSElHSCBMQU0gQUxFRgorMDZEQQlBUkFCSUMgU01BTEwgSElHSCBKRUVNCiswNkRCCUFSQUJJQyBTTUFMTCBISUdIIFRIUkVFIERPVFMKKzA2REMJQVJBQklDIFNNQUxMIEhJR0ggU0VFTgorMDZERAlBUkFCSUMgRU5EIE9GIEFZQUgKKzA2REUJQVJBQklDIFNUQVJUIE9GIFJVQiBFTCBISVpCCiswNkRGCUFSQUJJQyBTTUFMTCBISUdIIFJPVU5ERUQgWkVSTworMDZFMAlBUkFCSUMgU01BTEwgSElHSCBVUFJJR0hUIFJFQ1RBTkdVTEFSIFpFUk8KKzA2RTEJQVJBQklDIFNNQUxMIEhJR0ggRE9UTEVTUyBIRUFEIE9GIEtIQUgKKzA2RTIJQVJBQklDIFNNQUxMIEhJR0ggTUVFTSBJU09MQVRFRCBGT1JNCiswNkUzCUFSQUJJQyBTTUFMTCBMT1cgU0VFTgorMDZFNAlBUkFCSUMgU01BTEwgSElHSCBNQUREQQorMDZFNQlBUkFCSUMgU01BTEwgV0FXCiswNkU2CUFSQUJJQyBTTUFMTCBZRUgKKzA2RTcJQVJBQklDIFNNQUxMIEhJR0ggWUVICiswNkU4CUFSQUJJQyBTTUFMTCBISUdIIE5PT04KKzA2RTkJQVJBQklDIFBMQUNFIE9GIFNBSkRBSAorMDZFQQlBUkFCSUMgRU1QVFkgQ0VOVFJFIExPVyBTVE9QCiswNkVCCUFSQUJJQyBFTVBUWSBDRU5UUkUgSElHSCBTVE9QCiswNkVDCUFSQUJJQyBST1VOREVEIEhJR0ggU1RPUCBXSVRIIEZJTExFRCBDRU5UUkUKKzA2RUQJQVJBQklDIFNNQUxMIExPVyBNRUVNCiswNkYwCUVYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPCiswNkYxCUVYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBPTkUKKzA2RjIJRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIFRXTworMDZGMwlFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUUKKzA2RjQJRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIEZPVVIKKzA2RjUJRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIEZJVkUKKzA2RjYJRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIFNJWAorMDZGNwlFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgU0VWRU4KKzA2RjgJRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIEVJR0hUCiswNkY5CUVYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBOSU5FCiswOTAxCURFVkFOQUdBUkkgU0lHTiBDQU5EUkFCSU5EVQorMDkwMglERVZBTkFHQVJJIFNJR04gQU5VU1ZBUkEKKzA5MDMJREVWQU5BR0FSSSBTSUdOIFZJU0FSR0EKKzA5MDUJREVWQU5BR0FSSSBMRVRURVIgQQorMDkwNglERVZBTkFHQVJJIExFVFRFUiBBQQorMDkwNwlERVZBTkFHQVJJIExFVFRFUiBJCiswOTA4CURFVkFOQUdBUkkgTEVUVEVSIElJCiswOTA5CURFVkFOQUdBUkkgTEVUVEVSIFUKKzA5MEEJREVWQU5BR0FSSSBMRVRURVIgVVUKKzA5MEIJREVWQU5BR0FSSSBMRVRURVIgVk9DQUxJQyBSCiswOTBDCURFVkFOQUdBUkkgTEVUVEVSIFZPQ0FMSUMgTAorMDkwRAlERVZBTkFHQVJJIExFVFRFUiBDQU5EUkEgRQorMDkwRQlERVZBTkFHQVJJIExFVFRFUiBTSE9SVCBFCiswOTBGCURFVkFOQUdBUkkgTEVUVEVSIEUKKzA5MTAJREVWQU5BR0FSSSBMRVRURVIgQUkKKzA5MTEJREVWQU5BR0FSSSBMRVRURVIgQ0FORFJBIE8KKzA5MTIJREVWQU5BR0FSSSBMRVRURVIgU0hPUlQgTworMDkxMwlERVZBTkFHQVJJIExFVFRFUiBPCiswOTE0CURFVkFOQUdBUkkgTEVUVEVSIEFVCiswOTE1CURFVkFOQUdBUkkgTEVUVEVSIEtBCiswOTE2CURFVkFOQUdBUkkgTEVUVEVSIEtIQQorMDkxNwlERVZBTkFHQVJJIExFVFRFUiBHQQorMDkxOAlERVZBTkFHQVJJIExFVFRFUiBHSEEKKzA5MTkJREVWQU5BR0FSSSBMRVRURVIgTkdBCiswOTFBCURFVkFOQUdBUkkgTEVUVEVSIENBCiswOTFCCURFVkFOQUdBUkkgTEVUVEVSIENIQQorMDkxQwlERVZBTkFHQVJJIExFVFRFUiBKQQorMDkxRAlERVZBTkFHQVJJIExFVFRFUiBKSEEKKzA5MUUJREVWQU5BR0FSSSBMRVRURVIgTllBCiswOTFGCURFVkFOQUdBUkkgTEVUVEVSIFRUQQorMDkyMAlERVZBTkFHQVJJIExFVFRFUiBUVEhBCiswOTIxCURFVkFOQUdBUkkgTEVUVEVSIEREQQorMDkyMglERVZBTkFHQVJJIExFVFRFUiBEREhBCiswOTIzCURFVkFOQUdBUkkgTEVUVEVSIE5OQQorMDkyNAlERVZBTkFHQVJJIExFVFRFUiBUQQorMDkyNQlERVZBTkFHQVJJIExFVFRFUiBUSEEKKzA5MjYJREVWQU5BR0FSSSBMRVRURVIgREEKKzA5MjcJREVWQU5BR0FSSSBMRVRURVIgREhBCiswOTI4CURFVkFOQUdBUkkgTEVUVEVSIE5BCiswOTI5CURFVkFOQUdBUkkgTEVUVEVSIE5OTkEKKzA5MkEJREVWQU5BR0FSSSBMRVRURVIgUEEKKzA5MkIJREVWQU5BR0FSSSBMRVRURVIgUEhBCiswOTJDCURFVkFOQUdBUkkgTEVUVEVSIEJBCiswOTJECURFVkFOQUdBUkkgTEVUVEVSIEJIQQorMDkyRQlERVZBTkFHQVJJIExFVFRFUiBNQQorMDkyRglERVZBTkFHQVJJIExFVFRFUiBZQQorMDkzMAlERVZBTkFHQVJJIExFVFRFUiBSQQorMDkzMQlERVZBTkFHQVJJIExFVFRFUiBSUkEKKzA5MzIJREVWQU5BR0FSSSBMRVRURVIgTEEKKzA5MzMJREVWQU5BR0FSSSBMRVRURVIgTExBCiswOTM0CURFVkFOQUdBUkkgTEVUVEVSIExMTEEKKzA5MzUJREVWQU5BR0FSSSBMRVRURVIgVkEKKzA5MzYJREVWQU5BR0FSSSBMRVRURVIgU0hBCiswOTM3CURFVkFOQUdBUkkgTEVUVEVSIFNTQQorMDkzOAlERVZBTkFHQVJJIExFVFRFUiBTQQorMDkzOQlERVZBTkFHQVJJIExFVFRFUiBIQQorMDkzQwlERVZBTkFHQVJJIFNJR04gTlVLVEEKKzA5M0QJREVWQU5BR0FSSSBTSUdOIEFWQUdSQUhBCiswOTNFCURFVkFOQUdBUkkgVk9XRUwgU0lHTiBBQQorMDkzRglERVZBTkFHQVJJIFZPV0VMIFNJR04gSQorMDk0MAlERVZBTkFHQVJJIFZPV0VMIFNJR04gSUkKKzA5NDEJREVWQU5BR0FSSSBWT1dFTCBTSUdOIFUKKzA5NDIJREVWQU5BR0FSSSBWT1dFTCBTSUdOIFVVCiswOTQzCURFVkFOQUdBUkkgVk9XRUwgU0lHTiBWT0NBTElDIFIKKzA5NDQJREVWQU5BR0FSSSBWT1dFTCBTSUdOIFZPQ0FMSUMgUlIKKzA5NDUJREVWQU5BR0FSSSBWT1dFTCBTSUdOIENBTkRSQSBFCiswOTQ2CURFVkFOQUdBUkkgVk9XRUwgU0lHTiBTSE9SVCBFCiswOTQ3CURFVkFOQUdBUkkgVk9XRUwgU0lHTiBFCiswOTQ4CURFVkFOQUdBUkkgVk9XRUwgU0lHTiBBSQorMDk0OQlERVZBTkFHQVJJIFZPV0VMIFNJR04gQ0FORFJBIE8KKzA5NEEJREVWQU5BR0FSSSBWT1dFTCBTSUdOIFNIT1JUIE8KKzA5NEIJREVWQU5BR0FSSSBWT1dFTCBTSUdOIE8KKzA5NEMJREVWQU5BR0FSSSBWT1dFTCBTSUdOIEFVCiswOTRECURFVkFOQUdBUkkgU0lHTiBWSVJBTUEKKzA5NTAJREVWQU5BR0FSSSBPTQorMDk1MQlERVZBTkFHQVJJIFNUUkVTUyBTSUdOIFVEQVRUQQorMDk1MglERVZBTkFHQVJJIFNUUkVTUyBTSUdOIEFOVURBVFRBCiswOTUzCURFVkFOQUdBUkkgR1JBVkUgQUNDRU5UCiswOTU0CURFVkFOQUdBUkkgQUNVVEUgQUNDRU5UCiswOTU4CURFVkFOQUdBUkkgTEVUVEVSIFFBCiswOTU5CURFVkFOQUdBUkkgTEVUVEVSIEtISEEKKzA5NUEJREVWQU5BR0FSSSBMRVRURVIgR0hIQQorMDk1QglERVZBTkFHQVJJIExFVFRFUiBaQQorMDk1QwlERVZBTkFHQVJJIExFVFRFUiBERERIQQorMDk1RAlERVZBTkFHQVJJIExFVFRFUiBSSEEKKzA5NUUJREVWQU5BR0FSSSBMRVRURVIgRkEKKzA5NUYJREVWQU5BR0FSSSBMRVRURVIgWVlBCiswOTYwCURFVkFOQUdBUkkgTEVUVEVSIFZPQ0FMSUMgUlIKKzA5NjEJREVWQU5BR0FSSSBMRVRURVIgVk9DQUxJQyBMTAorMDk2MglERVZBTkFHQVJJIFZPV0VMIFNJR04gVk9DQUxJQyBMCiswOTYzCURFVkFOQUdBUkkgVk9XRUwgU0lHTiBWT0NBTElDIExMCiswOTY0CURFVkFOQUdBUkkgREFOREEKKzA5NjUJREVWQU5BR0FSSSBET1VCTEUgREFOREEKKzA5NjYJREVWQU5BR0FSSSBESUdJVCBaRVJPCiswOTY3CURFVkFOQUdBUkkgRElHSVQgT05FCiswOTY4CURFVkFOQUdBUkkgRElHSVQgVFdPCiswOTY5CURFVkFOQUdBUkkgRElHSVQgVEhSRUUKKzA5NkEJREVWQU5BR0FSSSBESUdJVCBGT1VSCiswOTZCCURFVkFOQUdBUkkgRElHSVQgRklWRQorMDk2QwlERVZBTkFHQVJJIERJR0lUIFNJWAorMDk2RAlERVZBTkFHQVJJIERJR0lUIFNFVkVOCiswOTZFCURFVkFOQUdBUkkgRElHSVQgRUlHSFQKKzA5NkYJREVWQU5BR0FSSSBESUdJVCBOSU5FCiswOTcwCURFVkFOQUdBUkkgQUJCUkVWSUFUSU9OIFNJR04KKzA5ODEJQkVOR0FMSSBTSUdOIENBTkRSQUJJTkRVCiswOTgyCUJFTkdBTEkgU0lHTiBBTlVTVkFSQQorMDk4MwlCRU5HQUxJIFNJR04gVklTQVJHQQorMDk4NQlCRU5HQUxJIExFVFRFUiBBCiswOTg2CUJFTkdBTEkgTEVUVEVSIEFBCiswOTg3CUJFTkdBTEkgTEVUVEVSIEkKKzA5ODgJQkVOR0FMSSBMRVRURVIgSUkKKzA5ODkJQkVOR0FMSSBMRVRURVIgVQorMDk4QQlCRU5HQUxJIExFVFRFUiBVVQorMDk4QglCRU5HQUxJIExFVFRFUiBWT0NBTElDIFIKKzA5OEMJQkVOR0FMSSBMRVRURVIgVk9DQUxJQyBMCiswOThGCUJFTkdBTEkgTEVUVEVSIEUKKzA5OTAJQkVOR0FMSSBMRVRURVIgQUkKKzA5OTMJQkVOR0FMSSBMRVRURVIgTworMDk5NAlCRU5HQUxJIExFVFRFUiBBVQorMDk5NQlCRU5HQUxJIExFVFRFUiBLQQorMDk5NglCRU5HQUxJIExFVFRFUiBLSEEKKzA5OTcJQkVOR0FMSSBMRVRURVIgR0EKKzA5OTgJQkVOR0FMSSBMRVRURVIgR0hBCiswOTk5CUJFTkdBTEkgTEVUVEVSIE5HQQorMDk5QQlCRU5HQUxJIExFVFRFUiBDQQorMDk5QglCRU5HQUxJIExFVFRFUiBDSEEKKzA5OUMJQkVOR0FMSSBMRVRURVIgSkEKKzA5OUQJQkVOR0FMSSBMRVRURVIgSkhBCiswOTlFCUJFTkdBTEkgTEVUVEVSIE5ZQQorMDk5RglCRU5HQUxJIExFVFRFUiBUVEEKKzA5QTAJQkVOR0FMSSBMRVRURVIgVFRIQQorMDlBMQlCRU5HQUxJIExFVFRFUiBEREEKKzA5QTIJQkVOR0FMSSBMRVRURVIgRERIQQorMDlBMwlCRU5HQUxJIExFVFRFUiBOTkEKKzA5QTQJQkVOR0FMSSBMRVRURVIgVEEKKzA5QTUJQkVOR0FMSSBMRVRURVIgVEhBCiswOUE2CUJFTkdBTEkgTEVUVEVSIERBCiswOUE3CUJFTkdBTEkgTEVUVEVSIERIQQorMDlBOAlCRU5HQUxJIExFVFRFUiBOQQorMDlBQQlCRU5HQUxJIExFVFRFUiBQQQorMDlBQglCRU5HQUxJIExFVFRFUiBQSEEKKzA5QUMJQkVOR0FMSSBMRVRURVIgQkEKKzA5QUQJQkVOR0FMSSBMRVRURVIgQkhBCiswOUFFCUJFTkdBTEkgTEVUVEVSIE1BCiswOUFGCUJFTkdBTEkgTEVUVEVSIFlBCiswOUIwCUJFTkdBTEkgTEVUVEVSIFJBCiswOUIyCUJFTkdBTEkgTEVUVEVSIExBCiswOUI2CUJFTkdBTEkgTEVUVEVSIFNIQQorMDlCNwlCRU5HQUxJIExFVFRFUiBTU0EKKzA5QjgJQkVOR0FMSSBMRVRURVIgU0EKKzA5QjkJQkVOR0FMSSBMRVRURVIgSEEKKzA5QkMJQkVOR0FMSSBTSUdOIE5VS1RBCiswOUJFCUJFTkdBTEkgVk9XRUwgU0lHTiBBQQorMDlCRglCRU5HQUxJIFZPV0VMIFNJR04gSQorMDlDMAlCRU5HQUxJIFZPV0VMIFNJR04gSUkKKzA5QzEJQkVOR0FMSSBWT1dFTCBTSUdOIFUKKzA5QzIJQkVOR0FMSSBWT1dFTCBTSUdOIFVVCiswOUMzCUJFTkdBTEkgVk9XRUwgU0lHTiBWT0NBTElDIFIKKzA5QzQJQkVOR0FMSSBWT1dFTCBTSUdOIFZPQ0FMSUMgUlIKKzA5QzcJQkVOR0FMSSBWT1dFTCBTSUdOIEUKKzA5QzgJQkVOR0FMSSBWT1dFTCBTSUdOIEFJCiswOUNCCUJFTkdBTEkgVk9XRUwgU0lHTiBPCiswOUNDCUJFTkdBTEkgVk9XRUwgU0lHTiBBVQorMDlDRAlCRU5HQUxJIFNJR04gVklSQU1BCiswOUQ3CUJFTkdBTEkgQVUgTEVOR1RIIE1BUksKKzA5REMJQkVOR0FMSSBMRVRURVIgUlJBCiswOURECUJFTkdBTEkgTEVUVEVSIFJIQQorMDlERglCRU5HQUxJIExFVFRFUiBZWUEKKzA5RTAJQkVOR0FMSSBMRVRURVIgVk9DQUxJQyBSUgorMDlFMQlCRU5HQUxJIExFVFRFUiBWT0NBTElDIExMCiswOUUyCUJFTkdBTEkgVk9XRUwgU0lHTiBWT0NBTElDIEwKKzA5RTMJQkVOR0FMSSBWT1dFTCBTSUdOIFZPQ0FMSUMgTEwKKzA5RTYJQkVOR0FMSSBESUdJVCBaRVJPCiswOUU3CUJFTkdBTEkgRElHSVQgT05FCiswOUU4CUJFTkdBTEkgRElHSVQgVFdPCiswOUU5CUJFTkdBTEkgRElHSVQgVEhSRUUKKzA5RUEJQkVOR0FMSSBESUdJVCBGT1VSCiswOUVCCUJFTkdBTEkgRElHSVQgRklWRQorMDlFQwlCRU5HQUxJIERJR0lUIFNJWAorMDlFRAlCRU5HQUxJIERJR0lUIFNFVkVOCiswOUVFCUJFTkdBTEkgRElHSVQgRUlHSFQKKzA5RUYJQkVOR0FMSSBESUdJVCBOSU5FCiswOUYwCUJFTkdBTEkgTEVUVEVSIFJBIFdJVEggTUlERExFIERJQUdPTkFMCiswOUYxCUJFTkdBTEkgTEVUVEVSIFJBIFdJVEggTE9XRVIgRElBR09OQUwKKzA5RjIJQkVOR0FMSSBSVVBFRSBNQVJLCiswOUYzCUJFTkdBTEkgUlVQRUUgU0lHTgorMDlGNAlCRU5HQUxJIENVUlJFTkNZIE5VTUVSQVRPUiBPTkUKKzA5RjUJQkVOR0FMSSBDVVJSRU5DWSBOVU1FUkFUT1IgVFdPCiswOUY2CUJFTkdBTEkgQ1VSUkVOQ1kgTlVNRVJBVE9SIFRIUkVFCiswOUY3CUJFTkdBTEkgQ1VSUkVOQ1kgTlVNRVJBVE9SIEZPVVIKKzA5RjgJQkVOR0FMSSBDVVJSRU5DWSBOVU1FUkFUT1IgT05FIExFU1MgVEhBTiBUSEUgREVOT01JTkFUT1IKKzA5RjkJQkVOR0FMSSBDVVJSRU5DWSBERU5PTUlOQVRPUiBTSVhURUVOCiswOUZBCUJFTkdBTEkgSVNTSEFSCiswQTAyCUdVUk1VS0hJIFNJR04gQklOREkKKzBBMDUJR1VSTVVLSEkgTEVUVEVSIEEKKzBBMDYJR1VSTVVLSEkgTEVUVEVSIEFBCiswQTA3CUdVUk1VS0hJIExFVFRFUiBJCiswQTA4CUdVUk1VS0hJIExFVFRFUiBJSQorMEEwOQlHVVJNVUtISSBMRVRURVIgVQorMEEwQQlHVVJNVUtISSBMRVRURVIgVVUKKzBBMEYJR1VSTVVLSEkgTEVUVEVSIEVFCiswQTEwCUdVUk1VS0hJIExFVFRFUiBBSQorMEExMwlHVVJNVUtISSBMRVRURVIgT08KKzBBMTQJR1VSTVVLSEkgTEVUVEVSIEFVCiswQTE1CUdVUk1VS0hJIExFVFRFUiBLQQorMEExNglHVVJNVUtISSBMRVRURVIgS0hBCiswQTE3CUdVUk1VS0hJIExFVFRFUiBHQQorMEExOAlHVVJNVUtISSBMRVRURVIgR0hBCiswQTE5CUdVUk1VS0hJIExFVFRFUiBOR0EKKzBBMUEJR1VSTVVLSEkgTEVUVEVSIENBCiswQTFCCUdVUk1VS0hJIExFVFRFUiBDSEEKKzBBMUMJR1VSTVVLSEkgTEVUVEVSIEpBCiswQTFECUdVUk1VS0hJIExFVFRFUiBKSEEKKzBBMUUJR1VSTVVLSEkgTEVUVEVSIE5ZQQorMEExRglHVVJNVUtISSBMRVRURVIgVFRBCiswQTIwCUdVUk1VS0hJIExFVFRFUiBUVEhBCiswQTIxCUdVUk1VS0hJIExFVFRFUiBEREEKKzBBMjIJR1VSTVVLSEkgTEVUVEVSIERESEEKKzBBMjMJR1VSTVVLSEkgTEVUVEVSIE5OQQorMEEyNAlHVVJNVUtISSBMRVRURVIgVEEKKzBBMjUJR1VSTVVLSEkgTEVUVEVSIFRIQQorMEEyNglHVVJNVUtISSBMRVRURVIgREEKKzBBMjcJR1VSTVVLSEkgTEVUVEVSIERIQQorMEEyOAlHVVJNVUtISSBMRVRURVIgTkEKKzBBMkEJR1VSTVVLSEkgTEVUVEVSIFBBCiswQTJCCUdVUk1VS0hJIExFVFRFUiBQSEEKKzBBMkMJR1VSTVVLSEkgTEVUVEVSIEJBCiswQTJECUdVUk1VS0hJIExFVFRFUiBCSEEKKzBBMkUJR1VSTVVLSEkgTEVUVEVSIE1BCiswQTJGCUdVUk1VS0hJIExFVFRFUiBZQQorMEEzMAlHVVJNVUtISSBMRVRURVIgUkEKKzBBMzIJR1VSTVVLSEkgTEVUVEVSIExBCiswQTMzCUdVUk1VS0hJIExFVFRFUiBMTEEKKzBBMzUJR1VSTVVLSEkgTEVUVEVSIFZBCiswQTM2CUdVUk1VS0hJIExFVFRFUiBTSEEKKzBBMzgJR1VSTVVLSEkgTEVUVEVSIFNBCiswQTM5CUdVUk1VS0hJIExFVFRFUiBIQQorMEEzQwlHVVJNVUtISSBTSUdOIE5VS1RBCiswQTNFCUdVUk1VS0hJIFZPV0VMIFNJR04gQUEKKzBBM0YJR1VSTVVLSEkgVk9XRUwgU0lHTiBJCiswQTQwCUdVUk1VS0hJIFZPV0VMIFNJR04gSUkKKzBBNDEJR1VSTVVLSEkgVk9XRUwgU0lHTiBVCiswQTQyCUdVUk1VS0hJIFZPV0VMIFNJR04gVVUKKzBBNDcJR1VSTVVLSEkgVk9XRUwgU0lHTiBFRQorMEE0OAlHVVJNVUtISSBWT1dFTCBTSUdOIEFJCiswQTRCCUdVUk1VS0hJIFZPV0VMIFNJR04gT08KKzBBNEMJR1VSTVVLSEkgVk9XRUwgU0lHTiBBVQorMEE0RAlHVVJNVUtISSBTSUdOIFZJUkFNQQorMEE1OQlHVVJNVUtISSBMRVRURVIgS0hIQQorMEE1QQlHVVJNVUtISSBMRVRURVIgR0hIQQorMEE1QglHVVJNVUtISSBMRVRURVIgWkEKKzBBNUMJR1VSTVVLSEkgTEVUVEVSIFJSQQorMEE1RQlHVVJNVUtISSBMRVRURVIgRkEKKzBBNjYJR1VSTVVLSEkgRElHSVQgWkVSTworMEE2NwlHVVJNVUtISSBESUdJVCBPTkUKKzBBNjgJR1VSTVVLSEkgRElHSVQgVFdPCiswQTY5CUdVUk1VS0hJIERJR0lUIFRIUkVFCiswQTZBCUdVUk1VS0hJIERJR0lUIEZPVVIKKzBBNkIJR1VSTVVLSEkgRElHSVQgRklWRQorMEE2QwlHVVJNVUtISSBESUdJVCBTSVgKKzBBNkQJR1VSTVVLSEkgRElHSVQgU0VWRU4KKzBBNkUJR1VSTVVLSEkgRElHSVQgRUlHSFQKKzBBNkYJR1VSTVVLSEkgRElHSVQgTklORQorMEE3MAlHVVJNVUtISSBUSVBQSQorMEE3MQlHVVJNVUtISSBBRERBSworMEE3MglHVVJNVUtISSBJUkkKKzBBNzMJR1VSTVVLSEkgVVJBCiswQTc0CUdVUk1VS0hJIEVLIE9OS0FSCiswQTgxCUdVSkFSQVRJIFNJR04gQ0FORFJBQklORFUKKzBBODIJR1VKQVJBVEkgU0lHTiBBTlVTVkFSQQorMEE4MwlHVUpBUkFUSSBTSUdOIFZJU0FSR0EKKzBBODUJR1VKQVJBVEkgTEVUVEVSIEEKKzBBODYJR1VKQVJBVEkgTEVUVEVSIEFBCiswQTg3CUdVSkFSQVRJIExFVFRFUiBJCiswQTg4CUdVSkFSQVRJIExFVFRFUiBJSQorMEE4OQlHVUpBUkFUSSBMRVRURVIgVQorMEE4QQlHVUpBUkFUSSBMRVRURVIgVVUKKzBBOEIJR1VKQVJBVEkgTEVUVEVSIFZPQ0FMSUMgUgorMEE4RAlHVUpBUkFUSSBWT1dFTCBDQU5EUkEgRQorMEE4RglHVUpBUkFUSSBMRVRURVIgRQorMEE5MAlHVUpBUkFUSSBMRVRURVIgQUkKKzBBOTEJR1VKQVJBVEkgVk9XRUwgQ0FORFJBIE8KKzBBOTMJR1VKQVJBVEkgTEVUVEVSIE8KKzBBOTQJR1VKQVJBVEkgTEVUVEVSIEFVCiswQTk1CUdVSkFSQVRJIExFVFRFUiBLQQorMEE5NglHVUpBUkFUSSBMRVRURVIgS0hBCiswQTk3CUdVSkFSQVRJIExFVFRFUiBHQQorMEE5OAlHVUpBUkFUSSBMRVRURVIgR0hBCiswQTk5CUdVSkFSQVRJIExFVFRFUiBOR0EKKzBBOUEJR1VKQVJBVEkgTEVUVEVSIENBCiswQTlCCUdVSkFSQVRJIExFVFRFUiBDSEEKKzBBOUMJR1VKQVJBVEkgTEVUVEVSIEpBCiswQTlECUdVSkFSQVRJIExFVFRFUiBKSEEKKzBBOUUJR1VKQVJBVEkgTEVUVEVSIE5ZQQorMEE5RglHVUpBUkFUSSBMRVRURVIgVFRBCiswQUEwCUdVSkFSQVRJIExFVFRFUiBUVEhBCiswQUExCUdVSkFSQVRJIExFVFRFUiBEREEKKzBBQTIJR1VKQVJBVEkgTEVUVEVSIERESEEKKzBBQTMJR1VKQVJBVEkgTEVUVEVSIE5OQQorMEFBNAlHVUpBUkFUSSBMRVRURVIgVEEKKzBBQTUJR1VKQVJBVEkgTEVUVEVSIFRIQQorMEFBNglHVUpBUkFUSSBMRVRURVIgREEKKzBBQTcJR1VKQVJBVEkgTEVUVEVSIERIQQorMEFBOAlHVUpBUkFUSSBMRVRURVIgTkEKKzBBQUEJR1VKQVJBVEkgTEVUVEVSIFBBCiswQUFCCUdVSkFSQVRJIExFVFRFUiBQSEEKKzBBQUMJR1VKQVJBVEkgTEVUVEVSIEJBCiswQUFECUdVSkFSQVRJIExFVFRFUiBCSEEKKzBBQUUJR1VKQVJBVEkgTEVUVEVSIE1BCiswQUFGCUdVSkFSQVRJIExFVFRFUiBZQQorMEFCMAlHVUpBUkFUSSBMRVRURVIgUkEKKzBBQjIJR1VKQVJBVEkgTEVUVEVSIExBCiswQUIzCUdVSkFSQVRJIExFVFRFUiBMTEEKKzBBQjUJR1VKQVJBVEkgTEVUVEVSIFZBCiswQUI2CUdVSkFSQVRJIExFVFRFUiBTSEEKKzBBQjcJR1VKQVJBVEkgTEVUVEVSIFNTQQorMEFCOAlHVUpBUkFUSSBMRVRURVIgU0EKKzBBQjkJR1VKQVJBVEkgTEVUVEVSIEhBCiswQUJDCUdVSkFSQVRJIFNJR04gTlVLVEEKKzBBQkQJR1VKQVJBVEkgU0lHTiBBVkFHUkFIQQorMEFCRQlHVUpBUkFUSSBWT1dFTCBTSUdOIEFBCiswQUJGCUdVSkFSQVRJIFZPV0VMIFNJR04gSQorMEFDMAlHVUpBUkFUSSBWT1dFTCBTSUdOIElJCiswQUMxCUdVSkFSQVRJIFZPV0VMIFNJR04gVQorMEFDMglHVUpBUkFUSSBWT1dFTCBTSUdOIFVVCiswQUMzCUdVSkFSQVRJIFZPV0VMIFNJR04gVk9DQUxJQyBSCiswQUM0CUdVSkFSQVRJIFZPV0VMIFNJR04gVk9DQUxJQyBSUgorMEFDNQlHVUpBUkFUSSBWT1dFTCBTSUdOIENBTkRSQSBFCiswQUM3CUdVSkFSQVRJIFZPV0VMIFNJR04gRQorMEFDOAlHVUpBUkFUSSBWT1dFTCBTSUdOIEFJCiswQUM5CUdVSkFSQVRJIFZPV0VMIFNJR04gQ0FORFJBIE8KKzBBQ0IJR1VKQVJBVEkgVk9XRUwgU0lHTiBPCiswQUNDCUdVSkFSQVRJIFZPV0VMIFNJR04gQVUKKzBBQ0QJR1VKQVJBVEkgU0lHTiBWSVJBTUEKKzBBRDAJR1VKQVJBVEkgT00KKzBBRTAJR1VKQVJBVEkgTEVUVEVSIFZPQ0FMSUMgUlIKKzBBRTYJR1VKQVJBVEkgRElHSVQgWkVSTworMEFFNwlHVUpBUkFUSSBESUdJVCBPTkUKKzBBRTgJR1VKQVJBVEkgRElHSVQgVFdPCiswQUU5CUdVSkFSQVRJIERJR0lUIFRIUkVFCiswQUVBCUdVSkFSQVRJIERJR0lUIEZPVVIKKzBBRUIJR1VKQVJBVEkgRElHSVQgRklWRQorMEFFQwlHVUpBUkFUSSBESUdJVCBTSVgKKzBBRUQJR1VKQVJBVEkgRElHSVQgU0VWRU4KKzBBRUUJR1VKQVJBVEkgRElHSVQgRUlHSFQKKzBBRUYJR1VKQVJBVEkgRElHSVQgTklORQorMEIwMQlPUklZQSBTSUdOIENBTkRSQUJJTkRVCiswQjAyCU9SSVlBIFNJR04gQU5VU1ZBUkEKKzBCMDMJT1JJWUEgU0lHTiBWSVNBUkdBCiswQjA1CU9SSVlBIExFVFRFUiBBCiswQjA2CU9SSVlBIExFVFRFUiBBQQorMEIwNwlPUklZQSBMRVRURVIgSQorMEIwOAlPUklZQSBMRVRURVIgSUkKKzBCMDkJT1JJWUEgTEVUVEVSIFUKKzBCMEEJT1JJWUEgTEVUVEVSIFVVCiswQjBCCU9SSVlBIExFVFRFUiBWT0NBTElDIFIKKzBCMEMJT1JJWUEgTEVUVEVSIFZPQ0FMSUMgTAorMEIwRglPUklZQSBMRVRURVIgRQorMEIxMAlPUklZQSBMRVRURVIgQUkKKzBCMTMJT1JJWUEgTEVUVEVSIE8KKzBCMTQJT1JJWUEgTEVUVEVSIEFVCiswQjE1CU9SSVlBIExFVFRFUiBLQQorMEIxNglPUklZQSBMRVRURVIgS0hBCiswQjE3CU9SSVlBIExFVFRFUiBHQQorMEIxOAlPUklZQSBMRVRURVIgR0hBCiswQjE5CU9SSVlBIExFVFRFUiBOR0EKKzBCMUEJT1JJWUEgTEVUVEVSIENBCiswQjFCCU9SSVlBIExFVFRFUiBDSEEKKzBCMUMJT1JJWUEgTEVUVEVSIEpBCiswQjFECU9SSVlBIExFVFRFUiBKSEEKKzBCMUUJT1JJWUEgTEVUVEVSIE5ZQQorMEIxRglPUklZQSBMRVRURVIgVFRBCiswQjIwCU9SSVlBIExFVFRFUiBUVEhBCiswQjIxCU9SSVlBIExFVFRFUiBEREEKKzBCMjIJT1JJWUEgTEVUVEVSIERESEEKKzBCMjMJT1JJWUEgTEVUVEVSIE5OQQorMEIyNAlPUklZQSBMRVRURVIgVEEKKzBCMjUJT1JJWUEgTEVUVEVSIFRIQQorMEIyNglPUklZQSBMRVRURVIgREEKKzBCMjcJT1JJWUEgTEVUVEVSIERIQQorMEIyOAlPUklZQSBMRVRURVIgTkEKKzBCMkEJT1JJWUEgTEVUVEVSIFBBCiswQjJCCU9SSVlBIExFVFRFUiBQSEEKKzBCMkMJT1JJWUEgTEVUVEVSIEJBCiswQjJECU9SSVlBIExFVFRFUiBCSEEKKzBCMkUJT1JJWUEgTEVUVEVSIE1BCiswQjJGCU9SSVlBIExFVFRFUiBZQQorMEIzMAlPUklZQSBMRVRURVIgUkEKKzBCMzIJT1JJWUEgTEVUVEVSIExBCiswQjMzCU9SSVlBIExFVFRFUiBMTEEKKzBCMzYJT1JJWUEgTEVUVEVSIFNIQQorMEIzNwlPUklZQSBMRVRURVIgU1NBCiswQjM4CU9SSVlBIExFVFRFUiBTQQorMEIzOQlPUklZQSBMRVRURVIgSEEKKzBCM0MJT1JJWUEgU0lHTiBOVUtUQQorMEIzRAlPUklZQSBTSUdOIEFWQUdSQUhBCiswQjNFCU9SSVlBIFZPV0VMIFNJR04gQUEKKzBCM0YJT1JJWUEgVk9XRUwgU0lHTiBJCiswQjQwCU9SSVlBIFZPV0VMIFNJR04gSUkKKzBCNDEJT1JJWUEgVk9XRUwgU0lHTiBVCiswQjQyCU9SSVlBIFZPV0VMIFNJR04gVVUKKzBCNDMJT1JJWUEgVk9XRUwgU0lHTiBWT0NBTElDIFIKKzBCNDcJT1JJWUEgVk9XRUwgU0lHTiBFCiswQjQ4CU9SSVlBIFZPV0VMIFNJR04gQUkKKzBCNEIJT1JJWUEgVk9XRUwgU0lHTiBPCiswQjRDCU9SSVlBIFZPV0VMIFNJR04gQVUKKzBCNEQJT1JJWUEgU0lHTiBWSVJBTUEKKzBCNTYJT1JJWUEgQUkgTEVOR1RIIE1BUksKKzBCNTcJT1JJWUEgQVUgTEVOR1RIIE1BUksKKzBCNUMJT1JJWUEgTEVUVEVSIFJSQQorMEI1RAlPUklZQSBMRVRURVIgUkhBCiswQjVGCU9SSVlBIExFVFRFUiBZWUEKKzBCNjAJT1JJWUEgTEVUVEVSIFZPQ0FMSUMgUlIKKzBCNjEJT1JJWUEgTEVUVEVSIFZPQ0FMSUMgTEwKKzBCNjYJT1JJWUEgRElHSVQgWkVSTworMEI2NwlPUklZQSBESUdJVCBPTkUKKzBCNjgJT1JJWUEgRElHSVQgVFdPCiswQjY5CU9SSVlBIERJR0lUIFRIUkVFCiswQjZBCU9SSVlBIERJR0lUIEZPVVIKKzBCNkIJT1JJWUEgRElHSVQgRklWRQorMEI2QwlPUklZQSBESUdJVCBTSVgKKzBCNkQJT1JJWUEgRElHSVQgU0VWRU4KKzBCNkUJT1JJWUEgRElHSVQgRUlHSFQKKzBCNkYJT1JJWUEgRElHSVQgTklORQorMEI3MAlPUklZQSBJU1NIQVIKKzBCODIJVEFNSUwgU0lHTiBBTlVTVkFSQQorMEI4MwlUQU1JTCBTSUdOIFZJU0FSR0EKKzBCODUJVEFNSUwgTEVUVEVSIEEKKzBCODYJVEFNSUwgTEVUVEVSIEFBCiswQjg3CVRBTUlMIExFVFRFUiBJCiswQjg4CVRBTUlMIExFVFRFUiBJSQorMEI4OQlUQU1JTCBMRVRURVIgVQorMEI4QQlUQU1JTCBMRVRURVIgVVUKKzBCOEUJVEFNSUwgTEVUVEVSIEUKKzBCOEYJVEFNSUwgTEVUVEVSIEVFCiswQjkwCVRBTUlMIExFVFRFUiBBSQorMEI5MglUQU1JTCBMRVRURVIgTworMEI5MwlUQU1JTCBMRVRURVIgT08KKzBCOTQJVEFNSUwgTEVUVEVSIEFVCiswQjk1CVRBTUlMIExFVFRFUiBLQQorMEI5OQlUQU1JTCBMRVRURVIgTkdBCiswQjlBCVRBTUlMIExFVFRFUiBDQQorMEI5QwlUQU1JTCBMRVRURVIgSkEKKzBCOUUJVEFNSUwgTEVUVEVSIE5ZQQorMEI5RglUQU1JTCBMRVRURVIgVFRBCiswQkEzCVRBTUlMIExFVFRFUiBOTkEKKzBCQTQJVEFNSUwgTEVUVEVSIFRBCiswQkE4CVRBTUlMIExFVFRFUiBOQQorMEJBOQlUQU1JTCBMRVRURVIgTk5OQQorMEJBQQlUQU1JTCBMRVRURVIgUEEKKzBCQUUJVEFNSUwgTEVUVEVSIE1BCiswQkFGCVRBTUlMIExFVFRFUiBZQQorMEJCMAlUQU1JTCBMRVRURVIgUkEKKzBCQjEJVEFNSUwgTEVUVEVSIFJSQQorMEJCMglUQU1JTCBMRVRURVIgTEEKKzBCQjMJVEFNSUwgTEVUVEVSIExMQQorMEJCNAlUQU1JTCBMRVRURVIgTExMQQorMEJCNQlUQU1JTCBMRVRURVIgVkEKKzBCQjcJVEFNSUwgTEVUVEVSIFNTQQorMEJCOAlUQU1JTCBMRVRURVIgU0EKKzBCQjkJVEFNSUwgTEVUVEVSIEhBCiswQkJFCVRBTUlMIFZPV0VMIFNJR04gQUEKKzBCQkYJVEFNSUwgVk9XRUwgU0lHTiBJCiswQkMwCVRBTUlMIFZPV0VMIFNJR04gSUkKKzBCQzEJVEFNSUwgVk9XRUwgU0lHTiBVCiswQkMyCVRBTUlMIFZPV0VMIFNJR04gVVUKKzBCQzYJVEFNSUwgVk9XRUwgU0lHTiBFCiswQkM3CVRBTUlMIFZPV0VMIFNJR04gRUUKKzBCQzgJVEFNSUwgVk9XRUwgU0lHTiBBSQorMEJDQQlUQU1JTCBWT1dFTCBTSUdOIE8KKzBCQ0IJVEFNSUwgVk9XRUwgU0lHTiBPTworMEJDQwlUQU1JTCBWT1dFTCBTSUdOIEFVCiswQkNECVRBTUlMIFNJR04gVklSQU1BCiswQkQ3CVRBTUlMIEFVIExFTkdUSCBNQVJLCiswQkU3CVRBTUlMIERJR0lUIE9ORQorMEJFOAlUQU1JTCBESUdJVCBUV08KKzBCRTkJVEFNSUwgRElHSVQgVEhSRUUKKzBCRUEJVEFNSUwgRElHSVQgRk9VUgorMEJFQglUQU1JTCBESUdJVCBGSVZFCiswQkVDCVRBTUlMIERJR0lUIFNJWAorMEJFRAlUQU1JTCBESUdJVCBTRVZFTgorMEJFRQlUQU1JTCBESUdJVCBFSUdIVAorMEJFRglUQU1JTCBESUdJVCBOSU5FCiswQkYwCVRBTUlMIE5VTUJFUiBURU4KKzBCRjEJVEFNSUwgTlVNQkVSIE9ORSBIVU5EUkVECiswQkYyCVRBTUlMIE5VTUJFUiBPTkUgVEhPVVNBTkQKKzBDMDEJVEVMVUdVIFNJR04gQ0FORFJBQklORFUKKzBDMDIJVEVMVUdVIFNJR04gQU5VU1ZBUkEKKzBDMDMJVEVMVUdVIFNJR04gVklTQVJHQQorMEMwNQlURUxVR1UgTEVUVEVSIEEKKzBDMDYJVEVMVUdVIExFVFRFUiBBQQorMEMwNwlURUxVR1UgTEVUVEVSIEkKKzBDMDgJVEVMVUdVIExFVFRFUiBJSQorMEMwOQlURUxVR1UgTEVUVEVSIFUKKzBDMEEJVEVMVUdVIExFVFRFUiBVVQorMEMwQglURUxVR1UgTEVUVEVSIFZPQ0FMSUMgUgorMEMwQwlURUxVR1UgTEVUVEVSIFZPQ0FMSUMgTAorMEMwRQlURUxVR1UgTEVUVEVSIEUKKzBDMEYJVEVMVUdVIExFVFRFUiBFRQorMEMxMAlURUxVR1UgTEVUVEVSIEFJCiswQzEyCVRFTFVHVSBMRVRURVIgTworMEMxMwlURUxVR1UgTEVUVEVSIE9PCiswQzE0CVRFTFVHVSBMRVRURVIgQVUKKzBDMTUJVEVMVUdVIExFVFRFUiBLQQorMEMxNglURUxVR1UgTEVUVEVSIEtIQQorMEMxNwlURUxVR1UgTEVUVEVSIEdBCiswQzE4CVRFTFVHVSBMRVRURVIgR0hBCiswQzE5CVRFTFVHVSBMRVRURVIgTkdBCiswQzFBCVRFTFVHVSBMRVRURVIgQ0EKKzBDMUIJVEVMVUdVIExFVFRFUiBDSEEKKzBDMUMJVEVMVUdVIExFVFRFUiBKQQorMEMxRAlURUxVR1UgTEVUVEVSIEpIQQorMEMxRQlURUxVR1UgTEVUVEVSIE5ZQQorMEMxRglURUxVR1UgTEVUVEVSIFRUQQorMEMyMAlURUxVR1UgTEVUVEVSIFRUSEEKKzBDMjEJVEVMVUdVIExFVFRFUiBEREEKKzBDMjIJVEVMVUdVIExFVFRFUiBEREhBCiswQzIzCVRFTFVHVSBMRVRURVIgTk5BCiswQzI0CVRFTFVHVSBMRVRURVIgVEEKKzBDMjUJVEVMVUdVIExFVFRFUiBUSEEKKzBDMjYJVEVMVUdVIExFVFRFUiBEQQorMEMyNwlURUxVR1UgTEVUVEVSIERIQQorMEMyOAlURUxVR1UgTEVUVEVSIE5BCiswQzJBCVRFTFVHVSBMRVRURVIgUEEKKzBDMkIJVEVMVUdVIExFVFRFUiBQSEEKKzBDMkMJVEVMVUdVIExFVFRFUiBCQQorMEMyRAlURUxVR1UgTEVUVEVSIEJIQQorMEMyRQlURUxVR1UgTEVUVEVSIE1BCiswQzJGCVRFTFVHVSBMRVRURVIgWUEKKzBDMzAJVEVMVUdVIExFVFRFUiBSQQorMEMzMQlURUxVR1UgTEVUVEVSIFJSQQorMEMzMglURUxVR1UgTEVUVEVSIExBCiswQzMzCVRFTFVHVSBMRVRURVIgTExBCiswQzM1CVRFTFVHVSBMRVRURVIgVkEKKzBDMzYJVEVMVUdVIExFVFRFUiBTSEEKKzBDMzcJVEVMVUdVIExFVFRFUiBTU0EKKzBDMzgJVEVMVUdVIExFVFRFUiBTQQorMEMzOQlURUxVR1UgTEVUVEVSIEhBCiswQzNFCVRFTFVHVSBWT1dFTCBTSUdOIEFBCiswQzNGCVRFTFVHVSBWT1dFTCBTSUdOIEkKKzBDNDAJVEVMVUdVIFZPV0VMIFNJR04gSUkKKzBDNDEJVEVMVUdVIFZPV0VMIFNJR04gVQorMEM0MglURUxVR1UgVk9XRUwgU0lHTiBVVQorMEM0MwlURUxVR1UgVk9XRUwgU0lHTiBWT0NBTElDIFIKKzBDNDQJVEVMVUdVIFZPV0VMIFNJR04gVk9DQUxJQyBSUgorMEM0NglURUxVR1UgVk9XRUwgU0lHTiBFCiswQzQ3CVRFTFVHVSBWT1dFTCBTSUdOIEVFCiswQzQ4CVRFTFVHVSBWT1dFTCBTSUdOIEFJCiswQzRBCVRFTFVHVSBWT1dFTCBTSUdOIE8KKzBDNEIJVEVMVUdVIFZPV0VMIFNJR04gT08KKzBDNEMJVEVMVUdVIFZPV0VMIFNJR04gQVUKKzBDNEQJVEVMVUdVIFNJR04gVklSQU1BCiswQzU1CVRFTFVHVSBMRU5HVEggTUFSSworMEM1NglURUxVR1UgQUkgTEVOR1RIIE1BUksKKzBDNjAJVEVMVUdVIExFVFRFUiBWT0NBTElDIFJSCiswQzYxCVRFTFVHVSBMRVRURVIgVk9DQUxJQyBMTAorMEM2NglURUxVR1UgRElHSVQgWkVSTworMEM2NwlURUxVR1UgRElHSVQgT05FCiswQzY4CVRFTFVHVSBESUdJVCBUV08KKzBDNjkJVEVMVUdVIERJR0lUIFRIUkVFCiswQzZBCVRFTFVHVSBESUdJVCBGT1VSCiswQzZCCVRFTFVHVSBESUdJVCBGSVZFCiswQzZDCVRFTFVHVSBESUdJVCBTSVgKKzBDNkQJVEVMVUdVIERJR0lUIFNFVkVOCiswQzZFCVRFTFVHVSBESUdJVCBFSUdIVAorMEM2RglURUxVR1UgRElHSVQgTklORQorMEM4MglLQU5OQURBIFNJR04gQU5VU1ZBUkEKKzBDODMJS0FOTkFEQSBTSUdOIFZJU0FSR0EKKzBDODUJS0FOTkFEQSBMRVRURVIgQQorMEM4NglLQU5OQURBIExFVFRFUiBBQQorMEM4NwlLQU5OQURBIExFVFRFUiBJCiswQzg4CUtBTk5BREEgTEVUVEVSIElJCiswQzg5CUtBTk5BREEgTEVUVEVSIFUKKzBDOEEJS0FOTkFEQSBMRVRURVIgVVUKKzBDOEIJS0FOTkFEQSBMRVRURVIgVk9DQUxJQyBSCiswQzhDCUtBTk5BREEgTEVUVEVSIFZPQ0FMSUMgTAorMEM4RQlLQU5OQURBIExFVFRFUiBFCiswQzhGCUtBTk5BREEgTEVUVEVSIEVFCiswQzkwCUtBTk5BREEgTEVUVEVSIEFJCiswQzkyCUtBTk5BREEgTEVUVEVSIE8KKzBDOTMJS0FOTkFEQSBMRVRURVIgT08KKzBDOTQJS0FOTkFEQSBMRVRURVIgQVUKKzBDOTUJS0FOTkFEQSBMRVRURVIgS0EKKzBDOTYJS0FOTkFEQSBMRVRURVIgS0hBCiswQzk3CUtBTk5BREEgTEVUVEVSIEdBCiswQzk4CUtBTk5BREEgTEVUVEVSIEdIQQorMEM5OQlLQU5OQURBIExFVFRFUiBOR0EKKzBDOUEJS0FOTkFEQSBMRVRURVIgQ0EKKzBDOUIJS0FOTkFEQSBMRVRURVIgQ0hBCiswQzlDCUtBTk5BREEgTEVUVEVSIEpBCiswQzlECUtBTk5BREEgTEVUVEVSIEpIQQorMEM5RQlLQU5OQURBIExFVFRFUiBOWUEKKzBDOUYJS0FOTkFEQSBMRVRURVIgVFRBCiswQ0EwCUtBTk5BREEgTEVUVEVSIFRUSEEKKzBDQTEJS0FOTkFEQSBMRVRURVIgRERBCiswQ0EyCUtBTk5BREEgTEVUVEVSIERESEEKKzBDQTMJS0FOTkFEQSBMRVRURVIgTk5BCiswQ0E0CUtBTk5BREEgTEVUVEVSIFRBCiswQ0E1CUtBTk5BREEgTEVUVEVSIFRIQQorMENBNglLQU5OQURBIExFVFRFUiBEQQorMENBNwlLQU5OQURBIExFVFRFUiBESEEKKzBDQTgJS0FOTkFEQSBMRVRURVIgTkEKKzBDQUEJS0FOTkFEQSBMRVRURVIgUEEKKzBDQUIJS0FOTkFEQSBMRVRURVIgUEhBCiswQ0FDCUtBTk5BREEgTEVUVEVSIEJBCiswQ0FECUtBTk5BREEgTEVUVEVSIEJIQQorMENBRQlLQU5OQURBIExFVFRFUiBNQQorMENBRglLQU5OQURBIExFVFRFUiBZQQorMENCMAlLQU5OQURBIExFVFRFUiBSQQorMENCMQlLQU5OQURBIExFVFRFUiBSUkEKKzBDQjIJS0FOTkFEQSBMRVRURVIgTEEKKzBDQjMJS0FOTkFEQSBMRVRURVIgTExBCiswQ0I1CUtBTk5BREEgTEVUVEVSIFZBCiswQ0I2CUtBTk5BREEgTEVUVEVSIFNIQQorMENCNwlLQU5OQURBIExFVFRFUiBTU0EKKzBDQjgJS0FOTkFEQSBMRVRURVIgU0EKKzBDQjkJS0FOTkFEQSBMRVRURVIgSEEKKzBDQkUJS0FOTkFEQSBWT1dFTCBTSUdOIEFBCiswQ0JGCUtBTk5BREEgVk9XRUwgU0lHTiBJCiswQ0MwCUtBTk5BREEgVk9XRUwgU0lHTiBJSQorMENDMQlLQU5OQURBIFZPV0VMIFNJR04gVQorMENDMglLQU5OQURBIFZPV0VMIFNJR04gVVUKKzBDQzMJS0FOTkFEQSBWT1dFTCBTSUdOIFZPQ0FMSUMgUgorMENDNAlLQU5OQURBIFZPV0VMIFNJR04gVk9DQUxJQyBSUgorMENDNglLQU5OQURBIFZPV0VMIFNJR04gRQorMENDNwlLQU5OQURBIFZPV0VMIFNJR04gRUUKKzBDQzgJS0FOTkFEQSBWT1dFTCBTSUdOIEFJCiswQ0NBCUtBTk5BREEgVk9XRUwgU0lHTiBPCiswQ0NCCUtBTk5BREEgVk9XRUwgU0lHTiBPTworMENDQwlLQU5OQURBIFZPV0VMIFNJR04gQVUKKzBDQ0QJS0FOTkFEQSBTSUdOIFZJUkFNQQorMENENQlLQU5OQURBIExFTkdUSCBNQVJLCiswQ0Q2CUtBTk5BREEgQUkgTEVOR1RIIE1BUksKKzBDREUJS0FOTkFEQSBMRVRURVIgRkEKKzBDRTAJS0FOTkFEQSBMRVRURVIgVk9DQUxJQyBSUgorMENFMQlLQU5OQURBIExFVFRFUiBWT0NBTElDIExMCiswQ0U2CUtBTk5BREEgRElHSVQgWkVSTworMENFNwlLQU5OQURBIERJR0lUIE9ORQorMENFOAlLQU5OQURBIERJR0lUIFRXTworMENFOQlLQU5OQURBIERJR0lUIFRIUkVFCiswQ0VBCUtBTk5BREEgRElHSVQgRk9VUgorMENFQglLQU5OQURBIERJR0lUIEZJVkUKKzBDRUMJS0FOTkFEQSBESUdJVCBTSVgKKzBDRUQJS0FOTkFEQSBESUdJVCBTRVZFTgorMENFRQlLQU5OQURBIERJR0lUIEVJR0hUCiswQ0VGCUtBTk5BREEgRElHSVQgTklORQorMEQwMglNQUxBWUFMQU0gU0lHTiBBTlVTVkFSQQorMEQwMwlNQUxBWUFMQU0gU0lHTiBWSVNBUkdBCiswRDA1CU1BTEFZQUxBTSBMRVRURVIgQQorMEQwNglNQUxBWUFMQU0gTEVUVEVSIEFBCiswRDA3CU1BTEFZQUxBTSBMRVRURVIgSQorMEQwOAlNQUxBWUFMQU0gTEVUVEVSIElJCiswRDA5CU1BTEFZQUxBTSBMRVRURVIgVQorMEQwQQlNQUxBWUFMQU0gTEVUVEVSIFVVCiswRDBCCU1BTEFZQUxBTSBMRVRURVIgVk9DQUxJQyBSCiswRDBDCU1BTEFZQUxBTSBMRVRURVIgVk9DQUxJQyBMCiswRDBFCU1BTEFZQUxBTSBMRVRURVIgRQorMEQwRglNQUxBWUFMQU0gTEVUVEVSIEVFCiswRDEwCU1BTEFZQUxBTSBMRVRURVIgQUkKKzBEMTIJTUFMQVlBTEFNIExFVFRFUiBPCiswRDEzCU1BTEFZQUxBTSBMRVRURVIgT08KKzBEMTQJTUFMQVlBTEFNIExFVFRFUiBBVQorMEQxNQlNQUxBWUFMQU0gTEVUVEVSIEtBCiswRDE2CU1BTEFZQUxBTSBMRVRURVIgS0hBCiswRDE3CU1BTEFZQUxBTSBMRVRURVIgR0EKKzBEMTgJTUFMQVlBTEFNIExFVFRFUiBHSEEKKzBEMTkJTUFMQVlBTEFNIExFVFRFUiBOR0EKKzBEMUEJTUFMQVlBTEFNIExFVFRFUiBDQQorMEQxQglNQUxBWUFMQU0gTEVUVEVSIENIQQorMEQxQwlNQUxBWUFMQU0gTEVUVEVSIEpBCiswRDFECU1BTEFZQUxBTSBMRVRURVIgSkhBCiswRDFFCU1BTEFZQUxBTSBMRVRURVIgTllBCiswRDFGCU1BTEFZQUxBTSBMRVRURVIgVFRBCiswRDIwCU1BTEFZQUxBTSBMRVRURVIgVFRIQQorMEQyMQlNQUxBWUFMQU0gTEVUVEVSIEREQQorMEQyMglNQUxBWUFMQU0gTEVUVEVSIERESEEKKzBEMjMJTUFMQVlBTEFNIExFVFRFUiBOTkEKKzBEMjQJTUFMQVlBTEFNIExFVFRFUiBUQQorMEQyNQlNQUxBWUFMQU0gTEVUVEVSIFRIQQorMEQyNglNQUxBWUFMQU0gTEVUVEVSIERBCiswRDI3CU1BTEFZQUxBTSBMRVRURVIgREhBCiswRDI4CU1BTEFZQUxBTSBMRVRURVIgTkEKKzBEMkEJTUFMQVlBTEFNIExFVFRFUiBQQQorMEQyQglNQUxBWUFMQU0gTEVUVEVSIFBIQQorMEQyQwlNQUxBWUFMQU0gTEVUVEVSIEJBCiswRDJECU1BTEFZQUxBTSBMRVRURVIgQkhBCiswRDJFCU1BTEFZQUxBTSBMRVRURVIgTUEKKzBEMkYJTUFMQVlBTEFNIExFVFRFUiBZQQorMEQzMAlNQUxBWUFMQU0gTEVUVEVSIFJBCiswRDMxCU1BTEFZQUxBTSBMRVRURVIgUlJBCiswRDMyCU1BTEFZQUxBTSBMRVRURVIgTEEKKzBEMzMJTUFMQVlBTEFNIExFVFRFUiBMTEEKKzBEMzQJTUFMQVlBTEFNIExFVFRFUiBMTExBCiswRDM1CU1BTEFZQUxBTSBMRVRURVIgVkEKKzBEMzYJTUFMQVlBTEFNIExFVFRFUiBTSEEKKzBEMzcJTUFMQVlBTEFNIExFVFRFUiBTU0EKKzBEMzgJTUFMQVlBTEFNIExFVFRFUiBTQQorMEQzOQlNQUxBWUFMQU0gTEVUVEVSIEhBCiswRDNFCU1BTEFZQUxBTSBWT1dFTCBTSUdOIEFBCiswRDNGCU1BTEFZQUxBTSBWT1dFTCBTSUdOIEkKKzBENDAJTUFMQVlBTEFNIFZPV0VMIFNJR04gSUkKKzBENDEJTUFMQVlBTEFNIFZPV0VMIFNJR04gVQorMEQ0MglNQUxBWUFMQU0gVk9XRUwgU0lHTiBVVQorMEQ0MwlNQUxBWUFMQU0gVk9XRUwgU0lHTiBWT0NBTElDIFIKKzBENDYJTUFMQVlBTEFNIFZPV0VMIFNJR04gRQorMEQ0NwlNQUxBWUFMQU0gVk9XRUwgU0lHTiBFRQorMEQ0OAlNQUxBWUFMQU0gVk9XRUwgU0lHTiBBSQorMEQ0QQlNQUxBWUFMQU0gVk9XRUwgU0lHTiBPCiswRDRCCU1BTEFZQUxBTSBWT1dFTCBTSUdOIE9PCiswRDRDCU1BTEFZQUxBTSBWT1dFTCBTSUdOIEFVCiswRDRECU1BTEFZQUxBTSBTSUdOIFZJUkFNQQorMEQ1NwlNQUxBWUFMQU0gQVUgTEVOR1RIIE1BUksKKzBENjAJTUFMQVlBTEFNIExFVFRFUiBWT0NBTElDIFJSCiswRDYxCU1BTEFZQUxBTSBMRVRURVIgVk9DQUxJQyBMTAorMEQ2NglNQUxBWUFMQU0gRElHSVQgWkVSTworMEQ2NwlNQUxBWUFMQU0gRElHSVQgT05FCiswRDY4CU1BTEFZQUxBTSBESUdJVCBUV08KKzBENjkJTUFMQVlBTEFNIERJR0lUIFRIUkVFCiswRDZBCU1BTEFZQUxBTSBESUdJVCBGT1VSCiswRDZCCU1BTEFZQUxBTSBESUdJVCBGSVZFCiswRDZDCU1BTEFZQUxBTSBESUdJVCBTSVgKKzBENkQJTUFMQVlBTEFNIERJR0lUIFNFVkVOCiswRDZFCU1BTEFZQUxBTSBESUdJVCBFSUdIVAorMEQ2RglNQUxBWUFMQU0gRElHSVQgTklORQorMEUwMQlUSEFJIENIQVJBQ1RFUiBLTyBLQUkKKzBFMDIJVEhBSSBDSEFSQUNURVIgS0hPIEtIQUkKKzBFMDMJVEhBSSBDSEFSQUNURVIgS0hPIEtIVUFUCiswRTA0CVRIQUkgQ0hBUkFDVEVSIEtITyBLSFdBSQorMEUwNQlUSEFJIENIQVJBQ1RFUiBLSE8gS0hPTgorMEUwNglUSEFJIENIQVJBQ1RFUiBLSE8gUkFLSEFORworMEUwNwlUSEFJIENIQVJBQ1RFUiBOR08gTkdVCiswRTA4CVRIQUkgQ0hBUkFDVEVSIENITyBDSEFOCiswRTA5CVRIQUkgQ0hBUkFDVEVSIENITyBDSElORworMEUwQQlUSEFJIENIQVJBQ1RFUiBDSE8gQ0hBTkcKKzBFMEIJVEhBSSBDSEFSQUNURVIgU08gU08KKzBFMEMJVEhBSSBDSEFSQUNURVIgQ0hPIENIT0UKKzBFMEQJVEhBSSBDSEFSQUNURVIgWU8gWUlORworMEUwRQlUSEFJIENIQVJBQ1RFUiBETyBDSEFEQQorMEUwRglUSEFJIENIQVJBQ1RFUiBUTyBQQVRBSworMEUxMAlUSEFJIENIQVJBQ1RFUiBUSE8gVEhBTgorMEUxMQlUSEFJIENIQVJBQ1RFUiBUSE8gTkFOR01PTlRITworMEUxMglUSEFJIENIQVJBQ1RFUiBUSE8gUEhVVEhBTworMEUxMwlUSEFJIENIQVJBQ1RFUiBOTyBORU4KKzBFMTQJVEhBSSBDSEFSQUNURVIgRE8gREVLCiswRTE1CVRIQUkgQ0hBUkFDVEVSIFRPIFRBTworMEUxNglUSEFJIENIQVJBQ1RFUiBUSE8gVEhVTkcKKzBFMTcJVEhBSSBDSEFSQUNURVIgVEhPIFRIQUhBTgorMEUxOAlUSEFJIENIQVJBQ1RFUiBUSE8gVEhPTkcKKzBFMTkJVEhBSSBDSEFSQUNURVIgTk8gTlUKKzBFMUEJVEhBSSBDSEFSQUNURVIgQk8gQkFJTUFJCiswRTFCCVRIQUkgQ0hBUkFDVEVSIFBPIFBMQQorMEUxQwlUSEFJIENIQVJBQ1RFUiBQSE8gUEhVTkcKKzBFMUQJVEhBSSBDSEFSQUNURVIgRk8gRkEKKzBFMUUJVEhBSSBDSEFSQUNURVIgUEhPIFBIQU4KKzBFMUYJVEhBSSBDSEFSQUNURVIgRk8gRkFOCiswRTIwCVRIQUkgQ0hBUkFDVEVSIFBITyBTQU1QSEFPCiswRTIxCVRIQUkgQ0hBUkFDVEVSIE1PIE1BCiswRTIyCVRIQUkgQ0hBUkFDVEVSIFlPIFlBSworMEUyMwlUSEFJIENIQVJBQ1RFUiBSTyBSVUEKKzBFMjQJVEhBSSBDSEFSQUNURVIgUlUKKzBFMjUJVEhBSSBDSEFSQUNURVIgTE8gTElORworMEUyNglUSEFJIENIQVJBQ1RFUiBMVQorMEUyNwlUSEFJIENIQVJBQ1RFUiBXTyBXQUVOCiswRTI4CVRIQUkgQ0hBUkFDVEVSIFNPIFNBTEEKKzBFMjkJVEhBSSBDSEFSQUNURVIgU08gUlVTSQorMEUyQQlUSEFJIENIQVJBQ1RFUiBTTyBTVUEKKzBFMkIJVEhBSSBDSEFSQUNURVIgSE8gSElQCiswRTJDCVRIQUkgQ0hBUkFDVEVSIExPIENIVUxBCiswRTJECVRIQUkgQ0hBUkFDVEVSIE8gQU5HCiswRTJFCVRIQUkgQ0hBUkFDVEVSIEhPIE5PS0hVSworMEUyRglUSEFJIENIQVJBQ1RFUiBQQUlZQU5OT0kKKzBFMzAJVEhBSSBDSEFSQUNURVIgU0FSQSBBCiswRTMxCVRIQUkgQ0hBUkFDVEVSIE1BSSBIQU4tQUtBVAorMEUzMglUSEFJIENIQVJBQ1RFUiBTQVJBIEFBCiswRTMzCVRIQUkgQ0hBUkFDVEVSIFNBUkEgQU0KKzBFMzQJVEhBSSBDSEFSQUNURVIgU0FSQSBJCiswRTM1CVRIQUkgQ0hBUkFDVEVSIFNBUkEgSUkKKzBFMzYJVEhBSSBDSEFSQUNURVIgU0FSQSBVRQorMEUzNwlUSEFJIENIQVJBQ1RFUiBTQVJBIFVFRQorMEUzOAlUSEFJIENIQVJBQ1RFUiBTQVJBIFUKKzBFMzkJVEhBSSBDSEFSQUNURVIgU0FSQSBVVQorMEUzQQlUSEFJIENIQVJBQ1RFUiBQSElOVEhVCiswRTNGCVRIQUkgQ1VSUkVOQ1kgU1lNQk9MIEJBSFQKKzBFNDAJVEhBSSBDSEFSQUNURVIgU0FSQSBFCiswRTQxCVRIQUkgQ0hBUkFDVEVSIFNBUkEgQUUKKzBFNDIJVEhBSSBDSEFSQUNURVIgU0FSQSBPCiswRTQzCVRIQUkgQ0hBUkFDVEVSIFNBUkEgQUkgTUFJTVVBTgorMEU0NAlUSEFJIENIQVJBQ1RFUiBTQVJBIEFJIE1BSU1BTEFJCiswRTQ1CVRIQUkgQ0hBUkFDVEVSIExBS0tIQU5HWUFPCiswRTQ2CVRIQUkgQ0hBUkFDVEVSIE1BSVlBTU9LCiswRTQ3CVRIQUkgQ0hBUkFDVEVSIE1BSVRBSUtIVQorMEU0OAlUSEFJIENIQVJBQ1RFUiBNQUkgRUsKKzBFNDkJVEhBSSBDSEFSQUNURVIgTUFJIFRITworMEU0QQlUSEFJIENIQVJBQ1RFUiBNQUkgVFJJCiswRTRCCVRIQUkgQ0hBUkFDVEVSIE1BSSBDSEFUVEFXQQorMEU0QwlUSEFJIENIQVJBQ1RFUiBUSEFOVEhBS0hBVAorMEU0RAlUSEFJIENIQVJBQ1RFUiBOSUtIQUhJVAorMEU0RQlUSEFJIENIQVJBQ1RFUiBZQU1BS0tBTgorMEU0RglUSEFJIENIQVJBQ1RFUiBGT05HTUFOCiswRTUwCVRIQUkgRElHSVQgWkVSTworMEU1MQlUSEFJIERJR0lUIE9ORQorMEU1MglUSEFJIERJR0lUIFRXTworMEU1MwlUSEFJIERJR0lUIFRIUkVFCiswRTU0CVRIQUkgRElHSVQgRk9VUgorMEU1NQlUSEFJIERJR0lUIEZJVkUKKzBFNTYJVEhBSSBESUdJVCBTSVgKKzBFNTcJVEhBSSBESUdJVCBTRVZFTgorMEU1OAlUSEFJIERJR0lUIEVJR0hUCiswRTU5CVRIQUkgRElHSVQgTklORQorMEU1QQlUSEFJIENIQVJBQ1RFUiBBTkdLSEFOS0hVCiswRTVCCVRIQUkgQ0hBUkFDVEVSIEtIT01VVAorMEU4MQlMQU8gTEVUVEVSIEtPCiswRTgyCUxBTyBMRVRURVIgS0hPIFNVTkcKKzBFODQJTEFPIExFVFRFUiBLSE8gVEFNCiswRTg3CUxBTyBMRVRURVIgTkdPCiswRTg4CUxBTyBMRVRURVIgQ08KKzBFOEEJTEFPIExFVFRFUiBTTyBUQU0KKzBFOEQJTEFPIExFVFRFUiBOWU8KKzBFOTQJTEFPIExFVFRFUiBETworMEU5NQlMQU8gTEVUVEVSIFRPCiswRTk2CUxBTyBMRVRURVIgVEhPIFNVTkcKKzBFOTcJTEFPIExFVFRFUiBUSE8gVEFNCiswRTk5CUxBTyBMRVRURVIgTk8KKzBFOUEJTEFPIExFVFRFUiBCTworMEU5QglMQU8gTEVUVEVSIFBPCiswRTlDCUxBTyBMRVRURVIgUEhPIFNVTkcKKzBFOUQJTEFPIExFVFRFUiBGTyBUQU0KKzBFOUUJTEFPIExFVFRFUiBQSE8gVEFNCiswRTlGCUxBTyBMRVRURVIgRk8gU1VORworMEVBMQlMQU8gTEVUVEVSIE1PCiswRUEyCUxBTyBMRVRURVIgWU8KKzBFQTMJTEFPIExFVFRFUiBMTyBMSU5HCiswRUE1CUxBTyBMRVRURVIgTE8gTE9PVAorMEVBNwlMQU8gTEVUVEVSIFdPCiswRUFBCUxBTyBMRVRURVIgU08gU1VORworMEVBQglMQU8gTEVUVEVSIEhPIFNVTkcKKzBFQUQJTEFPIExFVFRFUiBPCiswRUFFCUxBTyBMRVRURVIgSE8gVEFNCiswRUFGCUxBTyBFTExJUFNJUworMEVCMAlMQU8gVk9XRUwgU0lHTiBBCiswRUIxCUxBTyBWT1dFTCBTSUdOIE1BSSBLQU4KKzBFQjIJTEFPIFZPV0VMIFNJR04gQUEKKzBFQjMJTEFPIFZPV0VMIFNJR04gQU0KKzBFQjQJTEFPIFZPV0VMIFNJR04gSQorMEVCNQlMQU8gVk9XRUwgU0lHTiBJSQorMEVCNglMQU8gVk9XRUwgU0lHTiBZCiswRUI3CUxBTyBWT1dFTCBTSUdOIFlZCiswRUI4CUxBTyBWT1dFTCBTSUdOIFUKKzBFQjkJTEFPIFZPV0VMIFNJR04gVVUKKzBFQkIJTEFPIFZPV0VMIFNJR04gTUFJIEtPTgorMEVCQwlMQU8gU0VNSVZPV0VMIFNJR04gTE8KKzBFQkQJTEFPIFNFTUlWT1dFTCBTSUdOIE5ZTworMEVDMAlMQU8gVk9XRUwgU0lHTiBFCiswRUMxCUxBTyBWT1dFTCBTSUdOIEVJCiswRUMyCUxBTyBWT1dFTCBTSUdOIE8KKzBFQzMJTEFPIFZPV0VMIFNJR04gQVkKKzBFQzQJTEFPIFZPV0VMIFNJR04gQUkKKzBFQzYJTEFPIEtPIExBCiswRUM4CUxBTyBUT05FIE1BSSBFSworMEVDOQlMQU8gVE9ORSBNQUkgVEhPCiswRUNBCUxBTyBUT05FIE1BSSBUSQorMEVDQglMQU8gVE9ORSBNQUkgQ0FUQVdBCiswRUNDCUxBTyBDQU5DRUxMQVRJT04gTUFSSworMEVDRAlMQU8gTklHR0FISVRBCiswRUQwCUxBTyBESUdJVCBaRVJPCiswRUQxCUxBTyBESUdJVCBPTkUKKzBFRDIJTEFPIERJR0lUIFRXTworMEVEMwlMQU8gRElHSVQgVEhSRUUKKzBFRDQJTEFPIERJR0lUIEZPVVIKKzBFRDUJTEFPIERJR0lUIEZJVkUKKzBFRDYJTEFPIERJR0lUIFNJWAorMEVENwlMQU8gRElHSVQgU0VWRU4KKzBFRDgJTEFPIERJR0lUIEVJR0hUCiswRUQ5CUxBTyBESUdJVCBOSU5FCiswRURDCUxBTyBITyBOTworMEVERAlMQU8gSE8gTU8KKzBGMDAJVElCRVRBTiBTWUxMQUJMRSBPTQorMEYwMQlUSUJFVEFOIE1BUksgR1RFUiBZSUcgTUdPIFRSVU5DQVRFRCBBCiswRjAyCVRJQkVUQU4gTUFSSyBHVEVSIFlJRyBNR08gLVVNIFJOQU0gQkNBRCBNQQorMEYwMwlUSUJFVEFOIE1BUksgR1RFUiBZSUcgTUdPIC1VTSBHVEVSIFRTSEVHIE1BCiswRjA0CVRJQkVUQU4gTUFSSyBJTklUSUFMIFlJRyBNR08gTURVTiBNQQorMEYwNQlUSUJFVEFOIE1BUksgQ0xPU0lORyBZSUcgTUdPIFNHQUIgTUEKKzBGMDYJVElCRVRBTiBNQVJLIENBUkVUIFlJRyBNR08gUEhVUiBTSEFEIE1BCiswRjA3CVRJQkVUQU4gTUFSSyBZSUcgTUdPIFRTSEVHIFNIQUQgTUEKKzBGMDgJVElCRVRBTiBNQVJLIFNCUlVMIFNIQUQKKzBGMDkJVElCRVRBTiBNQVJLIEJTS1VSIFlJRyBNR08KKzBGMEEJVElCRVRBTiBNQVJLIEJLQS0gU0hPRyBZSUcgTUdPCiswRjBCCVRJQkVUQU4gTUFSSyBJTlRFUlNZTExBQklDIFRTSEVHCiswRjBDCVRJQkVUQU4gTUFSSyBERUxJTUlURVIgVFNIRUcgQlNUQVIKKzBGMEQJVElCRVRBTiBNQVJLIFNIQUQKKzBGMEUJVElCRVRBTiBNQVJLIE5ZSVMgU0hBRAorMEYwRglUSUJFVEFOIE1BUksgVFNIRUcgU0hBRAorMEYxMAlUSUJFVEFOIE1BUksgTllJUyBUU0hFRyBTSEFECiswRjExCVRJQkVUQU4gTUFSSyBSSU4gQ0hFTiBTUFVOR1MgU0hBRAorMEYxMglUSUJFVEFOIE1BUksgUkdZQSBHUkFNIFNIQUQKKzBGMTMJVElCRVRBTiBNQVJLIENBUkVUIC1EWlVEIFJUQUdTIE1FIExPTkcgQ0FOCiswRjE0CVRJQkVUQU4gTUFSSyBHVEVSIFRTSEVHCiswRjE1CVRJQkVUQU4gTE9HT1RZUEUgU0lHTiBDSEFEIFJUQUdTCiswRjE2CVRJQkVUQU4gTE9HT1RZUEUgU0lHTiBMSEFHIFJUQUdTCiswRjE3CVRJQkVUQU4gQVNUUk9MT0dJQ0FMIFNJR04gU0dSQSBHQ0FOIC1DSEFSIFJUQUdTCiswRjE4CVRJQkVUQU4gQVNUUk9MT0dJQ0FMIFNJR04gLUtIWVVEIFBBCiswRjE5CVRJQkVUQU4gQVNUUk9MT0dJQ0FMIFNJR04gU0RPTkcgVFNIVUdTCiswRjFBCVRJQkVUQU4gU0lHTiBSREVMIERLQVIgR0NJRworMEYxQglUSUJFVEFOIFNJR04gUkRFTCBES0FSIEdOWUlTCiswRjFDCVRJQkVUQU4gU0lHTiBSREVMIERLQVIgR1NVTQorMEYxRAlUSUJFVEFOIFNJR04gUkRFTCBOQUcgR0NJRworMEYxRQlUSUJFVEFOIFNJR04gUkRFTCBOQUcgR05ZSVMKKzBGMUYJVElCRVRBTiBTSUdOIFJERUwgREtBUiBSREVMIE5BRworMEYyMAlUSUJFVEFOIERJR0lUIFpFUk8KKzBGMjEJVElCRVRBTiBESUdJVCBPTkUKKzBGMjIJVElCRVRBTiBESUdJVCBUV08KKzBGMjMJVElCRVRBTiBESUdJVCBUSFJFRQorMEYyNAlUSUJFVEFOIERJR0lUIEZPVVIKKzBGMjUJVElCRVRBTiBESUdJVCBGSVZFCiswRjI2CVRJQkVUQU4gRElHSVQgU0lYCiswRjI3CVRJQkVUQU4gRElHSVQgU0VWRU4KKzBGMjgJVElCRVRBTiBESUdJVCBFSUdIVAorMEYyOQlUSUJFVEFOIERJR0lUIE5JTkUKKzBGMkEJVElCRVRBTiBESUdJVCBIQUxGIE9ORQorMEYyQglUSUJFVEFOIERJR0lUIEhBTEYgVFdPCiswRjJDCVRJQkVUQU4gRElHSVQgSEFMRiBUSFJFRQorMEYyRAlUSUJFVEFOIERJR0lUIEhBTEYgRk9VUgorMEYyRQlUSUJFVEFOIERJR0lUIEhBTEYgRklWRQorMEYyRglUSUJFVEFOIERJR0lUIEhBTEYgU0lYCiswRjMwCVRJQkVUQU4gRElHSVQgSEFMRiBTRVZFTgorMEYzMQlUSUJFVEFOIERJR0lUIEhBTEYgRUlHSFQKKzBGMzIJVElCRVRBTiBESUdJVCBIQUxGIE5JTkUKKzBGMzMJVElCRVRBTiBESUdJVCBIQUxGIFpFUk8KKzBGMzQJVElCRVRBTiBNQVJLIEJTRFVTIFJUQUdTCiswRjM1CVRJQkVUQU4gTUFSSyBOR0FTIEJaVU5HIE5ZSSBaTEEKKzBGMzYJVElCRVRBTiBNQVJLIENBUkVUIC1EWlVEIFJUQUdTIEJaSEkgTUlHIENBTgorMEYzNwlUSUJFVEFOIE1BUksgTkdBUyBCWlVORyBTR09SIFJUQUdTCiswRjM4CVRJQkVUQU4gTUFSSyBDSEUgTUdPCiswRjM5CVRJQkVUQU4gTUFSSyBUU0EgLVBIUlUKKzBGM0EJVElCRVRBTiBNQVJLIEdVRyBSVEFHUyBHWU9OCiswRjNCCVRJQkVUQU4gTUFSSyBHVUcgUlRBR1MgR1lBUworMEYzQwlUSUJFVEFOIE1BUksgQU5HIEtIQU5HIEdZT04KKzBGM0QJVElCRVRBTiBNQVJLIEFORyBLSEFORyBHWUFTCiswRjNFCVRJQkVUQU4gU0lHTiBZQVIgVFNIRVMKKzBGM0YJVElCRVRBTiBTSUdOIE1BUiBUU0hFUworMEY0MAlUSUJFVEFOIExFVFRFUiBLQQorMEY0MQlUSUJFVEFOIExFVFRFUiBLSEEKKzBGNDIJVElCRVRBTiBMRVRURVIgR0EKKzBGNDMJVElCRVRBTiBMRVRURVIgR0hBCiswRjQ0CVRJQkVUQU4gTEVUVEVSIE5HQQorMEY0NQlUSUJFVEFOIExFVFRFUiBDQQorMEY0NglUSUJFVEFOIExFVFRFUiBDSEEKKzBGNDcJVElCRVRBTiBMRVRURVIgSkEKKzBGNDkJVElCRVRBTiBMRVRURVIgTllBCiswRjRBCVRJQkVUQU4gTEVUVEVSIFRUQQorMEY0QglUSUJFVEFOIExFVFRFUiBUVEhBCiswRjRDCVRJQkVUQU4gTEVUVEVSIEREQQorMEY0RAlUSUJFVEFOIExFVFRFUiBEREhBCiswRjRFCVRJQkVUQU4gTEVUVEVSIE5OQQorMEY0RglUSUJFVEFOIExFVFRFUiBUQQorMEY1MAlUSUJFVEFOIExFVFRFUiBUSEEKKzBGNTEJVElCRVRBTiBMRVRURVIgREEKKzBGNTIJVElCRVRBTiBMRVRURVIgREhBCiswRjUzCVRJQkVUQU4gTEVUVEVSIE5BCiswRjU0CVRJQkVUQU4gTEVUVEVSIFBBCiswRjU1CVRJQkVUQU4gTEVUVEVSIFBIQQorMEY1NglUSUJFVEFOIExFVFRFUiBCQQorMEY1NwlUSUJFVEFOIExFVFRFUiBCSEEKKzBGNTgJVElCRVRBTiBMRVRURVIgTUEKKzBGNTkJVElCRVRBTiBMRVRURVIgVFNBCiswRjVBCVRJQkVUQU4gTEVUVEVSIFRTSEEKKzBGNUIJVElCRVRBTiBMRVRURVIgRFpBCiswRjVDCVRJQkVUQU4gTEVUVEVSIERaSEEKKzBGNUQJVElCRVRBTiBMRVRURVIgV0EKKzBGNUUJVElCRVRBTiBMRVRURVIgWkhBCiswRjVGCVRJQkVUQU4gTEVUVEVSIFpBCiswRjYwCVRJQkVUQU4gTEVUVEVSIC1BCiswRjYxCVRJQkVUQU4gTEVUVEVSIFlBCiswRjYyCVRJQkVUQU4gTEVUVEVSIFJBCiswRjYzCVRJQkVUQU4gTEVUVEVSIExBCiswRjY0CVRJQkVUQU4gTEVUVEVSIFNIQQorMEY2NQlUSUJFVEFOIExFVFRFUiBTU0EKKzBGNjYJVElCRVRBTiBMRVRURVIgU0EKKzBGNjcJVElCRVRBTiBMRVRURVIgSEEKKzBGNjgJVElCRVRBTiBMRVRURVIgQQorMEY2OQlUSUJFVEFOIExFVFRFUiBLU1NBCiswRjcxCVRJQkVUQU4gVk9XRUwgU0lHTiBBQQorMEY3MglUSUJFVEFOIFZPV0VMIFNJR04gSQorMEY3MwlUSUJFVEFOIFZPV0VMIFNJR04gSUkKKzBGNzQJVElCRVRBTiBWT1dFTCBTSUdOIFUKKzBGNzUJVElCRVRBTiBWT1dFTCBTSUdOIFVVCiswRjc2CVRJQkVUQU4gVk9XRUwgU0lHTiBWT0NBTElDIFIKKzBGNzcJVElCRVRBTiBWT1dFTCBTSUdOIFZPQ0FMSUMgUlIKKzBGNzgJVElCRVRBTiBWT1dFTCBTSUdOIFZPQ0FMSUMgTAorMEY3OQlUSUJFVEFOIFZPV0VMIFNJR04gVk9DQUxJQyBMTAorMEY3QQlUSUJFVEFOIFZPV0VMIFNJR04gRQorMEY3QglUSUJFVEFOIFZPV0VMIFNJR04gRUUKKzBGN0MJVElCRVRBTiBWT1dFTCBTSUdOIE8KKzBGN0QJVElCRVRBTiBWT1dFTCBTSUdOIE9PCiswRjdFCVRJQkVUQU4gU0lHTiBSSkVTIFNVIE5HQSBSTworMEY3RglUSUJFVEFOIFNJR04gUk5BTSBCQ0FECiswRjgwCVRJQkVUQU4gVk9XRUwgU0lHTiBSRVZFUlNFRCBJCiswRjgxCVRJQkVUQU4gVk9XRUwgU0lHTiBSRVZFUlNFRCBJSQorMEY4MglUSUJFVEFOIFNJR04gTllJIFpMQSBOQUEgREEKKzBGODMJVElCRVRBTiBTSUdOIFNOQSBMREFOCiswRjg0CVRJQkVUQU4gTUFSSyBIQUxBTlRBCiswRjg1CVRJQkVUQU4gTUFSSyBQQUxVVEEKKzBGODYJVElCRVRBTiBTSUdOIExDSSBSVEFHUworMEY4NwlUSUJFVEFOIFNJR04gWUFORyBSVEFHUworMEY4OAlUSUJFVEFOIFNJR04gTENFIFRTQSBDQU4KKzBGODkJVElCRVRBTiBTSUdOIE1DSFUgQ0FOCiswRjhBCVRJQkVUQU4gU0lHTiBHUlUgQ0FOIFJHWUlOR1MKKzBGOEIJVElCRVRBTiBTSUdOIEdSVSBNRUQgUkdZSU5HUworMEY5MAlUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgS0EKKzBGOTEJVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEtIQQorMEY5MglUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgR0EKKzBGOTMJVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEdIQQorMEY5NAlUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgTkdBCiswRjk1CVRJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBDQQorMEY5NwlUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgSkEKKzBGOTkJVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE5ZQQorMEY5QQlUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgVFRBCiswRjlCCVRJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBUVEhBCiswRjlDCVRJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBEREEKKzBGOUQJVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERESEEKKzBGOUUJVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE5OQQorMEY5RglUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgVEEKKzBGQTAJVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFRIQQorMEZBMQlUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgREEKKzBGQTIJVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERIQQorMEZBMwlUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgTkEKKzBGQTQJVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFBBCiswRkE1CVRJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBQSEEKKzBGQTYJVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEJBCiswRkE3CVRJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBCSEEKKzBGQTgJVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE1BCiswRkE5CVRJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBUU0EKKzBGQUEJVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFRTSEEKKzBGQUIJVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERaQQorMEZBQwlUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgRFpIQQorMEZBRAlUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgV0EKKzBGQjEJVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFlBCiswRkIyCVRJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBSQQorMEZCMwlUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgTEEKKzBGQjQJVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFNIQQorMEZCNQlUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgU1NBCiswRkI2CVRJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBTQQorMEZCNwlUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgSEEKKzBGQjkJVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEtTU0EKKzEwQTAJR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgQU4KKzEwQTEJR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgQkFOCisxMEEyCUdFT1JHSUFOIENBUElUQUwgTEVUVEVSIEdBTgorMTBBMwlHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBET04KKzEwQTQJR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgRU4KKzEwQTUJR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgVklOCisxMEE2CUdFT1JHSUFOIENBUElUQUwgTEVUVEVSIFpFTgorMTBBNwlHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBUQU4KKzEwQTgJR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSU4KKzEwQTkJR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgS0FOCisxMEFBCUdFT1JHSUFOIENBUElUQUwgTEVUVEVSIExBUworMTBBQglHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBNQU4KKzEwQUMJR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgTkFSCisxMEFECUdFT1JHSUFOIENBUElUQUwgTEVUVEVSIE9OCisxMEFFCUdFT1JHSUFOIENBUElUQUwgTEVUVEVSIFBBUgorMTBBRglHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBaSEFSCisxMEIwCUdFT1JHSUFOIENBUElUQUwgTEVUVEVSIFJBRQorMTBCMQlHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBTQU4KKzEwQjIJR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgVEFSCisxMEIzCUdFT1JHSUFOIENBUElUQUwgTEVUVEVSIFVOCisxMEI0CUdFT1JHSUFOIENBUElUQUwgTEVUVEVSIFBIQVIKKzEwQjUJR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgS0hBUgorMTBCNglHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBHSEFOCisxMEI3CUdFT1JHSUFOIENBUElUQUwgTEVUVEVSIFFBUgorMTBCOAlHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBTSElOCisxMEI5CUdFT1JHSUFOIENBUElUQUwgTEVUVEVSIENISU4KKzEwQkEJR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgQ0FOCisxMEJCCUdFT1JHSUFOIENBUElUQUwgTEVUVEVSIEpJTAorMTBCQwlHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBDSUwKKzEwQkQJR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgQ0hBUgorMTBCRQlHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBYQU4KKzEwQkYJR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSkhBTgorMTBDMAlHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBIQUUKKzEwQzEJR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSEUKKzEwQzIJR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSElFCisxMEMzCUdFT1JHSUFOIENBUElUQUwgTEVUVEVSIFdFCisxMEM0CUdFT1JHSUFOIENBUElUQUwgTEVUVEVSIEhBUgorMTBDNQlHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBIT0UKKzEwRDAJR0VPUkdJQU4gTEVUVEVSIEFOCisxMEQxCUdFT1JHSUFOIExFVFRFUiBCQU4KKzEwRDIJR0VPUkdJQU4gTEVUVEVSIEdBTgorMTBEMwlHRU9SR0lBTiBMRVRURVIgRE9OCisxMEQ0CUdFT1JHSUFOIExFVFRFUiBFTgorMTBENQlHRU9SR0lBTiBMRVRURVIgVklOCisxMEQ2CUdFT1JHSUFOIExFVFRFUiBaRU4KKzEwRDcJR0VPUkdJQU4gTEVUVEVSIFRBTgorMTBEOAlHRU9SR0lBTiBMRVRURVIgSU4KKzEwRDkJR0VPUkdJQU4gTEVUVEVSIEtBTgorMTBEQQlHRU9SR0lBTiBMRVRURVIgTEFTCisxMERCCUdFT1JHSUFOIExFVFRFUiBNQU4KKzEwREMJR0VPUkdJQU4gTEVUVEVSIE5BUgorMTBERAlHRU9SR0lBTiBMRVRURVIgT04KKzEwREUJR0VPUkdJQU4gTEVUVEVSIFBBUgorMTBERglHRU9SR0lBTiBMRVRURVIgWkhBUgorMTBFMAlHRU9SR0lBTiBMRVRURVIgUkFFCisxMEUxCUdFT1JHSUFOIExFVFRFUiBTQU4KKzEwRTIJR0VPUkdJQU4gTEVUVEVSIFRBUgorMTBFMwlHRU9SR0lBTiBMRVRURVIgVU4KKzEwRTQJR0VPUkdJQU4gTEVUVEVSIFBIQVIKKzEwRTUJR0VPUkdJQU4gTEVUVEVSIEtIQVIKKzEwRTYJR0VPUkdJQU4gTEVUVEVSIEdIQU4KKzEwRTcJR0VPUkdJQU4gTEVUVEVSIFFBUgorMTBFOAlHRU9SR0lBTiBMRVRURVIgU0hJTgorMTBFOQlHRU9SR0lBTiBMRVRURVIgQ0hJTgorMTBFQQlHRU9SR0lBTiBMRVRURVIgQ0FOCisxMEVCCUdFT1JHSUFOIExFVFRFUiBKSUwKKzEwRUMJR0VPUkdJQU4gTEVUVEVSIENJTAorMTBFRAlHRU9SR0lBTiBMRVRURVIgQ0hBUgorMTBFRQlHRU9SR0lBTiBMRVRURVIgWEFOCisxMEVGCUdFT1JHSUFOIExFVFRFUiBKSEFOCisxMEYwCUdFT1JHSUFOIExFVFRFUiBIQUUKKzEwRjEJR0VPUkdJQU4gTEVUVEVSIEhFCisxMEYyCUdFT1JHSUFOIExFVFRFUiBISUUKKzEwRjMJR0VPUkdJQU4gTEVUVEVSIFdFCisxMEY0CUdFT1JHSUFOIExFVFRFUiBIQVIKKzEwRjUJR0VPUkdJQU4gTEVUVEVSIEhPRQorMTBGNglHRU9SR0lBTiBMRVRURVIgRkkKKzEwRkIJR0VPUkdJQU4gUEFSQUdSQVBIIFNFUEFSQVRPUgorMTEwMAlIQU5HVUwgQ0hPU0VPTkcgS0lZRU9LCisxMTAxCUhBTkdVTCBDSE9TRU9ORyBTU0FOR0tJWUVPSworMTEwMglIQU5HVUwgQ0hPU0VPTkcgTklFVU4KKzExMDMJSEFOR1VMIENIT1NFT05HIFRJS0VVVAorMTEwNAlIQU5HVUwgQ0hPU0VPTkcgU1NBTkdUSUtFVVQKKzExMDUJSEFOR1VMIENIT1NFT05HIFJJRVVMCisxMTA2CUhBTkdVTCBDSE9TRU9ORyBNSUVVTQorMTEwNwlIQU5HVUwgQ0hPU0VPTkcgUElFVVAKKzExMDgJSEFOR1VMIENIT1NFT05HIFNTQU5HUElFVVAKKzExMDkJSEFOR1VMIENIT1NFT05HIFNJT1MKKzExMEEJSEFOR1VMIENIT1NFT05HIFNTQU5HU0lPUworMTEwQglIQU5HVUwgQ0hPU0VPTkcgSUVVTkcKKzExMEMJSEFOR1VMIENIT1NFT05HIENJRVVDCisxMTBECUhBTkdVTCBDSE9TRU9ORyBTU0FOR0NJRVVDCisxMTBFCUhBTkdVTCBDSE9TRU9ORyBDSElFVUNICisxMTBGCUhBTkdVTCBDSE9TRU9ORyBLSElFVUtICisxMTEwCUhBTkdVTCBDSE9TRU9ORyBUSElFVVRICisxMTExCUhBTkdVTCBDSE9TRU9ORyBQSElFVVBICisxMTEyCUhBTkdVTCBDSE9TRU9ORyBISUVVSAorMTExMwlIQU5HVUwgQ0hPU0VPTkcgTklFVU4tS0lZRU9LCisxMTE0CUhBTkdVTCBDSE9TRU9ORyBTU0FOR05JRVVOCisxMTE1CUhBTkdVTCBDSE9TRU9ORyBOSUVVTi1USUtFVVQKKzExMTYJSEFOR1VMIENIT1NFT05HIE5JRVVOLVBJRVVQCisxMTE3CUhBTkdVTCBDSE9TRU9ORyBUSUtFVVQtS0lZRU9LCisxMTE4CUhBTkdVTCBDSE9TRU9ORyBSSUVVTC1OSUVVTgorMTExOQlIQU5HVUwgQ0hPU0VPTkcgU1NBTkdSSUVVTAorMTExQQlIQU5HVUwgQ0hPU0VPTkcgUklFVUwtSElFVUgKKzExMUIJSEFOR1VMIENIT1NFT05HIEtBUFlFT1VOUklFVUwKKzExMUMJSEFOR1VMIENIT1NFT05HIE1JRVVNLVBJRVVQCisxMTFECUhBTkdVTCBDSE9TRU9ORyBLQVBZRU9VTk1JRVVNCisxMTFFCUhBTkdVTCBDSE9TRU9ORyBQSUVVUC1LSVlFT0sKKzExMUYJSEFOR1VMIENIT1NFT05HIFBJRVVQLU5JRVVOCisxMTIwCUhBTkdVTCBDSE9TRU9ORyBQSUVVUC1USUtFVVQKKzExMjEJSEFOR1VMIENIT1NFT05HIFBJRVVQLVNJT1MKKzExMjIJSEFOR1VMIENIT1NFT05HIFBJRVVQLVNJT1MtS0lZRU9LCisxMTIzCUhBTkdVTCBDSE9TRU9ORyBQSUVVUC1TSU9TLVRJS0VVVAorMTEyNAlIQU5HVUwgQ0hPU0VPTkcgUElFVVAtU0lPUy1QSUVVUAorMTEyNQlIQU5HVUwgQ0hPU0VPTkcgUElFVVAtU1NBTkdTSU9TCisxMTI2CUhBTkdVTCBDSE9TRU9ORyBQSUVVUC1TSU9TLUNJRVVDCisxMTI3CUhBTkdVTCBDSE9TRU9ORyBQSUVVUC1DSUVVQworMTEyOAlIQU5HVUwgQ0hPU0VPTkcgUElFVVAtQ0hJRVVDSAorMTEyOQlIQU5HVUwgQ0hPU0VPTkcgUElFVVAtVEhJRVVUSAorMTEyQQlIQU5HVUwgQ0hPU0VPTkcgUElFVVAtUEhJRVVQSAorMTEyQglIQU5HVUwgQ0hPU0VPTkcgS0FQWUVPVU5QSUVVUAorMTEyQwlIQU5HVUwgQ0hPU0VPTkcgS0FQWUVPVU5TU0FOR1BJRVVQCisxMTJECUhBTkdVTCBDSE9TRU9ORyBTSU9TLUtJWUVPSworMTEyRQlIQU5HVUwgQ0hPU0VPTkcgU0lPUy1OSUVVTgorMTEyRglIQU5HVUwgQ0hPU0VPTkcgU0lPUy1USUtFVVQKKzExMzAJSEFOR1VMIENIT1NFT05HIFNJT1MtUklFVUwKKzExMzEJSEFOR1VMIENIT1NFT05HIFNJT1MtTUlFVU0KKzExMzIJSEFOR1VMIENIT1NFT05HIFNJT1MtUElFVVAKKzExMzMJSEFOR1VMIENIT1NFT05HIFNJT1MtUElFVVAtS0lZRU9LCisxMTM0CUhBTkdVTCBDSE9TRU9ORyBTSU9TLVNTQU5HU0lPUworMTEzNQlIQU5HVUwgQ0hPU0VPTkcgU0lPUy1JRVVORworMTEzNglIQU5HVUwgQ0hPU0VPTkcgU0lPUy1DSUVVQworMTEzNwlIQU5HVUwgQ0hPU0VPTkcgU0lPUy1DSElFVUNICisxMTM4CUhBTkdVTCBDSE9TRU9ORyBTSU9TLUtISUVVS0gKKzExMzkJSEFOR1VMIENIT1NFT05HIFNJT1MtVEhJRVVUSAorMTEzQQlIQU5HVUwgQ0hPU0VPTkcgU0lPUy1QSElFVVBICisxMTNCCUhBTkdVTCBDSE9TRU9ORyBTSU9TLUhJRVVICisxMTNDCUhBTkdVTCBDSE9TRU9ORyBDSElUVUVVTVNJT1MKKzExM0QJSEFOR1VMIENIT1NFT05HIENISVRVRVVNU1NBTkdTSU9TCisxMTNFCUhBTkdVTCBDSE9TRU9ORyBDRU9OR0NISUVVTVNJT1MKKzExM0YJSEFOR1VMIENIT1NFT05HIENFT05HQ0hJRVVNU1NBTkdTSU9TCisxMTQwCUhBTkdVTCBDSE9TRU9ORyBQQU5TSU9TCisxMTQxCUhBTkdVTCBDSE9TRU9ORyBJRVVORy1LSVlFT0sKKzExNDIJSEFOR1VMIENIT1NFT05HIElFVU5HLVRJS0VVVAorMTE0MwlIQU5HVUwgQ0hPU0VPTkcgSUVVTkctTUlFVU0KKzExNDQJSEFOR1VMIENIT1NFT05HIElFVU5HLVBJRVVQCisxMTQ1CUhBTkdVTCBDSE9TRU9ORyBJRVVORy1TSU9TCisxMTQ2CUhBTkdVTCBDSE9TRU9ORyBJRVVORy1QQU5TSU9TCisxMTQ3CUhBTkdVTCBDSE9TRU9ORyBTU0FOR0lFVU5HCisxMTQ4CUhBTkdVTCBDSE9TRU9ORyBJRVVORy1DSUVVQworMTE0OQlIQU5HVUwgQ0hPU0VPTkcgSUVVTkctQ0hJRVVDSAorMTE0QQlIQU5HVUwgQ0hPU0VPTkcgSUVVTkctVEhJRVVUSAorMTE0QglIQU5HVUwgQ0hPU0VPTkcgSUVVTkctUEhJRVVQSAorMTE0QwlIQU5HVUwgQ0hPU0VPTkcgWUVTSUVVTkcKKzExNEQJSEFOR1VMIENIT1NFT05HIENJRVVDLUlFVU5HCisxMTRFCUhBTkdVTCBDSE9TRU9ORyBDSElUVUVVTUNJRVVDCisxMTRGCUhBTkdVTCBDSE9TRU9ORyBDSElUVUVVTVNTQU5HQ0lFVUMKKzExNTAJSEFOR1VMIENIT1NFT05HIENFT05HQ0hJRVVNQ0lFVUMKKzExNTEJSEFOR1VMIENIT1NFT05HIENFT05HQ0hJRVVNU1NBTkdDSUVVQworMTE1MglIQU5HVUwgQ0hPU0VPTkcgQ0hJRVVDSC1LSElFVUtICisxMTUzCUhBTkdVTCBDSE9TRU9ORyBDSElFVUNILUhJRVVICisxMTU0CUhBTkdVTCBDSE9TRU9ORyBDSElUVUVVTUNISUVVQ0gKKzExNTUJSEFOR1VMIENIT1NFT05HIENFT05HQ0hJRVVNQ0hJRVVDSAorMTE1NglIQU5HVUwgQ0hPU0VPTkcgUEhJRVVQSC1QSUVVUAorMTE1NwlIQU5HVUwgQ0hPU0VPTkcgS0FQWUVPVU5QSElFVVBICisxMTU4CUhBTkdVTCBDSE9TRU9ORyBTU0FOR0hJRVVICisxMTU5CUhBTkdVTCBDSE9TRU9ORyBZRU9SSU5ISUVVSAorMTE1RglIQU5HVUwgQ0hPU0VPTkcgRklMTEVSCisxMTYwCUhBTkdVTCBKVU5HU0VPTkcgRklMTEVSCisxMTYxCUhBTkdVTCBKVU5HU0VPTkcgQQorMTE2MglIQU5HVUwgSlVOR1NFT05HIEFFCisxMTYzCUhBTkdVTCBKVU5HU0VPTkcgWUEKKzExNjQJSEFOR1VMIEpVTkdTRU9ORyBZQUUKKzExNjUJSEFOR1VMIEpVTkdTRU9ORyBFTworMTE2NglIQU5HVUwgSlVOR1NFT05HIEUKKzExNjcJSEFOR1VMIEpVTkdTRU9ORyBZRU8KKzExNjgJSEFOR1VMIEpVTkdTRU9ORyBZRQorMTE2OQlIQU5HVUwgSlVOR1NFT05HIE8KKzExNkEJSEFOR1VMIEpVTkdTRU9ORyBXQQorMTE2QglIQU5HVUwgSlVOR1NFT05HIFdBRQorMTE2QwlIQU5HVUwgSlVOR1NFT05HIE9FCisxMTZECUhBTkdVTCBKVU5HU0VPTkcgWU8KKzExNkUJSEFOR1VMIEpVTkdTRU9ORyBVCisxMTZGCUhBTkdVTCBKVU5HU0VPTkcgV0VPCisxMTcwCUhBTkdVTCBKVU5HU0VPTkcgV0UKKzExNzEJSEFOR1VMIEpVTkdTRU9ORyBXSQorMTE3MglIQU5HVUwgSlVOR1NFT05HIFlVCisxMTczCUhBTkdVTCBKVU5HU0VPTkcgRVUKKzExNzQJSEFOR1VMIEpVTkdTRU9ORyBZSQorMTE3NQlIQU5HVUwgSlVOR1NFT05HIEkKKzExNzYJSEFOR1VMIEpVTkdTRU9ORyBBLU8KKzExNzcJSEFOR1VMIEpVTkdTRU9ORyBBLVUKKzExNzgJSEFOR1VMIEpVTkdTRU9ORyBZQS1PCisxMTc5CUhBTkdVTCBKVU5HU0VPTkcgWUEtWU8KKzExN0EJSEFOR1VMIEpVTkdTRU9ORyBFTy1PCisxMTdCCUhBTkdVTCBKVU5HU0VPTkcgRU8tVQorMTE3QwlIQU5HVUwgSlVOR1NFT05HIEVPLUVVCisxMTdECUhBTkdVTCBKVU5HU0VPTkcgWUVPLU8KKzExN0UJSEFOR1VMIEpVTkdTRU9ORyBZRU8tVQorMTE3RglIQU5HVUwgSlVOR1NFT05HIE8tRU8KKzExODAJSEFOR1VMIEpVTkdTRU9ORyBPLUUKKzExODEJSEFOR1VMIEpVTkdTRU9ORyBPLVlFCisxMTgyCUhBTkdVTCBKVU5HU0VPTkcgTy1PCisxMTgzCUhBTkdVTCBKVU5HU0VPTkcgTy1VCisxMTg0CUhBTkdVTCBKVU5HU0VPTkcgWU8tWUEKKzExODUJSEFOR1VMIEpVTkdTRU9ORyBZTy1ZQUUKKzExODYJSEFOR1VMIEpVTkdTRU9ORyBZTy1ZRU8KKzExODcJSEFOR1VMIEpVTkdTRU9ORyBZTy1PCisxMTg4CUhBTkdVTCBKVU5HU0VPTkcgWU8tSQorMTE4OQlIQU5HVUwgSlVOR1NFT05HIFUtQQorMTE4QQlIQU5HVUwgSlVOR1NFT05HIFUtQUUKKzExOEIJSEFOR1VMIEpVTkdTRU9ORyBVLUVPLUVVCisxMThDCUhBTkdVTCBKVU5HU0VPTkcgVS1ZRQorMTE4RAlIQU5HVUwgSlVOR1NFT05HIFUtVQorMTE4RQlIQU5HVUwgSlVOR1NFT05HIFlVLUEKKzExOEYJSEFOR1VMIEpVTkdTRU9ORyBZVS1FTworMTE5MAlIQU5HVUwgSlVOR1NFT05HIFlVLUUKKzExOTEJSEFOR1VMIEpVTkdTRU9ORyBZVS1ZRU8KKzExOTIJSEFOR1VMIEpVTkdTRU9ORyBZVS1ZRQorMTE5MwlIQU5HVUwgSlVOR1NFT05HIFlVLVUKKzExOTQJSEFOR1VMIEpVTkdTRU9ORyBZVS1JCisxMTk1CUhBTkdVTCBKVU5HU0VPTkcgRVUtVQorMTE5NglIQU5HVUwgSlVOR1NFT05HIEVVLUVVCisxMTk3CUhBTkdVTCBKVU5HU0VPTkcgWUktVQorMTE5OAlIQU5HVUwgSlVOR1NFT05HIEktQQorMTE5OQlIQU5HVUwgSlVOR1NFT05HIEktWUEKKzExOUEJSEFOR1VMIEpVTkdTRU9ORyBJLU8KKzExOUIJSEFOR1VMIEpVTkdTRU9ORyBJLVUKKzExOUMJSEFOR1VMIEpVTkdTRU9ORyBJLUVVCisxMTlECUhBTkdVTCBKVU5HU0VPTkcgSS1BUkFFQQorMTE5RQlIQU5HVUwgSlVOR1NFT05HIEFSQUVBCisxMTlGCUhBTkdVTCBKVU5HU0VPTkcgQVJBRUEtRU8KKzExQTAJSEFOR1VMIEpVTkdTRU9ORyBBUkFFQS1VCisxMUExCUhBTkdVTCBKVU5HU0VPTkcgQVJBRUEtSQorMTFBMglIQU5HVUwgSlVOR1NFT05HIFNTQU5HQVJBRUEKKzExQTgJSEFOR1VMIEpPTkdTRU9ORyBLSVlFT0sKKzExQTkJSEFOR1VMIEpPTkdTRU9ORyBTU0FOR0tJWUVPSworMTFBQQlIQU5HVUwgSk9OR1NFT05HIEtJWUVPSy1TSU9TCisxMUFCCUhBTkdVTCBKT05HU0VPTkcgTklFVU4KKzExQUMJSEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1DSUVVQworMTFBRAlIQU5HVUwgSk9OR1NFT05HIE5JRVVOLUhJRVVICisxMUFFCUhBTkdVTCBKT05HU0VPTkcgVElLRVVUCisxMUFGCUhBTkdVTCBKT05HU0VPTkcgUklFVUwKKzExQjAJSEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1LSVlFT0sKKzExQjEJSEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1NSUVVTQorMTFCMglIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVBJRVVQCisxMUIzCUhBTkdVTCBKT05HU0VPTkcgUklFVUwtU0lPUworMTFCNAlIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVRISUVVVEgKKzExQjUJSEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1QSElFVVBICisxMUI2CUhBTkdVTCBKT05HU0VPTkcgUklFVUwtSElFVUgKKzExQjcJSEFOR1VMIEpPTkdTRU9ORyBNSUVVTQorMTFCOAlIQU5HVUwgSk9OR1NFT05HIFBJRVVQCisxMUI5CUhBTkdVTCBKT05HU0VPTkcgUElFVVAtU0lPUworMTFCQQlIQU5HVUwgSk9OR1NFT05HIFNJT1MKKzExQkIJSEFOR1VMIEpPTkdTRU9ORyBTU0FOR1NJT1MKKzExQkMJSEFOR1VMIEpPTkdTRU9ORyBJRVVORworMTFCRAlIQU5HVUwgSk9OR1NFT05HIENJRVVDCisxMUJFCUhBTkdVTCBKT05HU0VPTkcgQ0hJRVVDSAorMTFCRglIQU5HVUwgSk9OR1NFT05HIEtISUVVS0gKKzExQzAJSEFOR1VMIEpPTkdTRU9ORyBUSElFVVRICisxMUMxCUhBTkdVTCBKT05HU0VPTkcgUEhJRVVQSAorMTFDMglIQU5HVUwgSk9OR1NFT05HIEhJRVVICisxMUMzCUhBTkdVTCBKT05HU0VPTkcgS0lZRU9LLVJJRVVMCisxMUM0CUhBTkdVTCBKT05HU0VPTkcgS0lZRU9LLVNJT1MtS0lZRU9LCisxMUM1CUhBTkdVTCBKT05HU0VPTkcgTklFVU4tS0lZRU9LCisxMUM2CUhBTkdVTCBKT05HU0VPTkcgTklFVU4tVElLRVVUCisxMUM3CUhBTkdVTCBKT05HU0VPTkcgTklFVU4tU0lPUworMTFDOAlIQU5HVUwgSk9OR1NFT05HIE5JRVVOLVBBTlNJT1MKKzExQzkJSEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1USElFVVRICisxMUNBCUhBTkdVTCBKT05HU0VPTkcgVElLRVVULUtJWUVPSworMTFDQglIQU5HVUwgSk9OR1NFT05HIFRJS0VVVC1SSUVVTAorMTFDQwlIQU5HVUwgSk9OR1NFT05HIFJJRVVMLUtJWUVPSy1TSU9TCisxMUNECUhBTkdVTCBKT05HU0VPTkcgUklFVUwtTklFVU4KKzExQ0UJSEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1USUtFVVQKKzExQ0YJSEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1USUtFVVQtSElFVUgKKzExRDAJSEFOR1VMIEpPTkdTRU9ORyBTU0FOR1JJRVVMCisxMUQxCUhBTkdVTCBKT05HU0VPTkcgUklFVUwtTUlFVU0tS0lZRU9LCisxMUQyCUhBTkdVTCBKT05HU0VPTkcgUklFVUwtTUlFVU0tU0lPUworMTFEMwlIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVBJRVVQLVNJT1MKKzExRDQJSEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1QSUVVUC1ISUVVSAorMTFENQlIQU5HVUwgSk9OR1NFT05HIFJJRVVMLUtBUFlFT1VOUElFVVAKKzExRDYJSEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1TU0FOR1NJT1MKKzExRDcJSEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1QQU5TSU9TCisxMUQ4CUhBTkdVTCBKT05HU0VPTkcgUklFVUwtS0hJRVVLSAorMTFEOQlIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVlFT1JJTkhJRVVICisxMURBCUhBTkdVTCBKT05HU0VPTkcgTUlFVU0tS0lZRU9LCisxMURCCUhBTkdVTCBKT05HU0VPTkcgTUlFVU0tUklFVUwKKzExREMJSEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1QSUVVUAorMTFERAlIQU5HVUwgSk9OR1NFT05HIE1JRVVNLVNJT1MKKzExREUJSEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1TU0FOR1NJT1MKKzExREYJSEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1QQU5TSU9TCisxMUUwCUhBTkdVTCBKT05HU0VPTkcgTUlFVU0tQ0hJRVVDSAorMTFFMQlIQU5HVUwgSk9OR1NFT05HIE1JRVVNLUhJRVVICisxMUUyCUhBTkdVTCBKT05HU0VPTkcgS0FQWUVPVU5NSUVVTQorMTFFMwlIQU5HVUwgSk9OR1NFT05HIFBJRVVQLVJJRVVMCisxMUU0CUhBTkdVTCBKT05HU0VPTkcgUElFVVAtUEhJRVVQSAorMTFFNQlIQU5HVUwgSk9OR1NFT05HIFBJRVVQLUhJRVVICisxMUU2CUhBTkdVTCBKT05HU0VPTkcgS0FQWUVPVU5QSUVVUAorMTFFNwlIQU5HVUwgSk9OR1NFT05HIFNJT1MtS0lZRU9LCisxMUU4CUhBTkdVTCBKT05HU0VPTkcgU0lPUy1USUtFVVQKKzExRTkJSEFOR1VMIEpPTkdTRU9ORyBTSU9TLVJJRVVMCisxMUVBCUhBTkdVTCBKT05HU0VPTkcgU0lPUy1QSUVVUAorMTFFQglIQU5HVUwgSk9OR1NFT05HIFBBTlNJT1MKKzExRUMJSEFOR1VMIEpPTkdTRU9ORyBJRVVORy1LSVlFT0sKKzExRUQJSEFOR1VMIEpPTkdTRU9ORyBJRVVORy1TU0FOR0tJWUVPSworMTFFRQlIQU5HVUwgSk9OR1NFT05HIFNTQU5HSUVVTkcKKzExRUYJSEFOR1VMIEpPTkdTRU9ORyBJRVVORy1LSElFVUtICisxMUYwCUhBTkdVTCBKT05HU0VPTkcgWUVTSUVVTkcKKzExRjEJSEFOR1VMIEpPTkdTRU9ORyBZRVNJRVVORy1TSU9TCisxMUYyCUhBTkdVTCBKT05HU0VPTkcgWUVTSUVVTkctUEFOU0lPUworMTFGMwlIQU5HVUwgSk9OR1NFT05HIFBISUVVUEgtUElFVVAKKzExRjQJSEFOR1VMIEpPTkdTRU9ORyBLQVBZRU9VTlBISUVVUEgKKzExRjUJSEFOR1VMIEpPTkdTRU9ORyBISUVVSC1OSUVVTgorMTFGNglIQU5HVUwgSk9OR1NFT05HIEhJRVVILVJJRVVMCisxMUY3CUhBTkdVTCBKT05HU0VPTkcgSElFVUgtTUlFVU0KKzExRjgJSEFOR1VMIEpPTkdTRU9ORyBISUVVSC1QSUVVUAorMTFGOQlIQU5HVUwgSk9OR1NFT05HIFlFT1JJTkhJRVVICisxRTAwCUxBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEJFTE9XCisxRTAxCUxBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBCRUxPVworMUUwMglMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggRE9UIEFCT1ZFCisxRTAzCUxBVElOIFNNQUxMIExFVFRFUiBCIFdJVEggRE9UIEFCT1ZFCisxRTA0CUxBVElOIENBUElUQUwgTEVUVEVSIEIgV0lUSCBET1QgQkVMT1cKKzFFMDUJTEFUSU4gU01BTEwgTEVUVEVSIEIgV0lUSCBET1QgQkVMT1cKKzFFMDYJTEFUSU4gQ0FQSVRBTCBMRVRURVIgQiBXSVRIIExJTkUgQkVMT1cKKzFFMDcJTEFUSU4gU01BTEwgTEVUVEVSIEIgV0lUSCBMSU5FIEJFTE9XCisxRTA4CUxBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBIEFORCBBQ1VURQorMUUwOQlMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEgQU5EIEFDVVRFCisxRTBBCUxBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBET1QgQUJPVkUKKzFFMEIJTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBET1QgQUJPVkUKKzFFMEMJTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIERPVCBCRUxPVworMUUwRAlMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIERPVCBCRUxPVworMUUwRQlMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggTElORSBCRUxPVworMUUwRglMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIExJTkUgQkVMT1cKKzFFMTAJTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIENFRElMTEEKKzFFMTEJTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDRURJTExBCisxRTEyCUxBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBDSVJDVU1GTEVYIEJFTE9XCisxRTEzCUxBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVworMUUxNAlMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggTUFDUk9OIEFORCBHUkFWRQorMUUxNQlMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE1BQ1JPTiBBTkQgR1JBVkUKKzFFMTYJTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTiBBTkQgQUNVVEUKKzFFMTcJTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBNQUNST04gQU5EIEFDVVRFCisxRTE4CUxBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEJFTE9XCisxRTE5CUxBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVworMUUxQQlMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggVElMREUgQkVMT1cKKzFFMUIJTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBUSUxERSBCRUxPVworMUUxQwlMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0VESUxMQSBBTkQgQlJFVkUKKzFFMUQJTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDRURJTExBIEFORCBCUkVWRQorMUUxRQlMQVRJTiBDQVBJVEFMIExFVFRFUiBGIFdJVEggRE9UIEFCT1ZFCisxRTFGCUxBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggRE9UIEFCT1ZFCisxRTIwCUxBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBNQUNST04KKzFFMjEJTEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBNQUNST04KKzFFMjIJTEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIERPVCBBQk9WRQorMUUyMwlMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIERPVCBBQk9WRQorMUUyNAlMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggRE9UIEJFTE9XCisxRTI1CUxBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggRE9UIEJFTE9XCisxRTI2CUxBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBESUFFUkVTSVMKKzFFMjcJTEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBESUFFUkVTSVMKKzFFMjgJTEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIENFRElMTEEKKzFFMjkJTEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBDRURJTExBCisxRTJBCUxBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBCUkVWRSBCRUxPVworMUUyQglMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIEJSRVZFIEJFTE9XCisxRTJDCUxBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBUSUxERSBCRUxPVworMUUyRAlMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIFRJTERFIEJFTE9XCisxRTJFCUxBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMgQU5EIEFDVVRFCisxRTJGCUxBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTIEFORCBBQ1VURQorMUUzMAlMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggQUNVVEUKKzFFMzEJTEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBBQ1VURQorMUUzMglMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggRE9UIEJFTE9XCisxRTMzCUxBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggRE9UIEJFTE9XCisxRTM0CUxBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBMSU5FIEJFTE9XCisxRTM1CUxBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggTElORSBCRUxPVworMUUzNglMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggRE9UIEJFTE9XCisxRTM3CUxBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggRE9UIEJFTE9XCisxRTM4CUxBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBET1QgQkVMT1cgQU5EIE1BQ1JPTgorMUUzOQlMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIERPVCBCRUxPVyBBTkQgTUFDUk9OCisxRTNBCUxBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBMSU5FIEJFTE9XCisxRTNCCUxBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggTElORSBCRUxPVworMUUzQwlMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVworMUUzRAlMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIENJUkNVTUZMRVggQkVMT1cKKzFFM0UJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTSBXSVRIIEFDVVRFCisxRTNGCUxBVElOIFNNQUxMIExFVFRFUiBNIFdJVEggQUNVVEUKKzFFNDAJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTSBXSVRIIERPVCBBQk9WRQorMUU0MQlMQVRJTiBTTUFMTCBMRVRURVIgTSBXSVRIIERPVCBBQk9WRQorMUU0MglMQVRJTiBDQVBJVEFMIExFVFRFUiBNIFdJVEggRE9UIEJFTE9XCisxRTQzCUxBVElOIFNNQUxMIExFVFRFUiBNIFdJVEggRE9UIEJFTE9XCisxRTQ0CUxBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBET1QgQUJPVkUKKzFFNDUJTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBET1QgQUJPVkUKKzFFNDYJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIERPVCBCRUxPVworMUU0NwlMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIERPVCBCRUxPVworMUU0OAlMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggTElORSBCRUxPVworMUU0OQlMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIExJTkUgQkVMT1cKKzFFNEEJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENJUkNVTUZMRVggQkVMT1cKKzFFNEIJTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBDSVJDVU1GTEVYIEJFTE9XCisxRTRDCUxBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERSBBTkQgQUNVVEUKKzFFNEQJTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERSBBTkQgQUNVVEUKKzFFNEUJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFIEFORCBESUFFUkVTSVMKKzFFNEYJTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERSBBTkQgRElBRVJFU0lTCisxRTUwCUxBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNQUNST04gQU5EIEdSQVZFCisxRTUxCUxBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggTUFDUk9OIEFORCBHUkFWRQorMUU1MglMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUFDUk9OIEFORCBBQ1VURQorMUU1MwlMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIE1BQ1JPTiBBTkQgQUNVVEUKKzFFNTQJTEFUSU4gQ0FQSVRBTCBMRVRURVIgUCBXSVRIIEFDVVRFCisxRTU1CUxBVElOIFNNQUxMIExFVFRFUiBQIFdJVEggQUNVVEUKKzFFNTYJTEFUSU4gQ0FQSVRBTCBMRVRURVIgUCBXSVRIIERPVCBBQk9WRQorMUU1NwlMQVRJTiBTTUFMTCBMRVRURVIgUCBXSVRIIERPVCBBQk9WRQorMUU1OAlMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggRE9UIEFCT1ZFCisxRTU5CUxBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggRE9UIEFCT1ZFCisxRTVBCUxBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBET1QgQkVMT1cKKzFFNUIJTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBET1QgQkVMT1cKKzFFNUMJTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIERPVCBCRUxPVyBBTkQgTUFDUk9OCisxRTVECUxBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggRE9UIEJFTE9XIEFORCBNQUNST04KKzFFNUUJTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIExJTkUgQkVMT1cKKzFFNUYJTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBMSU5FIEJFTE9XCisxRTYwCUxBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBET1QgQUJPVkUKKzFFNjEJTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBET1QgQUJPVkUKKzFFNjIJTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIERPVCBCRUxPVworMUU2MwlMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIERPVCBCRUxPVworMUU2NAlMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQUNVVEUgQU5EIERPVCBBQk9WRQorMUU2NQlMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIEFDVVRFIEFORCBET1QgQUJPVkUKKzFFNjYJTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OIEFORCBET1QgQUJPVkUKKzFFNjcJTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTiBBTkQgRE9UIEFCT1ZFCisxRTY4CUxBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBET1QgQkVMT1cgQU5EIERPVCBBQk9WRQorMUU2OQlMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIERPVCBCRUxPVyBBTkQgRE9UIEFCT1ZFCisxRTZBCUxBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBET1QgQUJPVkUKKzFFNkIJTEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBET1QgQUJPVkUKKzFFNkMJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIERPVCBCRUxPVworMUU2RAlMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIERPVCBCRUxPVworMUU2RQlMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggTElORSBCRUxPVworMUU2RglMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIExJTkUgQkVMT1cKKzFFNzAJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENJUkNVTUZMRVggQkVMT1cKKzFFNzEJTEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBDSVJDVU1GTEVYIEJFTE9XCisxRTcyCUxBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQkVMT1cKKzFFNzMJTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQkVMT1cKKzFFNzQJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIFRJTERFIEJFTE9XCisxRTc1CUxBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggVElMREUgQkVMT1cKKzFFNzYJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVggQkVMT1cKKzFFNzcJTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYIEJFTE9XCisxRTc4CUxBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBUSUxERSBBTkQgQUNVVEUKKzFFNzkJTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBUSUxERSBBTkQgQUNVVEUKKzFFN0EJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTiBBTkQgRElBRVJFU0lTCisxRTdCCUxBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OIEFORCBESUFFUkVTSVMKKzFFN0MJTEFUSU4gQ0FQSVRBTCBMRVRURVIgViBXSVRIIFRJTERFCisxRTdECUxBVElOIFNNQUxMIExFVFRFUiBWIFdJVEggVElMREUKKzFFN0UJTEFUSU4gQ0FQSVRBTCBMRVRURVIgViBXSVRIIERPVCBCRUxPVworMUU3RglMQVRJTiBTTUFMTCBMRVRURVIgViBXSVRIIERPVCBCRUxPVworMUU4MAlMQVRJTiBDQVBJVEFMIExFVFRFUiBXIFdJVEggR1JBVkUKKzFFODEJTEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBHUkFWRQorMUU4MglMQVRJTiBDQVBJVEFMIExFVFRFUiBXIFdJVEggQUNVVEUKKzFFODMJTEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBBQ1VURQorMUU4NAlMQVRJTiBDQVBJVEFMIExFVFRFUiBXIFdJVEggRElBRVJFU0lTCisxRTg1CUxBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggRElBRVJFU0lTCisxRTg2CUxBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBET1QgQUJPVkUKKzFFODcJTEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBET1QgQUJPVkUKKzFFODgJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIERPVCBCRUxPVworMUU4OQlMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIERPVCBCRUxPVworMUU4QQlMQVRJTiBDQVBJVEFMIExFVFRFUiBYIFdJVEggRE9UIEFCT1ZFCisxRThCCUxBVElOIFNNQUxMIExFVFRFUiBYIFdJVEggRE9UIEFCT1ZFCisxRThDCUxBVElOIENBUElUQUwgTEVUVEVSIFggV0lUSCBESUFFUkVTSVMKKzFFOEQJTEFUSU4gU01BTEwgTEVUVEVSIFggV0lUSCBESUFFUkVTSVMKKzFFOEUJTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERPVCBBQk9WRQorMUU4RglMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERPVCBBQk9WRQorMUU5MAlMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQ0lSQ1VNRkxFWAorMUU5MQlMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENJUkNVTUZMRVgKKzFFOTIJTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIERPVCBCRUxPVworMUU5MwlMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIERPVCBCRUxPVworMUU5NAlMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggTElORSBCRUxPVworMUU5NQlMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIExJTkUgQkVMT1cKKzFFOTYJTEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBMSU5FIEJFTE9XCisxRTk3CUxBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggRElBRVJFU0lTCisxRTk4CUxBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggUklORyBBQk9WRQorMUU5OQlMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIFJJTkcgQUJPVkUKKzFFOUEJTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSUdIVCBIQUxGIFJJTkcKKzFFOUIJTEFUSU4gU01BTEwgTEVUVEVSIExPTkcgUyBXSVRIIERPVCBBQk9WRQorMUVBMAlMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRE9UIEJFTE9XCisxRUExCUxBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRE9UIEJFTE9XCisxRUEyCUxBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBIT09LIEFCT1ZFCisxRUEzCUxBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggSE9PSyBBQk9WRQorMUVBNAlMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgQUNVVEUKKzFFQTUJTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBBQ1VURQorMUVBNglMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgR1JBVkUKKzFFQTcJTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBHUkFWRQorMUVBOAlMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRQorMUVBOQlMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIEhPT0sgQUJPVkUKKzFFQUEJTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIFRJTERFCisxRUFCCUxBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgVElMREUKKzFFQUMJTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIERPVCBCRUxPVworMUVBRAlMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIERPVCBCRUxPVworMUVBRQlMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIEFDVVRFCisxRUFGCUxBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIEFDVVRFCisxRUIwCUxBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgR1JBVkUKKzFFQjEJTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgR1JBVkUKKzFFQjIJTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBIT09LIEFCT1ZFCisxRUIzCUxBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIEhPT0sgQUJPVkUKKzFFQjQJTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBUSUxERQorMUVCNQlMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBUSUxERQorMUVCNglMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIERPVCBCRUxPVworMUVCNwlMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBET1QgQkVMT1cKKzFFQjgJTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBCRUxPVworMUVCOQlMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERPVCBCRUxPVworMUVCQQlMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggSE9PSyBBQk9WRQorMUVCQglMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEhPT0sgQUJPVkUKKzFFQkMJTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIFRJTERFCisxRUJECUxBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggVElMREUKKzFFQkUJTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFCisxRUJGCUxBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgQUNVVEUKKzFFQzAJTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFCisxRUMxCUxBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgR1JBVkUKKzFFQzIJTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEhPT0sgQUJPVkUKKzFFQzMJTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBIT09LIEFCT1ZFCisxRUM0CUxBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERQorMUVDNQlMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIFRJTERFCisxRUM2CUxBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1cKKzFFQzcJTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1cKKzFFQzgJTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEhPT0sgQUJPVkUKKzFFQzkJTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBIT09LIEFCT1ZFCisxRUNBCUxBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBET1QgQkVMT1cKKzFFQ0IJTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBET1QgQkVMT1cKKzFFQ0MJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVCBCRUxPVworMUVDRAlMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVCBCRUxPVworMUVDRQlMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSE9PSyBBQk9WRQorMUVDRglMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPT0sgQUJPVkUKKzFFRDAJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFCisxRUQxCUxBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgQUNVVEUKKzFFRDIJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFCisxRUQzCUxBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgR1JBVkUKKzFFRDQJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEhPT0sgQUJPVkUKKzFFRDUJTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBIT09LIEFCT1ZFCisxRUQ2CUxBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERQorMUVENwlMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIFRJTERFCisxRUQ4CUxBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1cKKzFFRDkJTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1cKKzFFREEJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEFDVVRFCisxRURCCUxBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgQUNVVEUKKzFFREMJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEdSQVZFCisxRURECUxBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgR1JBVkUKKzFFREUJTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEhPT0sgQUJPVkUKKzFFREYJTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBIT09LIEFCT1ZFCisxRUUwCUxBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBUSUxERQorMUVFMQlMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIFRJTERFCisxRUUyCUxBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBET1QgQkVMT1cKKzFFRTMJTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBET1QgQkVMT1cKKzFFRTQJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVCBCRUxPVworMUVFNQlMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERPVCBCRUxPVworMUVFNglMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9PSyBBQk9WRQorMUVFNwlMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEhPT0sgQUJPVkUKKzFFRTgJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEFDVVRFCisxRUU5CUxBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgQUNVVEUKKzFFRUEJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEdSQVZFCisxRUVCCUxBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgR1JBVkUKKzFFRUMJTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEhPT0sgQUJPVkUKKzFFRUQJTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBIT09LIEFCT1ZFCisxRUVFCUxBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBUSUxERQorMUVFRglMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIFRJTERFCisxRUYwCUxBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBET1QgQkVMT1cKKzFFRjEJTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBET1QgQkVMT1cKKzFFRjIJTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEdSQVZFCisxRUYzCUxBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggR1JBVkUKKzFFRjQJTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERPVCBCRUxPVworMUVGNQlMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERPVCBCRUxPVworMUVGNglMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggSE9PSyBBQk9WRQorMUVGNwlMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEhPT0sgQUJPVkUKKzFFRjgJTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIFRJTERFCisxRUY5CUxBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggVElMREUKKzFGMDAJR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkKKzFGMDEJR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEKKzFGMDIJR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFZBUklBCisxRjAzCUdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBWQVJJQQorMUYwNAlHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgT1hJQQorMUYwNQlHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgT1hJQQorMUYwNglHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkKKzFGMDcJR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JCisxRjA4CUdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkKKzFGMDkJR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQQorMUYwQQlHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBWQVJJQQorMUYwQglHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBWQVJJQQorMUYwQwlHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBPWElBCisxRjBECUdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIE9YSUEKKzFGMEUJR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkKKzFGMEYJR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkKKzFGMTAJR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBQU0lMSQorMUYxMQlHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIERBU0lBCisxRjEyCUdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggUFNJTEkgQU5EIFZBUklBCisxRjEzCUdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUEgQU5EIFZBUklBCisxRjE0CUdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggUFNJTEkgQU5EIE9YSUEKKzFGMTUJR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBEQVNJQSBBTkQgT1hJQQorMUYxOAlHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggUFNJTEkKKzFGMTkJR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIERBU0lBCisxRjFBCUdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBQU0lMSSBBTkQgVkFSSUEKKzFGMUIJR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIERBU0lBIEFORCBWQVJJQQorMUYxQwlHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggUFNJTEkgQU5EIE9YSUEKKzFGMUQJR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIERBU0lBIEFORCBPWElBCisxRjIwCUdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSQorMUYyMQlHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEKKzFGMjIJR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQQorMUYyMwlHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFZBUklBCisxRjI0CUdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgT1hJQQorMUYyNQlHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUEKKzFGMjYJR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSQorMUYyNwlHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JCisxRjI4CUdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJCisxRjI5CUdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBCisxRjJBCUdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQQorMUYyQglHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgVkFSSUEKKzFGMkMJR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIE9YSUEKKzFGMkQJR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUEKKzFGMkUJR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JCisxRjJGCUdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSQorMUYzMAlHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJCisxRjMxCUdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggREFTSUEKKzFGMzIJR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBQU0lMSSBBTkQgVkFSSUEKKzFGMzMJR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgVkFSSUEKKzFGMzQJR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBQU0lMSSBBTkQgT1hJQQorMUYzNQlHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERBU0lBIEFORCBPWElBCisxRjM2CUdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JCisxRjM3CUdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JCisxRjM4CUdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBQU0lMSQorMUYzOQlHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggREFTSUEKKzFGM0EJR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBWQVJJQQorMUYzQglHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggREFTSUEgQU5EIFZBUklBCisxRjNDCUdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBQU0lMSSBBTkQgT1hJQQorMUYzRAlHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggREFTSUEgQU5EIE9YSUEKKzFGM0UJR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSQorMUYzRglHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JCisxRjQwCUdSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggUFNJTEkKKzFGNDEJR1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBEQVNJQQorMUY0MglHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIFBTSUxJIEFORCBWQVJJQQorMUY0MwlHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBIEFORCBWQVJJQQorMUY0NAlHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIFBTSUxJIEFORCBPWElBCisxRjQ1CUdSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggREFTSUEgQU5EIE9YSUEKKzFGNDgJR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFBTSUxJCisxRjQ5CUdSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBEQVNJQQorMUY0QQlHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggUFNJTEkgQU5EIFZBUklBCisxRjRCCUdSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBEQVNJQSBBTkQgVkFSSUEKKzFGNEMJR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFBTSUxJIEFORCBPWElBCisxRjRECUdSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBEQVNJQSBBTkQgT1hJQQorMUY1MAlHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBTSUxJCisxRjUxCUdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEKKzFGNTIJR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBQU0lMSSBBTkQgVkFSSUEKKzFGNTMJR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQSBBTkQgVkFSSUEKKzFGNTQJR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBQU0lMSSBBTkQgT1hJQQorMUY1NQlHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERBU0lBIEFORCBPWElBCisxRjU2CUdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JCisxRjU3CUdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JCisxRjU5CUdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQQorMUY1QglHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIFZBUklBCisxRjVECUdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQSBBTkQgT1hJQQorMUY1RglHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JCisxRjYwCUdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJCisxRjYxCUdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBCisxRjYyCUdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBWQVJJQQorMUY2MwlHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgVkFSSUEKKzFGNjQJR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIE9YSUEKKzFGNjUJR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIE9YSUEKKzFGNjYJR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JCisxRjY3CUdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSQorMUY2OAlHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJCisxRjY5CUdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEKKzFGNkEJR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUEKKzFGNkIJR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgVkFSSUEKKzFGNkMJR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgT1hJQQorMUY2RAlHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBCisxRjZFCUdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JCisxRjZGCUdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JCisxRjcwCUdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFZBUklBCisxRjcxCUdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUEKKzFGNzIJR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBWQVJJQQorMUY3MwlHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIE9YSUEKKzFGNzQJR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFZBUklBCisxRjc1CUdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBPWElBCisxRjc2CUdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggVkFSSUEKKzFGNzcJR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBPWElBCisxRjc4CUdSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggVkFSSUEKKzFGNzkJR1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBPWElBCisxRjdBCUdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggVkFSSUEKKzFGN0IJR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBPWElBCisxRjdDCUdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFZBUklBCisxRjdECUdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIE9YSUEKKzFGODAJR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFlQT0dFR1JBTU1FTkkKKzFGODEJR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGODIJR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JCisxRjgzCUdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUY4NAlHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUY4NQlHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUY4NglHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkkKKzFGODcJR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JCisxRjg4CUdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFBST1NHRUdSQU1NRU5JCisxRjg5CUdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRjhBCUdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSQorMUY4QglHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOEMJR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOEQJR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOEUJR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JCisxRjhGCUdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBQUk9TR0VHUkFNTUVOSQorMUY5MAlHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFlQT0dFR1JBTU1FTkkKKzFGOTEJR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBZUE9HRUdSQU1NRU5JCisxRjkyCUdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGOTMJR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUY5NAlHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGOTUJR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JCisxRjk2CUdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkkKKzFGOTcJR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUY5OAlHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOTkJR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRjlBCUdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOUIJR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSQorMUY5QwlHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOUQJR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRjlFCUdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOUYJR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBQUk9TR0VHUkFNTUVOSQorMUZBMAlHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgWVBPR0VHUkFNTUVOSQorMUZBMQlHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUZBMglHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQTMJR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JCisxRkE0CUdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JCisxRkE1CUdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JCisxRkE2CUdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUZBNwlHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQTgJR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGQTkJR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGQUEJR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRkFCCUdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSQorMUZBQwlHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSQorMUZBRAlHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSQorMUZBRQlHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGQUYJR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JCisxRkIwCUdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFZSQUNIWQorMUZCMQlHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBNQUNST04KKzFGQjIJR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQjMJR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggWVBPR0VHUkFNTUVOSQorMUZCNAlHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBPWElBIEFORCBZUE9HRUdSQU1NRU5JCisxRkI2CUdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBFUklTUE9NRU5JCisxRkI3CUdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JCisxRkI4CUdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggVlJBQ0hZCisxRkI5CUdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggTUFDUk9OCisxRkJBCUdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggVkFSSUEKKzFGQkIJR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBPWElBCisxRkJDCUdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFJPU0dFR1JBTU1FTkkKKzFGQkQJR1JFRUsgS09ST05JUworMUZCRQlHUkVFSyBQUk9TR0VHUkFNTUVOSQorMUZCRglHUkVFSyBQU0lMSQorMUZDMAlHUkVFSyBQRVJJU1BPTUVOSQorMUZDMQlHUkVFSyBESUFMWVRJS0EgQU5EIFBFUklTUE9NRU5JCisxRkMyCUdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUZDMwlHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggWVBPR0VHUkFNTUVOSQorMUZDNAlHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggT1hJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUZDNglHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUEVSSVNQT01FTkkKKzFGQzcJR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JCisxRkM4CUdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBWQVJJQQorMUZDOQlHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggT1hJQQorMUZDQQlHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBWQVJJQQorMUZDQglHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBPWElBCisxRkNDCUdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBST1NHRUdSQU1NRU5JCisxRkNECUdSRUVLIFBTSUxJIEFORCBWQVJJQQorMUZDRQlHUkVFSyBQU0lMSSBBTkQgT1hJQQorMUZDRglHUkVFSyBQU0lMSSBBTkQgUEVSSVNQT01FTkkKKzFGRDAJR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBWUkFDSFkKKzFGRDEJR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBNQUNST04KKzFGRDIJR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EgQU5EIFZBUklBCisxRkQzCUdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBPWElBCisxRkQ2CUdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggUEVSSVNQT01FTkkKKzFGRDcJR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EgQU5EIFBFUklTUE9NRU5JCisxRkQ4CUdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBWUkFDSFkKKzFGRDkJR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIE1BQ1JPTgorMUZEQQlHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggVkFSSUEKKzFGREIJR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIE9YSUEKKzFGREQJR1JFRUsgREFTSUEgQU5EIFZBUklBCisxRkRFCUdSRUVLIERBU0lBIEFORCBPWElBCisxRkRGCUdSRUVLIERBU0lBIEFORCBQRVJJU1BPTUVOSQorMUZFMAlHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFZSQUNIWQorMUZFMQlHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIE1BQ1JPTgorMUZFMglHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgVkFSSUEKKzFGRTMJR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIE9YSUEKKzFGRTQJR1JFRUsgU01BTEwgTEVUVEVSIFJITyBXSVRIIFBTSUxJCisxRkU1CUdSRUVLIFNNQUxMIExFVFRFUiBSSE8gV0lUSCBEQVNJQQorMUZFNglHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBFUklTUE9NRU5JCisxRkU3CUdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBIEFORCBQRVJJU1BPTUVOSQorMUZFOAlHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggVlJBQ0hZCisxRkU5CUdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBNQUNST04KKzFGRUEJR1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIFZBUklBCisxRkVCCUdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBPWElBCisxRkVDCUdSRUVLIENBUElUQUwgTEVUVEVSIFJITyBXSVRIIERBU0lBCisxRkVECUdSRUVLIERJQUxZVElLQSBBTkQgVkFSSUEKKzFGRUUJR1JFRUsgRElBTFlUSUtBIEFORCBPWElBCisxRkVGCUdSRUVLIFZBUklBCisxRkYyCUdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JCisxRkYzCUdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFlQT0dFR1JBTU1FTkkKKzFGRjQJR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggT1hJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUZGNglHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQRVJJU1BPTUVOSQorMUZGNwlHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUZGOAlHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggVkFSSUEKKzFGRjkJR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIE9YSUEKKzFGRkEJR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBWQVJJQQorMUZGQglHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIE9YSUEKKzFGRkMJR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQUk9TR0VHUkFNTUVOSQorMUZGRAlHUkVFSyBPWElBCisxRkZFCUdSRUVLIERBU0lBCisyMDAwCUVOIFFVQUQKKzIwMDEJRU0gUVVBRAorMjAwMglFTiBTUEFDRQorMjAwMwlFTSBTUEFDRQorMjAwNAlUSFJFRS1QRVItRU0gU1BBQ0UKKzIwMDUJRk9VUi1QRVItRU0gU1BBQ0UKKzIwMDYJU0lYLVBFUi1FTSBTUEFDRQorMjAwNwlGSUdVUkUgU1BBQ0UKKzIwMDgJUFVOQ1RVQVRJT04gU1BBQ0UKKzIwMDkJVEhJTiBTUEFDRQorMjAwQQlIQUlSIFNQQUNFCisyMDBCCVpFUk8gV0lEVEggU1BBQ0UKKzIwMEMJWkVSTyBXSURUSCBOT04tSk9JTkVSCisyMDBECVpFUk8gV0lEVEggSk9JTkVSCisyMDBFCUxFRlQtVE8tUklHSFQgTUFSSworMjAwRglSSUdIVC1UTy1MRUZUIE1BUksKKzIwMTAJSFlQSEVOCisyMDExCU5PTi1CUkVBS0lORyBIWVBIRU4KKzIwMTIJRklHVVJFIERBU0gKKzIwMTMJRU4gREFTSAorMjAxNAlFTSBEQVNICisyMDE1CUhPUklaT05UQUwgQkFSCisyMDE2CURPVUJMRSBWRVJUSUNBTCBMSU5FCisyMDE3CURPVUJMRSBMT1cgTElORQorMjAxOAlMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworMjAxOQlSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKzIwMUEJU0lOR0xFIExPVy05IFFVT1RBVElPTiBNQVJLCisyMDFCCVNJTkdMRSBISUdILVJFVkVSU0VELTkgUVVPVEFUSU9OIE1BUksKKzIwMUMJTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKKzIwMUQJUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisyMDFFCURPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSworMjAxRglET1VCTEUgSElHSC1SRVZFUlNFRC05IFFVT1RBVElPTiBNQVJLCisyMDIwCURBR0dFUgorMjAyMQlET1VCTEUgREFHR0VSCisyMDIyCUJVTExFVAorMjAyMwlUUklBTkdVTEFSIEJVTExFVAorMjAyNAlPTkUgRE9UIExFQURFUgorMjAyNQlUV08gRE9UIExFQURFUgorMjAyNglIT1JJWk9OVEFMIEVMTElQU0lTCisyMDI3CUhZUEhFTkFUSU9OIFBPSU5UCisyMDI4CUxJTkUgU0VQQVJBVE9SCisyMDI5CVBBUkFHUkFQSCBTRVBBUkFUT1IKKzIwMkEJTEVGVC1UTy1SSUdIVCBFTUJFRERJTkcKKzIwMkIJUklHSFQtVE8tTEVGVCBFTUJFRERJTkcKKzIwMkMJUE9QIERJUkVDVElPTkFMIEZPUk1BVFRJTkcKKzIwMkQJTEVGVC1UTy1SSUdIVCBPVkVSUklERQorMjAyRQlSSUdIVC1UTy1MRUZUIE9WRVJSSURFCisyMDMwCVBFUiBNSUxMRSBTSUdOCisyMDMxCVBFUiBURU4gVEhPVVNBTkQgU0lHTgorMjAzMglQUklNRQorMjAzMwlET1VCTEUgUFJJTUUKKzIwMzQJVFJJUExFIFBSSU1FCisyMDM1CVJFVkVSU0VEIFBSSU1FCisyMDM2CVJFVkVSU0VEIERPVUJMRSBQUklNRQorMjAzNwlSRVZFUlNFRCBUUklQTEUgUFJJTUUKKzIwMzgJQ0FSRVQKKzIwMzkJU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKKzIwM0EJU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCisyMDNCCVJFRkVSRU5DRSBNQVJLCisyMDNDCURPVUJMRSBFWENMQU1BVElPTiBNQVJLCisyMDNECUlOVEVSUk9CQU5HCisyMDNFCU9WRVJMSU5FCisyMDNGCVVOREVSVElFCisyMDQwCUNIQVJBQ1RFUiBUSUUKKzIwNDEJQ0FSRVQgSU5TRVJUSU9OIFBPSU5UCisyMDQyCUFTVEVSSVNNCisyMDQzCUhZUEhFTiBCVUxMRVQKKzIwNDQJRlJBQ1RJT04gU0xBU0gKKzIwNDUJTEVGVCBTUVVBUkUgQlJBQ0tFVCBXSVRIIFFVSUxMCisyMDQ2CVJJR0hUIFNRVUFSRSBCUkFDS0VUIFdJVEggUVVJTEwKKzIwNkEJSU5ISUJJVCBTWU1NRVRSSUMgU1dBUFBJTkcKKzIwNkIJQUNUSVZBVEUgU1lNTUVUUklDIFNXQVBQSU5HCisyMDZDCUlOSElCSVQgQVJBQklDIEZPUk0gU0hBUElORworMjA2RAlBQ1RJVkFURSBBUkFCSUMgRk9STSBTSEFQSU5HCisyMDZFCU5BVElPTkFMIERJR0lUIFNIQVBFUworMjA2RglOT01JTkFMIERJR0lUIFNIQVBFUworMjA3MAlTVVBFUlNDUklQVCBaRVJPCisyMDc0CVNVUEVSU0NSSVBUIEZPVVIKKzIwNzUJU1VQRVJTQ1JJUFQgRklWRQorMjA3NglTVVBFUlNDUklQVCBTSVgKKzIwNzcJU1VQRVJTQ1JJUFQgU0VWRU4KKzIwNzgJU1VQRVJTQ1JJUFQgRUlHSFQKKzIwNzkJU1VQRVJTQ1JJUFQgTklORQorMjA3QQlTVVBFUlNDUklQVCBQTFVTIFNJR04KKzIwN0IJU1VQRVJTQ1JJUFQgTUlOVVMKKzIwN0MJU1VQRVJTQ1JJUFQgRVFVQUxTIFNJR04KKzIwN0QJU1VQRVJTQ1JJUFQgTEVGVCBQQVJFTlRIRVNJUworMjA3RQlTVVBFUlNDUklQVCBSSUdIVCBQQVJFTlRIRVNJUworMjA3RglTVVBFUlNDUklQVCBMQVRJTiBTTUFMTCBMRVRURVIgTgorMjA4MAlTVUJTQ1JJUFQgWkVSTworMjA4MQlTVUJTQ1JJUFQgT05FCisyMDgyCVNVQlNDUklQVCBUV08KKzIwODMJU1VCU0NSSVBUIFRIUkVFCisyMDg0CVNVQlNDUklQVCBGT1VSCisyMDg1CVNVQlNDUklQVCBGSVZFCisyMDg2CVNVQlNDUklQVCBTSVgKKzIwODcJU1VCU0NSSVBUIFNFVkVOCisyMDg4CVNVQlNDUklQVCBFSUdIVAorMjA4OQlTVUJTQ1JJUFQgTklORQorMjA4QQlTVUJTQ1JJUFQgUExVUyBTSUdOCisyMDhCCVNVQlNDUklQVCBNSU5VUworMjA4QwlTVUJTQ1JJUFQgRVFVQUxTIFNJR04KKzIwOEQJU1VCU0NSSVBUIExFRlQgUEFSRU5USEVTSVMKKzIwOEUJU1VCU0NSSVBUIFJJR0hUIFBBUkVOVEhFU0lTCisyMEEwCUVVUk8tQ1VSUkVOQ1kgU0lHTgorMjBBMQlDT0xPTiBTSUdOCisyMEEyCUNSVVpFSVJPIFNJR04KKzIwQTMJRlJFTkNIIEZSQU5DIFNJR04KKzIwQTQJTElSQSBTSUdOCisyMEE1CU1JTEwgU0lHTgorMjBBNglOQUlSQSBTSUdOCisyMEE3CVBFU0VUQSBTSUdOCisyMEE4CVJVUEVFIFNJR04KKzIwQTkJV09OIFNJR04KKzIwQUEJTkVXIFNIRVFFTCBTSUdOCisyMEFCCURPTkcgU0lHTgorMjBBQwlFVVJPIFNJR04KKzIwRDAJQ09NQklOSU5HIExFRlQgSEFSUE9PTiBBQk9WRQorMjBEMQlDT01CSU5JTkcgUklHSFQgSEFSUE9PTiBBQk9WRQorMjBEMglDT01CSU5JTkcgTE9ORyBWRVJUSUNBTCBMSU5FIE9WRVJMQVkKKzIwRDMJQ09NQklOSU5HIFNIT1JUIFZFUlRJQ0FMIExJTkUgT1ZFUkxBWQorMjBENAlDT01CSU5JTkcgQU5USUNMT0NLV0lTRSBBUlJPVyBBQk9WRQorMjBENQlDT01CSU5JTkcgQ0xPQ0tXSVNFIEFSUk9XIEFCT1ZFCisyMEQ2CUNPTUJJTklORyBMRUZUIEFSUk9XIEFCT1ZFCisyMEQ3CUNPTUJJTklORyBSSUdIVCBBUlJPVyBBQk9WRQorMjBEOAlDT01CSU5JTkcgUklORyBPVkVSTEFZCisyMEQ5CUNPTUJJTklORyBDTE9DS1dJU0UgUklORyBPVkVSTEFZCisyMERBCUNPTUJJTklORyBBTlRJQ0xPQ0tXSVNFIFJJTkcgT1ZFUkxBWQorMjBEQglDT01CSU5JTkcgVEhSRUUgRE9UUyBBQk9WRQorMjBEQwlDT01CSU5JTkcgRk9VUiBET1RTIEFCT1ZFCisyMERECUNPTUJJTklORyBFTkNMT1NJTkcgQ0lSQ0xFCisyMERFCUNPTUJJTklORyBFTkNMT1NJTkcgU1FVQVJFCisyMERGCUNPTUJJTklORyBFTkNMT1NJTkcgRElBTU9ORAorMjBFMAlDT01CSU5JTkcgRU5DTE9TSU5HIENJUkNMRSBCQUNLU0xBU0gKKzIwRTEJQ09NQklOSU5HIExFRlQgUklHSFQgQVJST1cgQUJPVkUKKzIxMDAJQUNDT1VOVCBPRgorMjEwMQlBRERSRVNTRUQgVE8gVEhFIFNVQkpFQ1QKKzIxMDIJRE9VQkxFLVNUUlVDSyBDQVBJVEFMIEMKKzIxMDMJREVHUkVFIENFTFNJVVMKKzIxMDQJQ0VOVFJFIExJTkUgU1lNQk9MCisyMTA1CUNBUkUgT0YKKzIxMDYJQ0FEQSBVTkEKKzIxMDcJRVVMRVIgQ09OU1RBTlQKKzIxMDgJU0NSVVBMRQorMjEwOQlERUdSRUUgRkFIUkVOSEVJVAorMjEwQQlTQ1JJUFQgU01BTEwgRworMjEwQglTQ1JJUFQgQ0FQSVRBTCBICisyMTBDCUJMQUNLLUxFVFRFUiBDQVBJVEFMIEgKKzIxMEQJRE9VQkxFLVNUUlVDSyBDQVBJVEFMIEgKKzIxMEUJUExBTkNLIENPTlNUQU5UCisyMTBGCVBMQU5DSyBDT05TVEFOVCBPVkVSIFRXTyBQSQorMjExMAlTQ1JJUFQgQ0FQSVRBTCBJCisyMTExCUJMQUNLLUxFVFRFUiBDQVBJVEFMIEkKKzIxMTIJU0NSSVBUIENBUElUQUwgTAorMjExMwlTQ1JJUFQgU01BTEwgTAorMjExNAlMIEIgQkFSIFNZTUJPTAorMjExNQlET1VCTEUtU1RSVUNLIENBUElUQUwgTgorMjExNglOVU1FUk8gU0lHTgorMjExNwlTT1VORCBSRUNPUkRJTkcgQ09QWVJJR0hUCisyMTE4CVNDUklQVCBDQVBJVEFMIFAKKzIxMTkJRE9VQkxFLVNUUlVDSyBDQVBJVEFMIFAKKzIxMUEJRE9VQkxFLVNUUlVDSyBDQVBJVEFMIFEKKzIxMUIJU0NSSVBUIENBUElUQUwgUgorMjExQwlCTEFDSy1MRVRURVIgQ0FQSVRBTCBSCisyMTFECURPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBSCisyMTFFCVBSRVNDUklQVElPTiBUQUtFCisyMTFGCVJFU1BPTlNFCisyMTIwCVNFUlZJQ0UgTUFSSworMjEyMQlURUxFUEhPTkUgU0lHTgorMjEyMglUUkFERSBNQVJLIFNJR04KKzIxMjMJVkVSU0lDTEUKKzIxMjQJRE9VQkxFLVNUUlVDSyBDQVBJVEFMIFoKKzIxMjUJT1VOQ0UgU0lHTgorMjEyNglPSE0gU0lHTgorMjEyNwlJTlZFUlRFRCBPSE0gU0lHTgorMjEyOAlCTEFDSy1MRVRURVIgQ0FQSVRBTCBaCisyMTI5CVRVUk5FRCBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQQorMjEyQQlLRUxWSU4gU0lHTgorMjEyQglBTkdTVFJPTSBTSUdOCisyMTJDCVNDUklQVCBDQVBJVEFMIEIKKzIxMkQJQkxBQ0stTEVUVEVSIENBUElUQUwgQworMjEyRQlFU1RJTUFURUQgU1lNQk9MCisyMTJGCVNDUklQVCBTTUFMTCBFCisyMTMwCVNDUklQVCBDQVBJVEFMIEUKKzIxMzEJU0NSSVBUIENBUElUQUwgRgorMjEzMglUVVJORUQgQ0FQSVRBTCBGCisyMTMzCVNDUklQVCBDQVBJVEFMIE0KKzIxMzQJU0NSSVBUIFNNQUxMIE8KKzIxMzUJQUxFRiBTWU1CT0wKKzIxMzYJQkVUIFNZTUJPTAorMjEzNwlHSU1FTCBTWU1CT0wKKzIxMzgJREFMRVQgU1lNQk9MCisyMTUzCVZVTEdBUiBGUkFDVElPTiBPTkUgVEhJUkQKKzIxNTQJVlVMR0FSIEZSQUNUSU9OIFRXTyBUSElSRFMKKzIxNTUJVlVMR0FSIEZSQUNUSU9OIE9ORSBGSUZUSAorMjE1NglWVUxHQVIgRlJBQ1RJT04gVFdPIEZJRlRIUworMjE1NwlWVUxHQVIgRlJBQ1RJT04gVEhSRUUgRklGVEhTCisyMTU4CVZVTEdBUiBGUkFDVElPTiBGT1VSIEZJRlRIUworMjE1OQlWVUxHQVIgRlJBQ1RJT04gT05FIFNJWFRICisyMTVBCVZVTEdBUiBGUkFDVElPTiBGSVZFIFNJWFRIUworMjE1QglWVUxHQVIgRlJBQ1RJT04gT05FIEVJR0hUSAorMjE1QwlWVUxHQVIgRlJBQ1RJT04gVEhSRUUgRUlHSFRIUworMjE1RAlWVUxHQVIgRlJBQ1RJT04gRklWRSBFSUdIVEhTCisyMTVFCVZVTEdBUiBGUkFDVElPTiBTRVZFTiBFSUdIVEhTCisyMTVGCUZSQUNUSU9OIE5VTUVSQVRPUiBPTkUKKzIxNjAJUk9NQU4gTlVNRVJBTCBPTkUKKzIxNjEJUk9NQU4gTlVNRVJBTCBUV08KKzIxNjIJUk9NQU4gTlVNRVJBTCBUSFJFRQorMjE2MwlST01BTiBOVU1FUkFMIEZPVVIKKzIxNjQJUk9NQU4gTlVNRVJBTCBGSVZFCisyMTY1CVJPTUFOIE5VTUVSQUwgU0lYCisyMTY2CVJPTUFOIE5VTUVSQUwgU0VWRU4KKzIxNjcJUk9NQU4gTlVNRVJBTCBFSUdIVAorMjE2OAlST01BTiBOVU1FUkFMIE5JTkUKKzIxNjkJUk9NQU4gTlVNRVJBTCBURU4KKzIxNkEJUk9NQU4gTlVNRVJBTCBFTEVWRU4KKzIxNkIJUk9NQU4gTlVNRVJBTCBUV0VMVkUKKzIxNkMJUk9NQU4gTlVNRVJBTCBGSUZUWQorMjE2RAlST01BTiBOVU1FUkFMIE9ORSBIVU5EUkVECisyMTZFCVJPTUFOIE5VTUVSQUwgRklWRSBIVU5EUkVECisyMTZGCVJPTUFOIE5VTUVSQUwgT05FIFRIT1VTQU5ECisyMTcwCVNNQUxMIFJPTUFOIE5VTUVSQUwgT05FCisyMTcxCVNNQUxMIFJPTUFOIE5VTUVSQUwgVFdPCisyMTcyCVNNQUxMIFJPTUFOIE5VTUVSQUwgVEhSRUUKKzIxNzMJU01BTEwgUk9NQU4gTlVNRVJBTCBGT1VSCisyMTc0CVNNQUxMIFJPTUFOIE5VTUVSQUwgRklWRQorMjE3NQlTTUFMTCBST01BTiBOVU1FUkFMIFNJWAorMjE3NglTTUFMTCBST01BTiBOVU1FUkFMIFNFVkVOCisyMTc3CVNNQUxMIFJPTUFOIE5VTUVSQUwgRUlHSFQKKzIxNzgJU01BTEwgUk9NQU4gTlVNRVJBTCBOSU5FCisyMTc5CVNNQUxMIFJPTUFOIE5VTUVSQUwgVEVOCisyMTdBCVNNQUxMIFJPTUFOIE5VTUVSQUwgRUxFVkVOCisyMTdCCVNNQUxMIFJPTUFOIE5VTUVSQUwgVFdFTFZFCisyMTdDCVNNQUxMIFJPTUFOIE5VTUVSQUwgRklGVFkKKzIxN0QJU01BTEwgUk9NQU4gTlVNRVJBTCBPTkUgSFVORFJFRAorMjE3RQlTTUFMTCBST01BTiBOVU1FUkFMIEZJVkUgSFVORFJFRAorMjE3RglTTUFMTCBST01BTiBOVU1FUkFMIE9ORSBUSE9VU0FORAorMjE4MAlST01BTiBOVU1FUkFMIE9ORSBUSE9VU0FORCBDIEQKKzIxODEJUk9NQU4gTlVNRVJBTCBGSVZFIFRIT1VTQU5ECisyMTgyCVJPTUFOIE5VTUVSQUwgVEVOIFRIT1VTQU5ECisyMTkwCUxFRlRXQVJEUyBBUlJPVworMjE5MQlVUFdBUkRTIEFSUk9XCisyMTkyCVJJR0hUV0FSRFMgQVJST1cKKzIxOTMJRE9XTldBUkRTIEFSUk9XCisyMTk0CUxFRlQgUklHSFQgQVJST1cKKzIxOTUJVVAgRE9XTiBBUlJPVworMjE5NglOT1JUSCBXRVNUIEFSUk9XCisyMTk3CU5PUlRIIEVBU1QgQVJST1cKKzIxOTgJU09VVEggRUFTVCBBUlJPVworMjE5OQlTT1VUSCBXRVNUIEFSUk9XCisyMTlBCUxFRlRXQVJEUyBBUlJPVyBXSVRIIFNUUk9LRQorMjE5QglSSUdIVFdBUkRTIEFSUk9XIFdJVEggU1RST0tFCisyMTlDCUxFRlRXQVJEUyBXQVZFIEFSUk9XCisyMTlECVJJR0hUV0FSRFMgV0FWRSBBUlJPVworMjE5RQlMRUZUV0FSRFMgVFdPIEhFQURFRCBBUlJPVworMjE5RglVUFdBUkRTIFRXTyBIRUFERUQgQVJST1cKKzIxQTAJUklHSFRXQVJEUyBUV08gSEVBREVEIEFSUk9XCisyMUExCURPV05XQVJEUyBUV08gSEVBREVEIEFSUk9XCisyMUEyCUxFRlRXQVJEUyBBUlJPVyBXSVRIIFRBSUwKKzIxQTMJUklHSFRXQVJEUyBBUlJPVyBXSVRIIFRBSUwKKzIxQTQJTEVGVFdBUkRTIEFSUk9XIEZST00gQkFSCisyMUE1CVVQV0FSRFMgQVJST1cgRlJPTSBCQVIKKzIxQTYJUklHSFRXQVJEUyBBUlJPVyBGUk9NIEJBUgorMjFBNwlET1dOV0FSRFMgQVJST1cgRlJPTSBCQVIKKzIxQTgJVVAgRE9XTiBBUlJPVyBXSVRIIEJBU0UKKzIxQTkJTEVGVFdBUkRTIEFSUk9XIFdJVEggSE9PSworMjFBQQlSSUdIVFdBUkRTIEFSUk9XIFdJVEggSE9PSworMjFBQglMRUZUV0FSRFMgQVJST1cgV0lUSCBMT09QCisyMUFDCVJJR0hUV0FSRFMgQVJST1cgV0lUSCBMT09QCisyMUFECUxFRlQgUklHSFQgV0FWRSBBUlJPVworMjFBRQlMRUZUIFJJR0hUIEFSUk9XIFdJVEggU1RST0tFCisyMUFGCURPV05XQVJEUyBaSUdaQUcgQVJST1cKKzIxQjAJVVBXQVJEUyBBUlJPVyBXSVRIIFRJUCBMRUZUV0FSRFMKKzIxQjEJVVBXQVJEUyBBUlJPVyBXSVRIIFRJUCBSSUdIVFdBUkRTCisyMUIyCURPV05XQVJEUyBBUlJPVyBXSVRIIFRJUCBMRUZUV0FSRFMKKzIxQjMJRE9XTldBUkRTIEFSUk9XIFdJVEggVElQIFJJR0hUV0FSRFMKKzIxQjQJUklHSFRXQVJEUyBBUlJPVyBXSVRIIENPUk5FUiBET1dOV0FSRFMKKzIxQjUJRE9XTldBUkRTIEFSUk9XIFdJVEggQ09STkVSIExFRlRXQVJEUworMjFCNglBTlRJQ0xPQ0tXSVNFIFRPUCBTRU1JQ0lSQ0xFIEFSUk9XCisyMUI3CUNMT0NLV0lTRSBUT1AgU0VNSUNJUkNMRSBBUlJPVworMjFCOAlOT1JUSCBXRVNUIEFSUk9XIFRPIExPTkcgQkFSCisyMUI5CUxFRlRXQVJEUyBBUlJPVyBUTyBCQVIgT1ZFUiBSSUdIVFdBUkRTIEFSUk9XIFRPIEJBUgorMjFCQQlBTlRJQ0xPQ0tXSVNFIE9QRU4gQ0lSQ0xFIEFSUk9XCisyMUJCCUNMT0NLV0lTRSBPUEVOIENJUkNMRSBBUlJPVworMjFCQwlMRUZUV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgVVBXQVJEUworMjFCRAlMRUZUV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTldBUkRTCisyMUJFCVVQV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgUklHSFRXQVJEUworMjFCRglVUFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIExFRlRXQVJEUworMjFDMAlSSUdIVFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIFVQV0FSRFMKKzIxQzEJUklHSFRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBET1dOV0FSRFMKKzIxQzIJRE9XTldBUkRTIEhBUlBPT04gV0lUSCBCQVJCIFJJR0hUV0FSRFMKKzIxQzMJRE9XTldBUkRTIEhBUlBPT04gV0lUSCBCQVJCIExFRlRXQVJEUworMjFDNAlSSUdIVFdBUkRTIEFSUk9XIE9WRVIgTEVGVFdBUkRTIEFSUk9XCisyMUM1CVVQV0FSRFMgQVJST1cgTEVGVFdBUkRTIE9GIERPV05XQVJEUyBBUlJPVworMjFDNglMRUZUV0FSRFMgQVJST1cgT1ZFUiBSSUdIVFdBUkRTIEFSUk9XCisyMUM3CUxFRlRXQVJEUyBQQUlSRUQgQVJST1dTCisyMUM4CVVQV0FSRFMgUEFJUkVEIEFSUk9XUworMjFDOQlSSUdIVFdBUkRTIFBBSVJFRCBBUlJPV1MKKzIxQ0EJRE9XTldBUkRTIFBBSVJFRCBBUlJPV1MKKzIxQ0IJTEVGVFdBUkRTIEhBUlBPT04gT1ZFUiBSSUdIVFdBUkRTIEhBUlBPT04KKzIxQ0MJUklHSFRXQVJEUyBIQVJQT09OIE9WRVIgTEVGVFdBUkRTIEhBUlBPT04KKzIxQ0QJTEVGVFdBUkRTIERPVUJMRSBBUlJPVyBXSVRIIFNUUk9LRQorMjFDRQlMRUZUIFJJR0hUIERPVUJMRSBBUlJPVyBXSVRIIFNUUk9LRQorMjFDRglSSUdIVFdBUkRTIERPVUJMRSBBUlJPVyBXSVRIIFNUUk9LRQorMjFEMAlMRUZUV0FSRFMgRE9VQkxFIEFSUk9XCisyMUQxCVVQV0FSRFMgRE9VQkxFIEFSUk9XCisyMUQyCVJJR0hUV0FSRFMgRE9VQkxFIEFSUk9XCisyMUQzCURPV05XQVJEUyBET1VCTEUgQVJST1cKKzIxRDQJTEVGVCBSSUdIVCBET1VCTEUgQVJST1cKKzIxRDUJVVAgRE9XTiBET1VCTEUgQVJST1cKKzIxRDYJTk9SVEggV0VTVCBET1VCTEUgQVJST1cKKzIxRDcJTk9SVEggRUFTVCBET1VCTEUgQVJST1cKKzIxRDgJU09VVEggRUFTVCBET1VCTEUgQVJST1cKKzIxRDkJU09VVEggV0VTVCBET1VCTEUgQVJST1cKKzIxREEJTEVGVFdBUkRTIFRSSVBMRSBBUlJPVworMjFEQglSSUdIVFdBUkRTIFRSSVBMRSBBUlJPVworMjFEQwlMRUZUV0FSRFMgU1FVSUdHTEUgQVJST1cKKzIxREQJUklHSFRXQVJEUyBTUVVJR0dMRSBBUlJPVworMjFERQlVUFdBUkRTIEFSUk9XIFdJVEggRE9VQkxFIFNUUk9LRQorMjFERglET1dOV0FSRFMgQVJST1cgV0lUSCBET1VCTEUgU1RST0tFCisyMUUwCUxFRlRXQVJEUyBEQVNIRUQgQVJST1cKKzIxRTEJVVBXQVJEUyBEQVNIRUQgQVJST1cKKzIxRTIJUklHSFRXQVJEUyBEQVNIRUQgQVJST1cKKzIxRTMJRE9XTldBUkRTIERBU0hFRCBBUlJPVworMjFFNAlMRUZUV0FSRFMgQVJST1cgVE8gQkFSCisyMUU1CVJJR0hUV0FSRFMgQVJST1cgVE8gQkFSCisyMUU2CUxFRlRXQVJEUyBXSElURSBBUlJPVworMjFFNwlVUFdBUkRTIFdISVRFIEFSUk9XCisyMUU4CVJJR0hUV0FSRFMgV0hJVEUgQVJST1cKKzIxRTkJRE9XTldBUkRTIFdISVRFIEFSUk9XCisyMUVBCVVQV0FSRFMgV0hJVEUgQVJST1cgRlJPTSBCQVIKKzIyMDAJRk9SIEFMTAorMjIwMQlDT01QTEVNRU5UCisyMjAyCVBBUlRJQUwgRElGRkVSRU5USUFMCisyMjAzCVRIRVJFIEVYSVNUUworMjIwNAlUSEVSRSBET0VTIE5PVCBFWElTVAorMjIwNQlFTVBUWSBTRVQKKzIyMDYJSU5DUkVNRU5UCisyMjA3CU5BQkxBCisyMjA4CUVMRU1FTlQgT0YKKzIyMDkJTk9UIEFOIEVMRU1FTlQgT0YKKzIyMEEJU01BTEwgRUxFTUVOVCBPRgorMjIwQglDT05UQUlOUyBBUyBNRU1CRVIKKzIyMEMJRE9FUyBOT1QgQ09OVEFJTiBBUyBNRU1CRVIKKzIyMEQJU01BTEwgQ09OVEFJTlMgQVMgTUVNQkVSCisyMjBFCUVORCBPRiBQUk9PRgorMjIwRglOLUFSWSBQUk9EVUNUCisyMjEwCU4tQVJZIENPUFJPRFVDVAorMjIxMQlOLUFSWSBTVU1NQVRJT04KKzIyMTIJTUlOVVMgU0lHTgorMjIxMwlNSU5VUy1PUi1QTFVTIFNJR04KKzIyMTQJRE9UIFBMVVMKKzIyMTUJRElWSVNJT04gU0xBU0gKKzIyMTYJU0VUIE1JTlVTCisyMjE3CUFTVEVSSVNLIE9QRVJBVE9SCisyMjE4CVJJTkcgT1BFUkFUT1IKKzIyMTkJQlVMTEVUIE9QRVJBVE9SCisyMjFBCVNRVUFSRSBST09UCisyMjFCCUNVQkUgUk9PVAorMjIxQwlGT1VSVEggUk9PVAorMjIxRAlQUk9QT1JUSU9OQUwgVE8KKzIyMUUJSU5GSU5JVFkKKzIyMUYJUklHSFQgQU5HTEUKKzIyMjAJQU5HTEUKKzIyMjEJTUVBU1VSRUQgQU5HTEUKKzIyMjIJU1BIRVJJQ0FMIEFOR0xFCisyMjIzCURJVklERVMKKzIyMjQJRE9FUyBOT1QgRElWSURFCisyMjI1CVBBUkFMTEVMIFRPCisyMjI2CU5PVCBQQVJBTExFTCBUTworMjIyNwlMT0dJQ0FMIEFORAorMjIyOAlMT0dJQ0FMIE9SCisyMjI5CUlOVEVSU0VDVElPTgorMjIyQQlVTklPTgorMjIyQglJTlRFR1JBTAorMjIyQwlET1VCTEUgSU5URUdSQUwKKzIyMkQJVFJJUExFIElOVEVHUkFMCisyMjJFCUNPTlRPVVIgSU5URUdSQUwKKzIyMkYJU1VSRkFDRSBJTlRFR1JBTAorMjIzMAlWT0xVTUUgSU5URUdSQUwKKzIyMzEJQ0xPQ0tXSVNFIElOVEVHUkFMCisyMjMyCUNMT0NLV0lTRSBDT05UT1VSIElOVEVHUkFMCisyMjMzCUFOVElDTE9DS1dJU0UgQ09OVE9VUiBJTlRFR1JBTAorMjIzNAlUSEVSRUZPUkUKKzIyMzUJQkVDQVVTRQorMjIzNglSQVRJTworMjIzNwlQUk9QT1JUSU9OCisyMjM4CURPVCBNSU5VUworMjIzOQlFWENFU1MKKzIyM0EJR0VPTUVUUklDIFBST1BPUlRJT04KKzIyM0IJSE9NT1RIRVRJQworMjIzQwlUSUxERSBPUEVSQVRPUgorMjIzRAlSRVZFUlNFRCBUSUxERQorMjIzRQlJTlZFUlRFRCBMQVpZIFMKKzIyM0YJU0lORSBXQVZFCisyMjQwCVdSRUFUSCBQUk9EVUNUCisyMjQxCU5PVCBUSUxERQorMjI0MglNSU5VUyBUSUxERQorMjI0MwlBU1lNUFRPVElDQUxMWSBFUVVBTCBUTworMjI0NAlOT1QgQVNZTVBUT1RJQ0FMTFkgRVFVQUwgVE8KKzIyNDUJQVBQUk9YSU1BVEVMWSBFUVVBTCBUTworMjI0NglBUFBST1hJTUFURUxZIEJVVCBOT1QgQUNUVUFMTFkgRVFVQUwgVE8KKzIyNDcJTkVJVEhFUiBBUFBST1hJTUFURUxZIE5PUiBBQ1RVQUxMWSBFUVVBTCBUTworMjI0OAlBTE1PU1QgRVFVQUwgVE8KKzIyNDkJTk9UIEFMTU9TVCBFUVVBTCBUTworMjI0QQlBTE1PU1QgRVFVQUwgT1IgRVFVQUwgVE8KKzIyNEIJVFJJUExFIFRJTERFCisyMjRDCUFMTCBFUVVBTCBUTworMjI0RAlFUVVJVkFMRU5UIFRPCisyMjRFCUdFT01FVFJJQ0FMTFkgRVFVSVZBTEVOVCBUTworMjI0RglESUZGRVJFTkNFIEJFVFdFRU4KKzIyNTAJQVBQUk9BQ0hFUyBUSEUgTElNSVQKKzIyNTEJR0VPTUVUUklDQUxMWSBFUVVBTCBUTworMjI1MglBUFBST1hJTUFURUxZIEVRVUFMIFRPIE9SIFRIRSBJTUFHRSBPRgorMjI1MwlJTUFHRSBPRiBPUiBBUFBST1hJTUFURUxZIEVRVUFMIFRPCisyMjU0CUNPTE9OIEVRVUFMUworMjI1NQlFUVVBTFMgQ09MT04KKzIyNTYJUklORyBJTiBFUVVBTCBUTworMjI1NwlSSU5HIEVRVUFMIFRPCisyMjU4CUNPUlJFU1BPTkRTIFRPCisyMjU5CUVTVElNQVRFUworMjI1QQlFUVVJQU5HVUxBUiBUTworMjI1QglTVEFSIEVRVUFMUworMjI1QwlERUxUQSBFUVVBTCBUTworMjI1RAlFUVVBTCBUTyBCWSBERUZJTklUSU9OCisyMjVFCU1FQVNVUkVEIEJZCisyMjVGCVFVRVNUSU9ORUQgRVFVQUwgVE8KKzIyNjAJTk9UIEVRVUFMIFRPCisyMjYxCUlERU5USUNBTCBUTworMjI2MglOT1QgSURFTlRJQ0FMIFRPCisyMjYzCVNUUklDVExZIEVRVUlWQUxFTlQgVE8KKzIyNjQJTEVTUy1USEFOIE9SIEVRVUFMIFRPCisyMjY1CUdSRUFURVItVEhBTiBPUiBFUVVBTCBUTworMjI2NglMRVNTLVRIQU4gT1ZFUiBFUVVBTCBUTworMjI2NwlHUkVBVEVSLVRIQU4gT1ZFUiBFUVVBTCBUTworMjI2OAlMRVNTLVRIQU4gQlVUIE5PVCBFUVVBTCBUTworMjI2OQlHUkVBVEVSLVRIQU4gQlVUIE5PVCBFUVVBTCBUTworMjI2QQlNVUNIIExFU1MtVEhBTgorMjI2QglNVUNIIEdSRUFURVItVEhBTgorMjI2QwlCRVRXRUVOCisyMjZECU5PVCBFUVVJVkFMRU5UIFRPCisyMjZFCU5PVCBMRVNTLVRIQU4KKzIyNkYJTk9UIEdSRUFURVItVEhBTgorMjI3MAlORUlUSEVSIExFU1MtVEhBTiBOT1IgRVFVQUwgVE8KKzIyNzEJTkVJVEhFUiBHUkVBVEVSLVRIQU4gTk9SIEVRVUFMIFRPCisyMjcyCUxFU1MtVEhBTiBPUiBFUVVJVkFMRU5UIFRPCisyMjczCUdSRUFURVItVEhBTiBPUiBFUVVJVkFMRU5UIFRPCisyMjc0CU5FSVRIRVIgTEVTUy1USEFOIE5PUiBFUVVJVkFMRU5UIFRPCisyMjc1CU5FSVRIRVIgR1JFQVRFUi1USEFOIE5PUiBFUVVJVkFMRU5UIFRPCisyMjc2CUxFU1MtVEhBTiBPUiBHUkVBVEVSLVRIQU4KKzIyNzcJR1JFQVRFUi1USEFOIE9SIExFU1MtVEhBTgorMjI3OAlORUlUSEVSIExFU1MtVEhBTiBOT1IgR1JFQVRFUi1USEFOCisyMjc5CU5FSVRIRVIgR1JFQVRFUi1USEFOIE5PUiBMRVNTLVRIQU4KKzIyN0EJUFJFQ0VERVMKKzIyN0IJU1VDQ0VFRFMKKzIyN0MJUFJFQ0VERVMgT1IgRVFVQUwgVE8KKzIyN0QJU1VDQ0VFRFMgT1IgRVFVQUwgVE8KKzIyN0UJUFJFQ0VERVMgT1IgRVFVSVZBTEVOVCBUTworMjI3RglTVUNDRUVEUyBPUiBFUVVJVkFMRU5UIFRPCisyMjgwCURPRVMgTk9UIFBSRUNFREUKKzIyODEJRE9FUyBOT1QgU1VDQ0VFRAorMjI4MglTVUJTRVQgT0YKKzIyODMJU1VQRVJTRVQgT0YKKzIyODQJTk9UIEEgU1VCU0VUIE9GCisyMjg1CU5PVCBBIFNVUEVSU0VUIE9GCisyMjg2CVNVQlNFVCBPRiBPUiBFUVVBTCBUTworMjI4NwlTVVBFUlNFVCBPRiBPUiBFUVVBTCBUTworMjI4OAlORUlUSEVSIEEgU1VCU0VUIE9GIE5PUiBFUVVBTCBUTworMjI4OQlORUlUSEVSIEEgU1VQRVJTRVQgT0YgTk9SIEVRVUFMIFRPCisyMjhBCVNVQlNFVCBPRiBXSVRIIE5PVCBFUVVBTCBUTworMjI4QglTVVBFUlNFVCBPRiBXSVRIIE5PVCBFUVVBTCBUTworMjI4QwlNVUxUSVNFVAorMjI4RAlNVUxUSVNFVCBNVUxUSVBMSUNBVElPTgorMjI4RQlNVUxUSVNFVCBVTklPTgorMjI4RglTUVVBUkUgSU1BR0UgT0YKKzIyOTAJU1FVQVJFIE9SSUdJTkFMIE9GCisyMjkxCVNRVUFSRSBJTUFHRSBPRiBPUiBFUVVBTCBUTworMjI5MglTUVVBUkUgT1JJR0lOQUwgT0YgT1IgRVFVQUwgVE8KKzIyOTMJU1FVQVJFIENBUAorMjI5NAlTUVVBUkUgQ1VQCisyMjk1CUNJUkNMRUQgUExVUworMjI5NglDSVJDTEVEIE1JTlVTCisyMjk3CUNJUkNMRUQgVElNRVMKKzIyOTgJQ0lSQ0xFRCBESVZJU0lPTiBTTEFTSAorMjI5OQlDSVJDTEVEIERPVCBPUEVSQVRPUgorMjI5QQlDSVJDTEVEIFJJTkcgT1BFUkFUT1IKKzIyOUIJQ0lSQ0xFRCBBU1RFUklTSyBPUEVSQVRPUgorMjI5QwlDSVJDTEVEIEVRVUFMUworMjI5RAlDSVJDTEVEIERBU0gKKzIyOUUJU1FVQVJFRCBQTFVTCisyMjlGCVNRVUFSRUQgTUlOVVMKKzIyQTAJU1FVQVJFRCBUSU1FUworMjJBMQlTUVVBUkVEIERPVCBPUEVSQVRPUgorMjJBMglSSUdIVCBUQUNLCisyMkEzCUxFRlQgVEFDSworMjJBNAlET1dOIFRBQ0sKKzIyQTUJVVAgVEFDSworMjJBNglBU1NFUlRJT04KKzIyQTcJTU9ERUxTCisyMkE4CVRSVUUKKzIyQTkJRk9SQ0VTCisyMkFBCVRSSVBMRSBWRVJUSUNBTCBCQVIgUklHSFQgVFVSTlNUSUxFCisyMkFCCURPVUJMRSBWRVJUSUNBTCBCQVIgRE9VQkxFIFJJR0hUIFRVUk5TVElMRQorMjJBQwlET0VTIE5PVCBQUk9WRQorMjJBRAlOT1QgVFJVRQorMjJBRQlET0VTIE5PVCBGT1JDRQorMjJBRglORUdBVEVEIERPVUJMRSBWRVJUSUNBTCBCQVIgRE9VQkxFIFJJR0hUIFRVUk5TVElMRQorMjJCMAlQUkVDRURFUyBVTkRFUiBSRUxBVElPTgorMjJCMQlTVUNDRUVEUyBVTkRFUiBSRUxBVElPTgorMjJCMglOT1JNQUwgU1VCR1JPVVAgT0YKKzIyQjMJQ09OVEFJTlMgQVMgTk9STUFMIFNVQkdST1VQCisyMkI0CU5PUk1BTCBTVUJHUk9VUCBPRiBPUiBFUVVBTCBUTworMjJCNQlDT05UQUlOUyBBUyBOT1JNQUwgU1VCR1JPVVAgT1IgRVFVQUwgVE8KKzIyQjYJT1JJR0lOQUwgT0YKKzIyQjcJSU1BR0UgT0YKKzIyQjgJTVVMVElNQVAKKzIyQjkJSEVSTUlUSUFOIENPTkpVR0FURSBNQVRSSVgKKzIyQkEJSU5URVJDQUxBVEUKKzIyQkIJWE9SCisyMkJDCU5BTkQKKzIyQkQJTk9SCisyMkJFCVJJR0hUIEFOR0xFIFdJVEggQVJDCisyMkJGCVJJR0hUIFRSSUFOR0xFCisyMkMwCU4tQVJZIExPR0lDQUwgQU5ECisyMkMxCU4tQVJZIExPR0lDQUwgT1IKKzIyQzIJTi1BUlkgSU5URVJTRUNUSU9OCisyMkMzCU4tQVJZIFVOSU9OCisyMkM0CURJQU1PTkQgT1BFUkFUT1IKKzIyQzUJRE9UIE9QRVJBVE9SCisyMkM2CVNUQVIgT1BFUkFUT1IKKzIyQzcJRElWSVNJT04gVElNRVMKKzIyQzgJQk9XVElFCisyMkM5CUxFRlQgTk9STUFMIEZBQ1RPUiBTRU1JRElSRUNUIFBST0RVQ1QKKzIyQ0EJUklHSFQgTk9STUFMIEZBQ1RPUiBTRU1JRElSRUNUIFBST0RVQ1QKKzIyQ0IJTEVGVCBTRU1JRElSRUNUIFBST0RVQ1QKKzIyQ0MJUklHSFQgU0VNSURJUkVDVCBQUk9EVUNUCisyMkNECVJFVkVSU0VEIFRJTERFIEVRVUFMUworMjJDRQlDVVJMWSBMT0dJQ0FMIE9SCisyMkNGCUNVUkxZIExPR0lDQUwgQU5ECisyMkQwCURPVUJMRSBTVUJTRVQKKzIyRDEJRE9VQkxFIFNVUEVSU0VUCisyMkQyCURPVUJMRSBJTlRFUlNFQ1RJT04KKzIyRDMJRE9VQkxFIFVOSU9OCisyMkQ0CVBJVENIRk9SSworMjJENQlFUVVBTCBBTkQgUEFSQUxMRUwgVE8KKzIyRDYJTEVTUy1USEFOIFdJVEggRE9UCisyMkQ3CUdSRUFURVItVEhBTiBXSVRIIERPVAorMjJEOAlWRVJZIE1VQ0ggTEVTUy1USEFOCisyMkQ5CVZFUlkgTVVDSCBHUkVBVEVSLVRIQU4KKzIyREEJTEVTUy1USEFOIEVRVUFMIFRPIE9SIEdSRUFURVItVEhBTgorMjJEQglHUkVBVEVSLVRIQU4gRVFVQUwgVE8gT1IgTEVTUy1USEFOCisyMkRDCUVRVUFMIFRPIE9SIExFU1MtVEhBTgorMjJERAlFUVVBTCBUTyBPUiBHUkVBVEVSLVRIQU4KKzIyREUJRVFVQUwgVE8gT1IgUFJFQ0VERVMKKzIyREYJRVFVQUwgVE8gT1IgU1VDQ0VFRFMKKzIyRTAJRE9FUyBOT1QgUFJFQ0VERSBPUiBFUVVBTAorMjJFMQlET0VTIE5PVCBTVUNDRUVEIE9SIEVRVUFMCisyMkUyCU5PVCBTUVVBUkUgSU1BR0UgT0YgT1IgRVFVQUwgVE8KKzIyRTMJTk9UIFNRVUFSRSBPUklHSU5BTCBPRiBPUiBFUVVBTCBUTworMjJFNAlTUVVBUkUgSU1BR0UgT0YgT1IgTk9UIEVRVUFMIFRPCisyMkU1CVNRVUFSRSBPUklHSU5BTCBPRiBPUiBOT1QgRVFVQUwgVE8KKzIyRTYJTEVTUy1USEFOIEJVVCBOT1QgRVFVSVZBTEVOVCBUTworMjJFNwlHUkVBVEVSLVRIQU4gQlVUIE5PVCBFUVVJVkFMRU5UIFRPCisyMkU4CVBSRUNFREVTIEJVVCBOT1QgRVFVSVZBTEVOVCBUTworMjJFOQlTVUNDRUVEUyBCVVQgTk9UIEVRVUlWQUxFTlQgVE8KKzIyRUEJTk9UIE5PUk1BTCBTVUJHUk9VUCBPRgorMjJFQglET0VTIE5PVCBDT05UQUlOIEFTIE5PUk1BTCBTVUJHUk9VUAorMjJFQwlOT1QgTk9STUFMIFNVQkdST1VQIE9GIE9SIEVRVUFMIFRPCisyMkVECURPRVMgTk9UIENPTlRBSU4gQVMgTk9STUFMIFNVQkdST1VQIE9SIEVRVUFMCisyMkVFCVZFUlRJQ0FMIEVMTElQU0lTCisyMkVGCU1JRExJTkUgSE9SSVpPTlRBTCBFTExJUFNJUworMjJGMAlVUCBSSUdIVCBESUFHT05BTCBFTExJUFNJUworMjJGMQlET1dOIFJJR0hUIERJQUdPTkFMIEVMTElQU0lTCisyMzAwCURJQU1FVEVSIFNJR04KKzIzMDIJSE9VU0UKKzIzMDMJVVAgQVJST1dIRUFECisyMzA0CURPV04gQVJST1dIRUFECisyMzA1CVBST0pFQ1RJVkUKKzIzMDYJUEVSU1BFQ1RJVkUKKzIzMDcJV0FWWSBMSU5FCisyMzA4CUxFRlQgQ0VJTElORworMjMwOQlSSUdIVCBDRUlMSU5HCisyMzBBCUxFRlQgRkxPT1IKKzIzMEIJUklHSFQgRkxPT1IKKzIzMEMJQk9UVE9NIFJJR0hUIENST1AKKzIzMEQJQk9UVE9NIExFRlQgQ1JPUAorMjMwRQlUT1AgUklHSFQgQ1JPUAorMjMwRglUT1AgTEVGVCBDUk9QCisyMzEwCVJFVkVSU0VEIE5PVCBTSUdOCisyMzExCVNRVUFSRSBMT1pFTkdFCisyMzEyCUFSQworMjMxMwlTRUdNRU5UCisyMzE0CVNFQ1RPUgorMjMxNQlURUxFUEhPTkUgUkVDT1JERVIKKzIzMTYJUE9TSVRJT04gSU5ESUNBVE9SCisyMzE3CVZJRVdEQVRBIFNRVUFSRQorMjMxOAlQTEFDRSBPRiBJTlRFUkVTVCBTSUdOCisyMzE5CVRVUk5FRCBOT1QgU0lHTgorMjMxQQlXQVRDSAorMjMxQglIT1VSR0xBU1MKKzIzMUMJVE9QIExFRlQgQ09STkVSCisyMzFECVRPUCBSSUdIVCBDT1JORVIKKzIzMUUJQk9UVE9NIExFRlQgQ09STkVSCisyMzFGCUJPVFRPTSBSSUdIVCBDT1JORVIKKzIzMjAJVE9QIEhBTEYgSU5URUdSQUwKKzIzMjEJQk9UVE9NIEhBTEYgSU5URUdSQUwKKzIzMjIJRlJPV04KKzIzMjMJU01JTEUKKzIzMjQJVVAgQVJST1dIRUFEIEJFVFdFRU4gVFdPIEhPUklaT05UQUwgQkFSUworMjMyNQlPUFRJT04gS0VZCisyMzI2CUVSQVNFIFRPIFRIRSBSSUdIVAorMjMyNwlYIElOIEEgUkVDVEFOR0xFIEJPWAorMjMyOAlLRVlCT0FSRAorMjMyOQlMRUZULVBPSU5USU5HIEFOR0xFIEJSQUNLRVQKKzIzMkEJUklHSFQtUE9JTlRJTkcgQU5HTEUgQlJBQ0tFVAorMjMyQglFUkFTRSBUTyBUSEUgTEVGVAorMjMyQwlCRU5aRU5FIFJJTkcKKzIzMkQJQ1lMSU5EUklDSVRZCisyMzJFCUFMTCBBUk9VTkQtUFJPRklMRQorMjMyRglTWU1NRVRSWQorMjMzMAlUT1RBTCBSVU5PVVQKKzIzMzEJRElNRU5TSU9OIE9SSUdJTgorMjMzMglDT05JQ0FMIFRBUEVSCisyMzMzCVNMT1BFCisyMzM0CUNPVU5URVJCT1JFCisyMzM1CUNPVU5URVJTSU5LCisyMzM2CUFQTCBGVU5DVElPTkFMIFNZTUJPTCBJLUJFQU0KKzIzMzcJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNRVUlTSCBRVUFECisyMzM4CUFQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIEVRVUFMCisyMzM5CUFQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIERJVklERQorMjMzQQlBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBESUFNT05ECisyMzNCCUFQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIEpPVAorMjMzQwlBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBDSVJDTEUKKzIzM0QJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIENJUkNMRSBTVElMRQorMjMzRQlBUEwgRlVOQ1RJT05BTCBTWU1CT0wgQ0lSQ0xFIEpPVAorMjMzRglBUEwgRlVOQ1RJT05BTCBTWU1CT0wgU0xBU0ggQkFSCisyMzQwCUFQTCBGVU5DVElPTkFMIFNZTUJPTCBCQUNLU0xBU0ggQkFSCisyMzQxCUFQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIFNMQVNICisyMzQyCUFQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIEJBQ0tTTEFTSAorMjM0MwlBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBMRVNTLVRIQU4KKzIzNDQJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgR1JFQVRFUi1USEFOCisyMzQ1CUFQTCBGVU5DVElPTkFMIFNZTUJPTCBMRUZUV0FSRFMgVkFORQorMjM0NglBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUklHSFRXQVJEUyBWQU5FCisyMzQ3CUFQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIExFRlRXQVJEUyBBUlJPVworMjM0OAlBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBSSUdIVFdBUkRTIEFSUk9XCisyMzQ5CUFQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgQkFDS1NMQVNICisyMzRBCUFQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOIFRBQ0sgVU5ERVJCQVIKKzIzNEIJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTFRBIFNUSUxFCisyMzRDCUFQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIERPV04gQ0FSRVQKKzIzNEQJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgREVMVEEKKzIzNEUJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIERPV04gVEFDSyBKT1QKKzIzNEYJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQV0FSRFMgVkFORQorMjM1MAlBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBVUFdBUkRTIEFSUk9XCisyMzUxCUFQTCBGVU5DVElPTkFMIFNZTUJPTCBVUCBUQUNLIE9WRVJCQVIKKzIzNTIJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTCBTVElMRQorMjM1MwlBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBVUCBDQVJFVAorMjM1NAlBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBERUwKKzIzNTUJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQIFRBQ0sgSk9UCisyMzU2CUFQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOV0FSRFMgVkFORQorMjM1NwlBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBET1dOV0FSRFMgQVJST1cKKzIzNTgJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVT1RFIFVOREVSQkFSCisyMzU5CUFQTCBGVU5DVElPTkFMIFNZTUJPTCBERUxUQSBVTkRFUkJBUgorMjM1QQlBUEwgRlVOQ1RJT05BTCBTWU1CT0wgRElBTU9ORCBVTkRFUkJBUgorMjM1QglBUEwgRlVOQ1RJT05BTCBTWU1CT0wgSk9UIFVOREVSQkFSCisyMzVDCUFQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgVU5ERVJCQVIKKzIzNUQJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQIFNIT0UgSk9UCisyMzVFCUFQTCBGVU5DVElPTkFMIFNZTUJPTCBRVU9URSBRVUFECisyMzVGCUFQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgU1RBUgorMjM2MAlBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBDT0xPTgorMjM2MQlBUEwgRlVOQ1RJT05BTCBTWU1CT0wgVVAgVEFDSyBESUFFUkVTSVMKKzIzNjIJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTCBESUFFUkVTSVMKKzIzNjMJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNUQVIgRElBRVJFU0lTCisyMzY0CUFQTCBGVU5DVElPTkFMIFNZTUJPTCBKT1QgRElBRVJFU0lTCisyMzY1CUFQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgRElBRVJFU0lTCisyMzY2CUFQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOIFNIT0UgU1RJTEUKKzIzNjcJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIExFRlQgU0hPRSBTVElMRQorMjM2OAlBUEwgRlVOQ1RJT05BTCBTWU1CT0wgVElMREUgRElBRVJFU0lTCisyMzY5CUFQTCBGVU5DVElPTkFMIFNZTUJPTCBHUkVBVEVSLVRIQU4gRElBRVJFU0lTCisyMzZBCUFQTCBGVU5DVElPTkFMIFNZTUJPTCBDT01NQSBCQVIKKzIzNkIJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTCBUSUxERQorMjM2QwlBUEwgRlVOQ1RJT05BTCBTWU1CT0wgWklMREUKKzIzNkQJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNUSUxFIFRJTERFCisyMzZFCUFQTCBGVU5DVElPTkFMIFNZTUJPTCBTRU1JQ09MT04gVU5ERVJCQVIKKzIzNkYJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgTk9UIEVRVUFMCisyMzcwCUFQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIFFVRVNUSU9OCisyMzcxCUFQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOIENBUkVUIFRJTERFCisyMzcyCUFQTCBGVU5DVElPTkFMIFNZTUJPTCBVUCBDQVJFVCBUSUxERQorMjM3MwlBUEwgRlVOQ1RJT05BTCBTWU1CT0wgSU9UQQorMjM3NAlBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUkhPCisyMzc1CUFQTCBGVU5DVElPTkFMIFNZTUJPTCBPTUVHQQorMjM3NglBUEwgRlVOQ1RJT05BTCBTWU1CT0wgQUxQSEEgVU5ERVJCQVIKKzIzNzcJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIEVQU0lMT04gVU5ERVJCQVIKKzIzNzgJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIElPVEEgVU5ERVJCQVIKKzIzNzkJQVBMIEZVTkNUSU9OQUwgU1lNQk9MIE9NRUdBIFVOREVSQkFSCisyMzdBCUFQTCBGVU5DVElPTkFMIFNZTUJPTCBBTFBIQQorMjQwMAlTWU1CT0wgRk9SIE5VTEwKKzI0MDEJU1lNQk9MIEZPUiBTVEFSVCBPRiBIRUFESU5HCisyNDAyCVNZTUJPTCBGT1IgU1RBUlQgT0YgVEVYVAorMjQwMwlTWU1CT0wgRk9SIEVORCBPRiBURVhUCisyNDA0CVNZTUJPTCBGT1IgRU5EIE9GIFRSQU5TTUlTU0lPTgorMjQwNQlTWU1CT0wgRk9SIEVOUVVJUlkKKzI0MDYJU1lNQk9MIEZPUiBBQ0tOT1dMRURHRQorMjQwNwlTWU1CT0wgRk9SIEJFTEwKKzI0MDgJU1lNQk9MIEZPUiBCQUNLU1BBQ0UKKzI0MDkJU1lNQk9MIEZPUiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KKzI0MEEJU1lNQk9MIEZPUiBMSU5FIEZFRUQKKzI0MEIJU1lNQk9MIEZPUiBWRVJUSUNBTCBUQUJVTEFUSU9OCisyNDBDCVNZTUJPTCBGT1IgRk9STSBGRUVECisyNDBECVNZTUJPTCBGT1IgQ0FSUklBR0UgUkVUVVJOCisyNDBFCVNZTUJPTCBGT1IgU0hJRlQgT1VUCisyNDBGCVNZTUJPTCBGT1IgU0hJRlQgSU4KKzI0MTAJU1lNQk9MIEZPUiBEQVRBIExJTksgRVNDQVBFCisyNDExCVNZTUJPTCBGT1IgREVWSUNFIENPTlRST0wgT05FCisyNDEyCVNZTUJPTCBGT1IgREVWSUNFIENPTlRST0wgVFdPCisyNDEzCVNZTUJPTCBGT1IgREVWSUNFIENPTlRST0wgVEhSRUUKKzI0MTQJU1lNQk9MIEZPUiBERVZJQ0UgQ09OVFJPTCBGT1VSCisyNDE1CVNZTUJPTCBGT1IgTkVHQVRJVkUgQUNLTk9XTEVER0UKKzI0MTYJU1lNQk9MIEZPUiBTWU5DSFJPTk9VUyBJRExFCisyNDE3CVNZTUJPTCBGT1IgRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSworMjQxOAlTWU1CT0wgRk9SIENBTkNFTAorMjQxOQlTWU1CT0wgRk9SIEVORCBPRiBNRURJVU0KKzI0MUEJU1lNQk9MIEZPUiBTVUJTVElUVVRFCisyNDFCCVNZTUJPTCBGT1IgRVNDQVBFCisyNDFDCVNZTUJPTCBGT1IgRklMRSBTRVBBUkFUT1IKKzI0MUQJU1lNQk9MIEZPUiBHUk9VUCBTRVBBUkFUT1IKKzI0MUUJU1lNQk9MIEZPUiBSRUNPUkQgU0VQQVJBVE9SCisyNDFGCVNZTUJPTCBGT1IgVU5JVCBTRVBBUkFUT1IKKzI0MjAJU1lNQk9MIEZPUiBTUEFDRQorMjQyMQlTWU1CT0wgRk9SIERFTEVURQorMjQyMglCTEFOSyBTWU1CT0wKKzI0MjMJT1BFTiBCT1gKKzI0MjQJU1lNQk9MIEZPUiBORVdMSU5FCisyNDQwCU9DUiBIT09LCisyNDQxCU9DUiBDSEFJUgorMjQ0MglPQ1IgRk9SSworMjQ0MwlPQ1IgSU5WRVJURUQgRk9SSworMjQ0NAlPQ1IgQkVMVCBCVUNLTEUKKzI0NDUJT0NSIEJPVyBUSUUKKzI0NDYJT0NSIEJSQU5DSCBCQU5LIElERU5USUZJQ0FUSU9OCisyNDQ3CU9DUiBBTU9VTlQgT0YgQ0hFQ0sKKzI0NDgJT0NSIERBU0gKKzI0NDkJT0NSIENVU1RPTUVSIEFDQ09VTlQgTlVNQkVSCisyNDRBCU9DUiBET1VCTEUgQkFDS1NMQVNICisyNDYwCUNJUkNMRUQgRElHSVQgT05FCisyNDYxCUNJUkNMRUQgRElHSVQgVFdPCisyNDYyCUNJUkNMRUQgRElHSVQgVEhSRUUKKzI0NjMJQ0lSQ0xFRCBESUdJVCBGT1VSCisyNDY0CUNJUkNMRUQgRElHSVQgRklWRQorMjQ2NQlDSVJDTEVEIERJR0lUIFNJWAorMjQ2NglDSVJDTEVEIERJR0lUIFNFVkVOCisyNDY3CUNJUkNMRUQgRElHSVQgRUlHSFQKKzI0NjgJQ0lSQ0xFRCBESUdJVCBOSU5FCisyNDY5CUNJUkNMRUQgTlVNQkVSIFRFTgorMjQ2QQlDSVJDTEVEIE5VTUJFUiBFTEVWRU4KKzI0NkIJQ0lSQ0xFRCBOVU1CRVIgVFdFTFZFCisyNDZDCUNJUkNMRUQgTlVNQkVSIFRISVJURUVOCisyNDZECUNJUkNMRUQgTlVNQkVSIEZPVVJURUVOCisyNDZFCUNJUkNMRUQgTlVNQkVSIEZJRlRFRU4KKzI0NkYJQ0lSQ0xFRCBOVU1CRVIgU0lYVEVFTgorMjQ3MAlDSVJDTEVEIE5VTUJFUiBTRVZFTlRFRU4KKzI0NzEJQ0lSQ0xFRCBOVU1CRVIgRUlHSFRFRU4KKzI0NzIJQ0lSQ0xFRCBOVU1CRVIgTklORVRFRU4KKzI0NzMJQ0lSQ0xFRCBOVU1CRVIgVFdFTlRZCisyNDc0CVBBUkVOVEhFU0laRUQgRElHSVQgT05FCisyNDc1CVBBUkVOVEhFU0laRUQgRElHSVQgVFdPCisyNDc2CVBBUkVOVEhFU0laRUQgRElHSVQgVEhSRUUKKzI0NzcJUEFSRU5USEVTSVpFRCBESUdJVCBGT1VSCisyNDc4CVBBUkVOVEhFU0laRUQgRElHSVQgRklWRQorMjQ3OQlQQVJFTlRIRVNJWkVEIERJR0lUIFNJWAorMjQ3QQlQQVJFTlRIRVNJWkVEIERJR0lUIFNFVkVOCisyNDdCCVBBUkVOVEhFU0laRUQgRElHSVQgRUlHSFQKKzI0N0MJUEFSRU5USEVTSVpFRCBESUdJVCBOSU5FCisyNDdECVBBUkVOVEhFU0laRUQgTlVNQkVSIFRFTgorMjQ3RQlQQVJFTlRIRVNJWkVEIE5VTUJFUiBFTEVWRU4KKzI0N0YJUEFSRU5USEVTSVpFRCBOVU1CRVIgVFdFTFZFCisyNDgwCVBBUkVOVEhFU0laRUQgTlVNQkVSIFRISVJURUVOCisyNDgxCVBBUkVOVEhFU0laRUQgTlVNQkVSIEZPVVJURUVOCisyNDgyCVBBUkVOVEhFU0laRUQgTlVNQkVSIEZJRlRFRU4KKzI0ODMJUEFSRU5USEVTSVpFRCBOVU1CRVIgU0lYVEVFTgorMjQ4NAlQQVJFTlRIRVNJWkVEIE5VTUJFUiBTRVZFTlRFRU4KKzI0ODUJUEFSRU5USEVTSVpFRCBOVU1CRVIgRUlHSFRFRU4KKzI0ODYJUEFSRU5USEVTSVpFRCBOVU1CRVIgTklORVRFRU4KKzI0ODcJUEFSRU5USEVTSVpFRCBOVU1CRVIgVFdFTlRZCisyNDg4CURJR0lUIE9ORSBGVUxMIFNUT1AKKzI0ODkJRElHSVQgVFdPIEZVTEwgU1RPUAorMjQ4QQlESUdJVCBUSFJFRSBGVUxMIFNUT1AKKzI0OEIJRElHSVQgRk9VUiBGVUxMIFNUT1AKKzI0OEMJRElHSVQgRklWRSBGVUxMIFNUT1AKKzI0OEQJRElHSVQgU0lYIEZVTEwgU1RPUAorMjQ4RQlESUdJVCBTRVZFTiBGVUxMIFNUT1AKKzI0OEYJRElHSVQgRUlHSFQgRlVMTCBTVE9QCisyNDkwCURJR0lUIE5JTkUgRlVMTCBTVE9QCisyNDkxCU5VTUJFUiBURU4gRlVMTCBTVE9QCisyNDkyCU5VTUJFUiBFTEVWRU4gRlVMTCBTVE9QCisyNDkzCU5VTUJFUiBUV0VMVkUgRlVMTCBTVE9QCisyNDk0CU5VTUJFUiBUSElSVEVFTiBGVUxMIFNUT1AKKzI0OTUJTlVNQkVSIEZPVVJURUVOIEZVTEwgU1RPUAorMjQ5NglOVU1CRVIgRklGVEVFTiBGVUxMIFNUT1AKKzI0OTcJTlVNQkVSIFNJWFRFRU4gRlVMTCBTVE9QCisyNDk4CU5VTUJFUiBTRVZFTlRFRU4gRlVMTCBTVE9QCisyNDk5CU5VTUJFUiBFSUdIVEVFTiBGVUxMIFNUT1AKKzI0OUEJTlVNQkVSIE5JTkVURUVOIEZVTEwgU1RPUAorMjQ5QglOVU1CRVIgVFdFTlRZIEZVTEwgU1RPUAorMjQ5QwlQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBBCisyNDlECVBBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzI0OUUJUEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgQworMjQ5RglQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBECisyNEEwCVBBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEUKKzI0QTEJUEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgRgorMjRBMglQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBHCisyNEEzCVBBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEgKKzI0QTQJUEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgSQorMjRBNQlQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBKCisyNEE2CVBBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEsKKzI0QTcJUEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgTAorMjRBOAlQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBNCisyNEE5CVBBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIE4KKzI0QUEJUEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgTworMjRBQglQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBQCisyNEFDCVBBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFEKKzI0QUQJUEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgUgorMjRBRQlQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBTCisyNEFGCVBBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFQKKzI0QjAJUEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgVQorMjRCMQlQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBWCisyNEIyCVBBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFcKKzI0QjMJUEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgWAorMjRCNAlQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBZCisyNEI1CVBBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFoKKzI0QjYJQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCisyNEI3CUNJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgorMjRCOAlDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEMKKzI0QjkJQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBECisyNEJBCUNJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQorMjRCQglDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEYKKzI0QkMJQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCisyNEJECUNJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAorMjRCRQlDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEkKKzI0QkYJQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCisyNEMwCUNJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSworMjRDMQlDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEwKKzI0QzIJQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCisyNEMzCUNJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgorMjRDNAlDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIE8KKzI0QzUJQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCisyNEM2CUNJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQorMjRDNwlDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFIKKzI0QzgJQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCisyNEM5CUNJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAorMjRDQQlDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFUKKzI0Q0IJQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCisyNENDCUNJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVworMjRDRAlDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFgKKzI0Q0UJQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCisyNENGCUNJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgorMjREMAlDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBBCisyNEQxCUNJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzI0RDIJQ0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgQworMjREMwlDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBECisyNEQ0CUNJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEUKKzI0RDUJQ0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgRgorMjRENglDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBHCisyNEQ3CUNJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEgKKzI0RDgJQ0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgSQorMjREOQlDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBKCisyNERBCUNJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEsKKzI0REIJQ0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgTAorMjREQwlDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBNCisyNERECUNJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIE4KKzI0REUJQ0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgTworMjRERglDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBQCisyNEUwCUNJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFEKKzI0RTEJQ0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgUgorMjRFMglDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBTCisyNEUzCUNJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFQKKzI0RTQJQ0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgVQorMjRFNQlDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBWCisyNEU2CUNJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFcKKzI0RTcJQ0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgWAorMjRFOAlDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBZCisyNEU5CUNJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFoKKzI0RUEJQ0lSQ0xFRCBESUdJVCBaRVJPCisyNTAwCUJPWCBEUkFXSU5HUyBMSUdIVCBIT1JJWk9OVEFMCisyNTAxCUJPWCBEUkFXSU5HUyBIRUFWWSBIT1JJWk9OVEFMCisyNTAyCUJPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTAorMjUwMwlCT1ggRFJBV0lOR1MgSEVBVlkgVkVSVElDQUwKKzI1MDQJQk9YIERSQVdJTkdTIExJR0hUIFRSSVBMRSBEQVNIIEhPUklaT05UQUwKKzI1MDUJQk9YIERSQVdJTkdTIEhFQVZZIFRSSVBMRSBEQVNIIEhPUklaT05UQUwKKzI1MDYJQk9YIERSQVdJTkdTIExJR0hUIFRSSVBMRSBEQVNIIFZFUlRJQ0FMCisyNTA3CUJPWCBEUkFXSU5HUyBIRUFWWSBUUklQTEUgREFTSCBWRVJUSUNBTAorMjUwOAlCT1ggRFJBV0lOR1MgTElHSFQgUVVBRFJVUExFIERBU0ggSE9SSVpPTlRBTAorMjUwOQlCT1ggRFJBV0lOR1MgSEVBVlkgUVVBRFJVUExFIERBU0ggSE9SSVpPTlRBTAorMjUwQQlCT1ggRFJBV0lOR1MgTElHSFQgUVVBRFJVUExFIERBU0ggVkVSVElDQUwKKzI1MEIJQk9YIERSQVdJTkdTIEhFQVZZIFFVQURSVVBMRSBEQVNIIFZFUlRJQ0FMCisyNTBDCUJPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBSSUdIVAorMjUwRAlCT1ggRFJBV0lOR1MgRE9XTiBMSUdIVCBBTkQgUklHSFQgSEVBVlkKKzI1MEUJQk9YIERSQVdJTkdTIERPV04gSEVBVlkgQU5EIFJJR0hUIExJR0hUCisyNTBGCUJPWCBEUkFXSU5HUyBIRUFWWSBET1dOIEFORCBSSUdIVAorMjUxMAlCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgTEVGVAorMjUxMQlCT1ggRFJBV0lOR1MgRE9XTiBMSUdIVCBBTkQgTEVGVCBIRUFWWQorMjUxMglCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgTEVGVCBMSUdIVAorMjUxMwlCT1ggRFJBV0lOR1MgSEVBVlkgRE9XTiBBTkQgTEVGVAorMjUxNAlCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUCisyNTE1CUJPWCBEUkFXSU5HUyBVUCBMSUdIVCBBTkQgUklHSFQgSEVBVlkKKzI1MTYJQk9YIERSQVdJTkdTIFVQIEhFQVZZIEFORCBSSUdIVCBMSUdIVAorMjUxNwlCT1ggRFJBV0lOR1MgSEVBVlkgVVAgQU5EIFJJR0hUCisyNTE4CUJPWCBEUkFXSU5HUyBMSUdIVCBVUCBBTkQgTEVGVAorMjUxOQlCT1ggRFJBV0lOR1MgVVAgTElHSFQgQU5EIExFRlQgSEVBVlkKKzI1MUEJQk9YIERSQVdJTkdTIFVQIEhFQVZZIEFORCBMRUZUIExJR0hUCisyNTFCCUJPWCBEUkFXSU5HUyBIRUFWWSBVUCBBTkQgTEVGVAorMjUxQwlCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIFJJR0hUCisyNTFECUJPWCBEUkFXSU5HUyBWRVJUSUNBTCBMSUdIVCBBTkQgUklHSFQgSEVBVlkKKzI1MUUJQk9YIERSQVdJTkdTIFVQIEhFQVZZIEFORCBSSUdIVCBET1dOIExJR0hUCisyNTFGCUJPWCBEUkFXSU5HUyBET1dOIEhFQVZZIEFORCBSSUdIVCBVUCBMSUdIVAorMjUyMAlCT1ggRFJBV0lOR1MgVkVSVElDQUwgSEVBVlkgQU5EIFJJR0hUIExJR0hUCisyNTIxCUJPWCBEUkFXSU5HUyBET1dOIExJR0hUIEFORCBSSUdIVCBVUCBIRUFWWQorMjUyMglCT1ggRFJBV0lOR1MgVVAgTElHSFQgQU5EIFJJR0hUIERPV04gSEVBVlkKKzI1MjMJQk9YIERSQVdJTkdTIEhFQVZZIFZFUlRJQ0FMIEFORCBSSUdIVAorMjUyNAlCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQKKzI1MjUJQk9YIERSQVdJTkdTIFZFUlRJQ0FMIExJR0hUIEFORCBMRUZUIEhFQVZZCisyNTI2CUJPWCBEUkFXSU5HUyBVUCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUCisyNTI3CUJPWCBEUkFXSU5HUyBET1dOIEhFQVZZIEFORCBMRUZUIFVQIExJR0hUCisyNTI4CUJPWCBEUkFXSU5HUyBWRVJUSUNBTCBIRUFWWSBBTkQgTEVGVCBMSUdIVAorMjUyOQlCT1ggRFJBV0lOR1MgRE9XTiBMSUdIVCBBTkQgTEVGVCBVUCBIRUFWWQorMjUyQQlCT1ggRFJBV0lOR1MgVVAgTElHSFQgQU5EIExFRlQgRE9XTiBIRUFWWQorMjUyQglCT1ggRFJBV0lOR1MgSEVBVlkgVkVSVElDQUwgQU5EIExFRlQKKzI1MkMJQk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIEhPUklaT05UQUwKKzI1MkQJQk9YIERSQVdJTkdTIExFRlQgSEVBVlkgQU5EIFJJR0hUIERPV04gTElHSFQKKzI1MkUJQk9YIERSQVdJTkdTIFJJR0hUIEhFQVZZIEFORCBMRUZUIERPV04gTElHSFQKKzI1MkYJQk9YIERSQVdJTkdTIERPV04gTElHSFQgQU5EIEhPUklaT05UQUwgSEVBVlkKKzI1MzAJQk9YIERSQVdJTkdTIERPV04gSEVBVlkgQU5EIEhPUklaT05UQUwgTElHSFQKKzI1MzEJQk9YIERSQVdJTkdTIFJJR0hUIExJR0hUIEFORCBMRUZUIERPV04gSEVBVlkKKzI1MzIJQk9YIERSQVdJTkdTIExFRlQgTElHSFQgQU5EIFJJR0hUIERPV04gSEVBVlkKKzI1MzMJQk9YIERSQVdJTkdTIEhFQVZZIERPV04gQU5EIEhPUklaT05UQUwKKzI1MzQJQk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMCisyNTM1CUJPWCBEUkFXSU5HUyBMRUZUIEhFQVZZIEFORCBSSUdIVCBVUCBMSUdIVAorMjUzNglCT1ggRFJBV0lOR1MgUklHSFQgSEVBVlkgQU5EIExFRlQgVVAgTElHSFQKKzI1MzcJQk9YIERSQVdJTkdTIFVQIExJR0hUIEFORCBIT1JJWk9OVEFMIEhFQVZZCisyNTM4CUJPWCBEUkFXSU5HUyBVUCBIRUFWWSBBTkQgSE9SSVpPTlRBTCBMSUdIVAorMjUzOQlCT1ggRFJBV0lOR1MgUklHSFQgTElHSFQgQU5EIExFRlQgVVAgSEVBVlkKKzI1M0EJQk9YIERSQVdJTkdTIExFRlQgTElHSFQgQU5EIFJJR0hUIFVQIEhFQVZZCisyNTNCCUJPWCBEUkFXSU5HUyBIRUFWWSBVUCBBTkQgSE9SSVpPTlRBTAorMjUzQwlCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKKzI1M0QJQk9YIERSQVdJTkdTIExFRlQgSEVBVlkgQU5EIFJJR0hUIFZFUlRJQ0FMIExJR0hUCisyNTNFCUJPWCBEUkFXSU5HUyBSSUdIVCBIRUFWWSBBTkQgTEVGVCBWRVJUSUNBTCBMSUdIVAorMjUzRglCT1ggRFJBV0lOR1MgVkVSVElDQUwgTElHSFQgQU5EIEhPUklaT05UQUwgSEVBVlkKKzI1NDAJQk9YIERSQVdJTkdTIFVQIEhFQVZZIEFORCBET1dOIEhPUklaT05UQUwgTElHSFQKKzI1NDEJQk9YIERSQVdJTkdTIERPV04gSEVBVlkgQU5EIFVQIEhPUklaT05UQUwgTElHSFQKKzI1NDIJQk9YIERSQVdJTkdTIFZFUlRJQ0FMIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUCisyNTQzCUJPWCBEUkFXSU5HUyBMRUZUIFVQIEhFQVZZIEFORCBSSUdIVCBET1dOIExJR0hUCisyNTQ0CUJPWCBEUkFXSU5HUyBSSUdIVCBVUCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUCisyNTQ1CUJPWCBEUkFXSU5HUyBMRUZUIERPV04gSEVBVlkgQU5EIFJJR0hUIFVQIExJR0hUCisyNTQ2CUJPWCBEUkFXSU5HUyBSSUdIVCBET1dOIEhFQVZZIEFORCBMRUZUIFVQIExJR0hUCisyNTQ3CUJPWCBEUkFXSU5HUyBET1dOIExJR0hUIEFORCBVUCBIT1JJWk9OVEFMIEhFQVZZCisyNTQ4CUJPWCBEUkFXSU5HUyBVUCBMSUdIVCBBTkQgRE9XTiBIT1JJWk9OVEFMIEhFQVZZCisyNTQ5CUJPWCBEUkFXSU5HUyBSSUdIVCBMSUdIVCBBTkQgTEVGVCBWRVJUSUNBTCBIRUFWWQorMjU0QQlCT1ggRFJBV0lOR1MgTEVGVCBMSUdIVCBBTkQgUklHSFQgVkVSVElDQUwgSEVBVlkKKzI1NEIJQk9YIERSQVdJTkdTIEhFQVZZIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMCisyNTRDCUJPWCBEUkFXSU5HUyBMSUdIVCBET1VCTEUgREFTSCBIT1JJWk9OVEFMCisyNTRECUJPWCBEUkFXSU5HUyBIRUFWWSBET1VCTEUgREFTSCBIT1JJWk9OVEFMCisyNTRFCUJPWCBEUkFXSU5HUyBMSUdIVCBET1VCTEUgREFTSCBWRVJUSUNBTAorMjU0RglCT1ggRFJBV0lOR1MgSEVBVlkgRE9VQkxFIERBU0ggVkVSVElDQUwKKzI1NTAJQk9YIERSQVdJTkdTIERPVUJMRSBIT1JJWk9OVEFMCisyNTUxCUJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwKKzI1NTIJQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKKzI1NTMJQk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKKzI1NTQJQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVAorMjU1NQlCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCisyNTU2CUJPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKKzI1NTcJQk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUCisyNTU4CUJPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRQorMjU1OQlCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEUKKzI1NUEJQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQKKzI1NUIJQk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEUKKzI1NUMJQk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEUKKzI1NUQJQk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVAorMjU1RQlCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBSSUdIVCBET1VCTEUKKzI1NUYJQk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFCisyNTYwCUJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUCisyNTYxCUJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFCisyNTYyCUJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIExFRlQgU0lOR0xFCisyNTYzCUJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIExFRlQKKzI1NjQJQk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQorMjU2NQlCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCisyNTY2CUJPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTAorMjU2NwlCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRQorMjU2OAlCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRQorMjU2OQlCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMCisyNTZBCUJPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFCisyNTZCCUJPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFCisyNTZDCUJPWCBEUkFXSU5HUyBET1VCTEUgVkVSVElDQUwgQU5EIEhPUklaT05UQUwKKzI1NkQJQk9YIERSQVdJTkdTIExJR0hUIEFSQyBET1dOIEFORCBSSUdIVAorMjU2RQlCT1ggRFJBV0lOR1MgTElHSFQgQVJDIERPV04gQU5EIExFRlQKKzI1NkYJQk9YIERSQVdJTkdTIExJR0hUIEFSQyBVUCBBTkQgTEVGVAorMjU3MAlCT1ggRFJBV0lOR1MgTElHSFQgQVJDIFVQIEFORCBSSUdIVAorMjU3MQlCT1ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVAorMjU3MglCT1ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgTEVGVCBUTyBMT1dFUiBSSUdIVAorMjU3MwlCT1ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgQ1JPU1MKKzI1NzQJQk9YIERSQVdJTkdTIExJR0hUIExFRlQKKzI1NzUJQk9YIERSQVdJTkdTIExJR0hUIFVQCisyNTc2CUJPWCBEUkFXSU5HUyBMSUdIVCBSSUdIVAorMjU3NwlCT1ggRFJBV0lOR1MgTElHSFQgRE9XTgorMjU3OAlCT1ggRFJBV0lOR1MgSEVBVlkgTEVGVAorMjU3OQlCT1ggRFJBV0lOR1MgSEVBVlkgVVAKKzI1N0EJQk9YIERSQVdJTkdTIEhFQVZZIFJJR0hUCisyNTdCCUJPWCBEUkFXSU5HUyBIRUFWWSBET1dOCisyNTdDCUJPWCBEUkFXSU5HUyBMSUdIVCBMRUZUIEFORCBIRUFWWSBSSUdIVAorMjU3RAlCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhFQVZZIERPV04KKzI1N0UJQk9YIERSQVdJTkdTIEhFQVZZIExFRlQgQU5EIExJR0hUIFJJR0hUCisyNTdGCUJPWCBEUkFXSU5HUyBIRUFWWSBVUCBBTkQgTElHSFQgRE9XTgorMjU4MAlVUFBFUiBIQUxGIEJMT0NLCisyNTgxCUxPV0VSIE9ORSBFSUdIVEggQkxPQ0sKKzI1ODIJTE9XRVIgT05FIFFVQVJURVIgQkxPQ0sKKzI1ODMJTE9XRVIgVEhSRUUgRUlHSFRIUyBCTE9DSworMjU4NAlMT1dFUiBIQUxGIEJMT0NLCisyNTg1CUxPV0VSIEZJVkUgRUlHSFRIUyBCTE9DSworMjU4NglMT1dFUiBUSFJFRSBRVUFSVEVSUyBCTE9DSworMjU4NwlMT1dFUiBTRVZFTiBFSUdIVEhTIEJMT0NLCisyNTg4CUZVTEwgQkxPQ0sKKzI1ODkJTEVGVCBTRVZFTiBFSUdIVEhTIEJMT0NLCisyNThBCUxFRlQgVEhSRUUgUVVBUlRFUlMgQkxPQ0sKKzI1OEIJTEVGVCBGSVZFIEVJR0hUSFMgQkxPQ0sKKzI1OEMJTEVGVCBIQUxGIEJMT0NLCisyNThECUxFRlQgVEhSRUUgRUlHSFRIUyBCTE9DSworMjU4RQlMRUZUIE9ORSBRVUFSVEVSIEJMT0NLCisyNThGCUxFRlQgT05FIEVJR0hUSCBCTE9DSworMjU5MAlSSUdIVCBIQUxGIEJMT0NLCisyNTkxCUxJR0hUIFNIQURFCisyNTkyCU1FRElVTSBTSEFERQorMjU5MwlEQVJLIFNIQURFCisyNTk0CVVQUEVSIE9ORSBFSUdIVEggQkxPQ0sKKzI1OTUJUklHSFQgT05FIEVJR0hUSCBCTE9DSworMjVBMAlCTEFDSyBTUVVBUkUKKzI1QTEJV0hJVEUgU1FVQVJFCisyNUEyCVdISVRFIFNRVUFSRSBXSVRIIFJPVU5ERUQgQ09STkVSUworMjVBMwlXSElURSBTUVVBUkUgQ09OVEFJTklORyBCTEFDSyBTTUFMTCBTUVVBUkUKKzI1QTQJU1FVQVJFIFdJVEggSE9SSVpPTlRBTCBGSUxMCisyNUE1CVNRVUFSRSBXSVRIIFZFUlRJQ0FMIEZJTEwKKzI1QTYJU1FVQVJFIFdJVEggT1JUSE9HT05BTCBDUk9TU0hBVENIIEZJTEwKKzI1QTcJU1FVQVJFIFdJVEggVVBQRVIgTEVGVCBUTyBMT1dFUiBSSUdIVCBGSUxMCisyNUE4CVNRVUFSRSBXSVRIIFVQUEVSIFJJR0hUIFRPIExPV0VSIExFRlQgRklMTAorMjVBOQlTUVVBUkUgV0lUSCBESUFHT05BTCBDUk9TU0hBVENIIEZJTEwKKzI1QUEJQkxBQ0sgU01BTEwgU1FVQVJFCisyNUFCCVdISVRFIFNNQUxMIFNRVUFSRQorMjVBQwlCTEFDSyBSRUNUQU5HTEUKKzI1QUQJV0hJVEUgUkVDVEFOR0xFCisyNUFFCUJMQUNLIFZFUlRJQ0FMIFJFQ1RBTkdMRQorMjVBRglXSElURSBWRVJUSUNBTCBSRUNUQU5HTEUKKzI1QjAJQkxBQ0sgUEFSQUxMRUxPR1JBTQorMjVCMQlXSElURSBQQVJBTExFTE9HUkFNCisyNUIyCUJMQUNLIFVQLVBPSU5USU5HIFRSSUFOR0xFCisyNUIzCVdISVRFIFVQLVBPSU5USU5HIFRSSUFOR0xFCisyNUI0CUJMQUNLIFVQLVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFCisyNUI1CVdISVRFIFVQLVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFCisyNUI2CUJMQUNLIFJJR0hULVBPSU5USU5HIFRSSUFOR0xFCisyNUI3CVdISVRFIFJJR0hULVBPSU5USU5HIFRSSUFOR0xFCisyNUI4CUJMQUNLIFJJR0hULVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFCisyNUI5CVdISVRFIFJJR0hULVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFCisyNUJBCUJMQUNLIFJJR0hULVBPSU5USU5HIFBPSU5URVIKKzI1QkIJV0hJVEUgUklHSFQtUE9JTlRJTkcgUE9JTlRFUgorMjVCQwlCTEFDSyBET1dOLVBPSU5USU5HIFRSSUFOR0xFCisyNUJECVdISVRFIERPV04tUE9JTlRJTkcgVFJJQU5HTEUKKzI1QkUJQkxBQ0sgRE9XTi1QT0lOVElORyBTTUFMTCBUUklBTkdMRQorMjVCRglXSElURSBET1dOLVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFCisyNUMwCUJMQUNLIExFRlQtUE9JTlRJTkcgVFJJQU5HTEUKKzI1QzEJV0hJVEUgTEVGVC1QT0lOVElORyBUUklBTkdMRQorMjVDMglCTEFDSyBMRUZULVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFCisyNUMzCVdISVRFIExFRlQtUE9JTlRJTkcgU01BTEwgVFJJQU5HTEUKKzI1QzQJQkxBQ0sgTEVGVC1QT0lOVElORyBQT0lOVEVSCisyNUM1CVdISVRFIExFRlQtUE9JTlRJTkcgUE9JTlRFUgorMjVDNglCTEFDSyBESUFNT05ECisyNUM3CVdISVRFIERJQU1PTkQKKzI1QzgJV0hJVEUgRElBTU9ORCBDT05UQUlOSU5HIEJMQUNLIFNNQUxMIERJQU1PTkQKKzI1QzkJRklTSEVZRQorMjVDQQlMT1pFTkdFCisyNUNCCVdISVRFIENJUkNMRQorMjVDQwlET1RURUQgQ0lSQ0xFCisyNUNECUNJUkNMRSBXSVRIIFZFUlRJQ0FMIEZJTEwKKzI1Q0UJQlVMTFNFWUUKKzI1Q0YJQkxBQ0sgQ0lSQ0xFCisyNUQwCUNJUkNMRSBXSVRIIExFRlQgSEFMRiBCTEFDSworMjVEMQlDSVJDTEUgV0lUSCBSSUdIVCBIQUxGIEJMQUNLCisyNUQyCUNJUkNMRSBXSVRIIExPV0VSIEhBTEYgQkxBQ0sKKzI1RDMJQ0lSQ0xFIFdJVEggVVBQRVIgSEFMRiBCTEFDSworMjVENAlDSVJDTEUgV0lUSCBVUFBFUiBSSUdIVCBRVUFEUkFOVCBCTEFDSworMjVENQlDSVJDTEUgV0lUSCBBTEwgQlVUIFVQUEVSIExFRlQgUVVBRFJBTlQgQkxBQ0sKKzI1RDYJTEVGVCBIQUxGIEJMQUNLIENJUkNMRQorMjVENwlSSUdIVCBIQUxGIEJMQUNLIENJUkNMRQorMjVEOAlJTlZFUlNFIEJVTExFVAorMjVEOQlJTlZFUlNFIFdISVRFIENJUkNMRQorMjVEQQlVUFBFUiBIQUxGIElOVkVSU0UgV0hJVEUgQ0lSQ0xFCisyNURCCUxPV0VSIEhBTEYgSU5WRVJTRSBXSElURSBDSVJDTEUKKzI1REMJVVBQRVIgTEVGVCBRVUFEUkFOVCBDSVJDVUxBUiBBUkMKKzI1REQJVVBQRVIgUklHSFQgUVVBRFJBTlQgQ0lSQ1VMQVIgQVJDCisyNURFCUxPV0VSIFJJR0hUIFFVQURSQU5UIENJUkNVTEFSIEFSQworMjVERglMT1dFUiBMRUZUIFFVQURSQU5UIENJUkNVTEFSIEFSQworMjVFMAlVUFBFUiBIQUxGIENJUkNMRQorMjVFMQlMT1dFUiBIQUxGIENJUkNMRQorMjVFMglCTEFDSyBMT1dFUiBSSUdIVCBUUklBTkdMRQorMjVFMwlCTEFDSyBMT1dFUiBMRUZUIFRSSUFOR0xFCisyNUU0CUJMQUNLIFVQUEVSIExFRlQgVFJJQU5HTEUKKzI1RTUJQkxBQ0sgVVBQRVIgUklHSFQgVFJJQU5HTEUKKzI1RTYJV0hJVEUgQlVMTEVUCisyNUU3CVNRVUFSRSBXSVRIIExFRlQgSEFMRiBCTEFDSworMjVFOAlTUVVBUkUgV0lUSCBSSUdIVCBIQUxGIEJMQUNLCisyNUU5CVNRVUFSRSBXSVRIIFVQUEVSIExFRlQgRElBR09OQUwgSEFMRiBCTEFDSworMjVFQQlTUVVBUkUgV0lUSCBMT1dFUiBSSUdIVCBESUFHT05BTCBIQUxGIEJMQUNLCisyNUVCCVdISVRFIFNRVUFSRSBXSVRIIFZFUlRJQ0FMIEJJU0VDVElORyBMSU5FCisyNUVDCVdISVRFIFVQLVBPSU5USU5HIFRSSUFOR0xFIFdJVEggRE9UCisyNUVECVVQLVBPSU5USU5HIFRSSUFOR0xFIFdJVEggTEVGVCBIQUxGIEJMQUNLCisyNUVFCVVQLVBPSU5USU5HIFRSSUFOR0xFIFdJVEggUklHSFQgSEFMRiBCTEFDSworMjVFRglMQVJHRSBDSVJDTEUKKzI2MDAJQkxBQ0sgU1VOIFdJVEggUkFZUworMjYwMQlDTE9VRAorMjYwMglVTUJSRUxMQQorMjYwMwlTTk9XTUFOCisyNjA0CUNPTUVUCisyNjA1CUJMQUNLIFNUQVIKKzI2MDYJV0hJVEUgU1RBUgorMjYwNwlMSUdIVE5JTkcKKzI2MDgJVEhVTkRFUlNUT1JNCisyNjA5CVNVTgorMjYwQQlBU0NFTkRJTkcgTk9ERQorMjYwQglERVNDRU5ESU5HIE5PREUKKzI2MEMJQ09OSlVOQ1RJT04KKzI2MEQJT1BQT1NJVElPTgorMjYwRQlCTEFDSyBURUxFUEhPTkUKKzI2MEYJV0hJVEUgVEVMRVBIT05FCisyNjEwCUJBTExPVCBCT1gKKzI2MTEJQkFMTE9UIEJPWCBXSVRIIENIRUNLCisyNjEyCUJBTExPVCBCT1ggV0lUSCBYCisyNjEzCVNBTFRJUkUKKzI2MUEJQkxBQ0sgTEVGVCBQT0lOVElORyBJTkRFWAorMjYxQglCTEFDSyBSSUdIVCBQT0lOVElORyBJTkRFWAorMjYxQwlXSElURSBMRUZUIFBPSU5USU5HIElOREVYCisyNjFECVdISVRFIFVQIFBPSU5USU5HIElOREVYCisyNjFFCVdISVRFIFJJR0hUIFBPSU5USU5HIElOREVYCisyNjFGCVdISVRFIERPV04gUE9JTlRJTkcgSU5ERVgKKzI2MjAJU0tVTEwgQU5EIENST1NTQk9ORVMKKzI2MjEJQ0FVVElPTiBTSUdOCisyNjIyCVJBRElPQUNUSVZFIFNJR04KKzI2MjMJQklPSEFaQVJEIFNJR04KKzI2MjQJQ0FEVUNFVVMKKzI2MjUJQU5LSAorMjYyNglPUlRIT0RPWCBDUk9TUworMjYyNwlDSEkgUkhPCisyNjI4CUNST1NTIE9GIExPUlJBSU5FCisyNjI5CUNST1NTIE9GIEpFUlVTQUxFTQorMjYyQQlTVEFSIEFORCBDUkVTQ0VOVAorMjYyQglGQVJTSSBTWU1CT0wKKzI2MkMJQURJIFNIQUtUSQorMjYyRAlIQU1NRVIgQU5EIFNJQ0tMRQorMjYyRQlQRUFDRSBTWU1CT0wKKzI2MkYJWUlOIFlBTkcKKzI2MzAJVFJJR1JBTSBGT1IgSEVBVkVOCisyNjMxCVRSSUdSQU0gRk9SIExBS0UKKzI2MzIJVFJJR1JBTSBGT1IgRklSRQorMjYzMwlUUklHUkFNIEZPUiBUSFVOREVSCisyNjM0CVRSSUdSQU0gRk9SIFdJTkQKKzI2MzUJVFJJR1JBTSBGT1IgV0FURVIKKzI2MzYJVFJJR1JBTSBGT1IgTU9VTlRBSU4KKzI2MzcJVFJJR1JBTSBGT1IgRUFSVEgKKzI2MzgJV0hFRUwgT0YgREhBUk1BCisyNjM5CVdISVRFIEZST1dOSU5HIEZBQ0UKKzI2M0EJV0hJVEUgU01JTElORyBGQUNFCisyNjNCCUJMQUNLIFNNSUxJTkcgRkFDRQorMjYzQwlXSElURSBTVU4gV0lUSCBSQVlTCisyNjNECUZJUlNUIFFVQVJURVIgTU9PTgorMjYzRQlMQVNUIFFVQVJURVIgTU9PTgorMjYzRglNRVJDVVJZCisyNjQwCUZFTUFMRSBTSUdOCisyNjQxCUVBUlRICisyNjQyCU1BTEUgU0lHTgorMjY0MwlKVVBJVEVSCisyNjQ0CVNBVFVSTgorMjY0NQlVUkFOVVMKKzI2NDYJTkVQVFVORQorMjY0NwlQTFVUTworMjY0OAlBUklFUworMjY0OQlUQVVSVVMKKzI2NEEJR0VNSU5JCisyNjRCCUNBTkNFUgorMjY0QwlMRU8KKzI2NEQJVklSR08KKzI2NEUJTElCUkEKKzI2NEYJU0NPUlBJVVMKKzI2NTAJU0FHSVRUQVJJVVMKKzI2NTEJQ0FQUklDT1JOCisyNjUyCUFRVUFSSVVTCisyNjUzCVBJU0NFUworMjY1NAlXSElURSBDSEVTUyBLSU5HCisyNjU1CVdISVRFIENIRVNTIFFVRUVOCisyNjU2CVdISVRFIENIRVNTIFJPT0sKKzI2NTcJV0hJVEUgQ0hFU1MgQklTSE9QCisyNjU4CVdISVRFIENIRVNTIEtOSUdIVAorMjY1OQlXSElURSBDSEVTUyBQQVdOCisyNjVBCUJMQUNLIENIRVNTIEtJTkcKKzI2NUIJQkxBQ0sgQ0hFU1MgUVVFRU4KKzI2NUMJQkxBQ0sgQ0hFU1MgUk9PSworMjY1RAlCTEFDSyBDSEVTUyBCSVNIT1AKKzI2NUUJQkxBQ0sgQ0hFU1MgS05JR0hUCisyNjVGCUJMQUNLIENIRVNTIFBBV04KKzI2NjAJQkxBQ0sgU1BBREUgU1VJVAorMjY2MQlXSElURSBIRUFSVCBTVUlUCisyNjYyCVdISVRFIERJQU1PTkQgU1VJVAorMjY2MwlCTEFDSyBDTFVCIFNVSVQKKzI2NjQJV0hJVEUgU1BBREUgU1VJVAorMjY2NQlCTEFDSyBIRUFSVCBTVUlUCisyNjY2CUJMQUNLIERJQU1PTkQgU1VJVAorMjY2NwlXSElURSBDTFVCIFNVSVQKKzI2NjgJSE9UIFNQUklOR1MKKzI2NjkJUVVBUlRFUiBOT1RFCisyNjZBCUVJR0hUSCBOT1RFCisyNjZCCUJFQU1FRCBFSUdIVEggTk9URVMKKzI2NkMJQkVBTUVEIFNJWFRFRU5USCBOT1RFUworMjY2RAlNVVNJQyBGTEFUIFNJR04KKzI2NkUJTVVTSUMgTkFUVVJBTCBTSUdOCisyNjZGCU1VU0lDIFNIQVJQIFNJR04KKzI3MDEJVVBQRVIgQkxBREUgU0NJU1NPUlMKKzI3MDIJQkxBQ0sgU0NJU1NPUlMKKzI3MDMJTE9XRVIgQkxBREUgU0NJU1NPUlMKKzI3MDQJV0hJVEUgU0NJU1NPUlMKKzI3MDYJVEVMRVBIT05FIExPQ0FUSU9OIFNJR04KKzI3MDcJVEFQRSBEUklWRQorMjcwOAlBSVJQTEFORQorMjcwOQlFTlZFTE9QRQorMjcwQwlWSUNUT1JZIEhBTkQKKzI3MEQJV1JJVElORyBIQU5ECisyNzBFCUxPV0VSIFJJR0hUIFBFTkNJTAorMjcwRglQRU5DSUwKKzI3MTAJVVBQRVIgUklHSFQgUEVOQ0lMCisyNzExCVdISVRFIE5JQgorMjcxMglCTEFDSyBOSUIKKzI3MTMJQ0hFQ0sgTUFSSworMjcxNAlIRUFWWSBDSEVDSyBNQVJLCisyNzE1CU1VTFRJUExJQ0FUSU9OIFgKKzI3MTYJSEVBVlkgTVVMVElQTElDQVRJT04gWAorMjcxNwlCQUxMT1QgWAorMjcxOAlIRUFWWSBCQUxMT1QgWAorMjcxOQlPVVRMSU5FRCBHUkVFSyBDUk9TUworMjcxQQlIRUFWWSBHUkVFSyBDUk9TUworMjcxQglPUEVOIENFTlRSRSBDUk9TUworMjcxQwlIRUFWWSBPUEVOIENFTlRSRSBDUk9TUworMjcxRAlMQVRJTiBDUk9TUworMjcxRQlTSEFET1dFRCBXSElURSBMQVRJTiBDUk9TUworMjcxRglPVVRMSU5FRCBMQVRJTiBDUk9TUworMjcyMAlNQUxURVNFIENST1NTCisyNzIxCVNUQVIgT0YgREFWSUQKKzI3MjIJRk9VUiBURUFSRFJPUC1TUE9LRUQgQVNURVJJU0sKKzI3MjMJRk9VUiBCQUxMT09OLVNQT0tFRCBBU1RFUklTSworMjcyNAlIRUFWWSBGT1VSIEJBTExPT04tU1BPS0VEIEFTVEVSSVNLCisyNzI1CUZPVVIgQ0xVQi1TUE9LRUQgQVNURVJJU0sKKzI3MjYJQkxBQ0sgRk9VUiBQT0lOVEVEIFNUQVIKKzI3MjcJV0hJVEUgRk9VUiBQT0lOVEVEIFNUQVIKKzI3MjkJU1RSRVNTIE9VVExJTkVEIFdISVRFIFNUQVIKKzI3MkEJQ0lSQ0xFRCBXSElURSBTVEFSCisyNzJCCU9QRU4gQ0VOVFJFIEJMQUNLIFNUQVIKKzI3MkMJQkxBQ0sgQ0VOVFJFIFdISVRFIFNUQVIKKzI3MkQJT1VUTElORUQgQkxBQ0sgU1RBUgorMjcyRQlIRUFWWSBPVVRMSU5FRCBCTEFDSyBTVEFSCisyNzJGCVBJTldIRUVMIFNUQVIKKzI3MzAJU0hBRE9XRUQgV0hJVEUgU1RBUgorMjczMQlIRUFWWSBBU1RFUklTSworMjczMglPUEVOIENFTlRSRSBBU1RFUklTSworMjczMwlFSUdIVCBTUE9LRUQgQVNURVJJU0sKKzI3MzQJRUlHSFQgUE9JTlRFRCBCTEFDSyBTVEFSCisyNzM1CUVJR0hUIFBPSU5URUQgUElOV0hFRUwgU1RBUgorMjczNglTSVggUE9JTlRFRCBCTEFDSyBTVEFSCisyNzM3CUVJR0hUIFBPSU5URUQgUkVDVElMSU5FQVIgQkxBQ0sgU1RBUgorMjczOAlIRUFWWSBFSUdIVCBQT0lOVEVEIFJFQ1RJTElORUFSIEJMQUNLIFNUQVIKKzI3MzkJVFdFTFZFIFBPSU5URUQgQkxBQ0sgU1RBUgorMjczQQlTSVhURUVOIFBPSU5URUQgQVNURVJJU0sKKzI3M0IJVEVBUkRST1AtU1BPS0VEIEFTVEVSSVNLCisyNzNDCU9QRU4gQ0VOVFJFIFRFQVJEUk9QLVNQT0tFRCBBU1RFUklTSworMjczRAlIRUFWWSBURUFSRFJPUC1TUE9LRUQgQVNURVJJU0sKKzI3M0UJU0lYIFBFVEFMTEVEIEJMQUNLIEFORCBXSElURSBGTE9SRVRURQorMjczRglCTEFDSyBGTE9SRVRURQorMjc0MAlXSElURSBGTE9SRVRURQorMjc0MQlFSUdIVCBQRVRBTExFRCBPVVRMSU5FRCBCTEFDSyBGTE9SRVRURQorMjc0MglDSVJDTEVEIE9QRU4gQ0VOVFJFIEVJR0hUIFBPSU5URUQgU1RBUgorMjc0MwlIRUFWWSBURUFSRFJPUC1TUE9LRUQgUElOV0hFRUwgQVNURVJJU0sKKzI3NDQJU05PV0ZMQUtFCisyNzQ1CVRJR0hUIFRSSUZPTElBVEUgU05PV0ZMQUtFCisyNzQ2CUhFQVZZIENIRVZST04gU05PV0ZMQUtFCisyNzQ3CVNQQVJLTEUKKzI3NDgJSEVBVlkgU1BBUktMRQorMjc0OQlCQUxMT09OLVNQT0tFRCBBU1RFUklTSworMjc0QQlFSUdIVCBURUFSRFJPUC1TUE9LRUQgUFJPUEVMTEVSIEFTVEVSSVNLCisyNzRCCUhFQVZZIEVJR0hUIFRFQVJEUk9QLVNQT0tFRCBQUk9QRUxMRVIgQVNURVJJU0sKKzI3NEQJU0hBRE9XRUQgV0hJVEUgQ0lSQ0xFCisyNzRGCUxPV0VSIFJJR0hUIERST1AtU0hBRE9XRUQgV0hJVEUgU1FVQVJFCisyNzUwCVVQUEVSIFJJR0hUIERST1AtU0hBRE9XRUQgV0hJVEUgU1FVQVJFCisyNzUxCUxPV0VSIFJJR0hUIFNIQURPV0VEIFdISVRFIFNRVUFSRQorMjc1MglVUFBFUiBSSUdIVCBTSEFET1dFRCBXSElURSBTUVVBUkUKKzI3NTYJQkxBQ0sgRElBTU9ORCBNSU5VUyBXSElURSBYCisyNzU4CUxJR0hUIFZFUlRJQ0FMIEJBUgorMjc1OQlNRURJVU0gVkVSVElDQUwgQkFSCisyNzVBCUhFQVZZIFZFUlRJQ0FMIEJBUgorMjc1QglIRUFWWSBTSU5HTEUgVFVSTkVEIENPTU1BIFFVT1RBVElPTiBNQVJLIE9STkFNRU5UCisyNzVDCUhFQVZZIFNJTkdMRSBDT01NQSBRVU9UQVRJT04gTUFSSyBPUk5BTUVOVAorMjc1RAlIRUFWWSBET1VCTEUgVFVSTkVEIENPTU1BIFFVT1RBVElPTiBNQVJLIE9STkFNRU5UCisyNzVFCUhFQVZZIERPVUJMRSBDT01NQSBRVU9UQVRJT04gTUFSSyBPUk5BTUVOVAorMjc2MQlDVVJWRUQgU1RFTSBQQVJBR1JBUEggU0lHTiBPUk5BTUVOVAorMjc2MglIRUFWWSBFWENMQU1BVElPTiBNQVJLIE9STkFNRU5UCisyNzYzCUhFQVZZIEhFQVJUIEVYQ0xBTUFUSU9OIE1BUksgT1JOQU1FTlQKKzI3NjQJSEVBVlkgQkxBQ0sgSEVBUlQKKzI3NjUJUk9UQVRFRCBIRUFWWSBCTEFDSyBIRUFSVCBCVUxMRVQKKzI3NjYJRkxPUkFMIEhFQVJUCisyNzY3CVJPVEFURUQgRkxPUkFMIEhFQVJUIEJVTExFVAorMjc3NglESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgRElHSVQgT05FCisyNzc3CURJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBUV08KKzI3NzgJRElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIFRIUkVFCisyNzc5CURJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBGT1VSCisyNzdBCURJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBGSVZFCisyNzdCCURJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBTSVgKKzI3N0MJRElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIFNFVkVOCisyNzdECURJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBFSUdIVAorMjc3RQlESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgRElHSVQgTklORQorMjc3RglESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgTlVNQkVSIFRFTgorMjc4MAlESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBPTkUKKzI3ODEJRElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgVFdPCisyNzgyCURJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFRIUkVFCisyNzgzCURJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEZPVVIKKzI3ODQJRElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRklWRQorMjc4NQlESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBTSVgKKzI3ODYJRElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgU0VWRU4KKzI3ODcJRElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRUlHSFQKKzI3ODgJRElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgTklORQorMjc4OQlESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBOVU1CRVIgVEVOCisyNzhBCURJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIE9ORQorMjc4QglESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBUV08KKzI3OEMJRElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgVEhSRUUKKzI3OEQJRElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRk9VUgorMjc4RQlESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGSVZFCisyNzhGCURJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFNJWAorMjc5MAlESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBTRVZFTgorMjc5MQlESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBFSUdIVAorMjc5MglESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBOSU5FCisyNzkzCURJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIE5VTUJFUiBURU4KKzI3OTQJSEVBVlkgV0lERS1IRUFERUQgUklHSFRXQVJEUyBBUlJPVworMjc5OAlIRUFWWSBTT1VUSCBFQVNUIEFSUk9XCisyNzk5CUhFQVZZIFJJR0hUV0FSRFMgQVJST1cKKzI3OUEJSEVBVlkgTk9SVEggRUFTVCBBUlJPVworMjc5QglEUkFGVElORyBQT0lOVCBSSUdIVFdBUkRTIEFSUk9XCisyNzlDCUhFQVZZIFJPVU5ELVRJUFBFRCBSSUdIVFdBUkRTIEFSUk9XCisyNzlECVRSSUFOR0xFLUhFQURFRCBSSUdIVFdBUkRTIEFSUk9XCisyNzlFCUhFQVZZIFRSSUFOR0xFLUhFQURFRCBSSUdIVFdBUkRTIEFSUk9XCisyNzlGCURBU0hFRCBUUklBTkdMRS1IRUFERUQgUklHSFRXQVJEUyBBUlJPVworMjdBMAlIRUFWWSBEQVNIRUQgVFJJQU5HTEUtSEVBREVEIFJJR0hUV0FSRFMgQVJST1cKKzI3QTEJQkxBQ0sgUklHSFRXQVJEUyBBUlJPVworMjdBMglUSFJFRS1EIFRPUC1MSUdIVEVEIFJJR0hUV0FSRFMgQVJST1dIRUFECisyN0EzCVRIUkVFLUQgQk9UVE9NLUxJR0hURUQgUklHSFRXQVJEUyBBUlJPV0hFQUQKKzI3QTQJQkxBQ0sgUklHSFRXQVJEUyBBUlJPV0hFQUQKKzI3QTUJSEVBVlkgQkxBQ0sgQ1VSVkVEIERPV05XQVJEUyBBTkQgUklHSFRXQVJEUyBBUlJPVworMjdBNglIRUFWWSBCTEFDSyBDVVJWRUQgVVBXQVJEUyBBTkQgUklHSFRXQVJEUyBBUlJPVworMjdBNwlTUVVBVCBCTEFDSyBSSUdIVFdBUkRTIEFSUk9XCisyN0E4CUhFQVZZIENPTkNBVkUtUE9JTlRFRCBCTEFDSyBSSUdIVFdBUkRTIEFSUk9XCisyN0E5CVJJR0hULVNIQURFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XCisyN0FBCUxFRlQtU0hBREVEIFdISVRFIFJJR0hUV0FSRFMgQVJST1cKKzI3QUIJQkFDSy1USUxURUQgU0hBRE9XRUQgV0hJVEUgUklHSFRXQVJEUyBBUlJPVworMjdBQwlGUk9OVC1USUxURUQgU0hBRE9XRUQgV0hJVEUgUklHSFRXQVJEUyBBUlJPVworMjdBRAlIRUFWWSBMT1dFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XCisyN0FFCUhFQVZZIFVQUEVSIFJJR0hULVNIQURPV0VEIFdISVRFIFJJR0hUV0FSRFMgQVJST1cKKzI3QUYJTk9UQ0hFRCBMT1dFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XCisyN0IxCU5PVENIRUQgVVBQRVIgUklHSFQtU0hBRE9XRUQgV0hJVEUgUklHSFRXQVJEUyBBUlJPVworMjdCMglDSVJDTEVEIEhFQVZZIFdISVRFIFJJR0hUV0FSRFMgQVJST1cKKzI3QjMJV0hJVEUtRkVBVEhFUkVEIFJJR0hUV0FSRFMgQVJST1cKKzI3QjQJQkxBQ0stRkVBVEhFUkVEIFNPVVRIIEVBU1QgQVJST1cKKzI3QjUJQkxBQ0stRkVBVEhFUkVEIFJJR0hUV0FSRFMgQVJST1cKKzI3QjYJQkxBQ0stRkVBVEhFUkVEIE5PUlRIIEVBU1QgQVJST1cKKzI3QjcJSEVBVlkgQkxBQ0stRkVBVEhFUkVEIFNPVVRIIEVBU1QgQVJST1cKKzI3QjgJSEVBVlkgQkxBQ0stRkVBVEhFUkVEIFJJR0hUV0FSRFMgQVJST1cKKzI3QjkJSEVBVlkgQkxBQ0stRkVBVEhFUkVEIE5PUlRIIEVBU1QgQVJST1cKKzI3QkEJVEVBUkRST1AtQkFSQkVEIFJJR0hUV0FSRFMgQVJST1cKKzI3QkIJSEVBVlkgVEVBUkRST1AtU0hBTktFRCBSSUdIVFdBUkRTIEFSUk9XCisyN0JDCVdFREdFLVRBSUxFRCBSSUdIVFdBUkRTIEFSUk9XCisyN0JECUhFQVZZIFdFREdFLVRBSUxFRCBSSUdIVFdBUkRTIEFSUk9XCisyN0JFCU9QRU4tT1VUTElORUQgUklHSFRXQVJEUyBBUlJPVworMzAwMAlJREVPR1JBUEhJQyBTUEFDRQorMzAwMQlJREVPR1JBUEhJQyBDT01NQQorMzAwMglJREVPR1JBUEhJQyBGVUxMIFNUT1AKKzMwMDMJRElUVE8gTUFSSworMzAwNAlKQVBBTkVTRSBJTkRVU1RSSUFMIFNUQU5EQVJEIFNZTUJPTAorMzAwNQlJREVPR1JBUEhJQyBJVEVSQVRJT04gTUFSSworMzAwNglJREVPR1JBUEhJQyBDTE9TSU5HIE1BUksKKzMwMDcJSURFT0dSQVBISUMgTlVNQkVSIFpFUk8KKzMwMDgJTEVGVCBBTkdMRSBCUkFDS0VUCiszMDA5CVJJR0hUIEFOR0xFIEJSQUNLRVQKKzMwMEEJTEVGVCBET1VCTEUgQU5HTEUgQlJBQ0tFVAorMzAwQglSSUdIVCBET1VCTEUgQU5HTEUgQlJBQ0tFVAorMzAwQwlMRUZUIENPUk5FUiBCUkFDS0VUCiszMDBECVJJR0hUIENPUk5FUiBCUkFDS0VUCiszMDBFCUxFRlQgV0hJVEUgQ09STkVSIEJSQUNLRVQKKzMwMEYJUklHSFQgV0hJVEUgQ09STkVSIEJSQUNLRVQKKzMwMTAJTEVGVCBCTEFDSyBMRU5USUNVTEFSIEJSQUNLRVQKKzMwMTEJUklHSFQgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUCiszMDEyCVBPU1RBTCBNQVJLCiszMDEzCUdFVEEgTUFSSworMzAxNAlMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQKKzMwMTUJUklHSFQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVAorMzAxNglMRUZUIFdISVRFIExFTlRJQ1VMQVIgQlJBQ0tFVAorMzAxNwlSSUdIVCBXSElURSBMRU5USUNVTEFSIEJSQUNLRVQKKzMwMTgJTEVGVCBXSElURSBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUCiszMDE5CVJJR0hUIFdISVRFIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQKKzMwMUEJTEVGVCBXSElURSBTUVVBUkUgQlJBQ0tFVAorMzAxQglSSUdIVCBXSElURSBTUVVBUkUgQlJBQ0tFVAorMzAxQwlXQVZFIERBU0gKKzMwMUQJUkVWRVJTRUQgRE9VQkxFIFBSSU1FIFFVT1RBVElPTiBNQVJLCiszMDFFCURPVUJMRSBQUklNRSBRVU9UQVRJT04gTUFSSworMzAxRglMT1cgRE9VQkxFIFBSSU1FIFFVT1RBVElPTiBNQVJLCiszMDIwCVBPU1RBTCBNQVJLIEZBQ0UKKzMwMjEJSEFOR1pIT1UgTlVNRVJBTCBPTkUKKzMwMjIJSEFOR1pIT1UgTlVNRVJBTCBUV08KKzMwMjMJSEFOR1pIT1UgTlVNRVJBTCBUSFJFRQorMzAyNAlIQU5HWkhPVSBOVU1FUkFMIEZPVVIKKzMwMjUJSEFOR1pIT1UgTlVNRVJBTCBGSVZFCiszMDI2CUhBTkdaSE9VIE5VTUVSQUwgU0lYCiszMDI3CUhBTkdaSE9VIE5VTUVSQUwgU0VWRU4KKzMwMjgJSEFOR1pIT1UgTlVNRVJBTCBFSUdIVAorMzAyOQlIQU5HWkhPVSBOVU1FUkFMIE5JTkUKKzMwMkEJSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLCiszMDJCCUlERU9HUkFQSElDIFJJU0lORyBUT05FIE1BUksKKzMwMkMJSURFT0dSQVBISUMgREVQQVJUSU5HIFRPTkUgTUFSSworMzAyRAlJREVPR1JBUEhJQyBFTlRFUklORyBUT05FIE1BUksKKzMwMkUJSEFOR1VMIFNJTkdMRSBET1QgVE9ORSBNQVJLCiszMDJGCUhBTkdVTCBET1VCTEUgRE9UIFRPTkUgTUFSSworMzAzMAlXQVZZIERBU0gKKzMwMzEJVkVSVElDQUwgS0FOQSBSRVBFQVQgTUFSSworMzAzMglWRVJUSUNBTCBLQU5BIFJFUEVBVCBXSVRIIFZPSUNFRCBTT1VORCBNQVJLCiszMDMzCVZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUksgVVBQRVIgSEFMRgorMzAzNAlWRVJUSUNBTCBLQU5BIFJFUEVBVCBXSVRIIFZPSUNFRCBTT1VORCBNQVJLIFVQUEVSIEhBTEYKKzMwMzUJVkVSVElDQUwgS0FOQSBSRVBFQVQgTUFSSyBMT1dFUiBIQUxGCiszMDM2CUNJUkNMRUQgUE9TVEFMIE1BUksKKzMwMzcJSURFT0dSQVBISUMgVEVMRUdSQVBIIExJTkUgRkVFRCBTRVBBUkFUT1IgU1lNQk9MCiszMDNGCUlERU9HUkFQSElDIEhBTEYgRklMTCBTUEFDRQorMzA0MQlISVJBR0FOQSBMRVRURVIgU01BTEwgQQorMzA0MglISVJBR0FOQSBMRVRURVIgQQorMzA0MwlISVJBR0FOQSBMRVRURVIgU01BTEwgSQorMzA0NAlISVJBR0FOQSBMRVRURVIgSQorMzA0NQlISVJBR0FOQSBMRVRURVIgU01BTEwgVQorMzA0NglISVJBR0FOQSBMRVRURVIgVQorMzA0NwlISVJBR0FOQSBMRVRURVIgU01BTEwgRQorMzA0OAlISVJBR0FOQSBMRVRURVIgRQorMzA0OQlISVJBR0FOQSBMRVRURVIgU01BTEwgTworMzA0QQlISVJBR0FOQSBMRVRURVIgTworMzA0QglISVJBR0FOQSBMRVRURVIgS0EKKzMwNEMJSElSQUdBTkEgTEVUVEVSIEdBCiszMDRECUhJUkFHQU5BIExFVFRFUiBLSQorMzA0RQlISVJBR0FOQSBMRVRURVIgR0kKKzMwNEYJSElSQUdBTkEgTEVUVEVSIEtVCiszMDUwCUhJUkFHQU5BIExFVFRFUiBHVQorMzA1MQlISVJBR0FOQSBMRVRURVIgS0UKKzMwNTIJSElSQUdBTkEgTEVUVEVSIEdFCiszMDUzCUhJUkFHQU5BIExFVFRFUiBLTworMzA1NAlISVJBR0FOQSBMRVRURVIgR08KKzMwNTUJSElSQUdBTkEgTEVUVEVSIFNBCiszMDU2CUhJUkFHQU5BIExFVFRFUiBaQQorMzA1NwlISVJBR0FOQSBMRVRURVIgU0kKKzMwNTgJSElSQUdBTkEgTEVUVEVSIFpJCiszMDU5CUhJUkFHQU5BIExFVFRFUiBTVQorMzA1QQlISVJBR0FOQSBMRVRURVIgWlUKKzMwNUIJSElSQUdBTkEgTEVUVEVSIFNFCiszMDVDCUhJUkFHQU5BIExFVFRFUiBaRQorMzA1RAlISVJBR0FOQSBMRVRURVIgU08KKzMwNUUJSElSQUdBTkEgTEVUVEVSIFpPCiszMDVGCUhJUkFHQU5BIExFVFRFUiBUQQorMzA2MAlISVJBR0FOQSBMRVRURVIgREEKKzMwNjEJSElSQUdBTkEgTEVUVEVSIFRJCiszMDYyCUhJUkFHQU5BIExFVFRFUiBESQorMzA2MwlISVJBR0FOQSBMRVRURVIgU01BTEwgVFUKKzMwNjQJSElSQUdBTkEgTEVUVEVSIFRVCiszMDY1CUhJUkFHQU5BIExFVFRFUiBEVQorMzA2NglISVJBR0FOQSBMRVRURVIgVEUKKzMwNjcJSElSQUdBTkEgTEVUVEVSIERFCiszMDY4CUhJUkFHQU5BIExFVFRFUiBUTworMzA2OQlISVJBR0FOQSBMRVRURVIgRE8KKzMwNkEJSElSQUdBTkEgTEVUVEVSIE5BCiszMDZCCUhJUkFHQU5BIExFVFRFUiBOSQorMzA2QwlISVJBR0FOQSBMRVRURVIgTlUKKzMwNkQJSElSQUdBTkEgTEVUVEVSIE5FCiszMDZFCUhJUkFHQU5BIExFVFRFUiBOTworMzA2RglISVJBR0FOQSBMRVRURVIgSEEKKzMwNzAJSElSQUdBTkEgTEVUVEVSIEJBCiszMDcxCUhJUkFHQU5BIExFVFRFUiBQQQorMzA3MglISVJBR0FOQSBMRVRURVIgSEkKKzMwNzMJSElSQUdBTkEgTEVUVEVSIEJJCiszMDc0CUhJUkFHQU5BIExFVFRFUiBQSQorMzA3NQlISVJBR0FOQSBMRVRURVIgSFUKKzMwNzYJSElSQUdBTkEgTEVUVEVSIEJVCiszMDc3CUhJUkFHQU5BIExFVFRFUiBQVQorMzA3OAlISVJBR0FOQSBMRVRURVIgSEUKKzMwNzkJSElSQUdBTkEgTEVUVEVSIEJFCiszMDdBCUhJUkFHQU5BIExFVFRFUiBQRQorMzA3QglISVJBR0FOQSBMRVRURVIgSE8KKzMwN0MJSElSQUdBTkEgTEVUVEVSIEJPCiszMDdECUhJUkFHQU5BIExFVFRFUiBQTworMzA3RQlISVJBR0FOQSBMRVRURVIgTUEKKzMwN0YJSElSQUdBTkEgTEVUVEVSIE1JCiszMDgwCUhJUkFHQU5BIExFVFRFUiBNVQorMzA4MQlISVJBR0FOQSBMRVRURVIgTUUKKzMwODIJSElSQUdBTkEgTEVUVEVSIE1PCiszMDgzCUhJUkFHQU5BIExFVFRFUiBTTUFMTCBZQQorMzA4NAlISVJBR0FOQSBMRVRURVIgWUEKKzMwODUJSElSQUdBTkEgTEVUVEVSIFNNQUxMIFlVCiszMDg2CUhJUkFHQU5BIExFVFRFUiBZVQorMzA4NwlISVJBR0FOQSBMRVRURVIgU01BTEwgWU8KKzMwODgJSElSQUdBTkEgTEVUVEVSIFlPCiszMDg5CUhJUkFHQU5BIExFVFRFUiBSQQorMzA4QQlISVJBR0FOQSBMRVRURVIgUkkKKzMwOEIJSElSQUdBTkEgTEVUVEVSIFJVCiszMDhDCUhJUkFHQU5BIExFVFRFUiBSRQorMzA4RAlISVJBR0FOQSBMRVRURVIgUk8KKzMwOEUJSElSQUdBTkEgTEVUVEVSIFNNQUxMIFdBCiszMDhGCUhJUkFHQU5BIExFVFRFUiBXQQorMzA5MAlISVJBR0FOQSBMRVRURVIgV0kKKzMwOTEJSElSQUdBTkEgTEVUVEVSIFdFCiszMDkyCUhJUkFHQU5BIExFVFRFUiBXTworMzA5MwlISVJBR0FOQSBMRVRURVIgTgorMzA5NAlISVJBR0FOQSBMRVRURVIgVlUKKzMwOTkJQ09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLCiszMDlBCUNPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBTRU1JLVZPSUNFRCBTT1VORCBNQVJLCiszMDlCCUtBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLCiszMDlDCUtBVEFLQU5BLUhJUkFHQU5BIFNFTUktVk9JQ0VEIFNPVU5EIE1BUksKKzMwOUQJSElSQUdBTkEgSVRFUkFUSU9OIE1BUksKKzMwOUUJSElSQUdBTkEgVk9JQ0VEIElURVJBVElPTiBNQVJLCiszMEExCUtBVEFLQU5BIExFVFRFUiBTTUFMTCBBCiszMEEyCUtBVEFLQU5BIExFVFRFUiBBCiszMEEzCUtBVEFLQU5BIExFVFRFUiBTTUFMTCBJCiszMEE0CUtBVEFLQU5BIExFVFRFUiBJCiszMEE1CUtBVEFLQU5BIExFVFRFUiBTTUFMTCBVCiszMEE2CUtBVEFLQU5BIExFVFRFUiBVCiszMEE3CUtBVEFLQU5BIExFVFRFUiBTTUFMTCBFCiszMEE4CUtBVEFLQU5BIExFVFRFUiBFCiszMEE5CUtBVEFLQU5BIExFVFRFUiBTTUFMTCBPCiszMEFBCUtBVEFLQU5BIExFVFRFUiBPCiszMEFCCUtBVEFLQU5BIExFVFRFUiBLQQorMzBBQwlLQVRBS0FOQSBMRVRURVIgR0EKKzMwQUQJS0FUQUtBTkEgTEVUVEVSIEtJCiszMEFFCUtBVEFLQU5BIExFVFRFUiBHSQorMzBBRglLQVRBS0FOQSBMRVRURVIgS1UKKzMwQjAJS0FUQUtBTkEgTEVUVEVSIEdVCiszMEIxCUtBVEFLQU5BIExFVFRFUiBLRQorMzBCMglLQVRBS0FOQSBMRVRURVIgR0UKKzMwQjMJS0FUQUtBTkEgTEVUVEVSIEtPCiszMEI0CUtBVEFLQU5BIExFVFRFUiBHTworMzBCNQlLQVRBS0FOQSBMRVRURVIgU0EKKzMwQjYJS0FUQUtBTkEgTEVUVEVSIFpBCiszMEI3CUtBVEFLQU5BIExFVFRFUiBTSQorMzBCOAlLQVRBS0FOQSBMRVRURVIgWkkKKzMwQjkJS0FUQUtBTkEgTEVUVEVSIFNVCiszMEJBCUtBVEFLQU5BIExFVFRFUiBaVQorMzBCQglLQVRBS0FOQSBMRVRURVIgU0UKKzMwQkMJS0FUQUtBTkEgTEVUVEVSIFpFCiszMEJECUtBVEFLQU5BIExFVFRFUiBTTworMzBCRQlLQVRBS0FOQSBMRVRURVIgWk8KKzMwQkYJS0FUQUtBTkEgTEVUVEVSIFRBCiszMEMwCUtBVEFLQU5BIExFVFRFUiBEQQorMzBDMQlLQVRBS0FOQSBMRVRURVIgVEkKKzMwQzIJS0FUQUtBTkEgTEVUVEVSIERJCiszMEMzCUtBVEFLQU5BIExFVFRFUiBTTUFMTCBUVQorMzBDNAlLQVRBS0FOQSBMRVRURVIgVFUKKzMwQzUJS0FUQUtBTkEgTEVUVEVSIERVCiszMEM2CUtBVEFLQU5BIExFVFRFUiBURQorMzBDNwlLQVRBS0FOQSBMRVRURVIgREUKKzMwQzgJS0FUQUtBTkEgTEVUVEVSIFRPCiszMEM5CUtBVEFLQU5BIExFVFRFUiBETworMzBDQQlLQVRBS0FOQSBMRVRURVIgTkEKKzMwQ0IJS0FUQUtBTkEgTEVUVEVSIE5JCiszMENDCUtBVEFLQU5BIExFVFRFUiBOVQorMzBDRAlLQVRBS0FOQSBMRVRURVIgTkUKKzMwQ0UJS0FUQUtBTkEgTEVUVEVSIE5PCiszMENGCUtBVEFLQU5BIExFVFRFUiBIQQorMzBEMAlLQVRBS0FOQSBMRVRURVIgQkEKKzMwRDEJS0FUQUtBTkEgTEVUVEVSIFBBCiszMEQyCUtBVEFLQU5BIExFVFRFUiBISQorMzBEMwlLQVRBS0FOQSBMRVRURVIgQkkKKzMwRDQJS0FUQUtBTkEgTEVUVEVSIFBJCiszMEQ1CUtBVEFLQU5BIExFVFRFUiBIVQorMzBENglLQVRBS0FOQSBMRVRURVIgQlUKKzMwRDcJS0FUQUtBTkEgTEVUVEVSIFBVCiszMEQ4CUtBVEFLQU5BIExFVFRFUiBIRQorMzBEOQlLQVRBS0FOQSBMRVRURVIgQkUKKzMwREEJS0FUQUtBTkEgTEVUVEVSIFBFCiszMERCCUtBVEFLQU5BIExFVFRFUiBITworMzBEQwlLQVRBS0FOQSBMRVRURVIgQk8KKzMwREQJS0FUQUtBTkEgTEVUVEVSIFBPCiszMERFCUtBVEFLQU5BIExFVFRFUiBNQQorMzBERglLQVRBS0FOQSBMRVRURVIgTUkKKzMwRTAJS0FUQUtBTkEgTEVUVEVSIE1VCiszMEUxCUtBVEFLQU5BIExFVFRFUiBNRQorMzBFMglLQVRBS0FOQSBMRVRURVIgTU8KKzMwRTMJS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlBCiszMEU0CUtBVEFLQU5BIExFVFRFUiBZQQorMzBFNQlLQVRBS0FOQSBMRVRURVIgU01BTEwgWVUKKzMwRTYJS0FUQUtBTkEgTEVUVEVSIFlVCiszMEU3CUtBVEFLQU5BIExFVFRFUiBTTUFMTCBZTworMzBFOAlLQVRBS0FOQSBMRVRURVIgWU8KKzMwRTkJS0FUQUtBTkEgTEVUVEVSIFJBCiszMEVBCUtBVEFLQU5BIExFVFRFUiBSSQorMzBFQglLQVRBS0FOQSBMRVRURVIgUlUKKzMwRUMJS0FUQUtBTkEgTEVUVEVSIFJFCiszMEVECUtBVEFLQU5BIExFVFRFUiBSTworMzBFRQlLQVRBS0FOQSBMRVRURVIgU01BTEwgV0EKKzMwRUYJS0FUQUtBTkEgTEVUVEVSIFdBCiszMEYwCUtBVEFLQU5BIExFVFRFUiBXSQorMzBGMQlLQVRBS0FOQSBMRVRURVIgV0UKKzMwRjIJS0FUQUtBTkEgTEVUVEVSIFdPCiszMEYzCUtBVEFLQU5BIExFVFRFUiBOCiszMEY0CUtBVEFLQU5BIExFVFRFUiBWVQorMzBGNQlLQVRBS0FOQSBMRVRURVIgU01BTEwgS0EKKzMwRjYJS0FUQUtBTkEgTEVUVEVSIFNNQUxMIEtFCiszMEY3CUtBVEFLQU5BIExFVFRFUiBWQQorMzBGOAlLQVRBS0FOQSBMRVRURVIgVkkKKzMwRjkJS0FUQUtBTkEgTEVUVEVSIFZFCiszMEZBCUtBVEFLQU5BIExFVFRFUiBWTworMzBGQglLQVRBS0FOQSBNSURETEUgRE9UCiszMEZDCUtBVEFLQU5BLUhJUkFHQU5BIFBST0xPTkdFRCBTT1VORCBNQVJLCiszMEZECUtBVEFLQU5BIElURVJBVElPTiBNQVJLCiszMEZFCUtBVEFLQU5BIFZPSUNFRCBJVEVSQVRJT04gTUFSSworMzEwNQlCT1BPTU9GTyBMRVRURVIgQgorMzEwNglCT1BPTU9GTyBMRVRURVIgUAorMzEwNwlCT1BPTU9GTyBMRVRURVIgTQorMzEwOAlCT1BPTU9GTyBMRVRURVIgRgorMzEwOQlCT1BPTU9GTyBMRVRURVIgRAorMzEwQQlCT1BPTU9GTyBMRVRURVIgVAorMzEwQglCT1BPTU9GTyBMRVRURVIgTgorMzEwQwlCT1BPTU9GTyBMRVRURVIgTAorMzEwRAlCT1BPTU9GTyBMRVRURVIgRworMzEwRQlCT1BPTU9GTyBMRVRURVIgSworMzEwRglCT1BPTU9GTyBMRVRURVIgSAorMzExMAlCT1BPTU9GTyBMRVRURVIgSgorMzExMQlCT1BPTU9GTyBMRVRURVIgUQorMzExMglCT1BPTU9GTyBMRVRURVIgWAorMzExMwlCT1BPTU9GTyBMRVRURVIgWkgKKzMxMTQJQk9QT01PRk8gTEVUVEVSIENICiszMTE1CUJPUE9NT0ZPIExFVFRFUiBTSAorMzExNglCT1BPTU9GTyBMRVRURVIgUgorMzExNwlCT1BPTU9GTyBMRVRURVIgWgorMzExOAlCT1BPTU9GTyBMRVRURVIgQworMzExOQlCT1BPTU9GTyBMRVRURVIgUworMzExQQlCT1BPTU9GTyBMRVRURVIgQQorMzExQglCT1BPTU9GTyBMRVRURVIgTworMzExQwlCT1BPTU9GTyBMRVRURVIgRQorMzExRAlCT1BPTU9GTyBMRVRURVIgRUgKKzMxMUUJQk9QT01PRk8gTEVUVEVSIEFJCiszMTFGCUJPUE9NT0ZPIExFVFRFUiBFSQorMzEyMAlCT1BPTU9GTyBMRVRURVIgQVUKKzMxMjEJQk9QT01PRk8gTEVUVEVSIE9VCiszMTIyCUJPUE9NT0ZPIExFVFRFUiBBTgorMzEyMwlCT1BPTU9GTyBMRVRURVIgRU4KKzMxMjQJQk9QT01PRk8gTEVUVEVSIEFORworMzEyNQlCT1BPTU9GTyBMRVRURVIgRU5HCiszMTI2CUJPUE9NT0ZPIExFVFRFUiBFUgorMzEyNwlCT1BPTU9GTyBMRVRURVIgSQorMzEyOAlCT1BPTU9GTyBMRVRURVIgVQorMzEyOQlCT1BPTU9GTyBMRVRURVIgSVUKKzMxMkEJQk9QT01PRk8gTEVUVEVSIFYKKzMxMkIJQk9QT01PRk8gTEVUVEVSIE5HCiszMTJDCUJPUE9NT0ZPIExFVFRFUiBHTgorMzEzMQlIQU5HVUwgTEVUVEVSIEtJWUVPSworMzEzMglIQU5HVUwgTEVUVEVSIFNTQU5HS0lZRU9LCiszMTMzCUhBTkdVTCBMRVRURVIgS0lZRU9LLVNJT1MKKzMxMzQJSEFOR1VMIExFVFRFUiBOSUVVTgorMzEzNQlIQU5HVUwgTEVUVEVSIE5JRVVOLUNJRVVDCiszMTM2CUhBTkdVTCBMRVRURVIgTklFVU4tSElFVUgKKzMxMzcJSEFOR1VMIExFVFRFUiBUSUtFVVQKKzMxMzgJSEFOR1VMIExFVFRFUiBTU0FOR1RJS0VVVAorMzEzOQlIQU5HVUwgTEVUVEVSIFJJRVVMCiszMTNBCUhBTkdVTCBMRVRURVIgUklFVUwtS0lZRU9LCiszMTNCCUhBTkdVTCBMRVRURVIgUklFVUwtTUlFVU0KKzMxM0MJSEFOR1VMIExFVFRFUiBSSUVVTC1QSUVVUAorMzEzRAlIQU5HVUwgTEVUVEVSIFJJRVVMLVNJT1MKKzMxM0UJSEFOR1VMIExFVFRFUiBSSUVVTC1USElFVVRICiszMTNGCUhBTkdVTCBMRVRURVIgUklFVUwtUEhJRVVQSAorMzE0MAlIQU5HVUwgTEVUVEVSIFJJRVVMLUhJRVVICiszMTQxCUhBTkdVTCBMRVRURVIgTUlFVU0KKzMxNDIJSEFOR1VMIExFVFRFUiBQSUVVUAorMzE0MwlIQU5HVUwgTEVUVEVSIFNTQU5HUElFVVAKKzMxNDQJSEFOR1VMIExFVFRFUiBQSUVVUC1TSU9TCiszMTQ1CUhBTkdVTCBMRVRURVIgU0lPUworMzE0NglIQU5HVUwgTEVUVEVSIFNTQU5HU0lPUworMzE0NwlIQU5HVUwgTEVUVEVSIElFVU5HCiszMTQ4CUhBTkdVTCBMRVRURVIgQ0lFVUMKKzMxNDkJSEFOR1VMIExFVFRFUiBTU0FOR0NJRVVDCiszMTRBCUhBTkdVTCBMRVRURVIgQ0hJRVVDSAorMzE0QglIQU5HVUwgTEVUVEVSIEtISUVVS0gKKzMxNEMJSEFOR1VMIExFVFRFUiBUSElFVVRICiszMTRECUhBTkdVTCBMRVRURVIgUEhJRVVQSAorMzE0RQlIQU5HVUwgTEVUVEVSIEhJRVVICiszMTRGCUhBTkdVTCBMRVRURVIgQQorMzE1MAlIQU5HVUwgTEVUVEVSIEFFCiszMTUxCUhBTkdVTCBMRVRURVIgWUEKKzMxNTIJSEFOR1VMIExFVFRFUiBZQUUKKzMxNTMJSEFOR1VMIExFVFRFUiBFTworMzE1NAlIQU5HVUwgTEVUVEVSIEUKKzMxNTUJSEFOR1VMIExFVFRFUiBZRU8KKzMxNTYJSEFOR1VMIExFVFRFUiBZRQorMzE1NwlIQU5HVUwgTEVUVEVSIE8KKzMxNTgJSEFOR1VMIExFVFRFUiBXQQorMzE1OQlIQU5HVUwgTEVUVEVSIFdBRQorMzE1QQlIQU5HVUwgTEVUVEVSIE9FCiszMTVCCUhBTkdVTCBMRVRURVIgWU8KKzMxNUMJSEFOR1VMIExFVFRFUiBVCiszMTVECUhBTkdVTCBMRVRURVIgV0VPCiszMTVFCUhBTkdVTCBMRVRURVIgV0UKKzMxNUYJSEFOR1VMIExFVFRFUiBXSQorMzE2MAlIQU5HVUwgTEVUVEVSIFlVCiszMTYxCUhBTkdVTCBMRVRURVIgRVUKKzMxNjIJSEFOR1VMIExFVFRFUiBZSQorMzE2MwlIQU5HVUwgTEVUVEVSIEkKKzMxNjQJSEFOR1VMIEZJTExFUgorMzE2NQlIQU5HVUwgTEVUVEVSIFNTQU5HTklFVU4KKzMxNjYJSEFOR1VMIExFVFRFUiBOSUVVTi1USUtFVVQKKzMxNjcJSEFOR1VMIExFVFRFUiBOSUVVTi1TSU9TCiszMTY4CUhBTkdVTCBMRVRURVIgTklFVU4tUEFOU0lPUworMzE2OQlIQU5HVUwgTEVUVEVSIFJJRVVMLUtJWUVPSy1TSU9TCiszMTZBCUhBTkdVTCBMRVRURVIgUklFVUwtVElLRVVUCiszMTZCCUhBTkdVTCBMRVRURVIgUklFVUwtUElFVVAtU0lPUworMzE2QwlIQU5HVUwgTEVUVEVSIFJJRVVMLVBBTlNJT1MKKzMxNkQJSEFOR1VMIExFVFRFUiBSSUVVTC1ZRU9SSU5ISUVVSAorMzE2RQlIQU5HVUwgTEVUVEVSIE1JRVVNLVBJRVVQCiszMTZGCUhBTkdVTCBMRVRURVIgTUlFVU0tU0lPUworMzE3MAlIQU5HVUwgTEVUVEVSIE1JRVVNLVBBTlNJT1MKKzMxNzEJSEFOR1VMIExFVFRFUiBLQVBZRU9VTk1JRVVNCiszMTcyCUhBTkdVTCBMRVRURVIgUElFVVAtS0lZRU9LCiszMTczCUhBTkdVTCBMRVRURVIgUElFVVAtVElLRVVUCiszMTc0CUhBTkdVTCBMRVRURVIgUElFVVAtU0lPUy1LSVlFT0sKKzMxNzUJSEFOR1VMIExFVFRFUiBQSUVVUC1TSU9TLVRJS0VVVAorMzE3NglIQU5HVUwgTEVUVEVSIFBJRVVQLUNJRVVDCiszMTc3CUhBTkdVTCBMRVRURVIgUElFVVAtVEhJRVVUSAorMzE3OAlIQU5HVUwgTEVUVEVSIEtBUFlFT1VOUElFVVAKKzMxNzkJSEFOR1VMIExFVFRFUiBLQVBZRU9VTlNTQU5HUElFVVAKKzMxN0EJSEFOR1VMIExFVFRFUiBTSU9TLUtJWUVPSworMzE3QglIQU5HVUwgTEVUVEVSIFNJT1MtTklFVU4KKzMxN0MJSEFOR1VMIExFVFRFUiBTSU9TLVRJS0VVVAorMzE3RAlIQU5HVUwgTEVUVEVSIFNJT1MtUElFVVAKKzMxN0UJSEFOR1VMIExFVFRFUiBTSU9TLUNJRVVDCiszMTdGCUhBTkdVTCBMRVRURVIgUEFOU0lPUworMzE4MAlIQU5HVUwgTEVUVEVSIFNTQU5HSUVVTkcKKzMxODEJSEFOR1VMIExFVFRFUiBZRVNJRVVORworMzE4MglIQU5HVUwgTEVUVEVSIFlFU0lFVU5HLVNJT1MKKzMxODMJSEFOR1VMIExFVFRFUiBZRVNJRVVORy1QQU5TSU9TCiszMTg0CUhBTkdVTCBMRVRURVIgS0FQWUVPVU5QSElFVVBICiszMTg1CUhBTkdVTCBMRVRURVIgU1NBTkdISUVVSAorMzE4NglIQU5HVUwgTEVUVEVSIFlFT1JJTkhJRVVICiszMTg3CUhBTkdVTCBMRVRURVIgWU8tWUEKKzMxODgJSEFOR1VMIExFVFRFUiBZTy1ZQUUKKzMxODkJSEFOR1VMIExFVFRFUiBZTy1JCiszMThBCUhBTkdVTCBMRVRURVIgWVUtWUVPCiszMThCCUhBTkdVTCBMRVRURVIgWVUtWUUKKzMxOEMJSEFOR1VMIExFVFRFUiBZVS1JCiszMThECUhBTkdVTCBMRVRURVIgQVJBRUEKKzMxOEUJSEFOR1VMIExFVFRFUiBBUkFFQUUKKzMxOTAJSURFT0dSQVBISUMgQU5OT1RBVElPTiBMSU5LSU5HIE1BUksKKzMxOTEJSURFT0dSQVBISUMgQU5OT1RBVElPTiBSRVZFUlNFIE1BUksKKzMxOTIJSURFT0dSQVBISUMgQU5OT1RBVElPTiBPTkUgTUFSSworMzE5MwlJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFRXTyBNQVJLCiszMTk0CUlERU9HUkFQSElDIEFOTk9UQVRJT04gVEhSRUUgTUFSSworMzE5NQlJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEZPVVIgTUFSSworMzE5NglJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFRPUCBNQVJLCiszMTk3CUlERU9HUkFQSElDIEFOTk9UQVRJT04gTUlERExFIE1BUksKKzMxOTgJSURFT0dSQVBISUMgQU5OT1RBVElPTiBCT1RUT00gTUFSSworMzE5OQlJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEZJUlNUIE1BUksKKzMxOUEJSURFT0dSQVBISUMgQU5OT1RBVElPTiBTRUNPTkQgTUFSSworMzE5QglJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFRISVJEIE1BUksKKzMxOUMJSURFT0dSQVBISUMgQU5OT1RBVElPTiBGT1VSVEggTUFSSworMzE5RAlJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEhFQVZFTiBNQVJLCiszMTlFCUlERU9HUkFQSElDIEFOTk9UQVRJT04gRUFSVEggTUFSSworMzE5RglJREVPR1JBUEhJQyBBTk5PVEFUSU9OIE1BTiBNQVJLCiszMjAwCVBBUkVOVEhFU0laRUQgSEFOR1VMIEtJWUVPSworMzIwMQlQQVJFTlRIRVNJWkVEIEhBTkdVTCBOSUVVTgorMzIwMglQQVJFTlRIRVNJWkVEIEhBTkdVTCBUSUtFVVQKKzMyMDMJUEFSRU5USEVTSVpFRCBIQU5HVUwgUklFVUwKKzMyMDQJUEFSRU5USEVTSVpFRCBIQU5HVUwgTUlFVU0KKzMyMDUJUEFSRU5USEVTSVpFRCBIQU5HVUwgUElFVVAKKzMyMDYJUEFSRU5USEVTSVpFRCBIQU5HVUwgU0lPUworMzIwNwlQQVJFTlRIRVNJWkVEIEhBTkdVTCBJRVVORworMzIwOAlQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSUVVQworMzIwOQlQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSElFVUNICiszMjBBCVBBUkVOVEhFU0laRUQgSEFOR1VMIEtISUVVS0gKKzMyMEIJUEFSRU5USEVTSVpFRCBIQU5HVUwgVEhJRVVUSAorMzIwQwlQQVJFTlRIRVNJWkVEIEhBTkdVTCBQSElFVVBICiszMjBECVBBUkVOVEhFU0laRUQgSEFOR1VMIEhJRVVICiszMjBFCVBBUkVOVEhFU0laRUQgSEFOR1VMIEtJWUVPSyBBCiszMjBGCVBBUkVOVEhFU0laRUQgSEFOR1VMIE5JRVVOIEEKKzMyMTAJUEFSRU5USEVTSVpFRCBIQU5HVUwgVElLRVVUIEEKKzMyMTEJUEFSRU5USEVTSVpFRCBIQU5HVUwgUklFVUwgQQorMzIxMglQQVJFTlRIRVNJWkVEIEhBTkdVTCBNSUVVTSBBCiszMjEzCVBBUkVOVEhFU0laRUQgSEFOR1VMIFBJRVVQIEEKKzMyMTQJUEFSRU5USEVTSVpFRCBIQU5HVUwgU0lPUyBBCiszMjE1CVBBUkVOVEhFU0laRUQgSEFOR1VMIElFVU5HIEEKKzMyMTYJUEFSRU5USEVTSVpFRCBIQU5HVUwgQ0lFVUMgQQorMzIxNwlQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSElFVUNIIEEKKzMyMTgJUEFSRU5USEVTSVpFRCBIQU5HVUwgS0hJRVVLSCBBCiszMjE5CVBBUkVOVEhFU0laRUQgSEFOR1VMIFRISUVVVEggQQorMzIxQQlQQVJFTlRIRVNJWkVEIEhBTkdVTCBQSElFVVBIIEEKKzMyMUIJUEFSRU5USEVTSVpFRCBIQU5HVUwgSElFVUggQQorMzIxQwlQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSUVVQyBVCiszMjIwCVBBUkVOVEhFU0laRUQgSURFT0dSQVBIIE9ORQorMzIyMQlQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBUV08KKzMyMjIJUEFSRU5USEVTSVpFRCBJREVPR1JBUEggVEhSRUUKKzMyMjMJUEFSRU5USEVTSVpFRCBJREVPR1JBUEggRk9VUgorMzIyNAlQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBGSVZFCiszMjI1CVBBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNJWAorMzIyNglQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTRVZFTgorMzIyNwlQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBFSUdIVAorMzIyOAlQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBOSU5FCiszMjI5CVBBUkVOVEhFU0laRUQgSURFT0dSQVBIIFRFTgorMzIyQQlQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBNT09OCiszMjJCCVBBUkVOVEhFU0laRUQgSURFT0dSQVBIIEZJUkUKKzMyMkMJUEFSRU5USEVTSVpFRCBJREVPR1JBUEggV0FURVIKKzMyMkQJUEFSRU5USEVTSVpFRCBJREVPR1JBUEggV09PRAorMzIyRQlQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBNRVRBTAorMzIyRglQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBFQVJUSAorMzIzMAlQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTVU4KKzMyMzEJUEFSRU5USEVTSVpFRCBJREVPR1JBUEggU1RPQ0sKKzMyMzIJUEFSRU5USEVTSVpFRCBJREVPR1JBUEggSEFWRQorMzIzMwlQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTT0NJRVRZCiszMjM0CVBBUkVOVEhFU0laRUQgSURFT0dSQVBIIE5BTUUKKzMyMzUJUEFSRU5USEVTSVpFRCBJREVPR1JBUEggU1BFQ0lBTAorMzIzNglQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBGSU5BTkNJQUwKKzMyMzcJUEFSRU5USEVTSVpFRCBJREVPR1JBUEggQ09OR1JBVFVMQVRJT04KKzMyMzgJUEFSRU5USEVTSVpFRCBJREVPR1JBUEggTEFCT1IKKzMyMzkJUEFSRU5USEVTSVpFRCBJREVPR1JBUEggUkVQUkVTRU5UCiszMjNBCVBBUkVOVEhFU0laRUQgSURFT0dSQVBIIENBTEwKKzMyM0IJUEFSRU5USEVTSVpFRCBJREVPR1JBUEggU1RVRFkKKzMyM0MJUEFSRU5USEVTSVpFRCBJREVPR1JBUEggU1VQRVJWSVNFCiszMjNECVBBUkVOVEhFU0laRUQgSURFT0dSQVBIIEVOVEVSUFJJU0UKKzMyM0UJUEFSRU5USEVTSVpFRCBJREVPR1JBUEggUkVTT1VSQ0UKKzMyM0YJUEFSRU5USEVTSVpFRCBJREVPR1JBUEggQUxMSUFOQ0UKKzMyNDAJUEFSRU5USEVTSVpFRCBJREVPR1JBUEggRkVTVElWQUwKKzMyNDEJUEFSRU5USEVTSVpFRCBJREVPR1JBUEggUkVTVAorMzI0MglQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTRUxGCiszMjQzCVBBUkVOVEhFU0laRUQgSURFT0dSQVBIIFJFQUNICiszMjYwCUNJUkNMRUQgSEFOR1VMIEtJWUVPSworMzI2MQlDSVJDTEVEIEhBTkdVTCBOSUVVTgorMzI2MglDSVJDTEVEIEhBTkdVTCBUSUtFVVQKKzMyNjMJQ0lSQ0xFRCBIQU5HVUwgUklFVUwKKzMyNjQJQ0lSQ0xFRCBIQU5HVUwgTUlFVU0KKzMyNjUJQ0lSQ0xFRCBIQU5HVUwgUElFVVAKKzMyNjYJQ0lSQ0xFRCBIQU5HVUwgU0lPUworMzI2NwlDSVJDTEVEIEhBTkdVTCBJRVVORworMzI2OAlDSVJDTEVEIEhBTkdVTCBDSUVVQworMzI2OQlDSVJDTEVEIEhBTkdVTCBDSElFVUNICiszMjZBCUNJUkNMRUQgSEFOR1VMIEtISUVVS0gKKzMyNkIJQ0lSQ0xFRCBIQU5HVUwgVEhJRVVUSAorMzI2QwlDSVJDTEVEIEhBTkdVTCBQSElFVVBICiszMjZECUNJUkNMRUQgSEFOR1VMIEhJRVVICiszMjZFCUNJUkNMRUQgSEFOR1VMIEtJWUVPSyBBCiszMjZGCUNJUkNMRUQgSEFOR1VMIE5JRVVOIEEKKzMyNzAJQ0lSQ0xFRCBIQU5HVUwgVElLRVVUIEEKKzMyNzEJQ0lSQ0xFRCBIQU5HVUwgUklFVUwgQQorMzI3MglDSVJDTEVEIEhBTkdVTCBNSUVVTSBBCiszMjczCUNJUkNMRUQgSEFOR1VMIFBJRVVQIEEKKzMyNzQJQ0lSQ0xFRCBIQU5HVUwgU0lPUyBBCiszMjc1CUNJUkNMRUQgSEFOR1VMIElFVU5HIEEKKzMyNzYJQ0lSQ0xFRCBIQU5HVUwgQ0lFVUMgQQorMzI3NwlDSVJDTEVEIEhBTkdVTCBDSElFVUNIIEEKKzMyNzgJQ0lSQ0xFRCBIQU5HVUwgS0hJRVVLSCBBCiszMjc5CUNJUkNMRUQgSEFOR1VMIFRISUVVVEggQQorMzI3QQlDSVJDTEVEIEhBTkdVTCBQSElFVVBIIEEKKzMyN0IJQ0lSQ0xFRCBIQU5HVUwgSElFVUggQQorMzI3RglLT1JFQU4gU1RBTkRBUkQgU1lNQk9MCiszMjgwCUNJUkNMRUQgSURFT0dSQVBIIE9ORQorMzI4MQlDSVJDTEVEIElERU9HUkFQSCBUV08KKzMyODIJQ0lSQ0xFRCBJREVPR1JBUEggVEhSRUUKKzMyODMJQ0lSQ0xFRCBJREVPR1JBUEggRk9VUgorMzI4NAlDSVJDTEVEIElERU9HUkFQSCBGSVZFCiszMjg1CUNJUkNMRUQgSURFT0dSQVBIIFNJWAorMzI4NglDSVJDTEVEIElERU9HUkFQSCBTRVZFTgorMzI4NwlDSVJDTEVEIElERU9HUkFQSCBFSUdIVAorMzI4OAlDSVJDTEVEIElERU9HUkFQSCBOSU5FCiszMjg5CUNJUkNMRUQgSURFT0dSQVBIIFRFTgorMzI4QQlDSVJDTEVEIElERU9HUkFQSCBNT09OCiszMjhCCUNJUkNMRUQgSURFT0dSQVBIIEZJUkUKKzMyOEMJQ0lSQ0xFRCBJREVPR1JBUEggV0FURVIKKzMyOEQJQ0lSQ0xFRCBJREVPR1JBUEggV09PRAorMzI4RQlDSVJDTEVEIElERU9HUkFQSCBNRVRBTAorMzI4RglDSVJDTEVEIElERU9HUkFQSCBFQVJUSAorMzI5MAlDSVJDTEVEIElERU9HUkFQSCBTVU4KKzMyOTEJQ0lSQ0xFRCBJREVPR1JBUEggU1RPQ0sKKzMyOTIJQ0lSQ0xFRCBJREVPR1JBUEggSEFWRQorMzI5MwlDSVJDTEVEIElERU9HUkFQSCBTT0NJRVRZCiszMjk0CUNJUkNMRUQgSURFT0dSQVBIIE5BTUUKKzMyOTUJQ0lSQ0xFRCBJREVPR1JBUEggU1BFQ0lBTAorMzI5NglDSVJDTEVEIElERU9HUkFQSCBGSU5BTkNJQUwKKzMyOTcJQ0lSQ0xFRCBJREVPR1JBUEggQ09OR1JBVFVMQVRJT04KKzMyOTgJQ0lSQ0xFRCBJREVPR1JBUEggTEFCT1IKKzMyOTkJQ0lSQ0xFRCBJREVPR1JBUEggU0VDUkVUCiszMjlBCUNJUkNMRUQgSURFT0dSQVBIIE1BTEUKKzMyOUIJQ0lSQ0xFRCBJREVPR1JBUEggRkVNQUxFCiszMjlDCUNJUkNMRUQgSURFT0dSQVBIIFNVSVRBQkxFCiszMjlECUNJUkNMRUQgSURFT0dSQVBIIEVYQ0VMTEVOVAorMzI5RQlDSVJDTEVEIElERU9HUkFQSCBQUklOVAorMzI5RglDSVJDTEVEIElERU9HUkFQSCBBVFRFTlRJT04KKzMyQTAJQ0lSQ0xFRCBJREVPR1JBUEggSVRFTQorMzJBMQlDSVJDTEVEIElERU9HUkFQSCBSRVNUCiszMkEyCUNJUkNMRUQgSURFT0dSQVBIIENPUFkKKzMyQTMJQ0lSQ0xFRCBJREVPR1JBUEggQ09SUkVDVAorMzJBNAlDSVJDTEVEIElERU9HUkFQSCBISUdICiszMkE1CUNJUkNMRUQgSURFT0dSQVBIIENFTlRSRQorMzJBNglDSVJDTEVEIElERU9HUkFQSCBMT1cKKzMyQTcJQ0lSQ0xFRCBJREVPR1JBUEggTEVGVAorMzJBOAlDSVJDTEVEIElERU9HUkFQSCBSSUdIVAorMzJBOQlDSVJDTEVEIElERU9HUkFQSCBNRURJQ0lORQorMzJBQQlDSVJDTEVEIElERU9HUkFQSCBSRUxJR0lPTgorMzJBQglDSVJDTEVEIElERU9HUkFQSCBTVFVEWQorMzJBQwlDSVJDTEVEIElERU9HUkFQSCBTVVBFUlZJU0UKKzMyQUQJQ0lSQ0xFRCBJREVPR1JBUEggRU5URVJQUklTRQorMzJBRQlDSVJDTEVEIElERU9HUkFQSCBSRVNPVVJDRQorMzJBRglDSVJDTEVEIElERU9HUkFQSCBBTExJQU5DRQorMzJCMAlDSVJDTEVEIElERU9HUkFQSCBOSUdIVAorMzJDMAlJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBKQU5VQVJZCiszMkMxCUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEZFQlJVQVJZCiszMkMyCUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIE1BUkNICiszMkMzCUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEFQUklMCiszMkM0CUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIE1BWQorMzJDNQlJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBKVU5FCiszMkM2CUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEpVTFkKKzMyQzcJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgQVVHVVNUCiszMkM4CUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIFNFUFRFTUJFUgorMzJDOQlJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBPQ1RPQkVSCiszMkNBCUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIE5PVkVNQkVSCiszMkNCCUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERFQ0VNQkVSCiszMkQwCUNJUkNMRUQgS0FUQUtBTkEgQQorMzJEMQlDSVJDTEVEIEtBVEFLQU5BIEkKKzMyRDIJQ0lSQ0xFRCBLQVRBS0FOQSBVCiszMkQzCUNJUkNMRUQgS0FUQUtBTkEgRQorMzJENAlDSVJDTEVEIEtBVEFLQU5BIE8KKzMyRDUJQ0lSQ0xFRCBLQVRBS0FOQSBLQQorMzJENglDSVJDTEVEIEtBVEFLQU5BIEtJCiszMkQ3CUNJUkNMRUQgS0FUQUtBTkEgS1UKKzMyRDgJQ0lSQ0xFRCBLQVRBS0FOQSBLRQorMzJEOQlDSVJDTEVEIEtBVEFLQU5BIEtPCiszMkRBCUNJUkNMRUQgS0FUQUtBTkEgU0EKKzMyREIJQ0lSQ0xFRCBLQVRBS0FOQSBTSQorMzJEQwlDSVJDTEVEIEtBVEFLQU5BIFNVCiszMkRECUNJUkNMRUQgS0FUQUtBTkEgU0UKKzMyREUJQ0lSQ0xFRCBLQVRBS0FOQSBTTworMzJERglDSVJDTEVEIEtBVEFLQU5BIFRBCiszMkUwCUNJUkNMRUQgS0FUQUtBTkEgVEkKKzMyRTEJQ0lSQ0xFRCBLQVRBS0FOQSBUVQorMzJFMglDSVJDTEVEIEtBVEFLQU5BIFRFCiszMkUzCUNJUkNMRUQgS0FUQUtBTkEgVE8KKzMyRTQJQ0lSQ0xFRCBLQVRBS0FOQSBOQQorMzJFNQlDSVJDTEVEIEtBVEFLQU5BIE5JCiszMkU2CUNJUkNMRUQgS0FUQUtBTkEgTlUKKzMyRTcJQ0lSQ0xFRCBLQVRBS0FOQSBORQorMzJFOAlDSVJDTEVEIEtBVEFLQU5BIE5PCiszMkU5CUNJUkNMRUQgS0FUQUtBTkEgSEEKKzMyRUEJQ0lSQ0xFRCBLQVRBS0FOQSBISQorMzJFQglDSVJDTEVEIEtBVEFLQU5BIEhVCiszMkVDCUNJUkNMRUQgS0FUQUtBTkEgSEUKKzMyRUQJQ0lSQ0xFRCBLQVRBS0FOQSBITworMzJFRQlDSVJDTEVEIEtBVEFLQU5BIE1BCiszMkVGCUNJUkNMRUQgS0FUQUtBTkEgTUkKKzMyRjAJQ0lSQ0xFRCBLQVRBS0FOQSBNVQorMzJGMQlDSVJDTEVEIEtBVEFLQU5BIE1FCiszMkYyCUNJUkNMRUQgS0FUQUtBTkEgTU8KKzMyRjMJQ0lSQ0xFRCBLQVRBS0FOQSBZQQorMzJGNAlDSVJDTEVEIEtBVEFLQU5BIFlVCiszMkY1CUNJUkNMRUQgS0FUQUtBTkEgWU8KKzMyRjYJQ0lSQ0xFRCBLQVRBS0FOQSBSQQorMzJGNwlDSVJDTEVEIEtBVEFLQU5BIFJJCiszMkY4CUNJUkNMRUQgS0FUQUtBTkEgUlUKKzMyRjkJQ0lSQ0xFRCBLQVRBS0FOQSBSRQorMzJGQQlDSVJDTEVEIEtBVEFLQU5BIFJPCiszMkZCCUNJUkNMRUQgS0FUQUtBTkEgV0EKKzMyRkMJQ0lSQ0xFRCBLQVRBS0FOQSBXSQorMzJGRAlDSVJDTEVEIEtBVEFLQU5BIFdFCiszMkZFCUNJUkNMRUQgS0FUQUtBTkEgV08KKzMzMDAJU1FVQVJFIEFQQUFUTworMzMwMQlTUVVBUkUgQVJVSFVBCiszMzAyCVNRVUFSRSBBTlBFQQorMzMwMwlTUVVBUkUgQUFSVQorMzMwNAlTUVVBUkUgSU5JTkdVCiszMzA1CVNRVUFSRSBJTlRJCiszMzA2CVNRVUFSRSBVT04KKzMzMDcJU1FVQVJFIEVTVUtVVURPCiszMzA4CVNRVUFSRSBFRUtBQQorMzMwOQlTUVVBUkUgT05TVQorMzMwQQlTUVVBUkUgT09NVQorMzMwQglTUVVBUkUgS0FJUkkKKzMzMEMJU1FVQVJFIEtBUkFUVE8KKzMzMEQJU1FVQVJFIEtBUk9SSUkKKzMzMEUJU1FVQVJFIEdBUk9OCiszMzBGCVNRVUFSRSBHQU5NQQorMzMxMAlTUVVBUkUgR0lHQQorMzMxMQlTUVVBUkUgR0lOSUkKKzMzMTIJU1FVQVJFIEtZVVJJSQorMzMxMwlTUVVBUkUgR0lSVURBQQorMzMxNAlTUVVBUkUgS0lSTworMzMxNQlTUVVBUkUgS0lST0dVUkFNVQorMzMxNglTUVVBUkUgS0lST01FRVRPUlUKKzMzMTcJU1FVQVJFIEtJUk9XQVRUTworMzMxOAlTUVVBUkUgR1VSQU1VCiszMzE5CVNRVUFSRSBHVVJBTVVUT04KKzMzMUEJU1FVQVJFIEtVUlVaRUlSTworMzMxQglTUVVBUkUgS1VST09ORQorMzMxQwlTUVVBUkUgS0VFU1UKKzMzMUQJU1FVQVJFIEtPUlVOQQorMzMxRQlTUVVBUkUgS09PUE8KKzMzMUYJU1FVQVJFIFNBSUtVUlUKKzMzMjAJU1FVQVJFIFNBTlRJSU1VCiszMzIxCVNRVUFSRSBTSVJJTkdVCiszMzIyCVNRVUFSRSBTRU5USQorMzMyMwlTUVVBUkUgU0VOVE8KKzMzMjQJU1FVQVJFIERBQVNVCiszMzI1CVNRVUFSRSBERVNJCiszMzI2CVNRVUFSRSBET1JVCiszMzI3CVNRVUFSRSBUT04KKzMzMjgJU1FVQVJFIE5BTk8KKzMzMjkJU1FVQVJFIE5PVFRPCiszMzJBCVNRVUFSRSBIQUlUVQorMzMyQglTUVVBUkUgUEFBU0VOVE8KKzMzMkMJU1FVQVJFIFBBQVRVCiszMzJECVNRVUFSRSBCQUFSRVJVCiszMzJFCVNRVUFSRSBQSUFTVVRPUlUKKzMzMkYJU1FVQVJFIFBJS1VSVQorMzMzMAlTUVVBUkUgUElLTworMzMzMQlTUVVBUkUgQklSVQorMzMzMglTUVVBUkUgSFVBUkFERE8KKzMzMzMJU1FVQVJFIEhVSUlUTworMzMzNAlTUVVBUkUgQlVTU1lFUlUKKzMzMzUJU1FVQVJFIEhVUkFOCiszMzM2CVNRVUFSRSBIRUtVVEFBUlUKKzMzMzcJU1FVQVJFIFBFU08KKzMzMzgJU1FVQVJFIFBFTklISQorMzMzOQlTUVVBUkUgSEVSVVRVCiszMzNBCVNRVUFSRSBQRU5TVQorMzMzQglTUVVBUkUgUEVFWkkKKzMzM0MJU1FVQVJFIEJFRVRBCiszMzNECVNRVUFSRSBQT0lOVE8KKzMzM0UJU1FVQVJFIEJPUlVUTworMzMzRglTUVVBUkUgSE9OCiszMzQwCVNRVUFSRSBQT05ETworMzM0MQlTUVVBUkUgSE9PUlUKKzMzNDIJU1FVQVJFIEhPT04KKzMzNDMJU1FVQVJFIE1BSUtVUk8KKzMzNDQJU1FVQVJFIE1BSVJVCiszMzQ1CVNRVUFSRSBNQUhIQQorMzM0NglTUVVBUkUgTUFSVUtVCiszMzQ3CVNRVUFSRSBNQU5TWU9OCiszMzQ4CVNRVUFSRSBNSUtVUk9OCiszMzQ5CVNRVUFSRSBNSVJJCiszMzRBCVNRVUFSRSBNSVJJQkFBUlUKKzMzNEIJU1FVQVJFIE1FR0EKKzMzNEMJU1FVQVJFIE1FR0FUT04KKzMzNEQJU1FVQVJFIE1FRVRPUlUKKzMzNEUJU1FVQVJFIFlBQURPCiszMzRGCVNRVUFSRSBZQUFSVQorMzM1MAlTUVVBUkUgWVVBTgorMzM1MQlTUVVBUkUgUklUVE9SVQorMzM1MglTUVVBUkUgUklSQQorMzM1MwlTUVVBUkUgUlVQSUkKKzMzNTQJU1FVQVJFIFJVVUJVUlUKKzMzNTUJU1FVQVJFIFJFTVUKKzMzNTYJU1FVQVJFIFJFTlRPR0VOCiszMzU3CVNRVUFSRSBXQVRUTworMzM1OAlJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFpFUk8KKzMzNTkJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBPTkUKKzMzNUEJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV08KKzMzNUIJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUSFJFRQorMzM1QwlJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEZPVVIKKzMzNUQJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBGSVZFCiszMzVFCUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgU0lYCiszMzVGCUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgU0VWRU4KKzMzNjAJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBFSUdIVAorMzM2MQlJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIE5JTkUKKzMzNjIJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBURU4KKzMzNjMJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBFTEVWRU4KKzMzNjQJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV0VMVkUKKzMzNjUJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUSElSVEVFTgorMzM2NglJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEZPVVJURUVOCiszMzY3CUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgRklGVEVFTgorMzM2OAlJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFNJWFRFRU4KKzMzNjkJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBTRVZFTlRFRU4KKzMzNkEJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBFSUdIVEVFTgorMzM2QglJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIE5JTkVURUVOCiszMzZDCUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVFdFTlRZCiszMzZECUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVFdFTlRZLU9ORQorMzM2RQlJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRU5UWS1UV08KKzMzNkYJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV0VOVFktVEhSRUUKKzMzNzAJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV0VOVFktRk9VUgorMzM3MQlTUVVBUkUgSFBBCiszMzcyCVNRVUFSRSBEQQorMzM3MwlTUVVBUkUgQVUKKzMzNzQJU1FVQVJFIEJBUgorMzM3NQlTUVVBUkUgT1YKKzMzNzYJU1FVQVJFIFBDCiszMzdCCVNRVUFSRSBFUkEgTkFNRSBIRUlTRUkKKzMzN0MJU1FVQVJFIEVSQSBOQU1FIFNZT1VXQQorMzM3RAlTUVVBUkUgRVJBIE5BTUUgVEFJU1lPVQorMzM3RQlTUVVBUkUgRVJBIE5BTUUgTUVJWkkKKzMzN0YJU1FVQVJFIENPUlBPUkFUSU9OCiszMzgwCVNRVUFSRSBQQSBBTVBTCiszMzgxCVNRVUFSRSBOQQorMzM4MglTUVVBUkUgTVUgQQorMzM4MwlTUVVBUkUgTUEKKzMzODQJU1FVQVJFIEtBCiszMzg1CVNRVUFSRSBLQgorMzM4NglTUVVBUkUgTUIKKzMzODcJU1FVQVJFIEdCCiszMzg4CVNRVUFSRSBDQUwKKzMzODkJU1FVQVJFIEtDQUwKKzMzOEEJU1FVQVJFIFBGCiszMzhCCVNRVUFSRSBORgorMzM4QwlTUVVBUkUgTVUgRgorMzM4RAlTUVVBUkUgTVUgRworMzM4RQlTUVVBUkUgTUcKKzMzOEYJU1FVQVJFIEtHCiszMzkwCVNRVUFSRSBIWgorMzM5MQlTUVVBUkUgS0haCiszMzkyCVNRVUFSRSBNSFoKKzMzOTMJU1FVQVJFIEdIWgorMzM5NAlTUVVBUkUgVEhaCiszMzk1CVNRVUFSRSBNVSBMCiszMzk2CVNRVUFSRSBNTAorMzM5NwlTUVVBUkUgREwKKzMzOTgJU1FVQVJFIEtMCiszMzk5CVNRVUFSRSBGTQorMzM5QQlTUVVBUkUgTk0KKzMzOUIJU1FVQVJFIE1VIE0KKzMzOUMJU1FVQVJFIE1NCiszMzlECVNRVUFSRSBDTQorMzM5RQlTUVVBUkUgS00KKzMzOUYJU1FVQVJFIE1NIFNRVUFSRUQKKzMzQTAJU1FVQVJFIENNIFNRVUFSRUQKKzMzQTEJU1FVQVJFIE0gU1FVQVJFRAorMzNBMglTUVVBUkUgS00gU1FVQVJFRAorMzNBMwlTUVVBUkUgTU0gQ1VCRUQKKzMzQTQJU1FVQVJFIENNIENVQkVECiszM0E1CVNRVUFSRSBNIENVQkVECiszM0E2CVNRVUFSRSBLTSBDVUJFRAorMzNBNwlTUVVBUkUgTSBPVkVSIFMKKzMzQTgJU1FVQVJFIE0gT1ZFUiBTIFNRVUFSRUQKKzMzQTkJU1FVQVJFIFBBCiszM0FBCVNRVUFSRSBLUEEKKzMzQUIJU1FVQVJFIE1QQQorMzNBQwlTUVVBUkUgR1BBCiszM0FECVNRVUFSRSBSQUQKKzMzQUUJU1FVQVJFIFJBRCBPVkVSIFMKKzMzQUYJU1FVQVJFIFJBRCBPVkVSIFMgU1FVQVJFRAorMzNCMAlTUVVBUkUgUFMKKzMzQjEJU1FVQVJFIE5TCiszM0IyCVNRVUFSRSBNVSBTCiszM0IzCVNRVUFSRSBNUworMzNCNAlTUVVBUkUgUFYKKzMzQjUJU1FVQVJFIE5WCiszM0I2CVNRVUFSRSBNVSBWCiszM0I3CVNRVUFSRSBNVgorMzNCOAlTUVVBUkUgS1YKKzMzQjkJU1FVQVJFIE1WIE1FR0EKKzMzQkEJU1FVQVJFIFBXCiszM0JCCVNRVUFSRSBOVworMzNCQwlTUVVBUkUgTVUgVworMzNCRAlTUVVBUkUgTVcKKzMzQkUJU1FVQVJFIEtXCiszM0JGCVNRVUFSRSBNVyBNRUdBCiszM0MwCVNRVUFSRSBLIE9ITQorMzNDMQlTUVVBUkUgTSBPSE0KKzMzQzIJU1FVQVJFIEFNCiszM0MzCVNRVUFSRSBCUQorMzNDNAlTUVVBUkUgQ0MKKzMzQzUJU1FVQVJFIENECiszM0M2CVNRVUFSRSBDIE9WRVIgS0cKKzMzQzcJU1FVQVJFIENPCiszM0M4CVNRVUFSRSBEQgorMzNDOQlTUVVBUkUgR1kKKzMzQ0EJU1FVQVJFIEhBCiszM0NCCVNRVUFSRSBIUAorMzNDQwlTUVVBUkUgSU4KKzMzQ0QJU1FVQVJFIEtLCiszM0NFCVNRVUFSRSBLTSBDQVBJVEFMCiszM0NGCVNRVUFSRSBLVAorMzNEMAlTUVVBUkUgTE0KKzMzRDEJU1FVQVJFIExOCiszM0QyCVNRVUFSRSBMT0cKKzMzRDMJU1FVQVJFIExYCiszM0Q0CVNRVUFSRSBNQiBTTUFMTAorMzNENQlTUVVBUkUgTUlMCiszM0Q2CVNRVUFSRSBNT0wKKzMzRDcJU1FVQVJFIFBICiszM0Q4CVNRVUFSRSBQTQorMzNEOQlTUVVBUkUgUFBNCiszM0RBCVNRVUFSRSBQUgorMzNEQglTUVVBUkUgU1IKKzMzREMJU1FVQVJFIFNWCiszM0RECVNRVUFSRSBXQgorMzNFMAlJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgT05FCiszM0UxCUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV08KKzMzRTIJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRIUkVFCiszM0UzCUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBGT1VSCiszM0U0CUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBGSVZFCiszM0U1CUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBTSVgKKzMzRTYJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFNFVkVOCiszM0U3CUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBFSUdIVAorMzNFOAlJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgTklORQorMzNFOQlJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEVOCiszM0VBCUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBFTEVWRU4KKzMzRUIJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRUxWRQorMzNFQwlJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEhJUlRFRU4KKzMzRUQJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEZPVVJURUVOCiszM0VFCUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBGSUZURUVOCiszM0VGCUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBTSVhURUVOCiszM0YwCUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBTRVZFTlRFRU4KKzMzRjEJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEVJR0hURUVOCiszM0YyCUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBOSU5FVEVFTgorMzNGMwlJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVFdFTlRZCiszM0Y0CUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktT05FCiszM0Y1CUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktVFdPCiszM0Y2CUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktVEhSRUUKKzMzRjcJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1GT1VSCiszM0Y4CUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktRklWRQorMzNGOQlJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVFdFTlRZLVNJWAorMzNGQQlJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVFdFTlRZLVNFVkVOCiszM0ZCCUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktRUlHSFQKKzMzRkMJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1OSU5FCiszM0ZECUlERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUSElSVFkKKzMzRkUJSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRISVJUWS1PTkUKKzRFMDAJPENKSyBJZGVvZ3JhcGgsIEZpcnN0PgorOUZBNQk8Q0pLIElkZW9ncmFwaCwgTGFzdD4KK0FDMDAJPEhhbmd1bCBTeWxsYWJsZSwgRmlyc3Q+CitEN0EzCTxIYW5ndWwgU3lsbGFibGUsIExhc3Q+CitEODAwCTxVbmFzc2lnbmVkIEhpZ2ggU3Vycm9nYXRlLCBGaXJzdD4KK0RCN0YJPFVuYXNzaWduZWQgSGlnaCBTdXJyb2dhdGUsIExhc3Q+CitEQjgwCTxQcml2YXRlIFVzZSBIaWdoIFN1cnJvZ2F0ZSwgRmlyc3Q+CitEQkZGCTxQcml2YXRlIFVzZSBIaWdoIFN1cnJvZ2F0ZSwgTGFzdD4KK0RDMDAJPExvdyBTdXJyb2dhdGUsIEZpcnN0PgorREZGRgk8TG93IFN1cnJvZ2F0ZSwgTGFzdD4KK0UwMDAJPFByaXZhdGUgVXNlLCBGaXJzdD4KK0Y4RkYJPFByaXZhdGUgVXNlLCBMYXN0PgorRjkwMAk8Q0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBoLCBGaXJzdD4KK0ZBMkQJPENKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFwaCwgTGFzdD4KK0ZCMDAJTEFUSU4gU01BTEwgTElHQVRVUkUgRkYKK0ZCMDEJTEFUSU4gU01BTEwgTElHQVRVUkUgRkkKK0ZCMDIJTEFUSU4gU01BTEwgTElHQVRVUkUgRkwKK0ZCMDMJTEFUSU4gU01BTEwgTElHQVRVUkUgRkZJCitGQjA0CUxBVElOIFNNQUxMIExJR0FUVVJFIEZGTAorRkIwNQlMQVRJTiBTTUFMTCBMSUdBVFVSRSBMT05HIFMgVAorRkIwNglMQVRJTiBTTUFMTCBMSUdBVFVSRSBTVAorRkIxMwlBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBNRU4gTk9XCitGQjE0CUFSTUVOSUFOIFNNQUxMIExJR0FUVVJFIE1FTiBFQ0gKK0ZCMTUJQVJNRU5JQU4gU01BTEwgTElHQVRVUkUgTUVOIElOSQorRkIxNglBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBWRVcgTk9XCitGQjE3CUFSTUVOSUFOIFNNQUxMIExJR0FUVVJFIE1FTiBYRUgKK0ZCMUUJSEVCUkVXIFBPSU5UIEpVREVPLVNQQU5JU0ggVkFSSUtBCitGQjFGCUhFQlJFVyBMSUdBVFVSRSBZSURESVNIIFlPRCBZT0QgUEFUQUgKK0ZCMjAJSEVCUkVXIExFVFRFUiBBTFRFUk5BVElWRSBBWUlOCitGQjIxCUhFQlJFVyBMRVRURVIgV0lERSBBTEVGCitGQjIyCUhFQlJFVyBMRVRURVIgV0lERSBEQUxFVAorRkIyMwlIRUJSRVcgTEVUVEVSIFdJREUgSEUKK0ZCMjQJSEVCUkVXIExFVFRFUiBXSURFIEtBRgorRkIyNQlIRUJSRVcgTEVUVEVSIFdJREUgTEFNRUQKK0ZCMjYJSEVCUkVXIExFVFRFUiBXSURFIEZJTkFMIE1FTQorRkIyNwlIRUJSRVcgTEVUVEVSIFdJREUgUkVTSAorRkIyOAlIRUJSRVcgTEVUVEVSIFdJREUgVEFWCitGQjI5CUhFQlJFVyBMRVRURVIgQUxURVJOQVRJVkUgUExVUyBTSUdOCitGQjJBCUhFQlJFVyBMRVRURVIgU0hJTiBXSVRIIFNISU4gRE9UCitGQjJCCUhFQlJFVyBMRVRURVIgU0hJTiBXSVRIIFNJTiBET1QKK0ZCMkMJSEVCUkVXIExFVFRFUiBTSElOIFdJVEggREFHRVNIIEFORCBTSElOIERPVAorRkIyRAlIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBEQUdFU0ggQU5EIFNJTiBET1QKK0ZCMkUJSEVCUkVXIExFVFRFUiBBTEVGIFdJVEggUEFUQUgKK0ZCMkYJSEVCUkVXIExFVFRFUiBBTEVGIFdJVEggUUFNQVRTCitGQjMwCUhFQlJFVyBMRVRURVIgQUxFRiBXSVRIIE1BUElRCitGQjMxCUhFQlJFVyBMRVRURVIgQkVUIFdJVEggREFHRVNICitGQjMyCUhFQlJFVyBMRVRURVIgR0lNRUwgV0lUSCBEQUdFU0gKK0ZCMzMJSEVCUkVXIExFVFRFUiBEQUxFVCBXSVRIIERBR0VTSAorRkIzNAlIRUJSRVcgTEVUVEVSIEhFIFdJVEggTUFQSVEKK0ZCMzUJSEVCUkVXIExFVFRFUiBWQVYgV0lUSCBEQUdFU0gKK0ZCMzYJSEVCUkVXIExFVFRFUiBaQVlJTiBXSVRIIERBR0VTSAorRkIzOAlIRUJSRVcgTEVUVEVSIFRFVCBXSVRIIERBR0VTSAorRkIzOQlIRUJSRVcgTEVUVEVSIFlPRCBXSVRIIERBR0VTSAorRkIzQQlIRUJSRVcgTEVUVEVSIEZJTkFMIEtBRiBXSVRIIERBR0VTSAorRkIzQglIRUJSRVcgTEVUVEVSIEtBRiBXSVRIIERBR0VTSAorRkIzQwlIRUJSRVcgTEVUVEVSIExBTUVEIFdJVEggREFHRVNICitGQjNFCUhFQlJFVyBMRVRURVIgTUVNIFdJVEggREFHRVNICitGQjQwCUhFQlJFVyBMRVRURVIgTlVOIFdJVEggREFHRVNICitGQjQxCUhFQlJFVyBMRVRURVIgU0FNRUtIIFdJVEggREFHRVNICitGQjQzCUhFQlJFVyBMRVRURVIgRklOQUwgUEUgV0lUSCBEQUdFU0gKK0ZCNDQJSEVCUkVXIExFVFRFUiBQRSBXSVRIIERBR0VTSAorRkI0NglIRUJSRVcgTEVUVEVSIFRTQURJIFdJVEggREFHRVNICitGQjQ3CUhFQlJFVyBMRVRURVIgUU9GIFdJVEggREFHRVNICitGQjQ4CUhFQlJFVyBMRVRURVIgUkVTSCBXSVRIIERBR0VTSAorRkI0OQlIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBEQUdFU0gKK0ZCNEEJSEVCUkVXIExFVFRFUiBUQVYgV0lUSCBEQUdFU0gKK0ZCNEIJSEVCUkVXIExFVFRFUiBWQVYgV0lUSCBIT0xBTQorRkI0QwlIRUJSRVcgTEVUVEVSIEJFVCBXSVRIIFJBRkUKK0ZCNEQJSEVCUkVXIExFVFRFUiBLQUYgV0lUSCBSQUZFCitGQjRFCUhFQlJFVyBMRVRURVIgUEUgV0lUSCBSQUZFCitGQjRGCUhFQlJFVyBMSUdBVFVSRSBBTEVGIExBTUVECitGQjUwCUFSQUJJQyBMRVRURVIgQUxFRiBXQVNMQSBJU09MQVRFRCBGT1JNCitGQjUxCUFSQUJJQyBMRVRURVIgQUxFRiBXQVNMQSBGSU5BTCBGT1JNCitGQjUyCUFSQUJJQyBMRVRURVIgQkVFSCBJU09MQVRFRCBGT1JNCitGQjUzCUFSQUJJQyBMRVRURVIgQkVFSCBGSU5BTCBGT1JNCitGQjU0CUFSQUJJQyBMRVRURVIgQkVFSCBJTklUSUFMIEZPUk0KK0ZCNTUJQVJBQklDIExFVFRFUiBCRUVIIE1FRElBTCBGT1JNCitGQjU2CUFSQUJJQyBMRVRURVIgUEVIIElTT0xBVEVEIEZPUk0KK0ZCNTcJQVJBQklDIExFVFRFUiBQRUggRklOQUwgRk9STQorRkI1OAlBUkFCSUMgTEVUVEVSIFBFSCBJTklUSUFMIEZPUk0KK0ZCNTkJQVJBQklDIExFVFRFUiBQRUggTUVESUFMIEZPUk0KK0ZCNUEJQVJBQklDIExFVFRFUiBCRUhFSCBJU09MQVRFRCBGT1JNCitGQjVCCUFSQUJJQyBMRVRURVIgQkVIRUggRklOQUwgRk9STQorRkI1QwlBUkFCSUMgTEVUVEVSIEJFSEVIIElOSVRJQUwgRk9STQorRkI1RAlBUkFCSUMgTEVUVEVSIEJFSEVIIE1FRElBTCBGT1JNCitGQjVFCUFSQUJJQyBMRVRURVIgVFRFSEVIIElTT0xBVEVEIEZPUk0KK0ZCNUYJQVJBQklDIExFVFRFUiBUVEVIRUggRklOQUwgRk9STQorRkI2MAlBUkFCSUMgTEVUVEVSIFRURUhFSCBJTklUSUFMIEZPUk0KK0ZCNjEJQVJBQklDIExFVFRFUiBUVEVIRUggTUVESUFMIEZPUk0KK0ZCNjIJQVJBQklDIExFVFRFUiBURUhFSCBJU09MQVRFRCBGT1JNCitGQjYzCUFSQUJJQyBMRVRURVIgVEVIRUggRklOQUwgRk9STQorRkI2NAlBUkFCSUMgTEVUVEVSIFRFSEVIIElOSVRJQUwgRk9STQorRkI2NQlBUkFCSUMgTEVUVEVSIFRFSEVIIE1FRElBTCBGT1JNCitGQjY2CUFSQUJJQyBMRVRURVIgVFRFSCBJU09MQVRFRCBGT1JNCitGQjY3CUFSQUJJQyBMRVRURVIgVFRFSCBGSU5BTCBGT1JNCitGQjY4CUFSQUJJQyBMRVRURVIgVFRFSCBJTklUSUFMIEZPUk0KK0ZCNjkJQVJBQklDIExFVFRFUiBUVEVIIE1FRElBTCBGT1JNCitGQjZBCUFSQUJJQyBMRVRURVIgVkVIIElTT0xBVEVEIEZPUk0KK0ZCNkIJQVJBQklDIExFVFRFUiBWRUggRklOQUwgRk9STQorRkI2QwlBUkFCSUMgTEVUVEVSIFZFSCBJTklUSUFMIEZPUk0KK0ZCNkQJQVJBQklDIExFVFRFUiBWRUggTUVESUFMIEZPUk0KK0ZCNkUJQVJBQklDIExFVFRFUiBQRUhFSCBJU09MQVRFRCBGT1JNCitGQjZGCUFSQUJJQyBMRVRURVIgUEVIRUggRklOQUwgRk9STQorRkI3MAlBUkFCSUMgTEVUVEVSIFBFSEVIIElOSVRJQUwgRk9STQorRkI3MQlBUkFCSUMgTEVUVEVSIFBFSEVIIE1FRElBTCBGT1JNCitGQjcyCUFSQUJJQyBMRVRURVIgRFlFSCBJU09MQVRFRCBGT1JNCitGQjczCUFSQUJJQyBMRVRURVIgRFlFSCBGSU5BTCBGT1JNCitGQjc0CUFSQUJJQyBMRVRURVIgRFlFSCBJTklUSUFMIEZPUk0KK0ZCNzUJQVJBQklDIExFVFRFUiBEWUVIIE1FRElBTCBGT1JNCitGQjc2CUFSQUJJQyBMRVRURVIgTllFSCBJU09MQVRFRCBGT1JNCitGQjc3CUFSQUJJQyBMRVRURVIgTllFSCBGSU5BTCBGT1JNCitGQjc4CUFSQUJJQyBMRVRURVIgTllFSCBJTklUSUFMIEZPUk0KK0ZCNzkJQVJBQklDIExFVFRFUiBOWUVIIE1FRElBTCBGT1JNCitGQjdBCUFSQUJJQyBMRVRURVIgVENIRUggSVNPTEFURUQgRk9STQorRkI3QglBUkFCSUMgTEVUVEVSIFRDSEVIIEZJTkFMIEZPUk0KK0ZCN0MJQVJBQklDIExFVFRFUiBUQ0hFSCBJTklUSUFMIEZPUk0KK0ZCN0QJQVJBQklDIExFVFRFUiBUQ0hFSCBNRURJQUwgRk9STQorRkI3RQlBUkFCSUMgTEVUVEVSIFRDSEVIRUggSVNPTEFURUQgRk9STQorRkI3RglBUkFCSUMgTEVUVEVSIFRDSEVIRUggRklOQUwgRk9STQorRkI4MAlBUkFCSUMgTEVUVEVSIFRDSEVIRUggSU5JVElBTCBGT1JNCitGQjgxCUFSQUJJQyBMRVRURVIgVENIRUhFSCBNRURJQUwgRk9STQorRkI4MglBUkFCSUMgTEVUVEVSIEREQUhBTCBJU09MQVRFRCBGT1JNCitGQjgzCUFSQUJJQyBMRVRURVIgRERBSEFMIEZJTkFMIEZPUk0KK0ZCODQJQVJBQklDIExFVFRFUiBEQUhBTCBJU09MQVRFRCBGT1JNCitGQjg1CUFSQUJJQyBMRVRURVIgREFIQUwgRklOQUwgRk9STQorRkI4NglBUkFCSUMgTEVUVEVSIERVTCBJU09MQVRFRCBGT1JNCitGQjg3CUFSQUJJQyBMRVRURVIgRFVMIEZJTkFMIEZPUk0KK0ZCODgJQVJBQklDIExFVFRFUiBEREFMIElTT0xBVEVEIEZPUk0KK0ZCODkJQVJBQklDIExFVFRFUiBEREFMIEZJTkFMIEZPUk0KK0ZCOEEJQVJBQklDIExFVFRFUiBKRUggSVNPTEFURUQgRk9STQorRkI4QglBUkFCSUMgTEVUVEVSIEpFSCBGSU5BTCBGT1JNCitGQjhDCUFSQUJJQyBMRVRURVIgUlJFSCBJU09MQVRFRCBGT1JNCitGQjhECUFSQUJJQyBMRVRURVIgUlJFSCBGSU5BTCBGT1JNCitGQjhFCUFSQUJJQyBMRVRURVIgS0VIRUggSVNPTEFURUQgRk9STQorRkI4RglBUkFCSUMgTEVUVEVSIEtFSEVIIEZJTkFMIEZPUk0KK0ZCOTAJQVJBQklDIExFVFRFUiBLRUhFSCBJTklUSUFMIEZPUk0KK0ZCOTEJQVJBQklDIExFVFRFUiBLRUhFSCBNRURJQUwgRk9STQorRkI5MglBUkFCSUMgTEVUVEVSIEdBRiBJU09MQVRFRCBGT1JNCitGQjkzCUFSQUJJQyBMRVRURVIgR0FGIEZJTkFMIEZPUk0KK0ZCOTQJQVJBQklDIExFVFRFUiBHQUYgSU5JVElBTCBGT1JNCitGQjk1CUFSQUJJQyBMRVRURVIgR0FGIE1FRElBTCBGT1JNCitGQjk2CUFSQUJJQyBMRVRURVIgR1VFSCBJU09MQVRFRCBGT1JNCitGQjk3CUFSQUJJQyBMRVRURVIgR1VFSCBGSU5BTCBGT1JNCitGQjk4CUFSQUJJQyBMRVRURVIgR1VFSCBJTklUSUFMIEZPUk0KK0ZCOTkJQVJBQklDIExFVFRFUiBHVUVIIE1FRElBTCBGT1JNCitGQjlBCUFSQUJJQyBMRVRURVIgTkdPRUggSVNPTEFURUQgRk9STQorRkI5QglBUkFCSUMgTEVUVEVSIE5HT0VIIEZJTkFMIEZPUk0KK0ZCOUMJQVJBQklDIExFVFRFUiBOR09FSCBJTklUSUFMIEZPUk0KK0ZCOUQJQVJBQklDIExFVFRFUiBOR09FSCBNRURJQUwgRk9STQorRkI5RQlBUkFCSUMgTEVUVEVSIE5PT04gR0hVTk5BIElTT0xBVEVEIEZPUk0KK0ZCOUYJQVJBQklDIExFVFRFUiBOT09OIEdIVU5OQSBGSU5BTCBGT1JNCitGQkEwCUFSQUJJQyBMRVRURVIgUk5PT04gSVNPTEFURUQgRk9STQorRkJBMQlBUkFCSUMgTEVUVEVSIFJOT09OIEZJTkFMIEZPUk0KK0ZCQTIJQVJBQklDIExFVFRFUiBSTk9PTiBJTklUSUFMIEZPUk0KK0ZCQTMJQVJBQklDIExFVFRFUiBSTk9PTiBNRURJQUwgRk9STQorRkJBNAlBUkFCSUMgTEVUVEVSIEhFSCBXSVRIIFlFSCBBQk9WRSBJU09MQVRFRCBGT1JNCitGQkE1CUFSQUJJQyBMRVRURVIgSEVIIFdJVEggWUVIIEFCT1ZFIEZJTkFMIEZPUk0KK0ZCQTYJQVJBQklDIExFVFRFUiBIRUggR09BTCBJU09MQVRFRCBGT1JNCitGQkE3CUFSQUJJQyBMRVRURVIgSEVIIEdPQUwgRklOQUwgRk9STQorRkJBOAlBUkFCSUMgTEVUVEVSIEhFSCBHT0FMIElOSVRJQUwgRk9STQorRkJBOQlBUkFCSUMgTEVUVEVSIEhFSCBHT0FMIE1FRElBTCBGT1JNCitGQkFBCUFSQUJJQyBMRVRURVIgSEVIIERPQUNIQVNITUVFIElTT0xBVEVEIEZPUk0KK0ZCQUIJQVJBQklDIExFVFRFUiBIRUggRE9BQ0hBU0hNRUUgRklOQUwgRk9STQorRkJBQwlBUkFCSUMgTEVUVEVSIEhFSCBET0FDSEFTSE1FRSBJTklUSUFMIEZPUk0KK0ZCQUQJQVJBQklDIExFVFRFUiBIRUggRE9BQ0hBU0hNRUUgTUVESUFMIEZPUk0KK0ZCQUUJQVJBQklDIExFVFRFUiBZRUggQkFSUkVFIElTT0xBVEVEIEZPUk0KK0ZCQUYJQVJBQklDIExFVFRFUiBZRUggQkFSUkVFIEZJTkFMIEZPUk0KK0ZCQjAJQVJBQklDIExFVFRFUiBZRUggQkFSUkVFIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STQorRkJCMQlBUkFCSUMgTEVUVEVSIFlFSCBCQVJSRUUgV0lUSCBIQU1aQSBBQk9WRSBGSU5BTCBGT1JNCitGQkQzCUFSQUJJQyBMRVRURVIgTkcgSVNPTEFURUQgRk9STQorRkJENAlBUkFCSUMgTEVUVEVSIE5HIEZJTkFMIEZPUk0KK0ZCRDUJQVJBQklDIExFVFRFUiBORyBJTklUSUFMIEZPUk0KK0ZCRDYJQVJBQklDIExFVFRFUiBORyBNRURJQUwgRk9STQorRkJENwlBUkFCSUMgTEVUVEVSIFUgSVNPTEFURUQgRk9STQorRkJEOAlBUkFCSUMgTEVUVEVSIFUgRklOQUwgRk9STQorRkJEOQlBUkFCSUMgTEVUVEVSIE9FIElTT0xBVEVEIEZPUk0KK0ZCREEJQVJBQklDIExFVFRFUiBPRSBGSU5BTCBGT1JNCitGQkRCCUFSQUJJQyBMRVRURVIgWVUgSVNPTEFURUQgRk9STQorRkJEQwlBUkFCSUMgTEVUVEVSIFlVIEZJTkFMIEZPUk0KK0ZCREQJQVJBQklDIExFVFRFUiBVIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STQorRkJERQlBUkFCSUMgTEVUVEVSIFZFIElTT0xBVEVEIEZPUk0KK0ZCREYJQVJBQklDIExFVFRFUiBWRSBGSU5BTCBGT1JNCitGQkUwCUFSQUJJQyBMRVRURVIgS0lSR0hJWiBPRSBJU09MQVRFRCBGT1JNCitGQkUxCUFSQUJJQyBMRVRURVIgS0lSR0hJWiBPRSBGSU5BTCBGT1JNCitGQkUyCUFSQUJJQyBMRVRURVIgS0lSR0hJWiBZVSBJU09MQVRFRCBGT1JNCitGQkUzCUFSQUJJQyBMRVRURVIgS0lSR0hJWiBZVSBGSU5BTCBGT1JNCitGQkU0CUFSQUJJQyBMRVRURVIgRSBJU09MQVRFRCBGT1JNCitGQkU1CUFSQUJJQyBMRVRURVIgRSBGSU5BTCBGT1JNCitGQkU2CUFSQUJJQyBMRVRURVIgRSBJTklUSUFMIEZPUk0KK0ZCRTcJQVJBQklDIExFVFRFUiBFIE1FRElBTCBGT1JNCitGQkU4CUFSQUJJQyBMRVRURVIgVUlHSFVSIEtBWkFLSCBLSVJHSElaIEFMRUYgTUFLU1VSQSBJTklUSUFMIEZPUk0KK0ZCRTkJQVJBQklDIExFVFRFUiBVSUdIVVIgS0FaQUtIIEtJUkdISVogQUxFRiBNQUtTVVJBIE1FRElBTCBGT1JNCitGQkVBCUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgSVNPTEFURUQgRk9STQorRkJFQglBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBTEVGIEZJTkFMIEZPUk0KK0ZCRUMJQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUUgSVNPTEFURUQgRk9STQorRkJFRAlBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBRSBGSU5BTCBGT1JNCitGQkVFCUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFdBVyBJU09MQVRFRCBGT1JNCitGQkVGCUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFdBVyBGSU5BTCBGT1JNCitGQkYwCUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFUgSVNPTEFURUQgRk9STQorRkJGMQlBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBVIEZJTkFMIEZPUk0KK0ZCRjIJQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggT0UgSVNPTEFURUQgRk9STQorRkJGMwlBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBPRSBGSU5BTCBGT1JNCitGQkY0CUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFlVIElTT0xBVEVEIEZPUk0KK0ZCRjUJQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggWVUgRklOQUwgRk9STQorRkJGNglBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBFIElTT0xBVEVEIEZPUk0KK0ZCRjcJQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggRSBGSU5BTCBGT1JNCitGQkY4CUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEUgSU5JVElBTCBGT1JNCitGQkY5CUFSQUJJQyBMSUdBVFVSRSBVSUdIVVIgS0lSR0hJWiBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGQkZBCUFSQUJJQyBMSUdBVFVSRSBVSUdIVVIgS0lSR0hJWiBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGQkZCCUFSQUJJQyBMSUdBVFVSRSBVSUdIVVIgS0lSR0hJWiBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBJTklUSUFMIEZPUk0KK0ZCRkMJQVJBQklDIExFVFRFUiBGQVJTSSBZRUggSVNPTEFURUQgRk9STQorRkJGRAlBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSCBGSU5BTCBGT1JNCitGQkZFCUFSQUJJQyBMRVRURVIgRkFSU0kgWUVIIElOSVRJQUwgRk9STQorRkJGRglBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSCBNRURJQUwgRk9STQorRkMwMAlBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBKRUVNIElTT0xBVEVEIEZPUk0KK0ZDMDEJQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggSEFIIElTT0xBVEVEIEZPUk0KK0ZDMDIJQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzAzCUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGQzA0CUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFlFSCBJU09MQVRFRCBGT1JNCitGQzA1CUFSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk0KK0ZDMDYJQVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNCitGQzA3CUFSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBLSEFIIElTT0xBVEVEIEZPUk0KK0ZDMDgJQVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STQorRkMwOQlBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk0KK0ZDMEEJQVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNCitGQzBCCUFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk0KK0ZDMEMJQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNCitGQzBECUFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBLSEFIIElTT0xBVEVEIEZPUk0KK0ZDMEUJQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STQorRkMwRglBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk0KK0ZDMTAJQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNCitGQzExCUFSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNCitGQzEyCUFSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzEzCUFSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk0KK0ZDMTQJQVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkMxNQlBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEhBSCBJU09MQVRFRCBGT1JNCitGQzE2CUFSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzE3CUFSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk0KK0ZDMTgJQVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STQorRkMxOQlBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STQorRkMxQQlBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNCitGQzFCCUFSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzFDCUFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNCitGQzFECUFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEFIIElTT0xBVEVEIEZPUk0KK0ZDMUUJQVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBLSEFIIElTT0xBVEVEIEZPUk0KK0ZDMUYJQVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk0KK0ZDMjAJQVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNCitGQzIxCUFSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBNRUVNIElTT0xBVEVEIEZPUk0KK0ZDMjIJQVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STQorRkMyMwlBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSEFIIElTT0xBVEVEIEZPUk0KK0ZDMjQJQVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEtIQUggSVNPTEFURUQgRk9STQorRkMyNQlBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzI2CUFSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBIQUggSVNPTEFURUQgRk9STQorRkMyNwlBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzI4CUFSQUJJQyBMSUdBVFVSRSBaQUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk0KK0ZDMjkJQVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEpFRU0gSVNPTEFURUQgRk9STQorRkMyQQlBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzJCCUFSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIEpFRU0gSVNPTEFURUQgRk9STQorRkMyQwlBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk0KK0ZDMkQJQVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STQorRkMyRQlBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggSEFIIElTT0xBVEVEIEZPUk0KK0ZDMkYJQVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEtIQUggSVNPTEFURUQgRk9STQorRkMzMAlBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzMxCUFSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STQorRkMzMglBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggWUVIIElTT0xBVEVEIEZPUk0KK0ZDMzMJQVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIEhBSCBJU09MQVRFRCBGT1JNCitGQzM0CUFSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBNRUVNIElTT0xBVEVEIEZPUk0KK0ZDMzUJQVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGQzM2CUFSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkMzNwlBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggQUxFRiBJU09MQVRFRCBGT1JNCitGQzM4CUFSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBKRUVNIElTT0xBVEVEIEZPUk0KK0ZDMzkJQVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEhBSCBJU09MQVRFRCBGT1JNCitGQzNBCUFSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBLSEFIIElTT0xBVEVEIEZPUk0KK0ZDM0IJQVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIExBTSBJU09MQVRFRCBGT1JNCitGQzNDCUFSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIElTT0xBVEVEIEZPUk0KK0ZDM0QJQVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGQzNFCUFSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkMzRglBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNCitGQzQwCUFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIQUggSVNPTEFURUQgRk9STQorRkM0MQlBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNCitGQzQyCUFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk0KK0ZDNDMJQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGQzQ0CUFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkM0NQlBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEpFRU0gSVNPTEFURUQgRk9STQorRkM0NglBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEhBSCBJU09MQVRFRCBGT1JNCitGQzQ3CUFSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNCitGQzQ4CUFSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzQ5CUFSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk0KK0ZDNEEJQVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkM0QglBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gSVNPTEFURUQgRk9STQorRkM0QwlBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhBSCBJU09MQVRFRCBGT1JNCitGQzRECUFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNCitGQzRFCUFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzRGCUFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk0KK0ZDNTAJQVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkM1MQlBUkFCSUMgTElHQVRVUkUgSEVIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNCitGQzUyCUFSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk0KK0ZDNTMJQVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGQzU0CUFSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkM1NQlBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNCitGQzU2CUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQUggSVNPTEFURUQgRk9STQorRkM1NwlBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNCitGQzU4CUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk0KK0ZDNTkJQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGQzVBCUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkM1QglBUkFCSUMgTElHQVRVUkUgVEhBTCBXSVRIIFNVUEVSU0NSSVBUIEFMRUYgSVNPTEFURUQgRk9STQorRkM1QwlBUkFCSUMgTElHQVRVUkUgUkVIIFdJVEggU1VQRVJTQ1JJUFQgQUxFRiBJU09MQVRFRCBGT1JNCitGQzVECUFSQUJJQyBMSUdBVFVSRSBBTEVGIE1BS1NVUkEgV0lUSCBTVVBFUlNDUklQVCBBTEVGIElTT0xBVEVEIEZPUk0KK0ZDNUUJQVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIERBTU1BVEFOIElTT0xBVEVEIEZPUk0KK0ZDNUYJQVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIEtBU1JBVEFOIElTT0xBVEVEIEZPUk0KK0ZDNjAJQVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIEZBVEhBIElTT0xBVEVEIEZPUk0KK0ZDNjEJQVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIERBTU1BIElTT0xBVEVEIEZPUk0KK0ZDNjIJQVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIEtBU1JBIElTT0xBVEVEIEZPUk0KK0ZDNjMJQVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIFNVUEVSU0NSSVBUIEFMRUYgSVNPTEFURUQgRk9STQorRkM2NAlBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBSRUggRklOQUwgRk9STQorRkM2NQlBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBaQUlOIEZJTkFMIEZPUk0KK0ZDNjYJQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggTUVFTSBGSU5BTCBGT1JNCitGQzY3CUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIE5PT04gRklOQUwgRk9STQorRkM2OAlBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkM2OQlBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBZRUggRklOQUwgRk9STQorRkM2QQlBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggUkVIIEZJTkFMIEZPUk0KK0ZDNkIJQVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIFpBSU4gRklOQUwgRk9STQorRkM2QwlBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggTUVFTSBGSU5BTCBGT1JNCitGQzZECUFSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBOT09OIEZJTkFMIEZPUk0KK0ZDNkUJQVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGQzZGCUFSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBZRUggRklOQUwgRk9STQorRkM3MAlBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggUkVIIEZJTkFMIEZPUk0KK0ZDNzEJQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIFpBSU4gRklOQUwgRk9STQorRkM3MglBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBGSU5BTCBGT1JNCitGQzczCUFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBOT09OIEZJTkFMIEZPUk0KK0ZDNzQJQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGQzc1CUFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBZRUggRklOQUwgRk9STQorRkM3NglBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIFJFSCBGSU5BTCBGT1JNCitGQzc3CUFSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggWkFJTiBGSU5BTCBGT1JNCitGQzc4CUFSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggTUVFTSBGSU5BTCBGT1JNCitGQzc5CUFSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggTk9PTiBGSU5BTCBGT1JNCitGQzdBCUFSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZDN0IJQVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBZRUggRklOQUwgRk9STQorRkM3QwlBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZDN0QJQVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIFlFSCBGSU5BTCBGT1JNCitGQzdFCUFSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkM3RglBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZDODAJQVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEFMRUYgRklOQUwgRk9STQorRkM4MQlBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTEFNIEZJTkFMIEZPUk0KK0ZDODIJQVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gRklOQUwgRk9STQorRkM4MwlBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZDODQJQVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIFlFSCBGSU5BTCBGT1JNCitGQzg1CUFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIEZJTkFMIEZPUk0KK0ZDODYJQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGQzg3CUFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBZRUggRklOQUwgRk9STQorRkM4OAlBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEFMRUYgRklOQUwgRk9STQorRkM4OQlBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STQorRkM4QQlBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIFJFSCBGSU5BTCBGT1JNCitGQzhCCUFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggWkFJTiBGSU5BTCBGT1JNCitGQzhDCUFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBGSU5BTCBGT1JNCitGQzhECUFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTk9PTiBGSU5BTCBGT1JNCitGQzhFCUFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZDOEYJQVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBZRUggRklOQUwgRk9STQorRkM5MAlBUkFCSUMgTElHQVRVUkUgQUxFRiBNQUtTVVJBIFdJVEggU1VQRVJTQ1JJUFQgQUxFRiBGSU5BTCBGT1JNCitGQzkxCUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBSRUggRklOQUwgRk9STQorRkM5MglBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggWkFJTiBGSU5BTCBGT1JNCitGQzkzCUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIEZJTkFMIEZPUk0KK0ZDOTQJQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE5PT04gRklOQUwgRk9STQorRkM5NQlBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZDOTYJQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIFlFSCBGSU5BTCBGT1JNCitGQzk3CUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNCitGQzk4CUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZDOTkJQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggS0hBSCBJTklUSUFMIEZPUk0KK0ZDOUEJQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZDOUIJQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggSEVIIElOSVRJQUwgRk9STQorRkM5QwlBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZDOUQJQVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZDOUUJQVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEtIQUggSU5JVElBTCBGT1JNCitGQzlGCUFSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkNBMAlBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSEVIIElOSVRJQUwgRk9STQorRkNBMQlBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZDQTIJQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZDQTMJQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEtIQUggSU5JVElBTCBGT1JNCitGQ0E0CUFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkNBNQlBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSEVIIElOSVRJQUwgRk9STQorRkNBNglBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0E3CUFSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STQorRkNBOAlBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0E5CUFSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBKRUVNIElOSVRJQUwgRk9STQorRkNBQQlBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZDQUIJQVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBKRUVNIElOSVRJQUwgRk9STQorRkNBQwlBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0FECUFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZDQUUJQVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBIQUggSU5JVElBTCBGT1JNCitGQ0FGCUFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggS0hBSCBJTklUSUFMIEZPUk0KK0ZDQjAJQVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkNCMQlBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggSEFIIElOSVRJQUwgRk9STQorRkNCMglBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggS0hBSCBJTklUSUFMIEZPUk0KK0ZDQjMJQVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0I0CUFSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBKRUVNIElOSVRJQUwgRk9STQorRkNCNQlBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSEFIIElOSVRJQUwgRk9STQorRkNCNglBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggS0hBSCBJTklUSUFMIEZPUk0KK0ZDQjcJQVJBQklDIExJR0FUVVJFIERBRCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0I4CUFSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBIQUggSU5JVElBTCBGT1JNCitGQ0I5CUFSQUJJQyBMSUdBVFVSRSBaQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkNCQQlBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZDQkIJQVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0JDCUFSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIEpFRU0gSU5JVElBTCBGT1JNCitGQ0JECUFSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0JFCUFSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBKRUVNIElOSVRJQUwgRk9STQorRkNCRglBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggSEFIIElOSVRJQUwgRk9STQorRkNDMAlBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggS0hBSCBJTklUSUFMIEZPUk0KK0ZDQzEJQVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0MyCUFSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBIQUggSU5JVElBTCBGT1JNCitGQ0MzCUFSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkNDNAlBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZDQzUJQVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZDQzYJQVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEtIQUggSU5JVElBTCBGT1JNCitGQ0M3CUFSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBMQU0gSU5JVElBTCBGT1JNCitGQ0M4CUFSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkNDOQlBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZDQ0EJQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZDQ0IJQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEtIQUggSU5JVElBTCBGT1JNCitGQ0NDCUFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkNDRAlBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSEVIIElOSVRJQUwgRk9STQorRkNDRQlBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNCitGQ0NGCUFSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STQorRkNEMAlBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEtIQUggSU5JVElBTCBGT1JNCitGQ0QxCUFSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZDRDIJQVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIElOSVRJQUwgRk9STQorRkNEMwlBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZDRDQJQVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBLSEFIIElOSVRJQUwgRk9STQorRkNENQlBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0Q2CUFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEVIIElOSVRJQUwgRk9STQorRkNENwlBUkFCSUMgTElHQVRVUkUgSEVIIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZDRDgJQVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0Q5CUFSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBTVVBFUlNDUklQVCBBTEVGIElOSVRJQUwgRk9STQorRkNEQQlBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZDREIJQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZDREMJQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEtIQUggSU5JVElBTCBGT1JNCitGQ0RECUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkNERQlBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEVIIElOSVRJQUwgRk9STQorRkNERglBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBNRUVNIE1FRElBTCBGT1JNCitGQ0UwCUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEhFSCBNRURJQUwgRk9STQorRkNFMQlBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggTUVFTSBNRURJQUwgRk9STQorRkNFMglBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSEVIIE1FRElBTCBGT1JNCitGQ0UzCUFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIE1FRElBTCBGT1JNCitGQ0U0CUFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBIRUggTUVESUFMIEZPUk0KK0ZDRTUJQVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBNRUVNIE1FRElBTCBGT1JNCitGQ0U2CUFSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggSEVIIE1FRElBTCBGT1JNCitGQ0U3CUFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBNRURJQUwgRk9STQorRkNFOAlBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEhFSCBNRURJQUwgRk9STQorRkNFOQlBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIE1FRElBTCBGT1JNCitGQ0VBCUFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhFSCBNRURJQUwgRk9STQorRkNFQglBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTEFNIE1FRElBTCBGT1JNCitGQ0VDCUFSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIE1FRElBTCBGT1JNCitGQ0VECUFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIE1FRElBTCBGT1JNCitGQ0VFCUFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBNRURJQUwgRk9STQorRkNFRglBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhFSCBNRURJQUwgRk9STQorRkNGMAlBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggTUVFTSBNRURJQUwgRk9STQorRkNGMQlBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEVIIE1FRElBTCBGT1JNCitGQ0YyCUFSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBGQVRIQSBNRURJQUwgRk9STQorRkNGMwlBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggREFNTUEgTUVESUFMIEZPUk0KK0ZDRjQJQVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIEtBU1JBIE1FRElBTCBGT1JNCitGQ0Y1CUFSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STQorRkNGNglBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggWUVIIElTT0xBVEVEIEZPUk0KK0ZDRjcJQVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGQ0Y4CUFSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkNGOQlBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STQorRkNGQQlBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkNGQglBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGQ0ZDCUFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggWUVIIElTT0xBVEVEIEZPUk0KK0ZDRkQJQVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk0KK0ZDRkUJQVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggWUVIIElTT0xBVEVEIEZPUk0KK0ZDRkYJQVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGRDAwCUFSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkQwMQlBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGRDAyCUFSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggWUVIIElTT0xBVEVEIEZPUk0KK0ZEMDMJQVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STQorRkQwNAlBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNCitGRDA1CUFSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STQorRkQwNglBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggWUVIIElTT0xBVEVEIEZPUk0KK0ZEMDcJQVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGRDA4CUFSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkQwOQlBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBKRUVNIElTT0xBVEVEIEZPUk0KK0ZEMEEJQVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIElTT0xBVEVEIEZPUk0KK0ZEMEIJQVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNCitGRDBDCUFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gSVNPTEFURUQgRk9STQorRkQwRAlBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBSRUggSVNPTEFURUQgRk9STQorRkQwRQlBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIFJFSCBJU09MQVRFRCBGT1JNCitGRDBGCUFSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBSRUggSVNPTEFURUQgRk9STQorRkQxMAlBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggUkVIIElTT0xBVEVEIEZPUk0KK0ZEMTEJQVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGRDEyCUFSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBZRUggRklOQUwgRk9STQorRkQxMwlBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZEMTQJQVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIFlFSCBGSU5BTCBGT1JNCitGRDE1CUFSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGRDE2CUFSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIFlFSCBGSU5BTCBGT1JNCitGRDE3CUFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZEMTgJQVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBZRUggRklOQUwgRk9STQorRkQxOQlBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkQxQQlBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBZRUggRklOQUwgRk9STQorRkQxQglBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZEMUMJQVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNCitGRDFECUFSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZEMUUJQVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STQorRkQxRglBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGRDIwCUFSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEMjEJQVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGRDIyCUFSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBZRUggRklOQUwgRk9STQorRkQyMwlBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZEMjQJQVJBQklDIExJR0FUVVJFIERBRCBXSVRIIFlFSCBGSU5BTCBGT1JNCitGRDI1CUFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEpFRU0gRklOQUwgRk9STQorRkQyNglBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIQUggRklOQUwgRk9STQorRkQyNwlBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBLSEFIIEZJTkFMIEZPUk0KK0ZEMjgJQVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggTUVFTSBGSU5BTCBGT1JNCitGRDI5CUFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIFJFSCBGSU5BTCBGT1JNCitGRDJBCUFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggUkVIIEZJTkFMIEZPUk0KK0ZEMkIJQVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIFJFSCBGSU5BTCBGT1JNCitGRDJDCUFSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBSRUggRklOQUwgRk9STQorRkQyRAlBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBKRUVNIElOSVRJQUwgRk9STQorRkQyRQlBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIQUggSU5JVElBTCBGT1JNCitGRDJGCUFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEtIQUggSU5JVElBTCBGT1JNCitGRDMwCUFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGRDMxCUFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEVIIElOSVRJQUwgRk9STQorRkQzMglBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIRUggSU5JVElBTCBGT1JNCitGRDMzCUFSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkQzNAlBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEpFRU0gTUVESUFMIEZPUk0KK0ZEMzUJQVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBIQUggTUVESUFMIEZPUk0KK0ZEMzYJQVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBLSEFIIE1FRElBTCBGT1JNCitGRDM3CUFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEpFRU0gTUVESUFMIEZPUk0KK0ZEMzgJQVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIE1FRElBTCBGT1JNCitGRDM5CUFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEtIQUggTUVESUFMIEZPUk0KK0ZEM0EJQVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gTUVESUFMIEZPUk0KK0ZEM0IJQVJBQklDIExJR0FUVVJFIFpBSCBXSVRIIE1FRU0gTUVESUFMIEZPUk0KK0ZEM0MJQVJBQklDIExJR0FUVVJFIEFMRUYgV0lUSCBGQVRIQVRBTiBGSU5BTCBGT1JNCitGRDNECUFSQUJJQyBMSUdBVFVSRSBBTEVGIFdJVEggRkFUSEFUQU4gSVNPTEFURUQgRk9STQorRkQzRQlPUk5BVEUgTEVGVCBQQVJFTlRIRVNJUworRkQzRglPUk5BVEUgUklHSFQgUEFSRU5USEVTSVMKK0ZENTAJQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEpFRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkQ1MQlBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSEFIIFdJVEggSkVFTSBGSU5BTCBGT1JNCitGRDUyCUFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBIQUggV0lUSCBKRUVNIElOSVRJQUwgRk9STQorRkQ1MwlBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZENTQJQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEtIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkQ1NQlBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNCitGRDU2CUFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STQorRkQ1NwlBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBXSVRIIEtIQUggSU5JVElBTCBGT1JNCitGRDU4CUFSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggTUVFTSBXSVRIIEhBSCBGSU5BTCBGT1JNCitGRDU5CUFSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZENUEJQVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STQorRkQ1QglBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGRDVDCUFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEFIIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZENUQJQVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBKRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STQorRkQ1RQlBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEpFRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkQ1RglBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gV0lUSCBIQUggRklOQUwgRk9STQorRkQ2MAlBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNCitGRDYxCUFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNCitGRDYyCUFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STQorRkQ2MwlBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkQ2NAlBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggSEFIIFdJVEggSEFIIEZJTkFMIEZPUk0KK0ZENjUJQVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEhBSCBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZENjYJQVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk0KK0ZENjcJQVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIFdJVEggTUVFTSBGSU5BTCBGT1JNCitGRDY4CUFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGRDY5CUFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STQorRkQ2QQlBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIFdJVEggS0hBSCBGSU5BTCBGT1JNCitGRDZCCUFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gV0lUSCBLSEFIIElOSVRJQUwgRk9STQorRkQ2QwlBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNCitGRDZECUFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkQ2RQlBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZENkYJQVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEtIQUggV0lUSCBNRUVNIEZJTkFMIEZPUk0KK0ZENzAJQVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEtIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkQ3MQlBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBXSVRIIEhBSCBGSU5BTCBGT1JNCitGRDcyCUFSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STQorRkQ3MwlBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGRDc0CUFSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZENzUJQVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEpFRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk0KK0ZENzYJQVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk0KK0ZENzcJQVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkQ3OAlBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGRDc5CUFSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk0KK0ZEN0EJQVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNCitGRDdCCUFSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIE1FRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkQ3QwlBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggS0hBSCBXSVRIIE1FRU0gRklOQUwgRk9STQorRkQ3RAlBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGRDdFCUFSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBNRUVNIFdJVEggSEFIIEZJTkFMIEZPUk0KK0ZEN0YJQVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk0KK0ZEODAJQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBXSVRIIE1FRU0gRklOQUwgRk9STQorRkQ4MQlBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEODIJQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGRDgzCUFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBKRUVNIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZEODQJQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gV0lUSCBKRUVNIEZJTkFMIEZPUk0KK0ZEODUJQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEtIQUggV0lUSCBNRUVNIEZJTkFMIEZPUk0KK0ZEODYJQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEtIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkQ4NwlBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggTUVFTSBXSVRIIEhBSCBGSU5BTCBGT1JNCitGRDg4CUFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STQorRkQ4OQlBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEhBSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNCitGRDhBCUFSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZEOEIJQVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STQorRkQ4QwlBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEpFRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNCitGRDhECUFSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSkVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGRDhFCUFSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggS0hBSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNCitGRDhGCUFSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGRDkyCUFSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSkVFTSBXSVRIIEtIQUggSU5JVElBTCBGT1JNCitGRDkzCUFSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBNRUVNIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZEOTQJQVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkQ5NQlBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGRDk2CUFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZEOTcJQVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNCitGRDk4CUFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGRDk5CUFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGRDlBCUFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNCitGRDlCCUFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGRDlDCUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNCitGRDlECUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZEOUUJQVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEtIQUggV0lUSCBZRUggRklOQUwgRk9STQorRkQ5RglBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNCitGREEwCUFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBKRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZEQTEJQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEtIQUggV0lUSCBZRUggRklOQUwgRk9STQorRkRBMglBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggS0hBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGREEzCUFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEQTQJQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkRBNQlBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STQorRkRBNglBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEhBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGREE3CUFSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGREE4CUFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggS0hBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGREE5CUFSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STQorRkRBQQlBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STQorRkRBQglBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEQUMJQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STQorRkRBRAlBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNCitGREFFCUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STQorRkRBRglBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNCitGREIwCUFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEQjEJQVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEQjIJQVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STQorRkRCMwlBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNCitGREI0CUFSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STQorRkRCNQlBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZEQjYJQVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STQorRkRCNwlBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNCitGREI4CUFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZEQjkJQVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBLSEFIIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEQkEJQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkRCQglBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STQorRkRCQwlBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSkVFTSBXSVRIIE1FRU0gRklOQUwgRk9STQorRkRCRAlBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBIQUggRklOQUwgRk9STQorRkRCRQlBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNCitGREJGCUFSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBKRUVNIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEQzAJQVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEQzEJQVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STQorRkRDMglBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEQzMJQVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkRDNAlBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggSkVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGREM1CUFSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZEQzYJQVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBLSEFIIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEQzcJQVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZERjAJQVJBQklDIExJR0FUVVJFIFNBTExBIFVTRUQgQVMgS09SQU5JQyBTVE9QIFNJR04gSVNPTEFURUQgRk9STQorRkRGMQlBUkFCSUMgTElHQVRVUkUgUUFMQSBVU0VEIEFTIEtPUkFOSUMgU1RPUCBTSUdOIElTT0xBVEVEIEZPUk0KK0ZERjIJQVJBQklDIExJR0FUVVJFIEFMTEFIIElTT0xBVEVEIEZPUk0KK0ZERjMJQVJBQklDIExJR0FUVVJFIEFLQkFSIElTT0xBVEVEIEZPUk0KK0ZERjQJQVJBQklDIExJR0FUVVJFIE1PSEFNTUFEIElTT0xBVEVEIEZPUk0KK0ZERjUJQVJBQklDIExJR0FUVVJFIFNBTEFNIElTT0xBVEVEIEZPUk0KK0ZERjYJQVJBQklDIExJR0FUVVJFIFJBU09VTCBJU09MQVRFRCBGT1JNCitGREY3CUFSQUJJQyBMSUdBVFVSRSBBTEFZSEUgSVNPTEFURUQgRk9STQorRkRGOAlBUkFCSUMgTElHQVRVUkUgV0FTQUxMQU0gSVNPTEFURUQgRk9STQorRkRGOQlBUkFCSUMgTElHQVRVUkUgU0FMTEEgSVNPTEFURUQgRk9STQorRkRGQQlBUkFCSUMgTElHQVRVUkUgU0FMTEFMTEFIT1UgQUxBWUhFIFdBU0FMTEFNCitGREZCCUFSQUJJQyBMSUdBVFVSRSBKQUxMQUpBTEFMT1VIT1UKK0ZFMjAJQ09NQklOSU5HIExJR0FUVVJFIExFRlQgSEFMRgorRkUyMQlDT01CSU5JTkcgTElHQVRVUkUgUklHSFQgSEFMRgorRkUyMglDT01CSU5JTkcgRE9VQkxFIFRJTERFIExFRlQgSEFMRgorRkUyMwlDT01CSU5JTkcgRE9VQkxFIFRJTERFIFJJR0hUIEhBTEYKK0ZFMzAJUFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFRXTyBET1QgTEVBREVSCitGRTMxCVBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFTSBEQVNICitGRTMyCVBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFTiBEQVNICitGRTMzCVBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMT1cgTElORQorRkUzNAlQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgV0FWWSBMT1cgTElORQorRkUzNQlQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBQQVJFTlRIRVNJUworRkUzNglQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgUEFSRU5USEVTSVMKK0ZFMzcJUFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgQ1VSTFkgQlJBQ0tFVAorRkUzOAlQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgQ1VSTFkgQlJBQ0tFVAorRkUzOQlQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUCitGRTNBCVBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUCitGRTNCCVBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIEJMQUNLIExFTlRJQ1VMQVIgQlJBQ0tFVAorRkUzQwlQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUCitGRTNECVBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIERPVUJMRSBBTkdMRSBCUkFDS0VUCitGRTNFCVBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBET1VCTEUgQU5HTEUgQlJBQ0tFVAorRkUzRglQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBBTkdMRSBCUkFDS0VUCitGRTQwCVBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBBTkdMRSBCUkFDS0VUCitGRTQxCVBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIENPUk5FUiBCUkFDS0VUCitGRTQyCVBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBDT1JORVIgQlJBQ0tFVAorRkU0MwlQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBXSElURSBDT1JORVIgQlJBQ0tFVAorRkU0NAlQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgV0hJVEUgQ09STkVSIEJSQUNLRVQKK0ZFNDkJREFTSEVEIE9WRVJMSU5FCitGRTRBCUNFTlRSRUxJTkUgT1ZFUkxJTkUKK0ZFNEIJV0FWWSBPVkVSTElORQorRkU0QwlET1VCTEUgV0FWWSBPVkVSTElORQorRkU0RAlEQVNIRUQgTE9XIExJTkUKK0ZFNEUJQ0VOVFJFTElORSBMT1cgTElORQorRkU0RglXQVZZIExPVyBMSU5FCitGRTUwCVNNQUxMIENPTU1BCitGRTUxCVNNQUxMIElERU9HUkFQSElDIENPTU1BCitGRTUyCVNNQUxMIEZVTEwgU1RPUAorRkU1NAlTTUFMTCBTRU1JQ09MT04KK0ZFNTUJU01BTEwgQ09MT04KK0ZFNTYJU01BTEwgUVVFU1RJT04gTUFSSworRkU1NwlTTUFMTCBFWENMQU1BVElPTiBNQVJLCitGRTU4CVNNQUxMIEVNIERBU0gKK0ZFNTkJU01BTEwgTEVGVCBQQVJFTlRIRVNJUworRkU1QQlTTUFMTCBSSUdIVCBQQVJFTlRIRVNJUworRkU1QglTTUFMTCBMRUZUIENVUkxZIEJSQUNLRVQKK0ZFNUMJU01BTEwgUklHSFQgQ1VSTFkgQlJBQ0tFVAorRkU1RAlTTUFMTCBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQKK0ZFNUUJU01BTEwgUklHSFQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVAorRkU1RglTTUFMTCBOVU1CRVIgU0lHTgorRkU2MAlTTUFMTCBBTVBFUlNBTkQKK0ZFNjEJU01BTEwgQVNURVJJU0sKK0ZFNjIJU01BTEwgUExVUyBTSUdOCitGRTYzCVNNQUxMIEhZUEhFTi1NSU5VUworRkU2NAlTTUFMTCBMRVNTLVRIQU4gU0lHTgorRkU2NQlTTUFMTCBHUkVBVEVSLVRIQU4gU0lHTgorRkU2NglTTUFMTCBFUVVBTFMgU0lHTgorRkU2OAlTTUFMTCBSRVZFUlNFIFNPTElEVVMKK0ZFNjkJU01BTEwgRE9MTEFSIFNJR04KK0ZFNkEJU01BTEwgUEVSQ0VOVCBTSUdOCitGRTZCCVNNQUxMIENPTU1FUkNJQUwgQVQKK0ZFNzAJQVJBQklDIEZBVEhBVEFOIElTT0xBVEVEIEZPUk0KK0ZFNzEJQVJBQklDIFRBVFdFRUwgV0lUSCBGQVRIQVRBTiBBQk9WRQorRkU3MglBUkFCSUMgREFNTUFUQU4gSVNPTEFURUQgRk9STQorRkU3NAlBUkFCSUMgS0FTUkFUQU4gSVNPTEFURUQgRk9STQorRkU3NglBUkFCSUMgRkFUSEEgSVNPTEFURUQgRk9STQorRkU3NwlBUkFCSUMgRkFUSEEgTUVESUFMIEZPUk0KK0ZFNzgJQVJBQklDIERBTU1BIElTT0xBVEVEIEZPUk0KK0ZFNzkJQVJBQklDIERBTU1BIE1FRElBTCBGT1JNCitGRTdBCUFSQUJJQyBLQVNSQSBJU09MQVRFRCBGT1JNCitGRTdCCUFSQUJJQyBLQVNSQSBNRURJQUwgRk9STQorRkU3QwlBUkFCSUMgU0hBRERBIElTT0xBVEVEIEZPUk0KK0ZFN0QJQVJBQklDIFNIQUREQSBNRURJQUwgRk9STQorRkU3RQlBUkFCSUMgU1VLVU4gSVNPTEFURUQgRk9STQorRkU3RglBUkFCSUMgU1VLVU4gTUVESUFMIEZPUk0KK0ZFODAJQVJBQklDIExFVFRFUiBIQU1aQSBJU09MQVRFRCBGT1JNCitGRTgxCUFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIE1BRERBIEFCT1ZFIElTT0xBVEVEIEZPUk0KK0ZFODIJQVJBQklDIExFVFRFUiBBTEVGIFdJVEggTUFEREEgQUJPVkUgRklOQUwgRk9STQorRkU4MwlBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNCitGRTg0CUFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEFCT1ZFIEZJTkFMIEZPUk0KK0ZFODUJQVJBQklDIExFVFRFUiBXQVcgV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNCitGRTg2CUFSQUJJQyBMRVRURVIgV0FXIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STQorRkU4NwlBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBIQU1aQSBCRUxPVyBJU09MQVRFRCBGT1JNCitGRTg4CUFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEJFTE9XIEZJTkFMIEZPUk0KK0ZFODkJQVJBQklDIExFVFRFUiBZRUggV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNCitGRThBCUFSQUJJQyBMRVRURVIgWUVIIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STQorRkU4QglBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIElOSVRJQUwgRk9STQorRkU4QwlBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIE1FRElBTCBGT1JNCitGRThECUFSQUJJQyBMRVRURVIgQUxFRiBJU09MQVRFRCBGT1JNCitGRThFCUFSQUJJQyBMRVRURVIgQUxFRiBGSU5BTCBGT1JNCitGRThGCUFSQUJJQyBMRVRURVIgQkVIIElTT0xBVEVEIEZPUk0KK0ZFOTAJQVJBQklDIExFVFRFUiBCRUggRklOQUwgRk9STQorRkU5MQlBUkFCSUMgTEVUVEVSIEJFSCBJTklUSUFMIEZPUk0KK0ZFOTIJQVJBQklDIExFVFRFUiBCRUggTUVESUFMIEZPUk0KK0ZFOTMJQVJBQklDIExFVFRFUiBURUggTUFSQlVUQSBJU09MQVRFRCBGT1JNCitGRTk0CUFSQUJJQyBMRVRURVIgVEVIIE1BUkJVVEEgRklOQUwgRk9STQorRkU5NQlBUkFCSUMgTEVUVEVSIFRFSCBJU09MQVRFRCBGT1JNCitGRTk2CUFSQUJJQyBMRVRURVIgVEVIIEZJTkFMIEZPUk0KK0ZFOTcJQVJBQklDIExFVFRFUiBURUggSU5JVElBTCBGT1JNCitGRTk4CUFSQUJJQyBMRVRURVIgVEVIIE1FRElBTCBGT1JNCitGRTk5CUFSQUJJQyBMRVRURVIgVEhFSCBJU09MQVRFRCBGT1JNCitGRTlBCUFSQUJJQyBMRVRURVIgVEhFSCBGSU5BTCBGT1JNCitGRTlCCUFSQUJJQyBMRVRURVIgVEhFSCBJTklUSUFMIEZPUk0KK0ZFOUMJQVJBQklDIExFVFRFUiBUSEVIIE1FRElBTCBGT1JNCitGRTlECUFSQUJJQyBMRVRURVIgSkVFTSBJU09MQVRFRCBGT1JNCitGRTlFCUFSQUJJQyBMRVRURVIgSkVFTSBGSU5BTCBGT1JNCitGRTlGCUFSQUJJQyBMRVRURVIgSkVFTSBJTklUSUFMIEZPUk0KK0ZFQTAJQVJBQklDIExFVFRFUiBKRUVNIE1FRElBTCBGT1JNCitGRUExCUFSQUJJQyBMRVRURVIgSEFIIElTT0xBVEVEIEZPUk0KK0ZFQTIJQVJBQklDIExFVFRFUiBIQUggRklOQUwgRk9STQorRkVBMwlBUkFCSUMgTEVUVEVSIEhBSCBJTklUSUFMIEZPUk0KK0ZFQTQJQVJBQklDIExFVFRFUiBIQUggTUVESUFMIEZPUk0KK0ZFQTUJQVJBQklDIExFVFRFUiBLSEFIIElTT0xBVEVEIEZPUk0KK0ZFQTYJQVJBQklDIExFVFRFUiBLSEFIIEZJTkFMIEZPUk0KK0ZFQTcJQVJBQklDIExFVFRFUiBLSEFIIElOSVRJQUwgRk9STQorRkVBOAlBUkFCSUMgTEVUVEVSIEtIQUggTUVESUFMIEZPUk0KK0ZFQTkJQVJBQklDIExFVFRFUiBEQUwgSVNPTEFURUQgRk9STQorRkVBQQlBUkFCSUMgTEVUVEVSIERBTCBGSU5BTCBGT1JNCitGRUFCCUFSQUJJQyBMRVRURVIgVEhBTCBJU09MQVRFRCBGT1JNCitGRUFDCUFSQUJJQyBMRVRURVIgVEhBTCBGSU5BTCBGT1JNCitGRUFECUFSQUJJQyBMRVRURVIgUkVIIElTT0xBVEVEIEZPUk0KK0ZFQUUJQVJBQklDIExFVFRFUiBSRUggRklOQUwgRk9STQorRkVBRglBUkFCSUMgTEVUVEVSIFpBSU4gSVNPTEFURUQgRk9STQorRkVCMAlBUkFCSUMgTEVUVEVSIFpBSU4gRklOQUwgRk9STQorRkVCMQlBUkFCSUMgTEVUVEVSIFNFRU4gSVNPTEFURUQgRk9STQorRkVCMglBUkFCSUMgTEVUVEVSIFNFRU4gRklOQUwgRk9STQorRkVCMwlBUkFCSUMgTEVUVEVSIFNFRU4gSU5JVElBTCBGT1JNCitGRUI0CUFSQUJJQyBMRVRURVIgU0VFTiBNRURJQUwgRk9STQorRkVCNQlBUkFCSUMgTEVUVEVSIFNIRUVOIElTT0xBVEVEIEZPUk0KK0ZFQjYJQVJBQklDIExFVFRFUiBTSEVFTiBGSU5BTCBGT1JNCitGRUI3CUFSQUJJQyBMRVRURVIgU0hFRU4gSU5JVElBTCBGT1JNCitGRUI4CUFSQUJJQyBMRVRURVIgU0hFRU4gTUVESUFMIEZPUk0KK0ZFQjkJQVJBQklDIExFVFRFUiBTQUQgSVNPTEFURUQgRk9STQorRkVCQQlBUkFCSUMgTEVUVEVSIFNBRCBGSU5BTCBGT1JNCitGRUJCCUFSQUJJQyBMRVRURVIgU0FEIElOSVRJQUwgRk9STQorRkVCQwlBUkFCSUMgTEVUVEVSIFNBRCBNRURJQUwgRk9STQorRkVCRAlBUkFCSUMgTEVUVEVSIERBRCBJU09MQVRFRCBGT1JNCitGRUJFCUFSQUJJQyBMRVRURVIgREFEIEZJTkFMIEZPUk0KK0ZFQkYJQVJBQklDIExFVFRFUiBEQUQgSU5JVElBTCBGT1JNCitGRUMwCUFSQUJJQyBMRVRURVIgREFEIE1FRElBTCBGT1JNCitGRUMxCUFSQUJJQyBMRVRURVIgVEFIIElTT0xBVEVEIEZPUk0KK0ZFQzIJQVJBQklDIExFVFRFUiBUQUggRklOQUwgRk9STQorRkVDMwlBUkFCSUMgTEVUVEVSIFRBSCBJTklUSUFMIEZPUk0KK0ZFQzQJQVJBQklDIExFVFRFUiBUQUggTUVESUFMIEZPUk0KK0ZFQzUJQVJBQklDIExFVFRFUiBaQUggSVNPTEFURUQgRk9STQorRkVDNglBUkFCSUMgTEVUVEVSIFpBSCBGSU5BTCBGT1JNCitGRUM3CUFSQUJJQyBMRVRURVIgWkFIIElOSVRJQUwgRk9STQorRkVDOAlBUkFCSUMgTEVUVEVSIFpBSCBNRURJQUwgRk9STQorRkVDOQlBUkFCSUMgTEVUVEVSIEFJTiBJU09MQVRFRCBGT1JNCitGRUNBCUFSQUJJQyBMRVRURVIgQUlOIEZJTkFMIEZPUk0KK0ZFQ0IJQVJBQklDIExFVFRFUiBBSU4gSU5JVElBTCBGT1JNCitGRUNDCUFSQUJJQyBMRVRURVIgQUlOIE1FRElBTCBGT1JNCitGRUNECUFSQUJJQyBMRVRURVIgR0hBSU4gSVNPTEFURUQgRk9STQorRkVDRQlBUkFCSUMgTEVUVEVSIEdIQUlOIEZJTkFMIEZPUk0KK0ZFQ0YJQVJBQklDIExFVFRFUiBHSEFJTiBJTklUSUFMIEZPUk0KK0ZFRDAJQVJBQklDIExFVFRFUiBHSEFJTiBNRURJQUwgRk9STQorRkVEMQlBUkFCSUMgTEVUVEVSIEZFSCBJU09MQVRFRCBGT1JNCitGRUQyCUFSQUJJQyBMRVRURVIgRkVIIEZJTkFMIEZPUk0KK0ZFRDMJQVJBQklDIExFVFRFUiBGRUggSU5JVElBTCBGT1JNCitGRUQ0CUFSQUJJQyBMRVRURVIgRkVIIE1FRElBTCBGT1JNCitGRUQ1CUFSQUJJQyBMRVRURVIgUUFGIElTT0xBVEVEIEZPUk0KK0ZFRDYJQVJBQklDIExFVFRFUiBRQUYgRklOQUwgRk9STQorRkVENwlBUkFCSUMgTEVUVEVSIFFBRiBJTklUSUFMIEZPUk0KK0ZFRDgJQVJBQklDIExFVFRFUiBRQUYgTUVESUFMIEZPUk0KK0ZFRDkJQVJBQklDIExFVFRFUiBLQUYgSVNPTEFURUQgRk9STQorRkVEQQlBUkFCSUMgTEVUVEVSIEtBRiBGSU5BTCBGT1JNCitGRURCCUFSQUJJQyBMRVRURVIgS0FGIElOSVRJQUwgRk9STQorRkVEQwlBUkFCSUMgTEVUVEVSIEtBRiBNRURJQUwgRk9STQorRkVERAlBUkFCSUMgTEVUVEVSIExBTSBJU09MQVRFRCBGT1JNCitGRURFCUFSQUJJQyBMRVRURVIgTEFNIEZJTkFMIEZPUk0KK0ZFREYJQVJBQklDIExFVFRFUiBMQU0gSU5JVElBTCBGT1JNCitGRUUwCUFSQUJJQyBMRVRURVIgTEFNIE1FRElBTCBGT1JNCitGRUUxCUFSQUJJQyBMRVRURVIgTUVFTSBJU09MQVRFRCBGT1JNCitGRUUyCUFSQUJJQyBMRVRURVIgTUVFTSBGSU5BTCBGT1JNCitGRUUzCUFSQUJJQyBMRVRURVIgTUVFTSBJTklUSUFMIEZPUk0KK0ZFRTQJQVJBQklDIExFVFRFUiBNRUVNIE1FRElBTCBGT1JNCitGRUU1CUFSQUJJQyBMRVRURVIgTk9PTiBJU09MQVRFRCBGT1JNCitGRUU2CUFSQUJJQyBMRVRURVIgTk9PTiBGSU5BTCBGT1JNCitGRUU3CUFSQUJJQyBMRVRURVIgTk9PTiBJTklUSUFMIEZPUk0KK0ZFRTgJQVJBQklDIExFVFRFUiBOT09OIE1FRElBTCBGT1JNCitGRUU5CUFSQUJJQyBMRVRURVIgSEVIIElTT0xBVEVEIEZPUk0KK0ZFRUEJQVJBQklDIExFVFRFUiBIRUggRklOQUwgRk9STQorRkVFQglBUkFCSUMgTEVUVEVSIEhFSCBJTklUSUFMIEZPUk0KK0ZFRUMJQVJBQklDIExFVFRFUiBIRUggTUVESUFMIEZPUk0KK0ZFRUQJQVJBQklDIExFVFRFUiBXQVcgSVNPTEFURUQgRk9STQorRkVFRQlBUkFCSUMgTEVUVEVSIFdBVyBGSU5BTCBGT1JNCitGRUVGCUFSQUJJQyBMRVRURVIgQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk0KK0ZFRjAJQVJBQklDIExFVFRFUiBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkVGMQlBUkFCSUMgTEVUVEVSIFlFSCBJU09MQVRFRCBGT1JNCitGRUYyCUFSQUJJQyBMRVRURVIgWUVIIEZJTkFMIEZPUk0KK0ZFRjMJQVJBQklDIExFVFRFUiBZRUggSU5JVElBTCBGT1JNCitGRUY0CUFSQUJJQyBMRVRURVIgWUVIIE1FRElBTCBGT1JNCitGRUY1CUFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggTUFEREEgQUJPVkUgSVNPTEFURUQgRk9STQorRkVGNglBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIE1BRERBIEFCT1ZFIEZJTkFMIEZPUk0KK0ZFRjcJQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNCitGRUY4CUFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STQorRkVGOQlBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIEhBTVpBIEJFTE9XIElTT0xBVEVEIEZPUk0KK0ZFRkEJQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBIQU1aQSBCRUxPVyBGSU5BTCBGT1JNCitGRUZCCUFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIElTT0xBVEVEIEZPUk0KK0ZFRkMJQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgRklOQUwgRk9STQorRkVGRglaRVJPIFdJRFRIIE5PLUJSRUFLIFNQQUNFCitGRjAxCUZVTExXSURUSCBFWENMQU1BVElPTiBNQVJLCitGRjAyCUZVTExXSURUSCBRVU9UQVRJT04gTUFSSworRkYwMwlGVUxMV0lEVEggTlVNQkVSIFNJR04KK0ZGMDQJRlVMTFdJRFRIIERPTExBUiBTSUdOCitGRjA1CUZVTExXSURUSCBQRVJDRU5UIFNJR04KK0ZGMDYJRlVMTFdJRFRIIEFNUEVSU0FORAorRkYwNwlGVUxMV0lEVEggQVBPU1RST1BIRQorRkYwOAlGVUxMV0lEVEggTEVGVCBQQVJFTlRIRVNJUworRkYwOQlGVUxMV0lEVEggUklHSFQgUEFSRU5USEVTSVMKK0ZGMEEJRlVMTFdJRFRIIEFTVEVSSVNLCitGRjBCCUZVTExXSURUSCBQTFVTIFNJR04KK0ZGMEMJRlVMTFdJRFRIIENPTU1BCitGRjBECUZVTExXSURUSCBIWVBIRU4tTUlOVVMKK0ZGMEUJRlVMTFdJRFRIIEZVTEwgU1RPUAorRkYwRglGVUxMV0lEVEggU09MSURVUworRkYxMAlGVUxMV0lEVEggRElHSVQgWkVSTworRkYxMQlGVUxMV0lEVEggRElHSVQgT05FCitGRjEyCUZVTExXSURUSCBESUdJVCBUV08KK0ZGMTMJRlVMTFdJRFRIIERJR0lUIFRIUkVFCitGRjE0CUZVTExXSURUSCBESUdJVCBGT1VSCitGRjE1CUZVTExXSURUSCBESUdJVCBGSVZFCitGRjE2CUZVTExXSURUSCBESUdJVCBTSVgKK0ZGMTcJRlVMTFdJRFRIIERJR0lUIFNFVkVOCitGRjE4CUZVTExXSURUSCBESUdJVCBFSUdIVAorRkYxOQlGVUxMV0lEVEggRElHSVQgTklORQorRkYxQQlGVUxMV0lEVEggQ09MT04KK0ZGMUIJRlVMTFdJRFRIIFNFTUlDT0xPTgorRkYxQwlGVUxMV0lEVEggTEVTUy1USEFOIFNJR04KK0ZGMUQJRlVMTFdJRFRIIEVRVUFMUyBTSUdOCitGRjFFCUZVTExXSURUSCBHUkVBVEVSLVRIQU4gU0lHTgorRkYxRglGVUxMV0lEVEggUVVFU1RJT04gTUFSSworRkYyMAlGVUxMV0lEVEggQ09NTUVSQ0lBTCBBVAorRkYyMQlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQorRkYyMglGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgorRkYyMwlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgQworRkYyNAlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAorRkYyNQlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQorRkYyNglGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgorRkYyNwlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRworRkYyOAlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAorRkYyOQlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQorRkYyQQlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgorRkYyQglGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSworRkYyQwlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAorRkYyRAlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQorRkYyRQlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgorRkYyRglGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTworRkYzMAlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAorRkYzMQlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQorRkYzMglGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgorRkYzMwlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUworRkYzNAlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAorRkYzNQlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQorRkYzNglGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgorRkYzNwlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVworRkYzOAlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAorRkYzOQlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQorRkYzQQlGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgorRkYzQglGVUxMV0lEVEggTEVGVCBTUVVBUkUgQlJBQ0tFVAorRkYzQwlGVUxMV0lEVEggUkVWRVJTRSBTT0xJRFVTCitGRjNECUZVTExXSURUSCBSSUdIVCBTUVVBUkUgQlJBQ0tFVAorRkYzRQlGVUxMV0lEVEggQ0lSQ1VNRkxFWCBBQ0NFTlQKK0ZGM0YJRlVMTFdJRFRIIExPVyBMSU5FCitGRjQwCUZVTExXSURUSCBHUkFWRSBBQ0NFTlQKK0ZGNDEJRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBBCitGRjQyCUZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgQgorRkY0MwlGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEMKK0ZGNDQJRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBECitGRjQ1CUZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgRQorRkY0NglGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEYKK0ZGNDcJRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBHCitGRjQ4CUZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgSAorRkY0OQlGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEkKK0ZGNEEJRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBKCitGRjRCCUZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgSworRkY0QwlGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEwKK0ZGNEQJRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBNCitGRjRFCUZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgTgorRkY0RglGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIE8KK0ZGNTAJRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBQCitGRjUxCUZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgUQorRkY1MglGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFIKK0ZGNTMJRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBTCitGRjU0CUZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgVAorRkY1NQlGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFUKK0ZGNTYJRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBWCitGRjU3CUZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgVworRkY1OAlGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFgKK0ZGNTkJRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBZCitGRjVBCUZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgWgorRkY1QglGVUxMV0lEVEggTEVGVCBDVVJMWSBCUkFDS0VUCitGRjVDCUZVTExXSURUSCBWRVJUSUNBTCBMSU5FCitGRjVECUZVTExXSURUSCBSSUdIVCBDVVJMWSBCUkFDS0VUCitGRjVFCUZVTExXSURUSCBUSUxERQorRkY2MQlIQUxGV0lEVEggSURFT0dSQVBISUMgRlVMTCBTVE9QCitGRjYyCUhBTEZXSURUSCBMRUZUIENPUk5FUiBCUkFDS0VUCitGRjYzCUhBTEZXSURUSCBSSUdIVCBDT1JORVIgQlJBQ0tFVAorRkY2NAlIQUxGV0lEVEggSURFT0dSQVBISUMgQ09NTUEKK0ZGNjUJSEFMRldJRFRIIEtBVEFLQU5BIE1JRERMRSBET1QKK0ZGNjYJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBXTworRkY2NwlIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIEEKK0ZGNjgJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBJCitGRjY5CUhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgVQorRkY2QQlIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIEUKK0ZGNkIJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBPCitGRjZDCUhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgWUEKK0ZGNkQJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBZVQorRkY2RQlIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlPCitGRjZGCUhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgVFUKK0ZGNzAJSEFMRldJRFRIIEtBVEFLQU5BLUhJUkFHQU5BIFBST0xPTkdFRCBTT1VORCBNQVJLCitGRjcxCUhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgQQorRkY3MglIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEkKK0ZGNzMJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBVCitGRjc0CUhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgRQorRkY3NQlIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE8KK0ZGNzYJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLQQorRkY3NwlIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtJCitGRjc4CUhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgS1UKK0ZGNzkJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLRQorRkY3QQlIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtPCitGRjdCCUhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU0EKK0ZGN0MJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTSQorRkY3RAlIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNVCitGRjdFCUhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU0UKK0ZGN0YJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTworRkY4MAlIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRBCitGRjgxCUhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgVEkKK0ZGODIJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBUVQorRkY4MwlIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRFCitGRjg0CUhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgVE8KK0ZGODUJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOQQorRkY4NglIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5JCitGRjg3CUhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTlUKK0ZGODgJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBORQorRkY4OQlIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5PCitGRjhBCUhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgSEEKK0ZGOEIJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBISQorRkY4QwlIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhVCitGRjhECUhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgSEUKK0ZGOEUJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBITworRkY4RglIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1BCitGRjkwCUhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTUkKK0ZGOTEJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNVQorRkY5MglIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1FCitGRjkzCUhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTU8KK0ZGOTQJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBZQQorRkY5NQlIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFlVCitGRjk2CUhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgWU8KK0ZGOTcJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSQQorRkY5OAlIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJJCitGRjk5CUhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgUlUKK0ZGOUEJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSRQorRkY5QglIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJPCitGRjlDCUhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgV0EKK0ZGOUQJSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOCitGRjlFCUhBTEZXSURUSCBLQVRBS0FOQSBWT0lDRUQgU09VTkQgTUFSSworRkY5RglIQUxGV0lEVEggS0FUQUtBTkEgU0VNSS1WT0lDRUQgU09VTkQgTUFSSworRkZBMAlIQUxGV0lEVEggSEFOR1VMIEZJTExFUgorRkZBMQlIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBLSVlFT0sKK0ZGQTIJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkdLSVlFT0sKK0ZGQTMJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgS0lZRU9LLVNJT1MKK0ZGQTQJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTklFVU4KK0ZGQTUJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTklFVU4tQ0lFVUMKK0ZGQTYJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTklFVU4tSElFVUgKK0ZGQTcJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgVElLRVVUCitGRkE4CUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HVElLRVVUCitGRkE5CUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMCitGRkFBCUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLUtJWUVPSworRkZBQglIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1NSUVVTQorRkZBQwlIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1QSUVVUAorRkZBRAlIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1TSU9TCitGRkFFCUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVRISUVVVEgKK0ZGQUYJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwtUEhJRVVQSAorRkZCMAlIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1ISUVVSAorRkZCMQlIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBNSUVVTQorRkZCMglIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBQSUVVUAorRkZCMwlIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FOR1BJRVVQCitGRkI0CUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFBJRVVQLVNJT1MKK0ZGQjUJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU0lPUworRkZCNglIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FOR1NJT1MKK0ZGQjcJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgSUVVTkcKK0ZGQjgJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgQ0lFVUMKK0ZGQjkJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkdDSUVVQworRkZCQQlIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBDSElFVUNICitGRkJCCUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEtISUVVS0gKK0ZGQkMJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgVEhJRVVUSAorRkZCRAlIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBQSElFVVBICitGRkJFCUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEhJRVVICitGRkMyCUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEEKK0ZGQzMJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgQUUKK0ZGQzQJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUEKK0ZGQzUJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUFFCitGRkM2CUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEVPCitGRkM3CUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEUKK0ZGQ0EJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUVPCitGRkNCCUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlFCitGRkNDCUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE8KK0ZGQ0QJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgV0EKK0ZGQ0UJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgV0FFCitGRkNGCUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE9FCitGRkQyCUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlPCitGRkQzCUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFUKK0ZGRDQJSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgV0VPCitGRkQ1CUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFdFCitGRkQ2CUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFdJCitGRkQ3CUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlVCitGRkRBCUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEVVCitGRkRCCUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlJCitGRkRDCUhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEkKK0ZGRTAJRlVMTFdJRFRIIENFTlQgU0lHTgorRkZFMQlGVUxMV0lEVEggUE9VTkQgU0lHTgorRkZFMglGVUxMV0lEVEggTk9UIFNJR04KK0ZGRTMJRlVMTFdJRFRIIE1BQ1JPTgorRkZFNAlGVUxMV0lEVEggQlJPS0VOIEJBUgorRkZFNQlGVUxMV0lEVEggWUVOIFNJR04KK0ZGRTYJRlVMTFdJRFRIIFdPTiBTSUdOCitGRkU4CUhBTEZXSURUSCBGT1JNUyBMSUdIVCBWRVJUSUNBTAorRkZFOQlIQUxGV0lEVEggTEVGVFdBUkRTIEFSUk9XCitGRkVBCUhBTEZXSURUSCBVUFdBUkRTIEFSUk9XCitGRkVCCUhBTEZXSURUSCBSSUdIVFdBUkRTIEFSUk9XCitGRkVDCUhBTEZXSURUSCBET1dOV0FSRFMgQVJST1cKK0ZGRUQJSEFMRldJRFRIIEJMQUNLIFNRVUFSRQorRkZFRQlIQUxGV0lEVEggV0hJVEUgQ0lSQ0xFCitGRkZDCU9CSkVDVCBSRVBMQUNFTUVOVCBDSEFSQUNURVIKK0ZGRkQJUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCisiIiIKKworZGVmIF9tYWtldW5pY29kZSgpOgorCWZyb20gc3RyaW5nIGltcG9ydCBzcGxpdCwgYXRvaQorCWltcG9ydCByZQorCWZpcnN0UkUgPSByZS5jb21waWxlKCI8KC4qPyksIEZpcnN0PiIpCisJZmlyc3RSRW1hdGNoID0gZmlyc3RSRS5tYXRjaAorCWxhc3RSRSA9IHJlLmNvbXBpbGUoIjwoLio/KSwgTGFzdD4iKQorCWxhc3RSRW1hdGNoID0gbGFzdFJFLm1hdGNoCisJCisJbGluZXMgPSBzcGxpdChfdW5pY29kZSwgJ1xuJykKKwl3aGlsZSBub3QgbGluZXNbLTFdOgorCQlkZWwgbGluZXNbLTFdICMgZW1wdHkgc3RyaW5nCisJCisJdW5pY29kZSA9IFsnPz8/PyddICogMHgxMDAwMAorCWkgPSAwCisJbGVuTGluZXMgPSBsZW4obGluZXMpCisJd2hpbGUgaSA8IGxlbkxpbmVzOgorCQlsaW5lID0gbGluZXNbaV0KKwkJbnVtLCBuYW1lID0gc3BsaXQobGluZSwgJ1x0JykKKwkJbnVtID0gYXRvaShudW0sIDE2KQorCQlpZiBmaXJzdFJFbWF0Y2gobmFtZSkgaXMgbm90IE5vbmU6CisJCQlpID0gaSArIDEKKwkJCWxpbmUgPSBsaW5lc1tpXQorCQkJbnVtTGFzdCwgbmFtZUxhc3QgPSBzcGxpdChsaW5lLCAnXHQnKQorCQkJbSA9IGxhc3RSRW1hdGNoKG5hbWVMYXN0KQorCQkJYXNzZXJ0IG0gaXMgbm90IE5vbmUKKwkJCW5hbWUgPSBtLmdyb3VwKDEpCisJCQludW1MYXN0ID0gYXRvaShudW1MYXN0LCAxNikKKwkJCXVuaWNvZGVbbnVtOm51bUxhc3QrMV0gPSBbbmFtZV0gKiAobnVtTGFzdCAtIG51bSArIDEpCisJCWVsc2U6CisJCQl1bmljb2RlW251bV0gPSBuYW1lCisJCWkgPSBpICsgMQorCXdoaWxlIG5vdCB1bmljb2RlWy0xXToKKwkJZGVsIHVuaWNvZGVbLTFdICMgZW1wdHkgc3RyaW5nCisJcmV0dXJuIHVuaWNvZGUKKworCitjbGFzcyBfVW5pY29kZToKKwkKKwlkZWYgX19pbml0X18oc2VsZik6CisJCXNlbGYuY29kZXMgPSBfbWFrZXVuaWNvZGUoKQorCQorCWRlZiBfX2dldGl0ZW1fXyhzZWxmLCBjaGFyQ29kZSk6CisJCWlmIGNoYXJDb2RlID4gMHhmZmZmOgorCQkJcmFpc2UgSW5kZXhFcnJvciwgImNoYXJDb2RlIG91dCBvZiByYW5nZSIKKwkJdHJ5OgorCQkJcmV0dXJuIHNlbGYuY29kZXNbY2hhckNvZGVdCisJCWV4Y2VwdCBJbmRleEVycm9yOgorCQkJcmV0dXJuICI/Pz8/IgorCisKK1VuaWNvZGUgPSBfVW5pY29kZSgpCmRpZmYgLS1naXQgYS9MaWIvc3N0cnVjdC5weSBiL0xpYi9zc3RydWN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiYzQ3NzIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvc3N0cnVjdC5weQpAQCAtMCwwICsxLDIwNCBAQAorIiIic3N0cnVjdC5weSAtLSBTdXBlclN0cnVjdAorCitIaWdoZXIgbGV2ZWwgbGF5ZXIgb24gdG9wIG9mIHRoZSBzdHJ1Y3QgbW9kdWxlLCBlbmFibGluZyB0byAKK2JpbmQgbmFtZXMgdG8gc3RydWN0IGVsZW1lbnRzLiBUaGUgaW50ZXJmYWNlIGlzIHNpbWlsYXIgdG8gCitzdHJ1Y3QsIGV4Y2VwdCB0aGUgb2JqZWN0cyBwYXNzZWQgYW5kIHJldHVybmVkIGFyZSBub3QgdHVwbGVzIAorKG9yIGFyZ3VtZW50IGxpc3RzKSwgYnV0IGRpY3Rpb25hcmllcyBvciBpbnN0YW5jZXMuIAorCitKdXN0IGxpa2Ugc3RydWN0LCB3ZSB1c2UgZm9ybWF0IHN0cmluZ3MgdG8gZGVzY3JpYmUgYSBkYXRhIAorc3RydWN0dXJlLCBleGNlcHQgd2UgdXNlIG9uZSBsaW5lIHBlciBlbGVtZW50LiBMaW5lcyBhcmUgCitzZXBhcmF0ZWQgYnkgbmV3bGluZXMgb3Igc2VtaS1jb2xvbnMuIEVhY2ggbGluZSBjb250YWlucyAKK2VpdGhlciBvbmUgb2YgdGhlIHNwZWNpYWwgc3RydWN0IGNoYXJhY3RlcnMgKCdAJywgJz0nLCAnPCcsIAorJz4nIG9yICchJykgb3IgYSAnbmFtZTpmb3JtYXRjaGFyJyBjb21ibyAoZWcuICdteUZsb2F0OmYnKS4gCitSZXBldGl0aW9ucywgbGlrZSB0aGUgc3RydWN0IG1vZHVsZSBvZmZlcnMgdGhlbSBhcmUgbm90IHVzZWZ1bCAKK2luIHRoaXMgY29udGV4dCwgZXhjZXB0IGZvciBmaXhlZCBsZW5ndGggc3RyaW5ncyAgKGVnLiAnbXlJbnQ6NWgnIAoraXMgbm90IGFsbG93ZWQgYnV0ICdteVN0cmluZzo1cycgaXMpLiBUaGUgJ3gnIGZvcm1hdCBjaGFyYWN0ZXIgCisocGFkIGJ5dGUpIGlzIHRyZWF0ZWQgYXMgJ3NwZWNpYWwnLCBzaW5jZSBpdCBpcyBieSBkZWZpbml0aW9uIAorYW5vbnltb3VzLiBFeHRyYSB3aGl0ZXNwYWNlIGlzIGFsbG93ZWQgZXZlcnl3aGVyZS4KKworVGhlIHNzdHJ1Y3QgbW9kdWxlIG9mZmVycyBvbmUgZmVhdHVyZSB0aGF0IHRoZSAibm9ybWFsIiBzdHJ1Y3QKK21vZHVsZSBkb2Vzbid0OiBzdXBwb3J0IGZvciBmaXhlZCBwb2ludCBudW1iZXJzLiBUaGVzZSBhcmUgc3BlbGxlZAorYXMgIm4ubUYiLCB3aGVyZSBuIGlzIHRoZSBudW1iZXIgb2YgYml0cyBiZWZvcmUgdGhlIHBvaW50LCBhbmQgbQordGhlIG51bWJlciBvZiBiaXRzIGFmdGVyIHRoZSBwb2ludC4gRml4ZWQgcG9pbnQgbnVtYmVycyBnZXQgCitjb252ZXJ0ZWQgdG8gZmxvYXRzLgorCitwYWNrKGZvcm1hdCwgb2JqZWN0KToKKwknb2JqZWN0JyBpcyBlaXRoZXIgYSBkaWN0aW9uYXJ5IG9yIGFuIGluc3RhbmNlIChvciBhY3R1YWxseQorCWFueXRoaW5nIHRoYXQgaGFzIGEgX19kaWN0X18gYXR0cmlidXRlKS4gSWYgaXQgaXMgYSBkaWN0aW9uYXJ5LCAKKwlpdHMga2V5cyBhcmUgdXNlZCBmb3IgbmFtZXMuIElmIGl0IGlzIGFuIGluc3RhbmNlLCBpdCdzIAorCWF0dHJpYnV0ZXMgYXJlIHVzZWQgdG8gZ3JhYiBzdHJ1Y3QgZWxlbWVudHMgZnJvbS4gUmV0dXJucworCWEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGRhdGEuCisKK3VucGFjayhmb3JtYXQsIGRhdGEsIG9iamVjdD1Ob25lKQorCUlmICdvYmplY3QnIGlzIG9taXR0ZWQgKG9yIE5vbmUpLCBhIG5ldyBkaWN0aW9uYXJ5IHdpbGwgYmUgCisJcmV0dXJuZWQuIElmICdvYmplY3QnIGlzIGEgZGljdGlvbmFyeSwgaXQgd2lsbCBiZSB1c2VkIHRvIGFkZCAKKwlzdHJ1Y3QgZWxlbWVudHMgdG8uIElmIGl0IGlzIGFuIGluc3RhbmNlIChvciBpbiBmYWN0IGFueXRoaW5nCisJdGhhdCBoYXMgYSBfX2RpY3RfXyBhdHRyaWJ1dGUpLCBhbiBhdHRyaWJ1dGUgd2lsbCBiZSBhZGRlZCBmb3IgCisJZWFjaCBzdHJ1Y3QgZWxlbWVudC4gSW4gdGhlIGxhdHRlciB0d28gY2FzZXMsICdvYmplY3QnIGl0c2VsZiAKKwlpcyByZXR1cm5lZC4KKwordW5wYWNrMihmb3JtYXQsIGRhdGEsIG9iamVjdD1Ob25lKQorCUNvbnZlbmllbmNlIGZ1bmN0aW9uLiBTYW1lIGFzIHVucGFjaywgZXhjZXB0IGRhdGEgbWF5IGJlIGxvbmdlciAKKwl0aGFuIG5lZWRlZC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGEgdHVwbGU6IChvYmplY3QsIGxlZnRvdmVyZGF0YSkuCisKK2NhbGNzaXplKGZvcm1hdCkKKwlsaWtlIHN0cnVjdC5jYWxjc2l6ZSgpLCBidXQgdXNlcyBvdXIgb3duIGZvcm1hdCBzdHJpbmdzOgorCWl0IHJldHVybnMgdGhlIHNpemUgb2YgdGhlIGRhdGEgaW4gYnl0ZXMuCisiIiIKKworIyBYWFggSSB3b3VsZCBsaWtlIHRvIHN1cHBvcnQgcGFzY2FsIHN0cmluZ3MsIHRvbywgYnV0IEknbSBub3QKKyMgc3VyZSBpZiB0aGF0J3Mgd2lzZS4gV291bGQgYmUgbmljZSBpZiBzdHJ1Y3Qgc3VwcG9ydGVkIHRoZW0KKyMgInByb3Blcmx5IiwgYnV0IHRoYXQgd291bGQgY2VydGFpbmx5IGJyZWFrIGNhbGNzaXplKCkuLi4KKworX192ZXJzaW9uX18gPSAiMS4yIgorX19jb3B5cmlnaHRfXyA9ICJDb3B5cmlnaHQgMTk5OCwgSnVzdCB2YW4gUm9zc3VtIDxqdXN0QGxldHRlcnJvci5jb20+IgorCitpbXBvcnQgc3RydWN0CitpbXBvcnQgcmUKK2ltcG9ydCB0eXBlcworCisKK2Vycm9yID0gInNzdHJ1Y3QuZXJyb3IiCisKK2RlZiBwYWNrKGZvcm1hdCwgb2JqZWN0KToKKwlmb3JtYXRzdHJpbmcsIG5hbWVzLCBmaXhlcyA9IGdldGZvcm1hdChmb3JtYXQpCisJZWxlbWVudHMgPSBbXQorCWlmIHR5cGUob2JqZWN0KSBpcyBub3QgdHlwZXMuRGljdFR5cGU6CisJCW9iamVjdCA9IG9iamVjdC5fX2RpY3RfXworCWZvciBuYW1lIGluIG5hbWVzOgorCQl2YWx1ZSA9IG9iamVjdFtuYW1lXQorCQlpZiBmaXhlcy5oYXNfa2V5KG5hbWUpOgorCQkJIyBmaXhlZCBwb2ludCBjb252ZXJzaW9uCisJCQl2YWx1ZSA9IGludChyb3VuZCh2YWx1ZSpmaXhlc1tuYW1lXSkpCisJCWVsZW1lbnRzLmFwcGVuZCh2YWx1ZSkKKwlkYXRhID0gYXBwbHkoc3RydWN0LnBhY2ssIChmb3JtYXRzdHJpbmcsKSArIHR1cGxlKGVsZW1lbnRzKSkKKwlyZXR1cm4gZGF0YQorCitkZWYgdW5wYWNrKGZvcm1hdCwgZGF0YSwgb2JqZWN0PU5vbmUpOgorCWlmIG9iamVjdCBpcyBOb25lOgorCQlvYmplY3QgPSB7fQorCWZvcm1hdHN0cmluZywgbmFtZXMsIGZpeGVzID0gZ2V0Zm9ybWF0KGZvcm1hdCkKKwlpZiB0eXBlKG9iamVjdCkgaXMgdHlwZXMuRGljdFR5cGU6CisJCWRpY3QgPSBvYmplY3QKKwllbHNlOgorCQlkaWN0ID0gb2JqZWN0Ll9fZGljdF9fCisJZWxlbWVudHMgPSBzdHJ1Y3QudW5wYWNrKGZvcm1hdHN0cmluZywgZGF0YSkKKwlmb3IgaSBpbiByYW5nZShsZW4obmFtZXMpKToKKwkJbmFtZSA9IG5hbWVzW2ldCisJCXZhbHVlID0gZWxlbWVudHNbaV0KKwkJaWYgZml4ZXMuaGFzX2tleShuYW1lKToKKwkJCSMgZml4ZWQgcG9pbnQgY29udmVyc2lvbgorCQkJdmFsdWUgPSB2YWx1ZSAvIGZpeGVzW25hbWVdCisJCWRpY3RbbmFtZV0gPSB2YWx1ZQorCXJldHVybiBvYmplY3QKKworZGVmIHVucGFjazIoZm9ybWF0LCBkYXRhLCBvYmplY3Q9Tm9uZSk6CisJbGVuZ3RoID0gY2FsY3NpemUoZm9ybWF0KQorCXJldHVybiB1bnBhY2soZm9ybWF0LCBkYXRhWzpsZW5ndGhdLCBvYmplY3QpLCBkYXRhW2xlbmd0aDpdCisKK2RlZiBjYWxjc2l6ZShmb3JtYXQpOgorCWZvcm1hdHN0cmluZywgbmFtZXMsIGZpeGVzID0gZ2V0Zm9ybWF0KGZvcm1hdCkKKwlyZXR1cm4gc3RydWN0LmNhbGNzaXplKGZvcm1hdHN0cmluZykKKworCisjIG1hdGNoZXMgIm5hbWU6Zm9ybWF0Y2hhciIgKHdoaXRlc3BhY2UgaXMgYWxsb3dlZCkKK19lbGVtZW50UkUgPSByZS5jb21waWxlKAorCQkiXHMqIgkJCQkJCQkjIHdoaXRlc3BhY2UKKwkJIihbQS1aYS16X11bQS1aYS16XzAtOV0qKSIJCSMgbmFtZSAocHl0aG9uIGlkZW50aWZpZXIpCisJCSJccyo6XHMqIgkJCQkJCSMgd2hpdGVzcGFjZSA6IHdoaXRlc3BhY2UKKwkJIihbY2JCaEhpSWxMZmRdfFswLTldK1twc118IgkjIGZvcm1hdGNoYXIuLi4KKwkJCSIoWzAtOV0rKVwuKFswLTldKykoRikpIgkjIC4uLmZvcm1hdGNoYXIKKwkJIlxzKiIJCQkJCQkJIyB3aGl0ZXNwYWNlCisJCSIoIy4qKT8kIgkJCQkJCSMgW2NvbW1lbnRdICsgZW5kIG9mIHN0cmluZworCSkKKworIyBtYXRjaGVzIHRoZSBzcGVjaWFsIHN0cnVjdCBmb3JtYXQgY2hhcnMgYW5kICd4JyAocGFkIGJ5dGUpCitfZXh0cmFSRSA9IHJlLmNvbXBpbGUoIlxzKihbeEA9PD4hXSlccyooIy4qKT8kIikKKworIyBtYXRjaGVzIGFuICJlbXB0eSIgc3RyaW5nLCBwb3NzaWJseSBjb250YWluaW5nIHdoaXRlc3BhY2UgYW5kL29yIGEgY29tbWVudAorX2VtcHR5UkUgPSByZS5jb21waWxlKCJccyooIy4qKT8kIikKKworX2ZpeGVkcG9pbnRtYXBwaW5ncyA9IHsKKwkJODogImIiLAorCQkxNjogImgiLAorCQkzMjogImwifQorCitfZm9ybWF0Y2FjaGUgPSB7fQorCitkZWYgZ2V0Zm9ybWF0KGZvcm1hdCk6CisJdHJ5OgorCQlmb3JtYXRzdHJpbmcsIG5hbWVzLCBmaXhlcyA9IF9mb3JtYXRjYWNoZVtmb3JtYXRdCisJZXhjZXB0IEtleUVycm9yOgorCQlsaW5lcyA9IHJlLnNwbGl0KCJbXG47XSIsIGZvcm1hdCkKKwkJZm9ybWF0c3RyaW5nID0gIiIKKwkJbmFtZXMgPSBbXQorCQlmaXhlcyA9IHt9CisJCWZvciBsaW5lIGluIGxpbmVzOgorCQkJaWYgX2VtcHR5UkUubWF0Y2gobGluZSk6CisJCQkJY29udGludWUKKwkJCW0gPSBfZXh0cmFSRS5tYXRjaChsaW5lKQorCQkJaWYgbToKKwkJCQlmb3JtYXRjaGFyID0gbS5ncm91cCgxKQorCQkJCWlmIGZvcm1hdGNoYXIgPD4gJ3gnIGFuZCBmb3JtYXRzdHJpbmc6CisJCQkJCXJhaXNlIGVycm9yLCAiYSBzcGVjaWFsIGZvcm1hdCBjaGFyIG11c3QgYmUgZmlyc3QiCisJCQllbHNlOgorCQkJCW0gPSBfZWxlbWVudFJFLm1hdGNoKGxpbmUpCisJCQkJaWYgbm90IG06CisJCQkJCXJhaXNlIGVycm9yLCAic3ludGF4IGVycm9yIGluIGZvcm1hdDogJyVzJyIgJSBsaW5lCisJCQkJbmFtZSA9IG0uZ3JvdXAoMSkKKwkJCQluYW1lcy5hcHBlbmQobmFtZSkKKwkJCQlmb3JtYXRjaGFyID0gbS5ncm91cCgyKQorCQkJCWlmIG0uZ3JvdXAoMyk6CisJCQkJCSMgZml4ZWQgcG9pbnQKKwkJCQkJYmVmb3JlID0gaW50KG0uZ3JvdXAoMykpCisJCQkJCWFmdGVyID0gaW50KG0uZ3JvdXAoNCkpCisJCQkJCWJpdHMgPSBiZWZvcmUgKyBhZnRlcgorCQkJCQlpZiBiaXRzIG5vdCBpbiBbOCwgMTYsIDMyXToKKwkJCQkJCXJhaXNlIGVycm9yLCAiZml4ZWQgcG9pbnQgbXVzdCBiZSA4LCAxNiBvciAzMiBiaXRzIGxvbmciCisJCQkJCWZvcm1hdGNoYXIgPSBfZml4ZWRwb2ludG1hcHBpbmdzW2JpdHNdCisJCQkJCWFzc2VydCBtLmdyb3VwKDUpID09ICJGIgorCQkJCQlmaXhlc1tuYW1lXSA9IGZsb2F0KDEgPDwgYWZ0ZXIpCisJCQlmb3JtYXRzdHJpbmcgPSBmb3JtYXRzdHJpbmcgKyBmb3JtYXRjaGFyCisJCV9mb3JtYXRjYWNoZVtmb3JtYXRdID0gZm9ybWF0c3RyaW5nLCBuYW1lcywgZml4ZXMKKwlyZXR1cm4gZm9ybWF0c3RyaW5nLCBuYW1lcywgZml4ZXMKKworZGVmIF90ZXN0KCk6CisJZm9ybWF0ID0gIiIiCisJCSMgY29tbWVudHMgYXJlIGFsbG93ZWQKKwkJPiAgIyBiaWcgZW5kaWFuIChzZWUgZG9jdW1lbnRhdGlvbiBmb3Igc3RydWN0KQorCQkjIGVtcHR5IGxpbmVzIGFyZSBhbGxvd2VkOgorCQkKKwkJYXNob3J0OiBoCisJCWFsb25nOiBsCisJCWFieXRlOiBiCSMgYSBieXRlCisJCWFjaGFyOiBjCisJCWFzdHI6IDVzCisJCWFmbG9hdDogZjsgYWRvdWJsZTogZAkjIG11bHRpcGxlICJzdGF0ZW1lbnRzIiBhcmUgYWxsb3dlZAorCQlhZml4ZWQ6IDE2LjE2RgorCSIiIgorCQorCXByaW50ICdzaXplOicsIGNhbGNzaXplKGZvcm1hdCkKKwkKKwljbGFzcyBmb286CisJCXBhc3MKKwkKKwlpID0gZm9vKCkKKwkKKwlpLmFzaG9ydCA9IDB4N2ZmZgorCWkuYWxvbmcgPSAweDdmZmZmZmZmCisJaS5hYnl0ZSA9IDB4N2YKKwlpLmFjaGFyID0gImEiCisJaS5hc3RyID0gIjEyMzQ1IgorCWkuYWZsb2F0ID0gMC41CisJaS5hZG91YmxlID0gMC41CisJaS5hZml4ZWQgPSAxLjUKKwkKKwlkYXRhID0gcGFjayhmb3JtYXQsIGkpCisJcHJpbnQgJ2RhdGE6JywgYGRhdGFgCisJcHJpbnQgdW5wYWNrKGZvcm1hdCwgZGF0YSkKKwlpMiA9IGZvbygpCisJdW5wYWNrKGZvcm1hdCwgZGF0YSwgaTIpCisJcHJpbnQgdmFycyhpMikKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKwlfdGVzdCgpCmRpZmYgLS1naXQgYS9MaWIveG1sV3JpdGVyLnB5IGIvTGliL3htbFdyaXRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDc4OTU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3htbFdyaXRlci5weQpAQCAtMCwwICsxLDE3MiBAQAorIiIieG1sV3JpdGVyLnB5IC0tIFNpbXBsZSBYTUwgYXV0aG9yaW5nIGNsYXNzIiIiCisKK19fYXV0aG9yX18gPSAianZyIgorX192ZXJzaW9uX18gPSAiMC45IgorCitpbXBvcnQgc3RyaW5nCitpbXBvcnQgc3RydWN0CisKK0lOREVOVCA9ICIgICIKKworY2xhc3MgWE1MV3JpdGVyOgorCQorCWRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBkdGQ9Tm9uZSwgaW5kZW50d2hpdGU9SU5ERU5UKToKKwkJaWYgdHlwZShmaWxlKSA9PSB0eXBlKCIiKToKKwkJCXNlbGYuZmlsZSA9IG9wZW4oZmlsZSwgInciKQorCQllbHNlOgorCQkJIyBhc3N1bWUgd3JpdGFibGUgZmlsZSBvYmplY3QKKwkJCXNlbGYuZmlsZSA9IGZpbGUKKwkJc2VsZi5kdGQgPSBkdGQKKwkJc2VsZi5pbmRlbnR3aGl0ZSA9IGluZGVudHdoaXRlCisJCXNlbGYuaW5kZW50bGV2ZWwgPSAwCisJCXNlbGYuc3RhY2sgPSBbXQorCQlzZWxmLm5lZWRpbmRlbnQgPSAxCisJCXNlbGYud3JpdGVyYXcoIjw/eG1sIHZlcnNpb249JzEuMCc/PiIpCisJCXNlbGYubmV3bGluZSgpCisJCWlmIHNlbGYuZHRkOgorCQkJIyBET0NUWVBFPz8/CisJCQlzZWxmLm5ld2xpbmUoKQorCQorCWRlZiBjbG9zZShzZWxmKToKKwkJc2VsZi5maWxlLmNsb3NlKCkKKwkKKwlkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisJCXNlbGYud3JpdGVyYXcoZXNjYXBlKGRhdGEpKQorCQorCWRlZiB3cml0ZV9ub2luZGVudChzZWxmLCBkYXRhKToKKwkJc2VsZi5maWxlLndyaXRlKGVzY2FwZShkYXRhKSkKKwkKKwlkZWYgd3JpdGU4Yml0KHNlbGYsIGRhdGEpOgorCQlzZWxmLndyaXRlcmF3KGVzY2FwZThiaXQoZGF0YSkpCisJCisJZGVmIHdyaXRlMTZiaXQoc2VsZiwgZGF0YSk6CisJCXNlbGYud3JpdGVyYXcoZXNjYXBlMTZiaXQoZGF0YSkpCisJCisJZGVmIHdyaXRlcmF3KHNlbGYsIGRhdGEpOgorCQlpZiBzZWxmLm5lZWRpbmRlbnQ6CisJCQlzZWxmLmZpbGUud3JpdGUoc2VsZi5pbmRlbnRsZXZlbCAqIHNlbGYuaW5kZW50d2hpdGUpCisJCQlzZWxmLm5lZWRpbmRlbnQgPSAwCisJCXNlbGYuZmlsZS53cml0ZShkYXRhKQorCQorCWRlZiBuZXdsaW5lKHNlbGYpOgorCQlzZWxmLmZpbGUud3JpdGUoIlxuIikKKwkJc2VsZi5uZWVkaW5kZW50ID0gMQorCQorCWRlZiBjb21tZW50KHNlbGYsIGRhdGEpOgorCQlkYXRhID0gZXNjYXBlKGRhdGEpCisJCWxpbmVzID0gc3RyaW5nLnNwbGl0KGRhdGEsICJcbiIpCisJCXNlbGYud3JpdGVyYXcoIjwhLS0gIiArIGxpbmVzWzBdKQorCQlmb3IgbGluZSBpbiBsaW5lc1sxOl06CisJCQlzZWxmLm5ld2xpbmUoKQorCQkJc2VsZi53cml0ZXJhdygiICAgICAiICsgbGluZSkKKwkJc2VsZi53cml0ZXJhdygiIC0tPiIpCisJCisJZGVmIHNpbXBsZXRhZyhzZWxmLCBfVEFHXywgKmFyZ3MsICoqa3dhcmdzKToKKwkJYXR0cmRhdGEgPSBhcHBseShzZWxmLnN0cmluZ2lmeWF0dHJzLCBhcmdzLCBrd2FyZ3MpCisJCWRhdGEgPSAiPCVzJXMvPiIgJSAoX1RBR18sIGF0dHJkYXRhKQorCQlzZWxmLndyaXRlcmF3KGRhdGEpCisJCisJZGVmIGJlZ2ludGFnKHNlbGYsIF9UQUdfLCAqYXJncywgKiprd2FyZ3MpOgorCQlhdHRyZGF0YSA9IGFwcGx5KHNlbGYuc3RyaW5naWZ5YXR0cnMsIGFyZ3MsIGt3YXJncykKKwkJZGF0YSA9ICI8JXMlcz4iICUgKF9UQUdfLCBhdHRyZGF0YSkKKwkJc2VsZi53cml0ZXJhdyhkYXRhKQorCQlzZWxmLnN0YWNrLmFwcGVuZChfVEFHXykKKwkJc2VsZi5pbmRlbnQoKQorCQorCWRlZiBlbmR0YWcoc2VsZiwgX1RBR18pOgorCQlhc3NlcnQgc2VsZi5zdGFjayBhbmQgc2VsZi5zdGFja1stMV0gPT0gX1RBR18sICJub25tYXRjaGluZyBlbmR0YWciCisJCWRlbCBzZWxmLnN0YWNrWy0xXQorCQlzZWxmLmRlZGVudCgpCisJCWRhdGEgPSAiPC8lcz4iICUgX1RBR18KKwkJc2VsZi53cml0ZXJhdyhkYXRhKQorCQorCWRlZiBkdW1waGV4KHNlbGYsIGRhdGEpOgorCQlsaW5lbGVuZ3RoID0gMTYKKwkJaGV4bGluZWxlbmd0aCA9IGxpbmVsZW5ndGggKiAyCisJCWNodW5rc2l6ZSA9IDgKKwkJZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGRhdGEpLCBsaW5lbGVuZ3RoKToKKwkJCWhleGxpbmUgPSBoZXhTdHIoZGF0YVtpOmkrbGluZWxlbmd0aF0pCisJCQlsaW5lID0gIiIKKwkJCXdoaXRlID0gIiIKKwkJCWZvciBqIGluIHJhbmdlKDAsIGhleGxpbmVsZW5ndGgsIGNodW5rc2l6ZSk6CisJCQkJbGluZSA9IGxpbmUgKyB3aGl0ZSArIGhleGxpbmVbajpqK2NodW5rc2l6ZV0KKwkJCQl3aGl0ZSA9ICIgIgorCQkJc2VsZi53cml0ZXJhdyhsaW5lKQorCQkJc2VsZi5uZXdsaW5lKCkKKwkKKwlkZWYgaW5kZW50KHNlbGYpOgorCQlzZWxmLmluZGVudGxldmVsID0gc2VsZi5pbmRlbnRsZXZlbCArIDEKKwkKKwlkZWYgZGVkZW50KHNlbGYpOgorCQlhc3NlcnQgc2VsZi5pbmRlbnRsZXZlbCA+IDAKKwkJc2VsZi5pbmRlbnRsZXZlbCA9IHNlbGYuaW5kZW50bGV2ZWwgLSAxCisJCisJZGVmIHN0cmluZ2lmeWF0dHJzKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisJCWlmIGt3YXJnczoKKwkJCWFzc2VydCBub3QgYXJncworCQkJYXR0cmlidXRlcyA9IGt3YXJncy5pdGVtcygpCisJCQlhdHRyaWJ1dGVzLnNvcnQoKQorCQllbGlmIGFyZ3M6CisJCQlhc3NlcnQgbGVuKGFyZ3MpID09IDEKKwkJCWF0dHJpYnV0ZXMgPSBhcmdzWzBdCisJCWVsc2U6CisJCQlyZXR1cm4gIiIKKwkJZGF0YSA9ICIiCisJCWZvciBhdHRyLCB2YWx1ZSBpbiBhdHRyaWJ1dGVzOgorCQkJZGF0YSA9IGRhdGEgKyAnICVzPSIlcyInICUgKGF0dHIsIGVzY2FwZWF0dHIoc3RyKHZhbHVlKSkpCisJCXJldHVybiBkYXRhCisJCisKK2RlZiBlc2NhcGUoZGF0YSk6CisJZGF0YSA9IHN0cmluZy5yZXBsYWNlKGRhdGEsICImIiwgIiZhbXA7IikKKwlkYXRhID0gc3RyaW5nLnJlcGxhY2UoZGF0YSwgIjwiLCAiJmx0OyIpCisJcmV0dXJuIGRhdGEKKworZGVmIGVzY2FwZWF0dHIoZGF0YSk6CisJZGF0YSA9IHN0cmluZy5yZXBsYWNlKGRhdGEsICImIiwgIiZhbXA7IikKKwlkYXRhID0gc3RyaW5nLnJlcGxhY2UoZGF0YSwgIjwiLCAiJmx0OyIpCisJZGF0YSA9IHN0cmluZy5yZXBsYWNlKGRhdGEsICciJywgIiZxdW90OyIpCisJcmV0dXJuIGRhdGEKKworZGVmIGVzY2FwZThiaXQoZGF0YSk6CisJZGVmIGVzY2FwZWNoYXIoYyk6CisJCW4gPSBvcmQoYykKKwkJaWYgYyBpbiAiPCYiOgorCQkJaWYgYyA9PSAiJiI6CisJCQkJcmV0dXJuICImYW1wOyIKKwkJCWVsc2U6CisJCQkJcmV0dXJuICImbHQ7IgorCQllbGlmIDMyIDw9IG4gPD0gMTI3OgorCQkJcmV0dXJuIGMKKwkJZWxzZToKKwkJCXJldHVybiAiJiMiICsgYG5gICsgIjsiCisJcmV0dXJuIHN0cmluZy5qb2luKG1hcChlc2NhcGVjaGFyLCBkYXRhKSwgIiIpCisKK25lZWRzd2FwID0gc3RydWN0LnBhY2soImgiLCAxKSA9PSAiXDAwMVwwMDAiCisKK2RlZiBlc2NhcGUxNmJpdChkYXRhKToKKwlpbXBvcnQgYXJyYXkKKwlhID0gYXJyYXkuYXJyYXkoIkgiKQorCWEuZnJvbXN0cmluZyhkYXRhKQorCWlmIG5lZWRzd2FwOgorCQlhLmJ5dGVzd2FwKCkKKwlkZWYgZXNjYXBlbnVtKG4sIGFtcD1vcmQoIiYiKSwgbHQ9b3JkKCI8IikpOgorCQlpZiBuID09IGFtcDoKKwkJCXJldHVybiAiJmFtcDsiCisJCWVsaWYgbiA9PSBsdDoKKwkJCXJldHVybiAiJmx0OyIKKwkJZWxpZiAzMiA8PSBuIDw9IDEyNzoKKwkJCXJldHVybiBjaHIobikKKwkJZWxzZToKKwkJCXJldHVybiAiJiMiICsgYG5gICsgIjsiCisJcmV0dXJuIHN0cmluZy5qb2luKG1hcChlc2NhcGVudW0sIGEpLCAiIikKKworCitkZWYgaGV4U3RyKHMpOgorCWggPSBzdHJpbmcuaGV4ZGlnaXRzCisJciA9ICcnCisJZm9yIGMgaW4gczoKKwkJaSA9IG9yZChjKQorCQlyID0gciArIGhbKGkgPj4gNCkgJiAweEZdICsgaFtpICYgMHhGXQorCXJldHVybiByCisK