MjAwNS0wNS0wOCAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogY29uZmlndXJlLmFjIChBQ19JTklUKTogVXBncmFkZWQgdG8gMC45Ny4KCgkqIGNvbXBpbGU6IENvcGllZCBmcm9tIEF1dG9tYWtlIDEuOS40LgoJKiBjb25maWcuZ3Vlc3M6IExpa2V3aXNlLgoJKiBjb25maWcuc3ViOiBMaWtld2lzZS4KCSogZGVwY29tcDogTGlrZXdpc2UuCgkqIGluc3RhbGwtc2g6IExpa2V3aXNlLgoJKiBtaXNzaW5nOiBMaWtld2lzZS4KCSogbWtpbnN0YWxsZGlyczogTGlrZXdpc2UuCgkqIG1kYXRlLXNoOiBMaWtld2lzZS4KCSogZG9jcy90ZXhpbmZvLnRleDogTGlrZXdpc2UuCgoyMDA1LTA1LTA4ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvZnN5c194ZnMuYyAobmV4dF9kZW50cnkpOiBVc2UgYXJyYXlzIG9mIGFycmF5cyBpbnN0ZWFkIG9mCglhcnJheXMgb2YgcG9pbnRlcnMgZm9yIFVTVUFMLCB0byBhdm9pZCByZWFkLW9ubHkgc3RyaW5ncy4gUmVwb3J0ZWQKCWJ5IFN2ZW4gV2VnZW5lciA8c3dlZ2VuZXJAZ2VudG9vLm9yZz4uCgoyMDA1LTAzLTI4ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBsaWIvZGV2aWNlLmMgKGdldF9kcml2ZV9nZW9tZXRyeSk6IFVzZSBTVC5TVF9TSVpFIGluc3RlYWQgb2YKCVNULlNUX0JMT0NLUyB0byBnZXQgdGhlIHRvdGFsIG51bWJlciBvZiBzZWN0b3JzLCBiZWNhdXNlIHN0X2Jsb2NrcwoJaXMgbm90IHRoZSBzYW1lIGlmIGl0IGlzIGEgc3BhcnNlIGZpbGUuCgoyMDA1LTAzLTE5ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvc3RhZ2UyLmMgKGNtYWluKTogSW5pdGlhbGl6ZSBERUZBVUxUX0ZJTEUgdG8gYW4gZW1wdHkKCXN0cmluZy4gUmVwb3J0ZWQgYnkgTkFUT1JJIFNoaW4gPG5hdG9yaUBhZG0ucy51LXRva3lvLmFjLmpwPi4KCjIwMDUtMDMtMTUgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIHN0YWdlMi9mc3lzX2ZhdC5jIChmYXRfbW91bnQpOiBJZ25vcmUgdGhlIDNyZCBiaXQgb2YgYSBtZWRpYQoJZGVzY3JpcHRvciwgYmVjYXVzZSBzb21lIEJJT1NlcyBvdmVyd3JpdGUgdGhpcyB2YWx1ZSwgYWNjb3JkaW5nCgl0byB0aGUgc3RvcmFnZSBtb2RlIChlLmcuIFVTQiBGbG9wcHkgb3IgVVNCIEhERCkuCgoyMDA1LTAyLTE2ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBncnViL2FzbXN0dWIuYyAoZ3J1Yl9zdGFnZTIpOiBSZW1vdmUgdGhlIGF0dHJpYnV0ZSBgdm9sYXRpbGUnCglmcm9tIGRvaXQuIEkgaG9wZSB0aGlzIGNoYW5nZSBpcyBzYWZlIGZvciBhbGwgY29tcGlsZXJzLgoKMjAwNS0wMi0xNSAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGluc3RhbGxfZnVuYyk6IElmIERFU1RfRFJJVkUgaXMgYSBoYXJkCglkaXNrLCBlbmFibGUgdGhlIHdvcmthcm91bmQgaW4gU3RhZ2UgMSBieSByZXBsYWNpbmcgdGhlIGptcAoJd2l0aCBkb3VibGUgbm9wJ3MuCgoJKiBzdGFnZTEvc3RhZ2UxLmggKFNUQUdFMV9CT09UX0RSSVZFX0NIRUNLKTogTmV3IG1hY3JvLgoJKFNUQUdFMV9CT09UX0RSSVZFX01BU0spOiBSZW1vdmVkLgoKCSogc3RhZ2UxL3N0YWdlMS5TIChib290X2RyaXZlX2NoZWNrKTogTmV3IGxhYmVsLiBUaGlzIGltcGxlbWVudHMKCWEgZGlmZmVyZW50IHdvcmthcm91bmQgZm9yIGJ1Z2d5IEJJT1NlcyB3aGljaCBkb24ndCBwYXNzIGJvb3QKCWRyaXZlIGNvcnJlY3RseS4gVGhpcyBpcyBlZmZlY3RpdmUgZm9yIEJJT1NlcyB3aGljaCBwYXNzIGEgdmFsdWUKCXdpdGhvdXQgdGhlIHNldmVudGggYml0ICgweDgwKS4KCShib290X2RyaXZlX21hc2spOiBSZW1vdmVkLgoKMjAwNS0wMi0wMyAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogZ3J1Yi9hc21zdHViLmMgKGNvbnNvbGVfY3VycmVudF9jb2xvcik6IE1ha2UgaXQgZ2xvYmFsIGFzCglkZWNsYXJlZC4KCShncnViX3N0YWdlMik6IFR3ZWFrIHRoZSBkZWNsYXJhdGlvbiBhbmQgdGhlIGRlZmluaXRpb24gb2YgdGhlCgluZXN0ZWQgZnVuY3Rpb24gZG9pdC4KCjIwMDUtMDItMDIgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIHN0YWdlMi9zbXAtaW1wcy5oIChpbXBzX2FueV9uZXdfYXBpY3MpOiBSZW1vdmVkLgoJKGltcHNfZW5hYmxlZCk6IExpa2V3aXNlLgoJKGltcHNfbGFwaWNfYWRkcik6IExpa2V3aXNlLgoJKGltcHNfbnVtX2NwdXMpOiBMaWtld2lzZS4KCShpbXBzX2NwdV9hcGljX21hcCk6IExpa2V3aXNlLgoJKGltcHNfYXBpY19jcHVfbWFwKTogTGlrZXdpc2UuCgoJKiBzdGFnZTIvTWFrZWZpbGUuYW0gKGxpYmdydWJfYV9DRkxBR1MpOiBSZW1vdmUKCS1md3JpdGFibGUtc3RyaW5ncy4gTm90IHJlcXVpcmVkIGZvciB0aGUgZ3J1YiBzaGVsbCBhY3R1YWxseS4KCgkqIGdydWIvTWFrZWZpbGUuYW0gKEFNX0NGTEFHUyk6IExpa2V3aXNlLgoKMjAwNS0wMi0wMSAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogZ3J1Yi9hc21zdHViLmMgKGdydWJfc3RhZ2UyKTogVXNlIGF1dG8gaW5zdGVhZCBvZiBzdGF0aWMgZm9yCgluZXN0ZWQgZnVuY3Rpb25zLgoKCSogc3RhZ2UyL2NoYXJfaW8uYyAobWVtY2hlY2spIFtHUlVCX1VUSUxdOiBMaWtld2lzZS4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChibG9ja2xpc3RfZnVuYyk6IExpa2V3aXNlLgoJKGNvbG9yX2Z1bmMpOiBMaWtld2lzZS4KCShpbnN0YWxsX2Z1bmMpOiBMaWtld2lzZS4KCShzZXRrZXlfZnVuYyk6IExpa2V3aXNlLgoKCSogbGliL2RldmljZS5jIChyZWFkX2RldmljZV9tYXApOiBMaWtld2lzZS4KCjIwMDUtMDEtMzAgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCiAgICAgICAgKiBjb25maWd1cmUuYWMgKEFDX0lOSVQpOiBVcGdyYWRlZCB0byAwLjk2LgoKMjAwNC0xMC0xMSBKYXNvbiBUaG9tYXMgPGphc29uQHN0YWZmLnBuYy5jb20uYXU+CgoJUGF0Y2ggZnJvbSBTdGVmYW51cyBEdSBUb2l0ICA8c2pkdXRvaXRAdXdhdGVybG9vLmNhPgoJKiBkb2NzL2tlcm5lbC5jLnRleGkgKGNtYWluKTogSW5jcmVtZW1lbnQgbW9kIGJ5IG9uZSwgaW5zdGVhZCBvZgoJc2l6ZW9mKG1vZHVsZV90KSwgc2luY2UgaXQncyBhbHJlYWR5IGEgcG9pbnRlciBvZiB0eXBlIG1vZHVsZV90LgoJKiBkb2NzL2tlcm5lbC5jIChjbWFpbik6IERvIHRoZSBzYW1lLgoKMjAwNC0wOS0yMCAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogZG9jcy9pbnRlcm5hbHMudGV4aSAoSW50ZXJuYWxzKTogQ2hhbmdlZCB0byBhbiBhcHBlbmRpeC4KCgkqIGRvY3MvZ3J1Yi50ZXhpIChAc2V0Y2hhcHRlcm5ld3BhZ2UpOiBDaGFuZ2VkIHRvIG9kZCBmcm9tIG9mZi4KCShAY29udGVudHMpOiBNb3ZlZCB0byB0aGUgYmVnaW5uaW5nLgoJKEZ1dHVyZSk6IENoYW5nZWQgdG8gYW4gYXBwZW5kaXguCgoyMDA0LTA4LTE3ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvY21kbGluZS5jIChydW5fc2NyaXB0KTogRml4IGEgcmV2ZXJzZWQgY29uZGl0aW9uYWwuCglSZXBvcnRlZCBieSBBbGJhbiBDcmVxdXkgPGFsYmFuLmNyZXF1eUBhcGluYy5vcmc+LgoKMjAwNC0wOC0wNyAgSmFzb24gVGhvbWFzICA8amFzb25Ac3RhZmYucG5jLmNvbS5hdT4KCQoJRnJvbSBNaWNoYWVsIEhvaG5iYXVtIDxob2huYmF1bUB1cy5pYm0uY29tPjoKCSogc3RhZ2UyL2ZzeXNfZXh0MmZzLmMgKGV4dDJmc19yZWFkKTogSGFuZGxlIHNwYXJzZSBmaWxlcy4KCjIwMDQtMDctMjQgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIHN0YWdlMi9zdGFnZTIuYyAoY21haW4pOiBUZXJtaW5hdGUgREVGQVVMVF9GSUxFIHdpdGggTlVMCgljb3JyZWN0bHkuIFJlcG9ydGVkIGJ5IEFsYmFuIENyZXF1eSA8YWxiYW4uY3JlcXV5QGFwaW5jLm9yZz4uCgoyMDA0LTA3LTIxICBSb2JlcnQgTWlsbGFuICA8cm9iZXJ0bWhAZ251Lm9yZz4KCglQYXRjaCBmcm9tIERhdmlkIFdlaW5laGFsbCA8dGFvQGRlYmlhbi5vcmc+CgkqIHV0aWwvbWtiaW1hZ2U6IEZpeCBYU0ktaXNtcyAoZm9yIHN1cHBvcnRpbmcgUE9TSVgtb25seSBzaGVsbHMpLgoKMjAwNC0wNy0yMCAgUm9iZXJ0IE1pbGxhbiAgPHJvYmVydG1oQGdudS5vcmc+CgoJKiB1dGlsL2dydWItaW5zdGFsbC5pbjogRGV0ZWN0IEdOVS9rKkJTRCBzeXN0ZW1zIGFzIHdlbGwuCgoyMDA0LTA3LTE2ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiB1dGlsL2dydWItaW5zdGFsbC5pbiAoY29udmVydCk6IEZpeCB0aGUgc2VkIHN0YXRlbWVudCBmb3IKCUxpbnV4LiBUaGUgZXhwcmVzc2lvbiB3YXMgYW1iaWdpb3VzIGluIHNvbWUgY2FzZXMuCgoyMDA0LTA2LTI5ICBSb2JlcnQgTWlsbGFuICA8cm9iZXJ0bWhAZ251Lm9yZz4KCgkqIHV0aWwvZ3J1Yi1zZXQtZGVmYXVsdC5pbjogRml4IG1pbm9yIHN5bnRheCBlcnJvciAobm9uLWVzY2FwZWQKCWNoYXJhY3RlcnMpLgoKMjAwNC0wNi0yNCAgUm9iZXJ0IE1pbGxhbiAgPHJvYmVydG1oQGdudS5vcmc+CgoJRml4ZXMgZm9yIEZIUyBjb21wbGlhbmNlLiAoL3Vzci9zaGFyZSBpcyBmb3IgYXJjaC1pbmRlcGVuZGFudCBkYXRhKQoJKiBzdGFnZTEvTWFrZWZpbGUuYW06IE1vdmUgc3RhZ2UgZmlsZXMgdG8gcGtnbGliZGlyLgoJKiBzdGFnZTIvTWFrZWZpbGUuYW06IExpa2V3aXNlLgoJKiBkb2NzL2dydWIudGV4aTogcywvdXNyL3NoYXJlLC91c3IvbGliLGcuCgkqIHV0aWwvZ3J1Yi1pbWFnZS5pbjogTG9vayBmb3Igc3RhZ2UgZmlsZXMgaW4gcGtnbGliZGlyLgoJKiB1dGlsL2dydWItaW5zdGFsbC5pbjogTGlrZXdpc2UuCgoJKiB1dGlsL2dydWItaW5zdGFsbC5pbjogSW1wcm92ZSB1c2FnZSBtZXNzYWdlLgoKMjAwNC0wNi0yMCAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCVRoaXMgaXMgYSBiaWcgY2hhbmdlIG9uIHNhdmluZyBhIGRlZmF1bHQgZW50cnkuIFRoaXMgY2hhbmdlCgltYWtlcyBpdCBwb3NzaWJsZSB0byBzZXQgdXAgYSBxdWl0ZSByb2J1c3Qgc3lzdGVtIHVzaW5nIEdSVUIuCglOb3cgd2UgZG8gbm90IHVzZSB0aGUgc2Vjb25kIHNlY3RvciBvZiBTdGFnZSAyIHRvIHN0b3JlIGFuCgllbnRyeSBudW1iZXIgYnV0IHVzZSB0aGUgZmlsZSAvYm9vdC9ncnViL2RlZmF1bHQuIFRoaXMgZmlsZQoJbXVzdCBiZSBnZW5lcmF0ZWQgYnkgZ3J1Yi1zZXQtZGVmYXVsdCwgYWx0aG91Z2ggdGhpcyBmaWxlIGlzCglwbGFpbi10ZXh0LgoJCgkqIHV0aWwvZ3J1Yi1zZXQtZGVmYXVsdC5pbjogTmV3IGZpbGUuCgkKCSogdXRpbC9ncnViLWluc3RhbGwuaW4gKGdydWJfc2V0X2RlZmF1bHQpOiBOZXcgdmFyaWFibGUuCglVc2UgL2dydWIgaW5zdGVhZCBvZiAvYm9vdC9ncnViIG9uIE9wZW5CU0QgYXMgd2VsbCBhcyBOZXRCU0QuCglSdW4gZ3J1Yi1zZXQtZGVmYXVsdCB0byBtYWtlIGEgZGVmYXVsdCBmaWxlLgoKCSogdXRpbC9NYWtlZmlsZS5hbSAoc2Jpbl9TQ1JJUFRTKTogQWRkZWQgZ3J1Yi1zZXQtZGVmYXVsdC4KCgkqIHN0YWdlMi9zdGFnZTIuYyAocnVuX21lbnUpOiBDaGFuZ2UgdGhlIGZhbGxiYWNrIGhhbmRsaW5nIHRvCglzdXBwb3J0IG11bHRpcGxlIGZhbGxiYWNrIGVudHJpZXMuCgkoY21haW4pOiBMaWtld2lzZS4gQWxzbywgZ2V0IGEgc2F2ZWQgZW50cnkgZnJvbSBhIGRlZmF1bHQgZmlsZQoJaWYgcG9zc2libGUsIGJlZm9yZSByZWFkaW5nIGEgY29uZmlnIGZpbGUuCgoJKiBzdGFnZTIvc2hhcmVkLmggKERFRkFVTFRfRklMRV9CVUYpOiBOZXcgbWFjcm8uCgkoREVGQVVMVF9GSUxFX0JVRkxFTik6IExpa2V3aXNlLgoJKENNRExJTkVfQlVGKTogU2V0IHRvIERFRkFVTFRfRklMRV9CVUYgKyBERUZBVUxUX0ZJTEVfQlVGTEVOLgoJKE1FTlVfQlVGTEVOKTogU2V0IHRvIDB4ODAwMCArIFBBU1NXT1JEX0JVRiAtIE1FTlVfQlVGLgoJKGZhbGxiYWNrX2VudHJ5KTogUmVtb3ZlZC4KCShmYWxsYmFja19lbnRyaWVzKTogRGVjbGFyZWQuCgkoZmFsbGJhY2tfZW50cnlubyk6IExpa2V3aXNlLgoJKE1BWF9GQUxMQkFDS19FTlRSSUVTKTogTmV3IG1hY3JvLgoKCSogc3RhZ2UyL2NtZGxpbmUuYyAocnVuX3NjcmlwdCk6IFVzZSBGQUxMQkFDS19FTlRSWU5PIGluc3RlYWQgb2YKCUZBTExCQUNLX0VOVFJZLgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGZhbGxiYWNrX2VudHJ5KTogUmVtb3ZlZC4KCShmYWxsYmFja19lbnRyeW5vKTogTmV3IHZhcmlhYmxlLgoJKGZhbGxiYWNrX2VudHJpZXMpOiBMaWtld2lzZS4KCShpbml0X2NvbmZpZyk6IEluaXRpYWxpemUgRkFMTEJBQ0tfRU5UUllOTyBhbmQgRkFMTEJBQ0tfRU5UUklFUy4KCShmYWxsYmFja19mdW5jKTogUmV3cml0dGVuIGNvbXBsZXRlbHkuCgkoc2F2ZWRlZmF1bHRfZnVuYyk6IExpa2V3aXNlLgoKCSogZG9jcy9ncnViLnRleGkgKGdydWItc2V0LWRlZmF1bHQpOiBOZXcgZGlyZW50cnkuCgkoSW5zdGFsbGF0aW9uKTogRGVzY3JpYmUgZ3J1Yi1zZXQtZGVmYXVsdCBmb3IgbWFudWFsCglpbnN0YWxsYXRpb25zLgoJKE1ha2luZyB5b3VyIHN5c3RlbSByb2J1c3QpOiBOZXcgc2VjdGlvbi4KCShCb290aW5nIG9uY2Utb25seSk6IE5ldyBzdWJzZWN0aW9uLgoJKEJvb3RpbmcgZmFsbGJhY2sgc3lzdGVtcyk6IExpa2V3aXNlLgoJKGZhbGxiYWNrKTogRGVzY3JpYmUgbXVsdGlwbGUgZmFsbGJhY2sgZW50cmllcy4KCShzYXZlZGVmYXVsdCk6IERlc2NyaWJlIGFuIG9wdGlvbmFsIGFyZ3VtZW50LgoJKEludm9raW5nIGdydWItc2V0LWRlZmF1bHQpOiBOZXcgY2hhcHRlci4KCShGdXR1cmUpOiBSZXBsYWNlZCB3aXRoIGEgZGVzY3JpcHRpb24gYWJvdXQgR1JVQiAyLgoKCSogY29uZmlndXJlLmFjIChBQ19DT05GSUdfRklMRVMpOiBBZGRlZCB1dGlsL2dydWItc2V0LWRlZmF1bHQuCgoyMDA0LTA2LTE5ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvdWZzMi5oIChpbnQ4X3QpOiBSZW5hbWVkIHRvIC4uLgoJKGdydWJfdWludDhfdCk6IC4uLiB0aGlzLgoJKGludDE2X3QpOiBSZW5hbWVkIHRvIC4uLgoJKGdydWJfaW50MTZfdCk6IC4uLiB0aGlzLgoJKGludDMyX3QpOiBSZW5hbWVkIHRvIC4uLgoJKGdydWJfaW50MzJfdCk6IC4uLiB0aGlzLgoJKGludDY0X3QpOiBSZW5hbWVkIHRvIC4uLgoJKGdydWJfaW50NjRfdCk6IC4uLiB0aGlzLgoJKHVpbnQ4X3QpOiBSZW5hbWVkIHRvIC4uLgoJKGdydWJfdWludDhfdCk6IC4uLiB0aGlzLgoJKHVpbnQxNl90KTogUmVuYW1lZCB0byAuLi4KCShncnViX3VpbnQxNl90KTogLi4uIHRoaXMuCgkodWludDMyX3QpOiBSZW5hbWVkIHRvIC4uLgoJKGdydWJfdWludDMyX3QpOiAuLi4gdGhpcy4KCSh1aW50NjRfdCk6IFJlbmFtZWQgdG8gLi4uCgkoZ3J1Yl91aW50NjRfdCk6IC4uLiB0aGlzLgoJKHVfY2hhcik6IFJlbmFtZWQgdG8gLi4uCgkoZ3J1Yl91X2NoYXIpOiAuLi4gdGhpcy4KCSh1X2ludCk6IFJlbmFtZWQgdG8gLi4uCgkoZ3J1Yl91X2ludCk6IC4uLiB0aGlzLgoJKHVfaW50OF90KTogUmVuYW1lZCB0byAuLi4KCShncnViX3VfaW50OF90KTogLi4uIHRoaXMuCgkodV9pbnQxNl90KTogUmVuYW1lZCB0byAuLi4KCShncnViX3VfaW50MTZfdCk6IC4uLiB0aGlzLgoJKHVfaW50MzJfdCk6IFJlbmFtZWQgdG8gLi4uCgkoZ3J1Yl91X2ludDMyX3QpOiAuLi4gdGhpcy4KCSh1X2ludDY0X3QpOiBSZW5hbWVkIHRvIC4uLgoJKGdydWJfdV9pbnQ2NF90KTogLi4uIHRoaXMuCgkoaW5vX3QpOiBSZW5hbWVkIHRvIC4uLgoJKGdydWJfaW5vX3QpOiAuLi4gdGhpcy4KCUFsbCBjYWxsZXJzIGFyZSBjaGFuZ2VkLgoKMjAwNC0wNi0xNCAgSmVyb2VuIERla2tlcnMgIDxqZXJvZW5AZGVra2Vycy5jeD4KCgkqIHN0YWdlMi91ZnMyLmggKF9fdWludDhfdCk6IFJlbW92ZS4KCShfX3VpbnQxNl90KTogTGlrZXdpc2UuCgkoX191aW50MzJfdCk6IExpa2V3aXNlLgoJKF9fdWludDY0X3QpOiBMaWtld2lzZS4KCShpbm9fdCk6IFR5cGVkZWYgdG8gdWludDMyX3QuCgoyMDA0LTA2LTEzICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvTWFrZWZpbGUuYW0gKG5vaW5zdF9IRUFERVJTKTogQWRkZWQgdWZzMi5oLgoJCjIwMDQtMDYtMTMgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIGNvbmZpZ3VyZS5hYyAoQUNfSU5JVCk6IFVwZ3JhZGVkIHRvIDAuOTUuCgoyMDA0LTA1LTIzICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvY2hhcl9pby5jIChncnViX2lzc3BhY2UpOiBVc2UgYSBzd2l0Y2ggc2VudGVuc2UgaW5zdGVhZAoJb2YgYW4gaWYgc2VudGVuc2UsIGJlY2F1c2UgdGhhdCByZWR1Y2VzIHRoZSBzaXplLgoKCSogbGliL2RldmljZS5jIChyZWFkX2RldmljZV9tYXApOiBDaGFuZ2UgdGhlIG1heCBudW1iZXIgb2YgRFJJVkUKCXRvIDEyNyBmcm9tIDguIFRoaXMgd2FzIHRvbyBzdHJpY3QuCgoJKiBzdGFnZTIvYXNtLlMgKHN0b3BfZmxvcHB5KTogQ2FsbCBwdXNoYSBhbmQgcG9wYSBvdXRzaWRlIHRoZQoJYmxvY2sgb2YgcmVhbCBtb2RlIGNvZGUuIFJlcG9ydGVkIGJ5IEd1aWxsZW0gSm92ZXIKCTxndWlsbGVtQGRlYmlhbi5vcmc+LgoKMjAwNC0wNS0yMCAgRGFtaWFuIEl2ZXJlaWdoICA8ZGFtaWFuQGNpc2NvLmNvbT4KCgkqIG5ldGJvb3QvbWFpbi5jOiBGaXhlZCBib290cCBvbmx5IGNvZGUgc28gdGhhdCBvcHRpb25zCgl3b3JrIHByb3Blcmx5LiBUaGlzIGZpeCBpcyBvYnZpb3VzIHdoZW4gY29tcGFyZWQgd2l0aCB0aGUKCURIQ1AgY29kZS4KCjIwMDQtMDUtMTcgIFBhdmVsIFJvc2tpbiAgPHByb3NraUBnbnUub3JnPgoKCSogc3RhZ2UyL2NoYXJfaW8uYyAoc2FmZV9wYXJzZV9tYXhpbnQpOiBEaXNhYmxlIGZvciBzdGFnZSAxLjUuCgkoZ3J1Yl90b2xvd2VyKTogRGlzYWJsZSBmb3Igc3RhZ2UgMS41IGV4Y2VwdCBmYXRfc3RhZ2UxXzUuCgkoZ3J1Yl9tZW1jbXApOiBEaXNhYmxlIGZvciBzdGFnZSAxLjUgZXhjZXB0IGlzbzk2NjBfc3RhZ2UxXzUuCgoyMDA0LTA1LTE0ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJRnJvbSBTZXJnZXkgTWF0dmV5Y2h1ayA8c2VtQGNpYW0ucnU+OgoJKiBzdGFnZTIvc2l6ZV90ZXN0OiBBZGRlZCBhIGNoZWNrIGZvciB1ZnMyX3N0YWdlMV81LgoKCSogc3RhZ2UyL3NoYXJlZC5oIChTVEFHRTJfSURfVUZTMl9TVEFHRTFfNSk6IE5ldyBtYWNyby4KCVtGU1lTX1VGUzJdIChTVEFHRTJfSUQpOiBTZXQgdG8gU1RBR0UyX0lEX1VGUzJfU1RBR0UxXzUuCgoJKiBzdGFnZTIvZmlsZXN5cy5oIChGU1lTX1VGUzJfTlVNKTogTmV3IG1hY3JvLgoJW0ZTWVNfVUZTMl0gKHVmczJfbW91bnQpOiBOZXcgcHJvdG90eXBlLgoJW0ZTWVNfVUZTMl0gKHVmczJfcmVhZCk6IExpa2V3aXNlLgoJW0ZTWVNfVUZTMl0gKHVmczJfZGlyKTogTGlrZXdpc2UuCglbRlNZU19VRlMyXSAodWZzMl9lbWJlZCk6IExpa2V3aXNlLgoJKE5VTV9GU1lTKTogQWRkZWQgRlNZU19VRlMyX05VTS4KCgkqIHN0YWdlMi9kaXNrX2lvLmMgKGZzeXNfdGFibGUpOiBBZGRlZCBhbiB1ZnMyIGVudHJ5LgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKHNldHVwX2Z1bmMpOiBBZGRlZCB1ZnMyIGludG8gdGhlCglTVEFHRTFfNV9NQVAuCgoJKiBzdGFnZTIvTWFrZWZpbGUuYW0gKGxpYmdydWJfYV9TT1VSQ0VTKTogQWRkZWQgZnN5c191ZnMyLmMuCgkobGliZ3J1Yl9hX0NGTEFHUyk6IEFkZGVkIC1ERlNZU19VRlMyPTEuCgkocGtnZGF0YV9EQVRBKTogQWRkZWQgdWZzMl9zdGFnZTFfNS4KCShub2luc3RfUFJPR1JBTVMpOiBBZGRlZCB1ZnMyX3N0YWdlMV81LmV4ZWMuCgkodWZzMl9zdGFnZTFfNV9leGVjX1NPVVJDRVMpOiBOZXcgdmFyaWFibGUuCgkodWZzMl9zdGFnZTFfNV9leGVjX0NGTEFHUyk6IExpa2V3aXNlLgoJKHVmczJfc3RhZ2UxXzVfZXhlY19DQ0FTRkxBR1MpOiBMaWtld2lzZS4KCSh1ZnMyX3N0YWdlMV81X2V4ZWNfTERGTEFHUyk6IExpa2V3aXNlLgoKCSogZ3J1Yi9NYWtlZmlsZS5hbSAoQU1fQ1BQRkxBR1MpOiBBZGRlZCAtREZTWVNfSVNPOTY2MD0xLAoJLURGU1lTX0pGUz0xLCAtREZTWVNfUkVJU0VSRlM9MSwgLURGU1lTX1VGUzI9MSwgLURGU1lTX1ZTVEFGUz0xLAoJLURGU1lTX1hGUz0xLCBhbmQgLURVU0VfTUQ1X1BBU1NXT1JEUz0xLgoKCSogY29uZmlndXJlLmFjICgtLWRpc2FibGUtdWZzMik6IE5ldyBvcHRpb24uCgoJKiBzdGFnZTIvZnN5c191ZnMyLmM6IE5ldyBmaWxlLgoJKiBzdGFnZTIvdWZzMi5oOiBMaWtld2lzZS4KCjIwMDQtMDUtMTAgIFJvYmVydCBNaWxsYW4gIDxyb2JlcnRtaEBnbnUub3JnPgoKCSogbGliL2RldmljZS5jOiBNYW5nbGUgX19GcmVlQlNEXyogbWFjcm8gdXNhZ2UgdG8gc3VwcG9ydAoJa0ZyZWVCU0QtYmFzZWQgbm9uLUZyZWVCU0Qgc3lzdGVtcyAoaS5lLiBHTlUva0ZyZWVCU0QpLgoKCUltcGxlbWVudCBydW50aW1lIGRldGVjdGlvbiBvZiB2ZXJzaW9uIG9mIGtGcmVlQlNELiBOb3cgaWYKCXdlIGJ1aWxkIGFnYWluc3Qga0ZyZWVCU0QgNS54IGhlYWRlcnMgdGhlIEdSVUIgc2hlbGwgd2lsbCB3b3JrIG9uCglib3RoIDQueCBhbmQgNS54LgoKCVJlcGxhY2UgYHVfaW50X3QnIHR5cGVzIHdpdGggcG9ydGFibGUgYHVuc2lnbmVkIGludCcgYW5kIG9sZAoJcmVmZXJlbmNlIHRvIGBnZW9tZXRyeScgc3RydWN0dXJlIHRvIG5ldyBgZ2VvbScgb25lLgoKCSogZG9jcy9tZW51LmxzdDogU3BsaXQgR05VL2tGcmVlQlNEIGFuZCBHTlUva05ldEJTRCBhcyBzZXBhcmF0ZQoJb3B0aW9ucyB0aGFuIEZyZWVCU0QgYW5kIE5ldEJTRCwgcmVzcGVjdGl2ZWx5LiBUaGVyZSBhcmUgbWlub3IKCWRpZmZlcmVuY2VzIG5vdyAoZGlmZmVyZW50IHBhdGhzKS4KCjIwMDQtMDUtMDMgIFBhdmVsIFJvc2tpbiAgPHByb3NraUBnbnUub3JnPgoKCSogc3RhZ2UyL2NoYXJfaW8uYyAoY29udmVydF90b19hc2NpaSk6IFJlbW92ZSAiJWIiIHN1cHBvcnQuCglJdCdzIG5vbi1zdGFuZGFyZCBhbmQgaXMgbm90IHVzZWQgYW55bW9yZS4KCShncnViX3ByaW50Zik6IExpa2V3aXNlLgoKMjAwNC0wNC0yOSAgUm9iZXJ0IE1pbGxhbiAgPHJvYmVydG1oQGdudS5vcmc+CgoJRnJvbSBZYW5uIERpcnNvbiAgPGRpcnNvbkBkZWJpYW4ub3JnPjoKCSogdXRpbC9ta2JpbWFnZTogTWlzYyBzeW50YXggZml4ZXMuCgoyMDA0LTA0LTI5ICBKZXJvZW4gRGVra2VycyAgPGplcm9lbkBkZWtrZXJzLmN4PgoKCSogc3RhZ2UyL2NoYXJfaW8uYyAoZ3J1Yl9tZW1jbXApOiBEZWZpbmUgZm9yIHN0YWdlMS41IHRvby4KCgkqIHN0YWdlMi9mc3lzX2lzbzk2NjAuYyAoaXNvOTY2MF9tb3VudCk6IFVzZSBtZW1jbXAoKSBpbnN0ZWFkIG9mCglfX2J1aWx0aW5fbWVtY21wKCkuCgkoaXNvOTY2MF9kaXIpOiBMaWtld2lzZS4KCjIwMDQtMDQtMjYgIENocmlzdGlhbiBKb25lcyAgPGNoam9uZXNAYWxlcGgwLmNvbT4KCgkqIGRvY3MvZ3J1Yi50ZXhpIChNYWtpbmcgYSBHUlVCIGJvb3RhYmxlIENELVJPTSk6IG1pbm9yIGVkaXRzLAoJaW5jbHVkaW5nIGEgZmV3IGNvbXBhdGliaWxpdHkgbm90ZXMgYW5kIGEgY2hhbmdlIHRvCgktYm9vdC1sb2FkLXNpemUgNCBmb3IgdGhlIG1raXNvZnMgY29tbWFuZC4KCjIwMDQtMDQtMjIgIEplcm9lbiBEZWtrZXJzICA8amVyb2VuQGRla2tlcnMuY3g+CgoJKiBNYWtlZmlsZS5hbSAoQVVUT01BS0VfT1BUSU9OUyk6IEFkZCAiZ251Ii4KCSogY29uZmlndXJlLmFjOiBVcGRhdGUgdG8gd29yayB3aXRoIGF1dG9tYWtlIDEuOCwgcXVvdGUgYWxsCglBQ19ERUZVTidzIGNvcnJlY3RseSBhbmQgcHJvdmlkZSBkZXNjcmlwdGlvbnMgZm9yIEFDX0RFRklORSdzLgoJKiBhY2luY2x1ZGUubTQ6IExpa2V3aXNlLgoJKiBhY2NvbmZpZy5oOiBSZW1vdmVkLgoJCgkqIHN0YWdlMS9NYWtlZmlsZS5hbSAoLmV4ZWMpOiBVc2Ugc3VmZml4IHJ1bGVzIGluc3RlYWQgb2YgcGF0dGVybgoJcnVsZXMuCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAoLmV4ZWMpOiBMaWtld2lzZS4KCjIwMDQtMDQtMTggIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIGRvY3MvZ3J1Yi50ZXhpIChNYWtpbmcgYSBHUlVCIGJvb3RhYmxlIENELVJPTSk6IE5ldyBzZWN0aW9uLgoKCSogc3RhZ2UyL2Rpc2tfaW8uYyAoc2V0X2RldmljZSk6IFVzZSBDSCBpbnN0ZWFkIG9mICpERVZJQ0UgdG8KCXRlc3QgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBERVZJQ0UsIGJlY2F1c2UgREVWSUNFIGlzCglpbmNyZW1lbnRlZC4KCVJlcG9ydGVkIGJ5IEJlcm5oYXJkIFRyZXV0d2Vpbi4KCjIwMDQtMDQtMTUgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIG5ldGJvb3QvZnN5c190ZnRwLmMgKGJ1Zl9maWxsKTogQ2FzdCAxIHRvIHVuc2lnbmVkIHNob3J0CglleHBsaWNpdGx5IHNvIHRoYXQgdGhlIGNvbnN0YW50IGRvZXNuJ3QgZXh0ZW5kIHVuc2lnbmVkIHNob3J0Cgl0byBpbnQgYXV0b21hdGljYWxseS4KCVJlcG9ydGVkIGJ5IEVkdWFyZCBHdXpvdnNreSA8ZWd1em92c2tAZW50ZXJhc3lzLmNvbT4uCgoJKiBkb2NzL2dydWIudGV4aSAoSW52b2tpbmcgZ3J1Yi1tZDUtY3J5cHQpOiBGaXhlZCB0aGUgY2hhcHRlcgoJbmFtZS4KCVJlcG9ydGVkIGJ5IE1hcnRpbiBQb29sIDxtYnBAc291cmNlZnJvZy5uZXQ+LgoKMjAwNC0wNC0wNCAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogY29uZmlndXJlLmFjIChTVEFHRTJfQ0ZMQUdTKTogQ2hlY2sgaWYgLWZuby1zdGFjay1wcm90ZWN0b3IgaXMKCXN1cHBvcnRlZCBieSBHQ0MuIElmIHllcywgYWRkZWQgdGhlIG9wdGlvbi4gVGhpcyBpcyBuZWNlc3NhcnkKCWZvciBPcGVuQlNELCBiZWNhdXNlIHRoZSBzdGFjayBwcm90ZWN0b3IgZGVmaW5lcyBhZGRpdGlvbmFsCglzeW1ib2xzLiBSZXBvcnRlZCBieSB1Yy5zaGVkYSA8dWMuc2hlZGFAbGFwb3N0ZS5uZXQ+LgoKMjAwNC0wMy0yOCAgUGF2ZWwgUm9za2luICA8cHJvc2tpQGdudS5vcmc+CgoJKiBzdGFnZTIvYm9vdC5jOiBJbXBseSAtLW5vLW1lbS1vcHRpb24gZm9yIExpbnV4IGtlcm5lbHMgd2l0aAoJcHJvdG9jb2wgdmVyc2lvbiAyLjAzIGFuZCBhYm92ZSAoTGludXggMi40LjE4IGFuZCBuZXdlcikuCgoyMDA0LTAzLTI3ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvY2hhcl9pby5jIFshR1JVQl9VVElMXSAobWVtY3B5KTogTmV3IGZ1bmN0aW9uLiBJdCBpcwoJZGVmaW5lZCBhcyBhbiBhbGlhcyBvZiBncnViX21lbW1vdmUuIFRoaXMgaXMgY29waWVkIGZyb20gR1JVQiAyLgoKCSogc3RhZ2UyL2Rpc2tfaW8uYyAocHJpbnRfY29tcGxldGlvbnMpOiBTaW1wbGlmaWVkIGNvbmRpdGlvbmFscwoJdG8gbWFrZSBpdCBlYXNpZXIgdG8gZWRpdCB0aGUgZmlsZSB3aXRoIEVtYWNzLgoJQWRkZWQgc3VwcG9ydCBmb3IgKGNkKS4KCShzZXRfZGV2aWNlKTogTGlrZXdpc2UuCgoJKiBzdGFnZTIvY29tbW9uLmMgKGluaXRfYmlvc19pbmZvKTogQ2hlY2sgaWYgQk9PVF9EUklWRSBpcyBhCglDRFJPTSBkcml2ZS4gSWYgaXQgaXMgdHJ1ZSwgc2V0IENEUk9NX0RSSVZFIHRvIEJPT1RfRFJJVkUuCgkoY2Ryb21fZHJpdmUpOiBOZXcgdmFyaWFibGUuCgoJRnJvbSBMZW9uaWQgTGlzb3Zza2l5IDxsbHlAcGlzZW0ubmV0PjoKCSogc3RhZ2UyL3N0YXJ0X2VsdG9yaXRvLlM6IE5ldyBmaWxlLgoKCSogc3RhZ2UyL3N0YWdlMi5jIChydW5fbWVudSk6IFVzZSBHUlVCX0lOVkFMSURfRFJJVkUgaW5zdGVhZCBvZgoJMHhGRi4KCgkqIHN0YWdlMi9zaGFyZWQuaCAoU1RBR0UyX0lEX0lTTzk2NjBfU1RBR0UxXzUpOiBOZXcgbWFjcm8uCglbRlNZU19JU085NjYwXSAoU1RBR0UyX0lEKTogU2V0IHRvIFNUQUdFMl9JRF9JU085NjYwX1NUQUdFMV81LgoJKHN0cnVjdCBnZW9tZXRyeSk6IEFkZGVkIGEgbmV3IG1lbWJlciBgYHNlY3Rvcl9zaXplJycuCgkoQklPU0RJU0tfRkxBR19DRFJPTSk6IE5ldyBtYWNyby4KCShjZHJvbV9kcml2ZSk6IERlY2xhcmVkLgoKCSogc3RhZ2UyL2ZzeXNfaXNvOTY2MC5jOiBOZXcgZmlsZS4KCSogc3RhZ2UyL2lzbzk2NjAuaDogTGlrZXdpc2UuCgoJKiBzdGFnZTIvZmlsZXN5cy5oIChGU1lTX0lTTzk2NjBfTlVNKTogTmV3IG1hY3JvLgoJW0ZTWVNfSVNPOTY2MF0gKGlzbzk2NjBfbW91bnQpOiBEZWNsYXJlZC4KCVtGU1lTX0lTTzk2NjBdIChpc285NjYwX3JlYWQpOiBMaWtld2lzZS4KCVtGU1lTX0lTTzk2NjBdIChpc285NjYwX2Rpcik6IExpa2V3aXNlLgoJKE5VTV9GU1lTKTogQWRkZWQgRlNZU19JU085NjYwX05VTS4KCgkqIHN0YWdlMi9kaXNrX2lvLmMgKGZzeXNfdGFibGUpIFtGU1lTX0lTTzk2NjBdOiBBZGRlZCBpc285NjYwLgoJKGN1cnJlbnRfZHJpdmUpOiBVc2UgR1JVQl9JTlZBTElEX0RSSVZFLgoJKGxvZzIpOiBOZXcgZnVuY3Rpb24uCgkocmF3cmVhZCk6IFVzZSBCVUZfR0VPTS5TRUNUT1JfU0laRSBpbnN0ZWFkIG9mIFNFQ1RPUl9TSVpFLgoJQ2hhbmdlIHRoZSB0eXBlIG9mIEJVRkFERFIgZnJvbSBpbnQgdG8gY2hhciAqLgoJVXNlIGEgdmlydHVhbCB0cmFjayB0byBtYWtlIHN1cmUgdGhhdCBvbmUgdHJhY2sgZml0cyBpbiB0aGUKCWJ1ZmZlci4KCShzYW5lX3BhcnRpdGlvbik6IEFsbG93IENVUlJFTlRfRFJJVkUgdG8gYmUgQ0RST01fRFJJVkUsIGJlY2F1c2UKCWEgYmlvcyBkcml2ZSBmb3IgYSBDRC1ST00gaXMgb2Z0ZW4gYXNzaWduZWQgdG8gZ3JlYXRlciB0aGFuCgkweDg4LgoJKHNldF9kZXZpY2UpOiBVc2UgR1JVQl9JTlZBTElEX0RSSVZFIGluc3RlYWQgb2YgMHhGRi4KCShzZXR1cF9wYXJ0KTogTGlrZXdpc2UuCgoJKiBzdGFnZTIvY21kbGluZS5jIChpbml0X2NtZGxpbmUpOiBVc2UgR1JVQl9JTlZBTElEX0RSSVZFLgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGluc3RhbGxfZnVuYyk6IFVzZSBHUlVCX0lOVkFMSURfRFJJVkUuCgkoc2V0dXBfZnVuYyk6IEFkZGVkIGlzbzk2NjBfc3RhZ2UxXzUuCgoJKiBzdGFnZTIvYmlvcy5jIChiaW9zZGlzayk6IERvbid0IGZhbGwgYmFjayB0byB0aGUgQ0hTIG1vZGUKCWlmIHRoZSBkcml2ZSBpcyBhIENEUk9NLgoJKGdldF9jZGluZm8pOiBOZXcgZnVuY3Rpb24uCgkoZ2V0X2Rpc2tpbmZvKTogQ2FsbCBnZXRfY2RpbmZvIGlmIHRoZSBkcml2ZSBpcyBncmVhdGVyIHRoYW4gb3IKCWVxdWFsIHRvIDB4ODggb3IgdGhlIGRyaXZlIHN1cHBvcnRzIExCQS4KCVNldCB0aGUgc2VjdG9yIHNpemUgdG8gU0VDVE9SX1NJWkUgaWYgaXQgaXMgbm90IGEgQ0QtUk9NLgoKCSogc3RhZ2UyL2FzbS5TIChiaW9zZGlza19pbnQxM19leHRlbnNpb25zKTogVGFrZSBhIHdvcmQKCWFyZ3VtZW50IEFYIGluc3RlYWQgb2YgYSBieXRlIGFyZ3VtZW50IEFILgoJKGdldF9kaXNraW5mb19pbnQxM19leHRlbnNpb25zKTogUmVtb3ZlZC4KCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAobm9pbnN0X0hFQURFUlMpOiBBZGRlZCBpc285NjYwLmguCgkobGliZ3J1Yl9hX1NPVVJDRVMpOiBBZGRlZCBmc3lzX2lzbzk2NjAuYy4KCShsaWJncnViX2FfQ0ZMQUdTKTogQWRkZWQgLURGU1lTX0lTTzk2NjA9MS4KCShwa2dkYXRhX0RBVEEpOiBBZGRlZCBpc285NjYwX3N0YWdlMV81IGFuZCBzdGFnZTJfZWx0b3JpdG8uCgkobm9pbnN0X1BST0dSQU1TKTogQWRkZWQgaXNvOTY2MF9zdGFnZTFfNS5leGVjIGFuZAoJc3RhcnRfZWx0b3JpdG8uZXhlYy4KCShub2luc3RfREFUQSk6IEFkZGVkIHN0YXJ0X2VsdG9yaXRvLgoJKHByZV9zdGFnZTJfZXhlY19TT1VSQ0VTKTogQWRkZWQgZnN5c19pc285NjYwLmMuCgkoU1RBUlRfRUxUT1JJVE9fTElOSyk6IE5ldyB2YXJpYWJsZS4KCShzdGFydF9lbHRvcml0b19leGVjX1NPVVJDRVMpOiBMaWtld2lzZS4KCShzdGFydF9lbHRvcml0b19leGVjX0NDQVNGTEFHUyk6IExpa2V3aXNlLgoJKHN0YXJ0X2VsdG9yaXRvX2V4ZWNfTERGTEFHUyk6IExpa2V3aXNlLgoJKHN0YXJ0X2VsdG9yaXRvX2V4ZWMtc3RhcnQuJChPQkpFWFQpKTogTmV3IGRlcGVuZGVuY3kuCgkoc3RhZ2UyX2VsdG9yaXRvKTogTmV3IHRhcmdldC4KCShpc285NjYwX3N0YWdlMV81X2V4ZWNfU09VUkNFUyk6IE5ldyB2YXJpYWJsZS4KCShpc285NjYwX3N0YWdlMV81X2V4ZWNfQ0ZMQUdTKTogTGlrZXdpc2UuCgkoaXNvOTY2MF9zdGFnZTFfNV9leGVjX0NDQVNGTEFHUyk6IExpa2V3aXNlLgoJKGlzbzk2NjBfc3RhZ2UxXzVfZXhlY19MREZMQUdTKTogTGlrZXdpc2UuCgoJKiBzdGFnZTEvc3RhZ2UxLmggKEdSVUJfSU5WQUxJRF9EUklWRSk6IE5ldyBtYWNyby4KCgkqIHN0YWdlMS9zdGFnZTEuUyAoYm9vdF9kcml2ZSk6IFVzZSB0aGUgbWFjcm8gR1JVQl9JTlZBTElEX0RSSVZFLgoJKHJlYWxfc3RhcnQpOiBMaWtld2lzZS4KCgkqIGxpYi9kZXZpY2UuYyAoZ2V0X2RyaXZlX2dlb21ldHJ5KTogU2V0IEdFT00tPlNFQ1RPUl9TSVpFIHRvCglTRUNUT1JfU0laRSBieSBkZWZhdWx0LgoKCSogY29uZmlndXJlLmFjICgtLWRpc2FibGUtaXNvOTY2MCk6IE5ldyBvcHRpb24uCgoyMDA0LTAzLTEzICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgkKCUZyb20gRGFuaWVsZSBaZWxhbnRlIDx6ZWxkYW5AZW1haWwuaXQ+OgoJKiBzdGFnZTIvYXNtLlMgKHN0b3BfZmxvcHB5KTogVXNlIElOVCAxMywgQUg9MDBoIHRvIHN0b3AgdGhlCglmbG9wcHkgY29udHJvbGxlciBpbnN0ZWFkIG9mIGEgZGlyZWN0IEkvTy4KCjIwMDQtMDMtMTIgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIHN0YWdlMi9zZXJpYWwuYyAoc2VyaWFsX3B1dGNoYXIpOiBIYW5kbGUgdGhlIGNoYXJhY3RlciBjb2RlCgkxMjcgYXMgYSBiYWNrc3BhY2UuIFJlcG9ydGVkIGJ5IEZsb3JpYW4gRW5nZWxoYXJkdAoJPGYuZW5nZWxoYXJkdEBnbXgubmV0Pi4KCjIwMDQtMDMtMTIgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCglGcm9tIEJvamkgVG9ueSBLYW5uYW50aGFuYW0gPGJvamkudC5rYW5uYW50aGFuYW1AaW50ZWwuY29tPjoKCSogdXRpbC9ncnViLWluc3RhbGwuaW4gKGNvbnZlcnQpOiBBZGQgc3VwcG9ydCBmb3IgQVRBUkFJRAoJZGV2aWNlIG5hbWVzLgoJKiBsaWIvZGV2aWNlLmMgKGdldF9hdGFyYWlkX2Rpc2tfbmFtZSkgW19fbGludXhfX106IE5ldwoJZnVuY3Rpb24uCgkoaW5pdF9kZXZpY2VfbWFwKSBbX19saW51eF9fXTogUHJvYmUgQVRBUkFJRCBkaXNrcy4KCgkqIHN0YWdlMi9zaXplX3Rlc3QgKGNoZWNrKTogRG9uJ3QgdXNlIHRoZSBsb2NhbCBzdGF0ZW1lbnQgYW55Cglsb25nZXIuIEl0IHdhcyB1bm5lZWRlZCBhY3R1YWxseS4gUmVwb3J0ZWQgYnkgUGF1bCBKYXJjLgoKMjAwNC0wMy0xMiAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoJCglGcm9tIFNlcmdleSBNYXR2ZXljaHVrIDxzZW1AY2lhbS5ydT46CgkqIGxpYi9kZXZpY2UuYyAoZ2V0X2RyaXZlX2dlb21ldHJ5KTogRG8gbm90IG9wZW4gdGhlIHNhbWUgZGV2aWNlCgltb3JlIHRoYW4gb25jZSB1bm5lY2Vzc2FyaWx5LgoJKGdldF9kcml2ZV9nZW9tZXRyeSkgW19fRnJlZUJTRF92ZXJzaW9uID49IDUwMDA0MF06IFVzZSBuZXcKCWlvY3RsIG1ldGhvZHMuCgkoZ2V0X2Zsb3BweV9kaXNrX25hbWUpIFtfX0ZyZWVCU0RfXyA+PSA0XTogVXNlIC9kZXYvZmQlZCByYXRoZXIKCXRoYW4gL2Rldi9yZmQlZC4KCShnZXRfaWRlX2Rpc2tfbmFtZSkgW19fRnJlZUJTRF9fID49IDRdOiBVc2UgL2Rldi9hZCVkIHJhdGhlcgoJdGhhbiAvZGV2L3JhZCVkLgoJKGdldF9zY3NpX2Rpc2tfbmFtZSkgW19fRnJlZUJTRF9fID49IDRdOiBVc2UgL2Rldi9kYSVkIHJhdGhlcgoJdGhhbiAvZGV2L3JkYSVkLgoJKiBncnViL2FzbXN0dWIuYyAoZ2V0X2Rpc2tpbmZvKTogQ2hlY2sgaWYgRVJSTk8gaXMgRVBFUk0gYXMKCXdlbGwuCgoyMDA0LTAyLTI4ICBKZXJvZW4gRGVra2VycyAgPGplcm9lbkBkZWtrZXJzLmN4PgoKCSogZG9jcy9ncnViLnRleGkgKHBhcnRuZXcpOiBDaGFuZ2UgQHZhcnt0b30gdG8gQHZhcntsZW59LgoKMjAwNC0wMi0xOCAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCUZyb20gWXVyeSBWLiBVbWFuZXRzIDx1bWthQG5hbWVzeXMuY29tPjoKCSogc3RhZ2UyL2ZzeXNfcmVpc2VyZnMuYyAoUkVJU0VSM0ZTX1NVUEVSX01BR0lDX1NUUklORyk6IE5ldwoJbWFjcm8uCgkocmVpc2VyZnNfbW91bnQpOiBBZGRlZCBjaGVja3MgZm9yIFJlaXNlckZTIDMuCgkocmVpc2VyZnNfZW1iZWQpOiBMaWtld2lzZS4KCjIwMDQtMDEtMjUgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIGRvY3MvZ3J1Yi50ZXhpIChPYnRhaW5pbmcgYW5kIEJ1aWxkaW5nIEdSVUIpOiBJbnN0ZWFkIG9mCglkZXNjcmliaW5nIGhvdyB0byB1c2UgdGhlIGFub25jdnMgbWV0aG9kLCBzcGVjaWZ5IHRoZSBVUkwgb2YKCXRoZSBkZXNjcmlwdGlvbiBwYWdlIG9uIFNhdmFubmFoLgoJUmVwb3J0ZWQgYnkgQmVybmhhcmQgVHJldXR3ZWluLgoKMjAwNC0wMS0xOCAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCUZyb20gVGhvbWFzIFNjaHdpbmdlIDxraXNjaGRlQGdteC5uZXQ+OgoJKiBncnViL01ha2VmaWxlLmFtIChBTV9DUFBGTEFHUyk6IE5ldyB2YXJpYWJsZS4KCShBTV9DRkxBR1MpOiBSZW1vdmVkIGFsbCBjcHAgZmxhZ3MuCgoJKiBzdGFnZTIveGZzLmggKF9faW50OF90KTogUmVuYW1lZCB0byAuLi4KCSh4ZnNfaW50OF90KTogLi4uIHRoaXMuCgkoX191aW50OF90KTogUmVuYW1lZCB0byAuLi4KCSh4ZnNfdWludDhfdCk6IC4uLiB0aGlzLgoJKF9faW50MTZfdCk6IFJlbmFtZWQgdG8gLi4uCgkoeGZzX2ludDE2X3QpOiAuLi4gdGhpcy4KCShfX3VpbnQxNl90KTogUmVuYW1lZCB0byAuLi4KCSh4ZnNfdWludDE2X3QpOiAuLi4gdGhpcy4KCShfX2ludDMyX3QpOiBSZW5hbWVkIHRvIC4uLgoJKHhmc19pbnQzMl90KTogLi4uIHRoaXMuCgkoX191aW50MzJfdCk6IFJlbmFtZWQgdG8gLi4uCgkoeGZzX3VpbnQzMl90KTogLi4uIHRoaXMuCgkoX19pbnQ2NF90KTogUmVuYW1lZCB0byAuLi4KCSh4ZnNfaW50NjRfdCk6IC4uLiB0aGlzLgoJKF9fdWludDY0X3QpOiBSZW5hbWVkIHRvIC4uLgoJKHhmc191aW50NjRfdCk6IC4uLiB0aGlzLgoJQWxsIGNhbGxlcnMgYXJlIGNoYW5nZWQueAoKCUZyb20gRWdtb250IEtvYmxpbmdlciA8ZWdtb250QHVodWxpbnV4Lmh1PjoKCSogdXRpbC9ncnViLWluc3RhbGwuaW46IFN1cHBvcnQgYW4gaW5zdGFsbCBkZXZpY2VzIGluIEdSVUIncwoJbm90YXRpb24gd2l0aG91dCBwYXJlbnRoZXNlcy4KCgkqIGRvY3MvZ3J1Yi50ZXhpIChJbnN0YWxsaW5nIEdSVUIgdXNpbmcgZ3J1Yi1pbnN0YWxsKTogQWRkZWQgYW4KCWV4YW1wbGUgb2YgdXNpbmcgZ3J1Yi1pbnN0YWxsIHdpdGhvdXQgcGFyZW50aGVzZXMuCgoyMDA0LTAxLTE4ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgkKCSogdXRpbC9ncnViLWluc3RhbGwuaW46IFVzZSB0aGUgZmlyc3Qgd29yZCBvZiBHUlVCX1NIRUxMIHdoZW4KCWNoZWNraW5nIGlmIHRoZSBncnViIHNoZWxsIGlzIHByZXNlbnQuIFRoaXMgaXMgbmVjZXNzYXJ5IHRvCglzdXBwb3J0IG9wdGlvbnMgdG8gdGhlIGdydWIgc2hlbGwgKGUuZy4gZ3J1YiAtLXJlYWQtb25seSkuCgoJRnJvbSBFcmljIEt2YWFsZW4gPEVfS3ZhYWxlbi5Bcm5lc2VuQG5vb3MuZnI+OgoJKiBkb2NzL2dydWIudGV4aTogTWFueSBidWcgZml4ZXMuCgoyMDA0LTAxLTE3ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBsaWIvZGV2aWNlLmMgW19fbGludXhfX10gKE1BSk9SKTogU3VwcG9ydCAzMiBiaXQgYW5kIDY0IGJpdAoJZGV2X3QuIFRoaXMgY29kZSBpcyBzdG9sZW4gZnJvbSBnbGliYy4KCVN1Z2dlc3RlZCBieSBTaGVuIEZlbmcgPHNoZW5AbmFuamluZy1mbnN0LmNvbT4uCgoyMDA0LTAxLTExICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvdGVybWluZm8uYyAodGlfc2V0X3Rlcm0pOiBVc2UgYSBwb2ludGVyIHRvIHN0cnVjdAoJdGVybWluZm8gaW5zdGVhZCB0byBhdm9pZCBHQ0MncyBidWcsIHdoaWNoIGluc2VydHMgYSByZWZlcmVuY2UKCXRvIG1lbWNweSBpbXBsaWNpdGx5LgoJKHRpX2dldF90ZXJtKTogTGlrZXdpc2UuCglBbGwgY2FsbGVycyBhcmUgZml4ZWQuCgoJKiBzdGFnZTIvdGVybWluZm8uaCAodGlfc2V0X3Rlcm0pOiBVcGRhdGVkLgoJKHRpX2dldF90ZXJtKTogTGlrZXdpc2UuCgoJKiBzdGFnZTIvc2hhcmVkLmggKHN0cnVjdCBsaW51eF9rZXJuZWxfaGVhZGVyKTogTmV3IG1lbWJlciwKCWluaXRyZF9tYXhfYWRkcmVzcy4gRGVmaW5lZCBpbiB0aGUgYm9vdCBwcm90b2NvbCAyLjAzIG9yIGhpZ2hlci4KCgkqIHN0YWdlMi9ib290LmMgKGxvYWRfaW5pdHJkKTogSWYgdGhlIGJvb3QgcHJvdG9jb2wgaXMgZ3JlYXRlcgoJdGhhbiBvciBlcXVhbCB0byAyLjAzLCB1c2UgdGhlIGZpZWxkIGBgaW5pdHJkX21heF9hZGRyZXNzJycKCWluc3RlYWQgb2YgTElOVVhfSU5JVFJEX01BWF9BRERSRVNTLgoKMjAwMy0xMi0zMCAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogc3RhZ2UyL2ZzeXNfZXh0MmZzLmMgKGV4dDJfaXNfZmFzdF9zeW1saW5rKTogTmV3IGZ1bmN0aW9uLgoJKGV4dDJmc19kaXIpOiBVc2UgZXh0Ml9pc19mYXN0X3N5bWxpbmsgdG8gY2hlY2sgaWYgdGhlIGN1cnJlbnQKCWlub2RlIGlzIGEgZmFzdCBvciBzbG93IHN5bWxpbmsuIFRoaXMgY2hhbmdlIHdhcyByZXF1aXJlZAoJYmVjYXVzZSBMaW51eCBub3cgdXNlcyBhY2wgc2VyaW91c2x5IChpLmUuIGluY29tcGF0aWJpbGl0eSkuCglSZXBvcnRlZCBieSBDaHJpcyBQZUJlbml0byA8cGViZW5pdG9AZ2VudG9vLm9yZz4gYW5kIFNlZW1hbnQKCUt1bGxlZW4gPHNlZW1hbnRAZ2VudG9vLm9yZz4KCjIwMDMtMTEtMzAgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIGxpYi9kZXZpY2UuYyAocmVhZF9kZXZpY2VfbWFwKSAoc2hvX3dhcm5pbmcpOiBOZXcgaW50ZXJuYWwKCWZ1bmN0aW9uLgoJKHJlYWRfZGV2aWNlX21hcCk6IElmIERSSVZFIGlzIGdyZWF0ZXIgdGhhbiA4LCBlbWl0IGEgd2FybmluZwoJYW5kIGlnbm9yZSB0aGUgZHJpdmUsIHJhdGhlciB0aGFuIGV4aXRpbmcgYWJub3JtYWxseS4KCVJlcG9ydGVkIGJ5IEdyZWcgTmV3YnkgPG5ld2J5QGFyc2MuZWR1Pi4KCjIwMDMtMTAtMTkgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCglNaWdyYXRlZCB0byBuZXdlciBhdXRvdG9vbHMuIEFsc28sIGRvbid0IGluc3RhbGwgbWtiaW1hZ2UKCWJlY2F1c2UgaXRzIG5hbWUgaXMgdG9vIGdlbmVyYWwgYW5kIGl0IGRvZXMgbm90IGNvbmZvcm0gdG8gdGhlCglHTlUgQ29kaW5nIFN0YW5kYXJkcyBpbiBzb21lIHBvaW50cy4KCQoJKiB1dGlsL01ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogTmV3IHZhcmlhYmxlLgoJKHNiaW5fU0NSSVBUUyk6IFJlbW92ZWQgbWtiaW1hZ2UuCgkobm9pbnN0X1NDUklQVFMpOiBBZGRlZCBta2JpbWFnZS4KCgkqIHN0YWdlMS9NYWtlZmlsZS5hbSAoQU1fQVNGTEFHUyk6IFJlbmFtZWQgdG8gLi4uCgkoQU1fQ0NBU0ZMQUdTKTogLi4uIHRoaXMuCgoJKiBzdGFnZTIvTWFrZWZpbGUuYW0gKHByZV9zdGFnZTJfZXhlY19BU0ZMQUdTKTogUmVuYW1lZCB0byAuLi4KCShwcmVfc3RhZ2UyX2V4ZWNfQ0NBU0ZMQUdTKTogLi4uIHRoaXMuCgkoc3RhcnRfZXhlY19BU0ZMQUdTKTogUmVuYW1lZCB0byAuLi4KCShzdGFydF9leGVjX0NDQVNGTEFHUyk6IC4uLiB0aGlzLgoJKGUyZnNfc3RhZ2UxXzVfZXhlY19BU0ZMQUdTKTogUmVuYW1lZCB0byAuLi4KCShlMmZzX3N0YWdlMV81X2V4ZWNfQ0NBU0ZMQUdTKTogLi4uIHRoaXMuCgkoZmF0X3N0YWdlMV81X2V4ZWNfQVNGTEFHUyk6IFJlbmFtZWQgdG8gLi4uCgkoZmF0X3N0YWdlMV81X2V4ZWNfQ0NBU0ZMQUdTKTogLi4uIHRoaXMuCgkoZmZzX3N0YWdlMV81X2V4ZWNfQVNGTEFHUyk6IFJlbmFtZWQgdG8gLi4uCgkoZmZzX3N0YWdlMV81X2V4ZWNfQ0NBU0ZMQUdTKTogLi4uIHRoaXMuCgkobWluaXhfc3RhZ2UxXzVfZXhlY19BU0ZMQUdTKTogUmVuYW1lZCB0byAuLi4KCShtaW5peF9zdGFnZTFfNV9leGVjX0NDQVNGTEFHUyk6IC4uLiB0aGlzLgoJKHJlaXNlcmZzX3N0YWdlMV81X2V4ZWNfQVNGTEFHUyk6IFJlbmFtZWQgdG8gLi4uCgkocmVpc2VyZnNfc3RhZ2UxXzVfZXhlY19DQ0FTRkxBR1MpOiAuLi4gdGhpcy4KCSh2c3RhZnNfc3RhZ2UxXzVfZXhlY19BU0ZMQUdTKTogUmVuYW1lZCB0byAuLi4KCSh2c3RhZnNfc3RhZ2UxXzVfZXhlY19DQ0FTRkxBR1MpOiAuLi4gdGhpcy4KCShqZnNfc3RhZ2UxXzVfZXhlY19BU0ZMQUdTKTogUmVuYW1lZCB0byAuLi4KCShqZnNfc3RhZ2UxXzVfZXhlY19DQ0FTRkxBR1MpOiAuLi4gdGhpcy4KCSh4ZnNfc3RhZ2UxXzVfZXhlY19BU0ZMQUdTKTogUmVuYW1lZCB0byAuLi4KCSh4ZnNfc3RhZ2UxXzVfZXhlY19DQ0FTRkxBR1MpOiAuLi4gdGhpcy4KCShkaXNrbGVzc19leGVjX0FTRkxBR1MpOiBSZW5hbWVkIHRvIC4uLgoJKGRpc2tsZXNzX2V4ZWNfQ0NBU0ZMQUdTKTogLi4uIHRoaXMuCgkobmJsb2FkZXJfZXhlY19BU0ZMQUdTKTogUmVuYW1lZCB0byAuLi4KCShuYmxvYWRlcl9leGVjX0NDQVNGTEFHUyk6IC4uLiB0aGlzLgoJKHB4ZWxvYWRlcl9leGVjX0FTRkxBR1MpOiBSZW5hbWVkIHRvIC4uLgoJKHB4ZWxvYWRlcl9leGVjX0NDQVNGTEFHUyk6IC4uLiB0aGlzLgoKCSogY29uZmlndXJlLmluOiBSZW1vdmVkLgoJKiBjb25maWd1cmUuYWM6IE5ldyBmaWxlLiBNb3N0bHkgZGVyaXZlZCBmcm9tIGNvbmZpZ3VyZS5pbi4KCQoyMDAzLTEwLTE5ICBZb3NoaW5vcmkgT0tVSkkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJRnJvbSBLQiBTcmlyYW0gPG1haWxfa2JAeWFob28uY29tPjoKCSogc3RhZ2UyL2Rpc2tfaW8uYyAoc2V0X2RldmljZSkgW1NVUFBPUlRfTkVUQk9PVF06IEFkZGVkIHN1cHBvcnQKCWZvciBhIGNvbXBsZXRpb24gb2YgYSBuZXR3b3JrIGRldmljZS4KCShwcmludF9jb21wbGV0aW9ucyk6IExpa2V3aXNlLgoKMjAwMy0xMC0xMCAgUm9iZXJ0IE1pbGxhbiAgPHJvYmVydG1oQGdudS5vcmc+CgoJKiBjb25maWcuZ3Vlc3M6IFVwZGF0ZSBmcm9tIG9mZmljaWFsIHNvdXJjZSAoQ1ZTKS4KCSogY29uZmlnLnN1YjogTGlrZXdpc2UuCgoyMDAzLTA5LTE4ICBSb2JlcnQgTWlsbGFuICA8cm9iZXJ0bWhAZ251Lm9yZz4KCgkqIGRvY3MvdGV4aW5mby50ZXg6IFVwZGF0ZSBmcm9tIGZ0cC5nbnUub3JnLgoKMjAwMy0wOS0wNSAgS0IgU3JpcmFtICA8bWFpbF9rYkB5YWhvby5jb20+CgoJKiBzdGFnZTIvZnN5c19mYXQuYzogRml4IG1pc3NkZXRlY3Rpb24gb2YgZXh0MmZzIGFzIGZhdGZzLgoKMjAwMy0wOS0wNSAgUm9iZXJ0IE1pbGxhbiAgPHJvYmVydG1oQGdudS5vcmc+CgoJKiBkb2NzL21lbnUubHN0IChHTlUvTGludXgpOiBBZGQgY29tbWVudGVkIGluaXRyZCBjb21tYW5kLCB3aGljaAoJaXMgY29uc2lzdGVudCB3aXRoIGRvY3VtZW50YXRpb24uCgoyMDAzLTA5LTAxICBSb2JlcnQgTWlsbGFuICA8cm9iZXJ0bWhAZ251Lm9yZz4KCgkqIGRvY3MvbWVudS5sc3Q6IEFkZCBOZXRCU0QsIE9wZW5CU0QsIEdOVS9LRnJlZUJTRCBhbmQKCUdOVS9LTmV0QlNELgoKMjAwMy0wOC0xMyAgSmFzb24gVGhvbWFzICA8amFzb25AaW50b2xvZ3kuY29tLmF1PgoKCSogdXRpbC9ncnViLWluc3RhbGwuaW4gKHJlc29sdmVfc3ltbGluayk6IE5ldyBmdW5jdGlvbiB0bwoJcmVzb2x2ZSBzeW1saW5rcy4KCShmaW5kX2RldmljZSk6IE1vdmVkIHN5bWxpbmsgY29kZSB0byBuZXcgZnVuY3Rpb24uCglCZWZvcmUgd2UgY29udmVydCB0aGUgaW5zdGFsbF9kZXZpY2Ugd2UgYXR0ZW1wdCB0byByZXNvbHZlIGl0IGlmCglpdHMgYSBzeW1saW5rIHVzaW5nIHRoZSBuZXcgZnVuY3Rpb24uCgkqIHV0aWwvbWJjaGsuYyAoY2hlY2tfbXVsdGlib290KTogVGhlIHNlbnNlIG9mIGFuIGVycm9yIG1lc3NhZ2UKCXdhcyBpbnZlcnRlZC4KCVJlcG9ydGVkIGJ5IFRpbW90aHkgQmFsZHdpbiA8VC5FLkJhbGR3aW45OUBtZW1iZXJzLmxlZWRzLmFjLnVrPi4KCjIwMDMtMDgtMTIgIEpvY2hlbiBIb2VuaWNrZSAgPGpvY2hlbkBnbnUub3JnPgoKCSogc3RhZ2UyL2ZzeXNfcmVpc2VyZnMuYyAocmVhZF90cmVlX25vZGUpOiBGaXhlZCBhIHR5cG87IG9ubHkKCW1hdHRlcnMgZm9yIHZlcnkgbGFyZ2UgZnMgd2hlbiB0cmVlIGRvZXNuJ3QgZml0IGluIGNhY2hlLgoJKElIX0tFWV9PRkZTRVQpOiBEb24ndCBjaGVjayBmb3IgSU5GTy0+dmVyc2lvbi4gIFRoZXJlIGFyZQoJYWN0dWFsbHkgb2xkIHZlcnNpb24gZmlsZSBzeXN0ZW1zIHRoYXQgdXNlIG5ldyB2ZXJzaW9uIGl0ZW1zLgoJKElIX0tFWV9JU1RZUEUpOiBMaWtld2lzZS4KCShyZWlzZXJmc19kaXIpOiBMaWtld2lzZS4KCjIwMDMtMDgtMDkgIFRoaWVycnkgTGFyb25kZSAgPHRsYXJvbmRlQHBvbHludW0ub3JnPgoKCSogdXRpbC9ta2JpbWFnZTogTmV3IEZpbGUuIGBta2JpbWFnZScgZGVwZW5kcyBvbiBHUlVCIGFuZAoJZXhpc3RlZAllbHNld2hlcmUuIEl0IGlzIG5vdyBwYXJ0IG9mIEdSVUIgc28gdGhhdCBwZW9wbGUgY2FuCglmaXgvY29udHJpYnV0ZS4KCSogdXRpbC9NYWtlZmlsZS5hbSAoc2Jpbl9TQ1JJUFRTKTogQWRkZWQgc2NyaXB0IGBta2JpbWFnZScKCjIwMDMtMDgtMDEgIEphc29uIFRob21hcyAgPGphc29uQGludG9sb2d5LmNvbS5hdT4KCgkqIHV0aWwvZ3J1Yi1pbnN0YWxsLmluOiBzdXBwb3J0IC0tbm8tZmxvcHB5CglUaGlzIGFsbG93IHVzZXJzIHRvIHNwZWNpZnkgdGhlIC0tbm8tZmxvcHB5IG9wdGlvbiB3aGljaAoJaXMgcGFzc2VkIG9udG8gdGhlIGdydWIgc2hlbGwsIHNvIGl0IGRvZXMgbm90IHByb2JlIHRoZSBmbG9wcHkKCWRyaXZlLiAKCVBhdGNoIGZyb20ga2VzaGFAZGllZGFzLnNvZnRlbi5rdHUubHQKCjIwMDMtMDYtMTcgIEpvY2hlbiBIb2VuaWNrZSAgPGpvY2hlbkBnbnUub3JnPgoKCSogc3RhZ2UyL2ZzeXNfcmVpc2VyZnMuYyAocmVpc2VyZnNfbW91bnQpOiBDbGVhciB0aGUgbm9kZSBjYWNoZS4KCVRoaXMgZml4ZXMgYSBwcm9ibGVtIHdoZXJlIGZpbGVzIGZyb20gb3RoZXIgcGFydGl0aW9ucyBhcHBlYXIgYXQKCXRoZSB3cm9uZyBwYXJ0aXRpb24uICBQcm9ibGVtIHJlcG9ydGVkIGJ5IEpvaGFuIFJlZ2luLgoKMjAwMy0wNS0wNCAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogZG9jcy9ncnViLnRleGkgKHBhcnRuZXcpOiBGaXhlZCB0aGUgaW5jb25zaXN0ZW5jeSBiZXR3ZWVuIHRoZQoJaW1wbGVtZW50YXRpb24gYW5kIHRoZSBkb2N1bWVudGF0aW9uLiBUaGUgbGFzdCBhcmd1bWVudCBpcyB0aGUKCWxlbmd0aCBpbnN0ZWFkIG9mIHRoZSBlbmRpbmcgYWRkcmVzcy4KCVJlcG9ydGVkIGJ5IERhbmllbCBGYXJyZWxsIDxzMjEwODI4N0BzdHVkZW50LnJtaXQuZWR1LmF1Pi4KCjIwMDMtMDMtMTkgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCglGcm9tIEFkYW0gTGFja29yenluc2tpIDxhZGFtQG9zLmluZi50dS1kcmVzZGVuLmRlPjoKCSogc3RhZ2UyL3NoYXJlZC5oIChLRVlfTlBBR0UpOiBDaGFuZ2VkIHRvIDB4NTEwMC4KCShLRVlfUFBBR0UpOiBDaGFuZ2VkIHRvIDB4NDkwMC4KCjIwMDMtMDMtMTkgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIHN0YWdlMi9ib290LmMgKGxvYWRfaW1hZ2UpOiBDaGVjayBpZiBEQVRBX0xFTiBwbHVzIFNFQ1RPUl9TSVpFCglpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gTVVMVElCT09UX1NFQVJDSCwgaW5zdGVhZCBvZiBpZgoJREFUQV9MRU4gaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIE1VTFRJQk9PVF9TRUFSQ0guCglSZXBvcnRlZCBieSBOZWVsa2FudGggTmF0dSA8bmVlbG5hdHVAeWFob28uY29tPi4KCjIwMDMtMDMtMTAgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCglGcm9tIEFuZHJldyBXYWxyb25kIDxhbmRyZXdAd2Fscm9uZC5vcmc+OgoJKiBzdGFnZTIvZnN5c19yZWlzZXJmcy5jIChzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9oZWFkZXIpOgoJUmVtb3ZlIGFuIHVubmVjZXNzYXJ5IGBgbG9uZycnLgoKMjAwMy0wMy0xMCAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCUZyb20gVGlsbWFubiBCdWJlY2s6CgkqIHN0YWdlMi9idWlsdGlucy5jIFtTVVBQT1JUX1NFUklBTF0gKHRlcm1pbmZvX2Z1bmMpOiBVbmVzY2FwZQoJYXJndW1lbnRzIGJlZm9yZSBjb3B5aW5nIHRoZW0sIGFuZCBlc2NhcGUgc2VxdWVuY2VzIGJlZm9yZQoJcHJpbnRpbmcgdGhlbS4KCSogc3RhZ2UyL3Rlcm1pbmZvLmggKFRFUk1JTkZPX0xFTik6IENoYW5nZWQgdG8gNDAuCgoyMDAzLTAyLTIwICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiB1dGlsL2dydWItaW5zdGFsbC5pbiAoZmluZF9kZXZpY2UpOiBGaXggdGhlIHNlZCBzY3JpcHQuCgoyMDAzLTAyLTE3ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBsaWIvZGV2aWNlLmMgKGNoZWNrX2RldmljZSk6IElmIERFVklDRSBpcyBlbXB0eSwganVzdCByZXR1cm4KCTEuCgkoZ2V0X3Njc2lfZGlza19uYW1lKSBbX19RTlhOVE9fX106IE1ha2UgTkFNRSBlbXB0eSwgYmVjYXVzZSBTQ1NJCglkaXNrcyBhcmUgZGV0ZWN0ZWQgYXMgSURFIGRpc2tzIG9uIFFOWCBSVFAuCgoJRnJvbSBUYWtldG8gS2FiZSA8a2FiZUBzcmEtdG9ob2t1LmNvLmpwPjoKCSogbGliL2RldmljZS5jIChnZXRfaWRlX2Rpc2tfbmFtZSkgW19fUU5YTlRPX19dOiBTZXQgTkFNRSB0bwoJIi9kZXYvaGRYIi4KCShnZXRfZmxvcHB5X2Rpc2tfbmFtZSkgW19fUU5YTlRPX19dOiBTZXQgTkFNRSB0byAiL2Rldi9mZFgiLgoJKiBzdGFnZTIvbWJfaW5mby5oIChzdHJ1Y3QgQWRkclJhbmdlRGVzYyk6IFNwZWNpZmllZCB3aXRoIHRoZQoJYXR0cmlidXRlIHBhY2tlZC4KCSogc3RhZ2UyL3NoYXJlZC5oIChzdHJ1Y3QgbW1hcl9kZXNjKTogTGlrZXdpc2UuCgoyMDAzLTAxLTI5ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJRnJvbSBJbGd1aXogTGF0eXBvdjoKCSogY29uZmlndXJlLmluOiBGaXggYSBzeW50YXggZXJyb3IgaW4gYSBzZWQgc2NyaXB0LgoJKiBzdGFnZTIvYmlvcy5jIChnZXRfZGlza2luZm8pOiBQaG9lbml4QklPUyA0LjAgUmV2aXNpb24gNi4wIAoJZm9yIFpGIE1pY3JvIG1pZ2h0IHVuZGVyc3RhbmQgdGhlIGdyZWF0ZXIgYnVmZmVyIHNpemUgZm9yIHRoZQoJImdldCBkcml2ZSBwYXJhbWV0ZXJzIiBpbnQgMHgxMyBjYWxsIGluIGl0cyBvd24gd2F5LiAgCglTdXBwb3NlZGx5IHRoZSBCSU9TIGFzc3VtZXMgZXZlbiBiaWdnZXIgc3BhY2UgaXMgYXZhaWxhYmxlIGFuZAoJdGh1cyBjb3JydXB0cyB0aGUgc3RhY2suICBUaGlzIGlzIHdoeSB3ZSBzcGVjaWZ5IHRoZSBleGFjdGx5IAoJbmVjZXNzYXJ5IHNpemUgb2YgMHg0MiBieXRlcy4KCjIwMDMtMDEtMjUgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCglGcm9tIFN0ZXZlbiBEaWNrIDxzc2QuZ251QG1tYWUudWNmLmVkdT46CgkqIHN0YWdlMi9wY19zbGljZS5oIChQQ19TTElDRV9UWVBFX0RFTExfVVRJTCk6IE5ldyBtYWNyby4KCShJU19QQ19TTElDRV9UWVBFX0ZBVCk6IFJlY29nbml6ZSBQQ19TTElERV9UWVBFX0RFTExfVVRJTCBhcwoJd2VsbC4KCjIwMDMtMDEtMjUgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCglGcm9tIEthcnN0ZW4gU2NoZWlibGVyIDxrYXJzdGVuLnNjaGVpYmxlckBzdHVkZW50LnVuaS1oYWxsZS5kZT46CgkqIHN0YWdlMi90ZXJtaW5mby5jICh0ZXJtKTogRG9uJ3QgdXNlIGEgQzk5LXN0eWxlIGluaXRpYWxpemVyLgoKMjAwMy0wMS0xNiAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCUZyb20gSC5KLiBMdSA8aGpsQGdudS5vcmc+OgoJKiBzdGFnZTIvZGlza19pby5jIChwYXJ0X3N0YXJ0KTogVXNlIHVuc2lnbmVkIGxvbmcgdG8gc3VwcG9ydAoJbGFyZ2UgZGlza3MuCgkocGFydF9sZW5ndGgpOiBMaWtld2lzZS4KCSogc3RhZ2UyL3NoYXJlZC5oIChwYXJ0X3N0YXJ0KTogTGlrZXdpc2UuCgkocGFydF9sZW5ndGgpOiBMaWtld2lzZS4KCjIwMDMtMDEtMDUgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoQ0ZMQUdTKTogV2hlbiB0aGUgZGVmYXVsdCBDRkxBR1MgaXMgdXNlZCwKCWVsaW1pbmF0ZSAtTzIgYW5kIC1nIGZyb20gQ0ZMQUdTLCBiZWNhdXNlIEF1dG9jb25mIG1heQoJYXV0b21hdGljYWxseSBzZXQgQ0ZMQUdTIHRvIHRoZW0uCgoyMDAzLTAxLTAyICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJRnJvbSBKZXJlbXkgS2F0ejoKCSogY29uZmlndXJlLmluOiBTdXBwb3J0IGJ1aWxkaW5nIG9uIHg4Nl82NCB3aXRoIGdjYyAtbTMyLgoKMjAwMy0wMS0wMiAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCUZyb20gSmVyZW15IEthdHo6CgkqIHN0YWdlMi9mc3lzX2V4dDJmcy5jIChleHQyZnNfZGlyKTogSW5pdGlhbGl6ZSBTVFJfQ0hLIHRvIHNodXQKCXVwIEdDQy4KCSogc3RhZ2UyL2ZzeXNfbWluaXguYyAobWluaXhfZGlyKTogTGlrZXdpc2UuCgoyMDAyLTEyLTIxICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvYXNtLlMgKGdhdGVBMjApOiBGaXJzdCwgdHJ5IGEgQklPUyBjYWxsIChJTlQgMTVILAoJQVg9MjQwMC8yNDAxKS4gVXNlIHRoZSBrZXlib2FyZCBjb250cm9sbGVyLCBvbmx5IGlmIHRoYXQgZmFpbGVkLgoKMjAwMi0xMi0xMSAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCUFkZCBhIHdvcmthcm91bmQgZm9yIGJ1Z2d5IEJJT1NlcyB3aGljaCBkb24ndCBwYXNzIGJvb3QgZHJpdmUKCWNvcnJlY3RseS4gVGhlIGlkZWEgaXMgdGhhdCBHUlVCIGZvcmNlcyB0aGUgZml4ZWQgZGlzayBmbGFnCgl3aGVuIGJvb3RlZCBmcm9tIGEgaGFyZCBkaXNrLiBXaGVuIEJJT1MgbG9hZHMgR1JVQiBkaXJlY3RseSwKCXRoZSBib290IGRyaXZlIG11c3QgYmUgZWl0aGVyIG9mIDB4MDAgYW5kIDB4ODAsIHNvIHRoaXMgc2hvdWxkCgl3b3JrLCBpZiB0aG9zZSBCSU9TZXMgYWx3YXlzIHBhc3MgemVybyB0byAlZGwuIEFGQUlLLCB0aGlzCglhc3N1bXB0aW9uIGlzIGFsd2F5cyBjb3JyZWN0LgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGluc3RhbGxfZnVuYyk6IFN0b3JlIHRoZSBmaXhlZCBkaXNrIGZsYWcgb2YKCXRoZSBkZXN0aW5hdGlvbiBkcml2ZSBpbiBCT09UX0RSSVZFX01BU0sgaW4gU3RhZ2UgMS4KCgkqIHN0YWdlMS9zdGFnZTEuaCAoU1RBR0UxX0JPT1RfRFJJVkVfTUFTSyk6IE5ldyBtYWNyby4KCgkqIHN0YWdlMS9zdGFnZTEuUyAoYm9vdF9kcml2ZV9tYXNrKTogTmV3IHZhcmlhYmxlLiBJdCBpcyBvcidlZAoJdG8gJWRsLgoKMjAwMi0xMi0wOSAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogc3RhZ2UyL2NoYXJfaW8uYyAoaW5pdF9wYWdlKTogQ2hhbmdlIHRoZSBzb2Z0d2FyZSBuYW1lIGZyb20KCSJHUlVCIiB0byAiR05VIEdSVUIiLiBUaGlzIHdhcyBpbmFjY3VyYXRlLiBSZXBvcnRlZCBieSBDaWFyYW4KCU8nUmlvcmRhbiA8Y29yaW9yZGFuQGNvbXBzb2MuY29tPi4KCjIwMDItMTItMDQgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChlbWJlZF9mdW5jKTogV2hlbiBjaGVja2luZyBpZiB0aGUgZGlzayBjYW4KCXN0b3JlIFN0YWdlIDEuNSwgY2hlY2sgZXZlcnkgcGFydGl0aW9uLCBpZiBpdCBpc24ndCBlbXB0eS4KCjIwMDItMTItMDQgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIHN0YWdlMi9zdGFnZTIuYyAocHJpbnRfZW50cnkpOiBQdXQgYSByaWdodCBhcnJvdywgaWYgdGhlIGVudHJ5CglpcyBsb25nZXIgdGhhbiA3MSBjaGFyYWN0ZXJzLiBSZXBvcnRlZCBieSBQYXZlbCBSb3NraW4uCgoyMDAyLTEyLTA0ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvZGlza19pby5jIChzZXRfZGV2aWNlKTogSWYgJyhuJyBpcyBnaXZlbiwgYWRkICdkJyBpbnRvCglERVZJQ0UuIFJlcG9ydGVkIGJ5IFBhdmVsIFJvc2tpbi4KCjIwMDItMTItMDMgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCglDaGFuZ2UgdGhlIHRlcm1pbmFsIHN0cnVjdHVyZSBhIGJpdCwgdG8gdHVybiB0aGUgY3Vyc29yIHN0YXRlCglleHBsaWNpdGx5LiBTdWdnZXN0ZWQgYnkgUGF2ZWwgUm9za2luLgoJCgkqIHN0YWdlMi90ZXJtLmggKHN0cnVjdCB0ZXJtX2VudHJ5KTogUmVtb3ZlIHRoZSBtZW1iZXIKCWBub2N1cnNvcicgYW5kIGFkZCBgc2V0Y3Vyc29yJy4KCVshU1RBR0UxXzVdIChjb25zb2xlX3NldGN1cnNvcik6IE5ldyBwcm90b3R5cGUuCglbU1VQUE9SVF9IRVJDVUxFU10gKGhlcmN1bGVzX3NldGN1cnNvcik6IExpa2V3aXNlLgoJWyFTVEFHRTFfNV0gKGNvbnNvbGVfbm9jdXJzb3IpOiBSZW1vdmVkLgoJW1NVUFBPUlRfSEVSQ1VMRVNdIChoZXJjdWxlc19ub2N1cnNvcik6IExpa2V3aXNlLgoKCSogc3RhZ2UyL3N0YWdlMi5jIChydW5fbWVudSk6IENhbGwgc2V0Y3Vyc29yIGluc3RlYWQgb2YKCW5vY3Vyc29yLgoJQ2FsbCBzZXRjdXJzb3Igd2l0aCAxIGJlZm9yZSBzdGFydGluZyBhIGJvb3QgZW50cnkuCgoJKiBzdGFnZTIvc2hhcmVkLmggKG5vY3Vyc29yKTogUmVtb3ZlZC4KCShzZXRjdXJzb3IpOiBOZXcgcHJvdG90eXBlLgoKCSogc3RhZ2UyL2hlcmN1bGVzLmMgKGhlcmNfY3Vyc29yX3N0YXRlKTogTmV3IHZhcmlhYmxlLgoJKGhlcmNfdHVybl9jdXJzb3IpOiBSZW1vdmVkLgoJKGhlcmN1bGVzX25vY3Vyc29yKTogTGlrZXdpc2UuCgkoaGVyY3VsZXNfc2V0Y3Vyc29yKTogTmV3IGZ1bmN0aW9uLgoKCSogc3RhZ2UyL2NoYXJfaW8uYyAoZ2V0X2NtZGxpbmUpOiBUdXJuIG9uIHRoZSBjdXJzb3IgYXQgdGhlCgliZWdpbm5pbmcsIGFuZCByZXN0b3JlIGl0IGJlZm9yZSByZXR1cm5pbmcuCgkobm9jdXJzb3IpOiBSZW1vdmVkLgoJKHNldGN1cnNvcik6IE5ldyBmdW5jdGlvbi4KCgkqIHN0YWdlMi9hc20uUyAoY29uc29sZV9jdXJzb3Jfc3RhdGUpOiBOZXcgdmFyaWFibGUuCgkoY29uc29sZV9jdXJzb3Jfc2hhcGUpOiBMaWtld2lzZS4KCShjb25zb2xlX3NldGN1cnNvcik6IE5ldyBmdW5jdGlvbi4KCShjb25zb2xlX25vY3Vyc29yKTogUmVtb3ZlZC4KCgkqIGdydWIvYXNtc3R1Yi5jIChjb25zb2xlX3NldGN1cnNvcik6IE5ldyBmdW5jdGlvbi4KCShoZXJjdWxlc19zZXRjdXJzb3IpOiBMaWtld2lzZS4KCShjb25zb2xlX25vY3Vyc29yKTogUmVtb3ZlZC4KCShoZXJjdWxlc19ub2N1cnNvcik6IExpa2V3aXNlLgoKMjAwMi0xMi0wMyAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogZG9jcy9ncnViLnRleGkgKHRlcm1pbmZvKTogRml4IGEgbWlzbGVhZGluZyBFbmdsaXNoIHNlbnRlbmNlLgoJUmVwb3J0ZWQgYnkgUGF2ZWwgUm9za2luLgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoYnVpbHRpbl90ZXJtaW5mbyk6IExpa2V3aXNlLgoKMjAwMi0xMi0wMSAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCUZyb20gQWxleGFuZGVyIExhbmdlciA8YWxleEBiaWcuZW5kaWFuLmRlPjoKCSogc3RhZ2UyL2ZyZWVic2QuaCAoUkJfR0RCKTogTmV3IG1hY3JvLgoJKFJCX01VVEUpOiBMaWtld2lzZS4KCShSQl9NVUxUSVBMRSk6IExpa2V3aXNlLgoKCSogc3RhZ2UyL2Jvb3QuYyAoYnNkX2Jvb3QpOiBTZXQgdGhlIGJpdHMgb2YgUkJfTVVMVElQTEUsIFJCX0dEQgoJYW5kIFJCX01VVEUgd2hlbiAiLUQiLCAiLWciIGFuZCAiLW0iIGFyZSBzcGVjaWZpZWQsCglyZXNwZWN0aXZlbHkuCgoyMDAyLTEyLTAxICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBkb2NzL2dydWIudGV4aSAoUmVwb3J0aW5nIGJ1Z3MpOiBTcGVjaWZ5IHRoZSBwcm9qZWN0IHBhZ2Ugb2YKCXRoZSBCVFMgaW5zdGVhZCBvZiB0aGUgQlRTIGl0c2VsZi4KCjIwMDItMTEtMzAgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIGRvY3MvTWFrZWZpbGUuYW0gKG1hbl9NQU5TKTogQWRkZWQgZ3J1Yi10ZXJtaW5mby44LgoJKCQoc3JjZGlyKS9ncnViX3Rlcm1pbmZvLjgpOiBOZXcgdGFyZ2V0LgoJKiB1dGlscy9ncnViLXRlcm1pbmZvLmluOiBOZXcgZmlsZS4KCSogdXRpbC9NYWtlZmlsZS5hbSAoc2Jpbl9TQ1JJUFRTKTogQWRkZWQgZ3J1Yi10ZXJtaW5mby4KCSogY29uZmlndXJlLmluIChBQ19PVVRQVVQpOiBBZGRlZCB1dGlsL2dydWItdGVybWluZm8uCgoJKiBkb2NzL2dydWIudGV4aSAodGVybWluZm8pOiBOZXcgc3Vic2VjdGlvbi4KCShJbnZva2luZyBncnViLXRlcm1pbmZvKTogTmV3IGNoYXB0ZXIuCgoJRnJvbSBUaWxtYW5uIEJ1YmVjayA8dC5idWJlY2tAcmVpbmZvcm0uZGU+OgoJKiBzdGFnZTIvTWFrZWZpbGUuYW0gKG5vaW5zdF9IRUFERVJTKTogQWRkZWQgdGVybWluZm8uaCBhbmQKCXRwYXJtLmguCgkobGliZ3J1Yl9hX1NPVVJDRVMpOiBBZGRlZCB0ZXJtaW5mby5jIGFuZCB0cGFybS5jLgoJKHByZV9zdGFnZTJfZXhlX1NPVVJDRVMpOiBMaWtld2lzZS4KCSogc3RhZ2UyL3Rlcm1pbmZvLmM6IE5ldyBmaWxlLgoJKiBzdGFnZTIvdGVybWluZm8uaDogTGlrZXdpc2UuCgkqIHN0YWdlMi90cGFybS5jOiBMaWtld2lzZS4KCSogc3RhZ2UyL3RwYXJtLmg6IExpa2V3aXNlLgoJKiBzdGFnZTIvc3RhZ2UyLmMgKGdldF9saW5lX2Zyb21fY29uZmlnKTogRml4IGhhbmRsaW5nIG9mCgliYWNrc2xhc2hlcy4KCSogc3RhZ2UyL2NoYXJfaW8uYyAoZ3J1Yl9wdXRzdHIpOiBOZXcgZnVuY3Rpb24uCgkoZ3J1Yl9wcmludGYpOiBVc2UgZ3J1Yl9wdXRzdHIuCgkoc3Vic3RyaW5nKTogQWRkIGNvbnN0IGludG8gYm90aCBhcmd1bWVudHMuCgkqIHN0YWdlMi9idWlsdGlucy5jIFtTVVBQT1JUX1NFUklBTF06IEluY2x1ZGUgdGVybWluZm8uaC4KCVtTVVBQT1JUX1NFUklBTF0gKHRlcm1pbmZvX2Z1bmMpOiBOZXcgZnVuY3Rpb24uCglbU1VQUE9SVF9TRVJJQUxdIChidWlsdGluX3Rlcm1pbmZvKTogTmV3IHZhcmlhYmxlLgoJIChidWlsdGluX3RhYmxlKSBbU1VQUE9SVF9TRVJJQUxdOiBBZGRlZCBhIHBvaW50ZXIgdG8KCUJVSUxUSU5fVEVSTUlORk8uCgkqIHN0YWdlMi9zZXJpYWwuYyAoc2VyaWFsX2dvdG94eSk6IFVzZSB0aV9jdXJzb3JfYWRkcmVzcy4KCShzZXJpYWxfY2xzKTogVXNlIHRpX2NsZWFyX3NjcmVlbi4KCShzZXJpYWxfaGlnaGxpZ2h0KTogdXNlIHRpX2VudGVyX3N0YW5kb3V0X21vZGUgYW5kCgl0aV9leGl0X3N0YW5kb3V0X21vZGUuCgoyMDAyLTExLTMwICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvZGlza19pby5jIChyYXdyZWFkKTogTWFrZSBzdXJlIHRoYXQgU0VDVE9SIGlzIHZhbGlkLgoJSWYgbm90LCBzZXQgRVJSTlVNIHRvIEVSUl9HRU9NIGFuZCByZXR1cm4gemVyby4gVGhpcyBjaGVjayBpcwoJY3JpdGljYWwgd2hlbiBhIHBhcnRpdGlvbiB0YWJsZSBpcyBjb3JydXB0ZWQuCgoyMDAyLTExLTI4ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvYXNtLlMgKGNvbnNvbGVfY2xzKTogV3JpdGUgc3BhY2VzIHRvIHRoZSBlbnRpcmUgc2NyZWVuCglpbnN0ZWFkIG9mIGdldHRpbmcvc2V0dGluZyB0aGUgdmlkZW8gbW9kZSwgYmVjYXVzZSB0aGlzIGZsaWNrZXJzCgl0aGUgc2NyZWVuIGFuZCBpcyBxdWl0ZSBhbm5veWluZywgaWYgdXNpbmcgYSBMQ0QuCgoyMDAyLTExLTE1ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBkb2NzL2dydWIudGV4aSAoUU5YKTogTmV3IHN1YnNlY3Rpb24uIFJlcG9ydGVkIGJ5CglNYXJpYW4tTmljb2xhZSBWLiBJT04gPG1hcmlhbl9pb25Abm9vcy5mcj4uCgoyMDAyLTEwLTI4ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBncnViL2FzbXN0dWIuYyAoY29uc29sZV90cmFuc2xhdGVfa2V5KTogRGVhbCB3aXRoIEtFWV9QUEFHRQoJYW5kIEtFWV9OUEFHRS4KCSogc3RhZ2UyL3NlcmlhbC5jIChzZXJpYWxfdHJhbnNsYXRlX2tleV9zZXF1ZW5jZSk6IEFkZGVkIHR3byBuZXcKCWNvZGVzIGZvciBQYWdlIFVwIGFuZCBQYWdlIERvd24uCgkqIHN0YWdlMi9hc20uUyAodHJhbnNsYXRpb25fdGFibGUpOiBBZGRlZCBlbnRyaWVzIGZvciBLRVlfUFBBR0UKCWFuZCBLRVlfTlBBR0UuCgkqIHN0YWdlMi9zdGFnZTIuYyAocnVuX21lbnUpOiBEZWFsIHdpdGggUGFnZSBVcCBhbmQgUGFnZSBEb3duLgoJQWxzbyByZWNvZ25pemUgdGhlIHJpZ2h0IGtleSBmb3IgdGhlIHNlbGVjdGlvbiBvZiBhIGJvb3QgZW50cnkuCglTdWdnZXN0ZWQgYnkgQWRhbSBMYWNrb3J6eW5za2kgPGFkYW1Ab3MuaW5mLnR1LWRyZXNkZW4uZGU+LgoKMjAwMi0xMC0xMCAgSmFzb24gVGhvbWFzICA8amFzb25AdG9waWMuY29tLmF1PgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKHNldHVwX2Z1bmMpOiBBZGRlZCBtaXNzaW5nIHNwYWNlIHRvIC0tZm9yY2UtbGJhCglvcHRpb24uIFJlcG9ydGVkIGJ5IEtlbm5ldGggQ3J1ZHVwIDxrZW5ueUBwYW5peC5jb20+CgoyMDAyLTEwLTA2ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvYXNtLlMgKGdhdGVBMjApOiBPdXRwdXQgYSBkdW1teSBjb21tYW5kICgweGZmKSwgYXMgYQoJd29ya2Fyb3VuZCBmb3IgVVNCIGtleWJvYXJkIGhhbmdpbmcgcHJvYmxlbS4gU3VnZ2VzdGVkIGJ5CglIaWRldG9zaGkgTmlzaGltYWtpIDxuaXNoaW1ha2lAbXhzLm5lcy5uZWMuY28uanA+LgoKMjAwMi0xMC0wNiAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogY29uZmlndXJlLmluIChmYWxpZ25fbG9vcF9mbGFnKTogTmV3IHZhcmlhYmxlLiBTZXQgdG8gaWYgR0NDCglzdXBwb3J0cyBgLWZhbGlnbi0qJy4gSWYgdHJ1ZSwgdXNlIGAtZmFsaWduLWp1bXBzJywKCWAtZmFsaWduLWxvb3BzJyBhbmQgYC1mYWxpZ24tZnVuY3Rpb25zJyBpbnN0ZWFkIG9mCglgLW1hbGlnbi1qdW1wcycsIGAtbWFsaWduLWxvb3BzJyBhbmQgYC1tYWxpZ24tZnVuY3Rpb25zJywKCWJlY2F1c2UgYC1tYWxpZ24tKicgYXJlIG9ic29sZXRlIGluIEdDQyAzLnguIFJlcG9ydGVkIGJ5IEplcmVteQoJS2F0ei4KCjIwMDItMDktMTMgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIHN0YWdlMi9zZXJpYWwuYyAoZmlsbF9pbnB1dF9idWYpOiBUYWtlIGEgbmV3IGFyZ3VtZW50IE5PV0FJVC4KCUlmIE5PV0FJVCBpcyB0cnVlLCBkb24ndCBsb29wLgoJQWxsIGNhbGxlcnMgYXJlIGNoYW5nZWQuCgoyMDAyLTA5LTA4ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBjb25maWd1cmUuaW4gKC0tZGlzYWJsZS1zZXJpYWwpOiBGaXggYSB0eXBvIGluIHRoZQoJZGVzY3JpcHRpb24uCgoyMDAyLTA4LTIwICBKYXNvbiBUaG9tYXMgPGphc29uQHRvcGljLmNvbS5hdT4KCglDaGFuZ2VkIGhpZ2hsaWdodCBzdGF0ZSBjb2RlIGZvciBoZXJjdWxlcywgY29uc29sZSBhbmQgc2VyaWFsLgoJVGhlIHN0YXRlIHdhcyAwIC0gbm9ybWFsIG9yIDEgLSBoaWdobGlnaHQuCglUaGUgc3RhdGUgaXMgbm93IGRlZmluZWQgdXNpbmcgYW4gZW51bSBjYWxsZWQgY29sb3Jfc3RhdGUuCgoJKiBzdGFnZTIvdGVybS5oIChjb2xvcl9zdGF0ZSk6IE5ldyBlbnVtLgoJKENPTE9SX1NUQVRFX1NUQU5EQVJEKTogU3RhbmRhcmQgY29sb3IgdG8gdXNlIHdoZW4gbm90IHVzaW5nCgl1c2VyIGRlZmluZWQuCgkoQ09MT1JfU1RBVEVfTk9STUFMKTogVXNlciBkZWZpbmVkIG5vcm1hbCBjb2xvci4KCShDT0xPUl9TVEFURV9ISUdITElHSFQpOiBVc2VyIGRlZmluZWQgaGlnaGxpZ2h0IGNvbG9yLgoJKGNvbnNvbGVfaGlnaGxpZ2h0KTogUmVuYW1lZCB0byBjb25zb2xlX3NldGNvbG9yc3RhdGUuCgkoc2VyaWFsX2hpZ2hsaWdodCk6IFJlbmFtZWQgdG8gc2VyaWFsX3NldGNvbG9yc3RhdGUuCgkoaGVyY3VsZXNfaGlnaGxpZ2h0KTogUmVuYW1lZCB0byBoZXJjdWxlc19zZXRjb2xvcnN0YXRlLgoJKiBzdGFnZTIvaGVyY3VsZXMuYyAoaGVyY19oaWdobGlnaHRfc3RhdGUpOiBSZW1vdmVkLgoJKGhlcmNfc3RhbmRhcmRfY29sb3IpOiBOZXcgdmFyaWFibGUuCgkoaGVyY19jb2xvcl9zdGF0ZSk6IExpa2V3aXNlLgoJKGhlcmNfaGlnaGxpZ2h0KTogUmVuYW1lZCB0byBoZXJjX3NldGNvbG9yc3RhdGUuCgkoaGVyY19zZXRjb2xvcnN0YXRlKTogQWRkZWQgc3dpdGNoIHRvIGhhbmRsZSBuZXcgc3RhdGVzLgoJKiBzdGFnZTIvY29uc29sZS5jIChjb25zb2xlX2hpZ2hsaWdodF9zdGF0ZSk6IFJlbW92ZWQuCgkoY29uc29sZV9zdGFuZGFyZF9jb2xvcik6IE5ldyB2YXJpYWJsZS4KCShjb25zb2xlX2NvbG9yX3N0YXRlKTogTGlrZXdpc2UuCgkoY29uc29sZV9oaWdobGlnaHQpOiBSZW5hbWVkIHRvIGNvbnNvbGVfc2V0Y29sb3JzdGF0ZS4KCShjb25zb2xlX3NldGNvbG9yc3RhdGUpOiBBZGRlZCBzd2l0Y2ggdG8gaGFuZGxlIG5ldyBzdGF0ZXMuCgkqIHN0YWdlMi9zZXJpYWwuYyAoc2VyaWFsX2hpZ2hsaWdodCk6IFJlbmFtZWQgdG8KCXNlcmlhbF9zZXRjb2xvcnN0YXRlLgoJKHNlcmlhbF9zZXRjb2xvcnN0YXRlKTogQWRqdXN0ZWQgJ2lmJyB0byBzdWl0IG5ldyBzdGF0ZXMuCgkqIGdydWIvYXNtc3R1Yi5jIChjb25zb2xlX2hpZ2hsaWdodCk6IFJlbmFtZWQgdG8KCWNvbnNvbGVfc2V0Y29sb3JzdGF0ZS4KCShjb25zb2xlX3NldGNvbG9yc3RhdGUpOiBBZGp1c3RlZCAnaWYnIHRvIHN1aXQgbmV3IHN0YXRlcy4KCSogc3RhZ2UyL3N0YWdlMi5jIChwcmludF9lbnRyeSk6IFNldCBjb2xvciBzdGF0ZXMgdXNpbmcgbmV3CglzdGF0ZXMuCgkocHJpbnRfYm9yZGVyKTogTGlrZXdpc2UuCgkqIHN0YWdlMi9zdGFnZTIuYyAocnVuX21lbnUpOiBSZXZlcnNlIGlmICghKSB0byBpZiAoKSBmb3IKCXVuaWZvcm1pdHR5LgoKMjAwMi0wNy0xMiAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogc3RhZ2UyL2Jvb3QuYyAobG9hZF9pbWFnZSk6IFJld3JpdGUgdGhlIExpbnV4IGJvb3Rpbmcgc3VwcG9ydAoJcmFkaWNhbGx5LiBOb3cgaXQgc2hvdWxkIHdvcmsgZXZlbiBvbiBhIG1hY2hpbmUgaGF2aW5nLCBzYXksCglvbmx5IDEyOEtCLCB0aGVvcmV0aWNhbGx5LiBPZiBjb3Vyc2UsIEdSVUIgaXRzZWxmIGRvZXNuJ3Qgd29yawoJb24gc3VjaCBhIHN5c3RlbSwgdGhvdWdoLgoJKGxvYWRfaW5pdHJkKTogSW5pdGlhbGl6ZSBMSCBiYXNlZCBvbiBDVVJfQUREUiwgYmVjYXVzZSB0aGUKCWxvY2F0aW9uIGJlY29tZXMgZHluYW1pYy4KCSogc3RhZ2UyL3NoYXJlZC5oIChMSU5VWF9NQVhfU0VUVVBfU0VDVFMpOiBTZXQgdG8gNjQuCgkoTElOVVhfSEVBUF9FTkRfT0ZGU0VUKTogU2V0IHRvICgweDkwMDAgLSAweDIwMCkuCgkoTElOVVhfU1RBR0lOR19BUkVBKTogUmVtb3ZlZC4KCShMSU5VWF9TRVRVUCk6IExpa2V3aXNlLgoJKExJTlVYX0tFUk5FTCk6IExpa2V3aXNlLgoJKExJTlVYX0tFUk5FTF9NQVhMRU4pOiBMaWtld2lzZS4KCShMSU5VWF9TRVRVUF9TRUcpOiBMaWtld2lzZS4KCShMSU5VWF9JTklUX1NFRyk6IExpa2V3aXNlLgoJKExJTlVYX1NFVFVQX1NUQUNLKTogU2V0IHRvIDB4OTAwMC4KCShMSU5VWF9CWklNQUdFX0FERFIpOiBOZXcgbWFjcm8uCgkoTElOVVhfWklNQUdFX0FERFIpOiBMaWtld2lzZS4KCShMSU5VWF9PTERfUkVBTF9NT0RFX0FERFIpOiBMaWtld2lzZS4KCShDTF9NWV9MT0NBVElPTik6IFJlbW92ZWQuCgkoQ0xfTVlfRU5EX0FERFIpOiBMaWtld2lzZS4KCShDTF9CQVNFX0FERFIpOiBMaWtld2lzZS4KCShDTF9NQUdJQyk6IFJlbmFtZWQgdG8gLi4uCgkoTElOVVhfQ0xfTUFHSUMpOiAuLi4gdGhpcy4KCShMSU5VWF9DTF9PRkZTRVQpOiBOZXcgbWFjcm8uCgkoTElOVVhfQ0xfRU5EX09GRlNFVCk6IExpa2V3aXNlLgoJKExJTlVYX1NFVFVQX01PVkVfU0laRSk6IExpa2V3aXNlLgoJKHN0cnVjdCBsaW51eF9rZXJuZWxfaGVhZGVyKTogQ2hhbmdlIHRoZSB0eXBlIG9mIHRoZSBtZW1iZXIKCSJjbWRfbGluZV9wdHIiIHRvIGNoYXIgKi4KCShsaW51eF9kYXRhX3RtcF9hZGRyKTogRGVjbGFyZWQuCgkobGludXhfZGF0YV9yZWFsX2FkZHIpOiBMaWtld2lzZS4KCSogc3RhZ2UyL2FzbS5TIFshU1RBR0UxXzVdIChsaW51eF9kYXRhX3RtcF9hZGRyKTogTmV3IHZhcmlhYmxlLgoJWyFTVEFHRTFfNV0gKGxpbnV4X2RhdGFfcmVhbF9hZGRyKTogTGlrZXdpc2UuCglbIVNUQUdFMV81XSAoYmlnX2xpbnV4X2Jvb3QpOiBDb3B5IHRoZSByZWFsIG1vZGUgcGFydCBmcm9tCglMSU5VWF9EQVRBX1RNUF9BRERSIHRvIExJTlVYX0RBVEFfUkVBTF9BRERSLgoJKiBncnViL2FzbXN0dWIuYyAobGludXhfZGF0YV90bXBfYWRkcik6IE5ldyB2YXJpYWJsZS4KCShsaW51eF9kYXRhX3JlYWxfYWRkcik6IExpa2V3aXNlLgoKMjAwMi0wNy0wOSAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoJCglGcm9tIE1hcmsgS2V0dGVuaXMgPGtldHRlbmlzQGNoZWxsby5ubD46CgkqIHN0YWdlMi9ib290LmMgKGxvYWRfaW1hZ2UpOiBSZWNvZ25pemUgbmV3ZXIgRnJlZUJTRCBrZXJuZWxzLgoJKiBzdGFnZTIvaTM4Ni1lbGYuaCAoRUlfT1NBQkkpOiBOZXcgbWFjcm8uCgkoRUlfQUJJVkVSU0lPTik6IExpa2V3aXNlLgoJKEVMRk9TQUJJX0ZSRUVCU0QpOiBMaWtld2lzZS4KCShFSV9QQUQpOiBTZXQgdG8gOS4KCjIwMDItMDctMDYgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIHN0YWdlMi9zaGFyZWQuaCAoYm9vdF9wYXJ0X29mZnNldCk6IFJlbW92ZWQuCgkKCSogc3RhZ2UyL2Rpc2tfaW8uYyAoc2V0X2Jvb3RkZXYpOiBDb3B5IHRoZSBwYXJ0aXRpb24gaW5mb3JtYXRpb24KCWhlcmUuIE5vdyB0aGlzIGZ1bmN0aW9uIGNhbiBjYWxsIHJhd3JlYWQsIHNvIGl0IGNhbiBmYWlsLgoJKGJvb3RfcGFydF9vZmZzZXQpOiBSZW1vdmVkLgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGJvb3RfZnVuYyk6IERvbid0IGNvcHkgdGhlIHBhcnRpdGlvbgoJaW5mb3JtYXRpb24gaGVyZS4KCShyZWFsX3Jvb3RfZnVuYyk6IENoZWNrIEVSUk5VTSBhZnRlciBjYWxsaW5nIHNldF9ib290ZGV2LgoKMjAwMi0wNy0wNCAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogZG9jcy9ncnViLnRleGkgKFJlcG9ydGluZyBidWdzKTogVXNlIHRoZSBncm91cCBuYW1lIChpLmUuCglncnViKSBpbnN0ZWFkIG9mIHRoZSBncm91cCBpZCAoaS5lLiA2OCkgZm9yIHRoZSBVUkwgb2YgdGhlIEJUUy4KCjIwMDItMDctMDMgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIHN0YWdlMi9zZXJpYWwuYyBbIUdSVUJfVVRJTF0gKGluYik6IEFkZGVkIGEgZGVsYXkgaW50byB0aGlzCglmdW5jdGlvbiBpdHNlbGYuCglbIUdSVUJfVVRJTF0gKG91dGIpOiBMaWtld2lzZS4KCVshR1JVQl9VVElMXSAoc2VyaWFsX2h3X3B1dCk6IEluY3JlYXNlIHRoZSB0aW1lb3V0IHZhbHVlLCBhbmQKCWRvbid0IGNhbGwgc2VyaWFsX2h3X2RlbGF5IGV4cGxpY2l0bHkgYW55IGxvbmdlci4KCShmaWxsX2lucHV0X2J1Zik6IEluY3JlYXNlIHRoZSBtYXhpbXVtIG51bWJlciBvZiByZXRyaWVzLCByZXNldAoJdGhlIGNvdW50ZXIgdG8gemVybyBhZnRlciBnZXR0aW5nIGEgdmFsaWQgY2hhcmFjdGVyLCBhbmQgZG9uJ3QKCWNhbGwgc2VyaWFsX2h3X2RlbGF5IGV4cGxpY2l0bHkgYW55IGxvbmdlci4KCjIwMDItMDctMDMgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIHN0YWdlMi9zZXJpYWwuYyBbIUdSVUJfVVRJTF0gKHNlcmlhbF9od19mZXRjaCk6IEZpeGVkIGEgdHlwby4KCVJlcG9ydGVkIGJ5IElsZ3VpeiBMYXR5cG92LgoKMjAwMi0wNy0wMSAgWW9zaGlub3JpIEsuIE9rdWppIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBNYWtlZmlsZS5hbSAoQVVUT01BS0VfT1BUSU9OUyk6IE5ldyB2YXJpYWJsZS4gU3BlY2lmeSB0aGUKCXJlcXVpcmVkIEF1dG9tYWtlIHZlcnNpb24gZXhwbGljaXRseS4KCQoyMDAyLTA2LTMwICBZb3NoaW5vcmkgSy4gT2t1amkgPG9rdWppQGVuYnVnLm9yZz4KCgkqIHN0YWdlMi9idWlsdGlucy5jIFtTVVBQT1JUX1NFUklBTCB8fCBTVVBQT1JUX0hFUkNVTEVTXQoJKHRlcm1pbmFsX2Z1bmMpOiBTZXQgQ1VSUkVOVF9URVJNIHRvIGVhY2ggb2Ygc2VsZWN0ZWQgdGVybWluYWxzCgliZWZvcmUgY2FsbGluZyBncnViX3ByaW50ZiwgYW5kIHJlc3RvcmUgQ1VSUkVOVF9URVJNIGFmdGVyIGl0LgoJUmVwb3J0ZWQgYnkgSWxndWl6IExhdHlwb3YuCglQcmVwZW5kIGEgY2FycmlhZ2UgcmV0dXJuIHRvIHRoZSBwcm9tcHRpbmcgbWVzc2FnZSwgYmVjYXVzZSBpdAoJaXMgdWdseSB0aGF0IHRoZSBzYW1lIG1lc3NhZ2VzIGZ1bGZpbGwgdGhlIHdob2xlIHNjcmVlbi4KCjIwMDItMDYtMzAgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIHN0YWdlMi9zZXJpYWwuYyBbIUdSVUJfVVRJTF0gKHNlcmlhbF9od19mZXRjaCk6IEZpeGVkIHRoZQoJY29uZGl0aW9uYWwgc3RhdGVtZW50LiBSZXBvcnRlZCBieSBJbGd1aXogTGF0eXBvdi4KCQoyMDAyLTA2LTI0ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBNQUlOVEVOQU5DRTogTmV3IGZpbGUuCgkKMjAwMi0wNi0xNSAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogc3RhZ2UyL2Rpc2tfaW8uYyBbU1VQUE9SVF9ORVRCT09UXSAoR1JVQik6IERlZmluZWQuCglbU1VQUE9SVF9ORVRCT09UXTogSW5jbHVkZSBldGhlcmJvb3QuaC4KCVshU1RBR0UxXzVdIChwcmludF9jb21wbGV0aW9ucykgW1NVUFBPUlRfTkVUQk9PVF06IFdoZW4KCWNvbXBsZXRpbmcgYSBkaXNrIG5hbWUsIGlmIE5FVFdPUktfUkVBRFkgaXMgdHJ1ZSwgYWRkICJuZCIgYXMgYQoJY29tcGxldGlvbi4KCQoyMDAyLTA2LTE1ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvZnN5c194ZnMuYyAobGUzMik6IERvbid0IHVzZSBic3dhcCwgYnV0IHVzZSB4Y2hnYiBhbmQKCXJvbGwsIGJlY2F1c2UgMzg2IGRvZXNuJ3QgaGF2ZSBic3dhcC4gUmVwb3J0ZWQgYnkgRnJvZGUgVmF0dmVkdAoJRmplbGQgPGZyb2RlZkBhY20ub3JnPi4KCQoyMDAyLTA2LTEyICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBuZXRib290L21haW4uYyAoaWZjb25maWcpOiBJZiBHVyBpcyBzcGVjaWZpZWQsIGNsZWFyIG91dCB0aGUKCUFSUCBlbnRyeSBmb3IgdGhlIGdhdGV3YXkuIElmIFNWUiBpcyBzcGVjaWZpZWQsIGNsZWFyIG91dCB0aGUKCUFSUCBlbnRyeSBmb3IgdGhlIHNlcnZlci4gUmVwb3J0ZWQgYnkgVXdlIERhbm5vd3NraQoJPHVkM0BpcmEudWthLmRlPi4KCQoyMDAyLTA2LTEyICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiB1dGlsL2dydWItbWQ1LWNyeXB0LmluOiBQcm9tcHQgdG8gcmV0eXBlIGEgcGFzc3dvcmQsIGFuZCBjaGVjawoJaWYgdGhlIHBhc3N3b3JkcyBtYXRjaGVzLiBTdWdnZXN0ZWQgYnkgTWF0dCBQZXJyeQoJPG1hdHRAcHJpbWVmYWN0b3IuY29tPi4KCUFsc28sIGRvbid0IHVzZSBQZXJsIGFueSBsb25nZXIsIGJlY2F1c2UgKkJTRCdzIHNoIGFuZCBHTlUKCXN1cHBvcnQgYGByZWFkIC1yJycsIGFuZCBHUlVCIGRvZXNuJ3Qgc3VwcG9ydCBhbnkgb3RoZXIKCW9wZXJhdGluZyBzeXN0ZW0gYW55d2F5LgoJCjIwMDItMDYtMTIgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCglUaGUgdGVybWluYWwgaGFuZGxpbmcgY29kZSBpcyByZXdyaXR0ZW4gcmFkaWNhbGx5LgoJCgkqIHN0YWdlMi9jb25zb2xlLmM6IE5ldyBmaWxlLgoJKiBzdGFnZTIvdGVybS5oOiBMaWtld2lzZS4KCQoJKiBzdGFnZTIvTWFrZWZpbGUuYW0gKG5vaW5zdF9IRUFERVJTKTogQWRkZWQgdGVybS5oLgoJKGxpYmdydWJfYV9TT1VSQ0VTKTogQWRkZWQgc2VyaWFsLmMuCgkocHJlX3N0YWdlMl9leGVjX1NPVVJDRVMpOiBBZGRlZCBjb25zb2xlLmMuCgoJKiBzdGFnZTIvYXNtLlMgKGNvbnNvbGVfcHV0Y2hhcik6IFJld3JpdHRlbiBmcm9tIHNjcmF0Y2guCglbIVNUQUdFMV81XSAodHJhbnNsYXRpb25fdGFibGUpOiBOZXcgdmFyaWFibGUuCglbIVNUQUdFMV81XSAodHJhbnNsYXRlX2tleWNvZGUpOiBOZXcgZnVuY3Rpb24uCglbIVNUQUdFMV81XSAoY29uc29sZV9nZXRrZXkpOiBDYWxsIHRyYW5zbGF0ZV9rZXljb2RlLgoJWyFTVEFHRTFfNV0gKGNvbnNvbGVfY2hlY2trZXkpOiBMaWtld2lzZS4KCVshU1RBR0UxXzVdIChub2N1cnNvcik6IFJlbmFtZWQgdG8gLi4uCglbIVNUQUdFMV81XSAoY29uc29sZV9ub2N1cnNvcik6IC4uLiB0aGlzLgoJWyFTVEFHRTFfNV0gKGNvbnNvbGVfc2V0X2F0dHJpYik6IFJlbW92ZWQuCgoJKiBzdGFnZTIvYnVpbHRpbnMuYzogSW5jbHVkZSB0ZXJtLmguCgkodGVybWluYWwpOiBSZW1vdmVkLgoJKG5vcm1hbF9jb2xvcik6IExpa2V3aXNlLgoJKGhpZ2hsaWdodF9jb2xvcik6IExpa2V3aXNlLgoJKGNhdF9mdW5jKTogRGlzcGxheSBhIHF1ZXN0aW9uIG1hcmsgd2hlbiBhIG5vbi1wcmludGFibGUKCWNoYXJhY3RlciB3YXMgcmVhZC4KCSh0ZXJtaW5hbF9mdW5jKTogUmV3cml0dGVuIGFsbW9zdCBmcm9tIHNjcmF0Y2guCgoJKiBzdGFnZTIvY2hhcl9pby5jOiBJbmNsdWRlIHRlcm0uaC4KCVshU1RBR0UxXzVdIChhdXRvX2ZpbGwpOiBSZW1vdmVkLgoJWyFTVEFHRTFfNV0gKHRlcm1fdGFibGUpOiBOZXcgdmFyaWFibGUuCglbIVNUQUdFMV81XSAoY3VycmVudF90ZXJtKTogTGlrZXdpc2UuCglbIVNUQUdFMV81XSAocmVhbF9nZXRfY21kbGluZSk6IE5ldyBmdW5jdGlvbi4gVGhlIGNvZGUgd2FzCglzdG9sZW4gZnJvbSB0aGUgcHJldmlvdXMgdmVyc2lvbiBvZiBnZXRfY21kbGluZS4KCVshU1RBR0UxXzVdIChnZXRfY21kbGluZSk6IFJld3JpdHRlbiBmcm9tIHNjcmF0Y2guCglbIVNUQUdFMV81XSAodHJhbnNsYXRlX2tleWNvZGUpOiBSZW1vdmVkLgoJWyFTVEFHRTFfNV0gKGdldGtleSk6IFJld3JpdHRlbiBmcm9tIHNjcmF0Y2guCglbIVNUQUdFMV81XSAoY2hlY2trZXkpOiBMaWtld2lzZS4KCShncnViX3B1dGNoYXIpOiBMaWtld2lzZS4KCVshU1RBR0UxXzVdIChnb3RveHkpOiBMaWtld2lzZS4KCVshU1RBR0UxXzVdIChnZXR4eSk6IExpa2V3aXNlLgoJWyFTVEFHRTFfNV0gKGNscyk6IExpa2V3aXNlLgoJWyFTVEFHRTFfNV0gKG5vY3Vyc29yKTogTmV3IGZ1bmN0aW9uLgoJW1NVUFBPUlRfU0VSSUFMXSAoc2VyaWFsX2dldHh5KTogUmVtb3ZlZC4KCVtTVVBQT1JUX1NFUklBTF0gKHNlcmlhbF9nb3RveHkpOiBMaWtld2lzZS4KCVtTVVBQT1JUX1NFUklBTF0gKHNlcmlhbF9jbHMpOiBMaWtld2lzZS4KCVtTVVBQT1JUX1NFUklBTF0gKHNlcmlhbF9nZXR4eSk6IExpa2V3aXNlLgoJWyFTVEFHRTFfNV0gKHNldF9hdHRyaWIpOiBMaWtld2lzZS4KCgkqIHN0YWdlMi9jbWRsaW5lLmMgKGluaXRfY21kbGluZSk6IFNldCBDT1VOVF9MSU5FUyB0byAtMS4KCgkqIHN0YWdlMi9jb21tb24uYyBbIVNUQUdFMV81XSAoZXJyX2xpc3QpOiBSZW1vdmVkCglFUlJfTkVFRF9TRVJJQUwgYW5kIGFkZGVkIEVSUl9ERVZfTkVFRF9JTklULgoKCSogc3RhZ2UyL2hlcmN1bGVzLmM6IFJld3JpdHRlbiBhbG1vc3QgZnJvbSBzY3JhdGNoLgoJKiBzdGFnZTIvaGVyY3VsZXMuaCAoaGVyY19wdXRjaGFyKTogUmVtb3ZlZC4KCShoZXJjX2Nscyk6IExpa2V3aXNlLgoJKGhlcmNfZ2V0eHkpOiBMaWtld2lzZS4KCShoZXJjX2dvdG94eSk6IExpa2V3aXNlLgoJKGhlcmNfc2V0X2F0dHJpYik6IExpa2V3aXNlLgoKCSogc3RhZ2UyL3NlcmlhbC5jOiBSZXdyaXR0ZW4gYWxtb3N0IGZyb20gc2NyYXRjaC4KCSogc3RhZ2UyL3NlcmlhbC5oOiBMaWtld2lzZS4KCgkqIHN0YWdlMi9zaGFyZWQuaCBbR1JVQl9VVElMXSAoRElTUF9VTCk6IFNldCB0byB0aGUgc2FtZSB2YWx1ZQoJYXMgVkdBJ3MuCglbR1JVQl9VVElMXSAoRElTUF9VUik6IExpa2V3aXNlLgoJW0dSVUJfVVRJTF0gKERJU1BfTEwpOiBMaWtld2lzZS4KCVtHUlVCX1VUSUxdIChESVNQX0xSKTogTGlrZXdpc2UuCglbR1JVQl9VVElMXSAoRElTUF9IT1JJWik6IExpa2V3aXNlLgoJW0dSVUJfVVRJTF0gKERJU1BfVkVSVCk6IExpa2V3aXNlLgoJW0dSVUJfVVRJTF0gKERJU1BfTEVGVCk6IExpa2V3aXNlLgoJW0dSVUJfVVRJTF0gKERJU1BfUklHSFQpOiBMaWtld2lzZS4KCVtHUlVCX1VUSUxdIChESVNQX1VQKTogTGlrZXdpc2UuCglbR1JVQl9VVElMXSAoRElTUF9ET1dOKTogTGlrZXdpc2UuCgkoZ3J1Yl9lcnJvcl90KTogUmVtb3ZlZCBFUlJfTkVFRF9TRVJJQUwuCglBZGRlZCBFUlJfREVWX05FRURfSU5JVC4KCShub3JtYWxfY29sb3IpOiBSZW1vdmVkLgoJKGhpZ2hsaWdodF9jb2xvcik6IExpa2V3aXNlLgoJKGNvbnNvbGVfY2xzKTogUmVtb3ZlZCwgYmVjYXVzZSB0aGlzIGlzIGRlY2xhcmVkIGluIHRlcm0uaC4KCShjb25zb2xlX2dldHh5KTogTGlrZXdpc2UuCgkoY29uc29sZV9nb3RveHkpOiBMaWtld2lzZS4KCShjb25zb2xlX3B1dGNoYXIpOiBMaWtld2lzZS4KCShjb25zb2xlX2dldGtleSk6IExpa2V3aXNlLgoJKGNvbnNvbGVfY2hlY2trZXkpOiBMaWtld2lzZS4KCShjb25zb2xlX3NldF9hdHRyaWIpOiBSZW1vdmVkLgoJKHNldF9hdHRyaWIpOiBMaWtld2lzZS4KCVtHUlVCX1VUSUxdIChub2N1cnNvcik6IERlY2xhcmVkLgoJKGF1dG9fZmlsbCk6IFJlbW92ZWQuCgkodGVybWluYWwpOiBMaWtld2lzZS4KCShURVJNSU5BTF9DT05TT0xFKTogTGlrZXdpc2UuCgkoVEVSTUlOQUxfU0VSSUFMKTogTGlrZXdpc2UuCgkoVEVSTUlOQUxfSEVSQ1VMRVMpOiBMaWtld2lzZS4KCShURVJNSU5BTF9EVU1CKTogTGlrZXdpc2UuCgkodHJhbnNsYXRlX2tleWNvZGUpOiBMaWtld2lzZS4KCgkqIHN0YWdlMi9zdGFnZTIuYzogSW5jbHVkZSB0ZXJtLmguCgkocHJpbnRfZW50cnkpOiBSZXdyaXR0ZW4gZnJvbSBzY3JhdGNoLgoJKHByaW50X2VudHJpZXMpOiBMaWtld2lzZS4KCShwcmludF9ib3JkZXIpOiBMaWtld2lzZS4KCShzZXRfbGluZSk6IFJlbW92ZWQuCgkoc2V0X2xpbmVfbm9ybWFsKTogTGlrZXdpc2UuCgkoc2V0X2xpbmVfaGlnaGxpZ2h0KTogTGlrZXdpc2UuCgkKCSogZ3J1Yi9NYWtlZmlsZS5hbSAoQU1fQ0ZMQUdTKTogQWRkZWQgLURTVVBQT1JUX0hFUkNVTEVTPTEuCgkKCSogZ3J1Yi9hc21zdHViLmM6IERvbid0IGluY2x1ZGUgaGVyY3VsZXMuaC4gSW5jbHVkZSB0ZXJtLmguCgkoY29uc29sZV9jdXJyZW50X2NvbG9yKTogTmV3IHZhcmlhYmxlLgoJKGNvbnNvbGVfdHJhbnNsYXRlX2tleSk6IE5ldyBmdW5jdGlvbi4KCShjb25zb2xlX2NoZWNra2V5KTogUmV3cml0dGVuIGZyb20gc2NyYXRjaC4KCShjb25zb2xlX2dldGtleSk6IExpa2V3aXNlLgoJKGNvbnNvbGVfcHV0Y2hhcik6IExpa2V3aXNlLgoJKGNvbnNvbGVfc2V0X2F0dHJpYik6IFJlbW92ZWQuCgkoY29uc29sZV9oaWdobGlnaHQpOiBOZXcgZnVuY3Rpb24uCgkoY29uc29sZV9zZXRjb2xvcik6IExpa2V3aXNlLgoJKGNvbnNvbGVfbm9jdXJzb3IpOiBMaWtld2lzZS4KCShzZXJpYWxfZ2V0a2V5KTogUmVtb3ZlZC4KCShzZXJpYWxfY2hlY2trZXkpOiBMaWtld2lzZS4KCShzZXJpYWxfcHV0Y2hhcik6IExpa2V3aXNlLgoJKHNlcmlhbF9leGlzdHMpOiBMaWtld2lzZS4KCShzZXJpYWxfZ2V0X3BvcnQpOiBMaWtld2lzZS4KCShzZXJpYWxfaW5pdCk6IExpa2V3aXNlLgoJKHNlcmlhbF9od19mZXRjaCk6IE5ldyBmdW5jdGlvbi4KCShzZXJpYWxfaHdfcHV0KTogTGlrZXdpc2UuCgkoc2VyaWFsX2h3X2RlbGF5KTogTGlrZXdpc2UuCgkoc2VyaWFsX2h3X2dldF9wb3J0KTogTGlrZXdpc2UuCgkoc2VyaWFsX2h3X2luaXQpOiBMaWtld2lzZS4KCShzZXRfc2VyaWFsX2RldmljZSk6IFJlbmFtZWQgdG8gLi4uCgkoc2VyaWFsX3NldF9kZXZpY2UpOiAuLi4gdGhpcy4KCShoZXJjX3B1dGNoYXIpOiBSZW5hbWVkIHRvIC4uLgoJKGhlcmN1bGVzX3B1dGNoYXIpOiAuLi4gdGhpcy4KCShoZXJjX2Nscyk6IFJlbmFtZWQgdG8gLi4uCgkoaGVyY3VsZXNfY2xzKTogLi4uIHRoaXMuCgkoaGVyY19nZXR4eSk6IFJlbmFtZWQgdG8gLi4uCgkoaGVyY3VsZXNfZ2V0eHkpOiAuLi4gdGhpcy4KCShoZXJjX2dvdG94eSk6IFJlbmFtZWQgdG8gLi4uCgkoaGVyY3VsZXNfZ290b3h5KTogLi4uIHRoaXMuCgkoaGVyY3VsZXNfaGlnaGxpZ2h0KTogTmV3IGZ1bmN0aW9uLgoJKGhlcmN1bGVzX3NldGNvbG9yKTogTGlrZXdpc2UuCgkoaGVyY3VsZXNfbm9jdXJzb3IpOiBMaWtld2lzZS4KCShoZXJjX3NldF9hdHRyaWIpOiBSZW1vdmVkLgoKCSogZ3J1Yi9tYWluLmM6IEluY2x1ZGUgdGVybS5oLgoJKG1haW4pOiBJZiBVU0VfQ1VSU0VTIGlzIGZhbHNlLCBzZXQgQ1VSUkVOVF9URVJNLT5GTEFHUyB0bwoJVEVSTV9OT19FRElUIHwgVEVSTV9EVU1CLiBURVJNSU5BTCBpcyBub3QgdXNlZCBhbnkgbG9uZ2VyLgoJCjIwMDItMDYtMDEgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIGRvY3MvZ3J1Yi50ZXhpIChGQVEpOiBSZW1vdmVkLiBTZWUgdGhlIEdOVSBHUlVCIEZBUSBvbiB0aGUgd2ViCglpbnN0ZWFkLgoJCjIwMDItMDUtMzEgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIGRvY3MvZ3J1Yi50ZXhpIChSZXBvcnRpbmcgYnVncyk6IFJlY29tbWVuZCB1c2luZyB0aGUgQlRTIG9uCglTYXZhbm5haCByYXRoZXIgdGhhbiB0aGUgbGlzdCBidWctZ3J1Yi4KCQoyMDAyLTA1LTI1ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoYm9vdF9mdW5jKTogTG9hZCB0aGUgYm9vdCBwYXJ0aXRpb24KCWluZm9ybWF0aW9uLCBvbmx5IGlmIHRoZSBhZGRyZXNzIG9mIHRoZSBib290IHBhcnRpdGlvbiBlbnRyeSBpcwoJc2V0IGFwcHJvcHJpYXRlbHkuCgkocmVhbF9yb290X2Z1bmMpOiBJZiBBVFRFTVBUX01PVU5UIGlzIGZhbHNlLCBjYWxsIG9wZW5fcGFydGl0aW9uCglhbmQgaWYgc3VjY2Vzc2Z1bCwgY2FsbCBzZXRfYm9vdGRldiwgdG8gc2V0IHRoZSBvZmZzZXQgb2YgdGhlCglib290IHBhcnRpdGlvbiBhbmQgdGhlIGFkZHJlc3Mgb2YgdGhlIGJvb3QgcGFldGl0aW9uIGVudHJ5LgoJSUYgQVRURU1QVF9NT1VOVCBpcyBmYWxzZSwgZG9uJ3Qgc2V0IEJPT1RERVYuIFRoZSBCU0QgZXZpbCBoYWNrCglpcyB1c2VsZXNzIHdpdGggdGhlIGNvbW1hbmQgInJvb3Rub3ZlcmlmeSIgYW55d2F5LgoJKiBzdGFnZTIvZGlza19pby5jIChib290X3BhcnRfYWRkcik6IEluaXRpYWxpemVkIHdpdGggemVybwoJZXhwbGljaXRseSwgdG8gZW1waGFzaXplIHRoYXQgaXQgaXMgaW52YWxpZC4KCQoyMDAyLTA1LTI0ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAocmVhbF9yb290X2Z1bmMpOiBOZXcgZnVuY3Rpb24uCgkocm9vdF9mdW5jKTogSnVzdCBjYWxsIHJlYWxfcm9vdF9mdW5jLgoJKHJvb3Rub3ZlcmlmeV9mdW5jKTogTGlrZXdpc2UuCgkKMjAwMi0wNS0yMyAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogY29uZmlndXJlLmluIChBTV9JTklUX0FVVE9NQUtFKTogQ2hhbmdlZCB0aGUgdmVyc2lvbiBudW1iZXIgdG8KCTAuOTMuCgkKMjAwMi0wNS0yMyAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCURlZmluZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGJvb3QgbG9hZGVyIHdoZW4gdGhlIGxvYWQgZW5kIGFkZHJlc3MKCWFuZCB0aGUgYnNzIGVuZCBhZGRyZXNzIGFyZSB6ZXJvIGluIHRoZSBNdWx0aWJvb3QgU3BlY2lmaWNhdGlvbiwKCWFuZCBhZGQgdGhlIHN1cHBvcnQgaW50byBHUlVCLiBJJ3ZlIG1vZGlmaWVkIGEgcGF0Y2ggZnJvbSBZdXJpCglaYXBvcm9nZXRzIDx5dXJpekB1a3IubmV0Pi4KCQoJKiBzdGFnZTIvYm9vdC5jIChsb2FkX2ltYWdlKTogSW4gdGhlIGNhc2Ugb2YgTXVsdGlib290IGEub3V0CglrbHVkZ2UsIHNldCB0aGUgbG9hZCBlbmQgYWRkcmVzcyB0byB0aGUgbG9hZCBhZGRyZXNzIHBsdXMgdGhlCglzaXplIG9mIHRoZSBPUyBpbWFnZSBmaWxlLCBpZiBpdCBpcyB6ZXJvLiBTaW1pbGFybHksIHNldCB0aGUgYnNzCgllbmQgYWRkcmVzcyB0byB0aGUgbG9hZCBlbmQgYWRkcmVzcywgaWYgaXQgaXMgemVyby4KCQoJKiB1dGlsL21iY2hrLmMgKGNoZWNrX211bHRpYm9vdCk6IERvbid0IGNoZWNrIGlmIHRoZSBsb2FkCglhZGRyZXNzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbG9hZCBlbmQgYWRkcmVzcywgaWYgdGhlCglsb2FkIGVuZCBhZGRyZXNzIGlzIHplcm8uIERvbid0IGNoZWNrIGlmIHRoZSBsb2FkIGVuZCBhZGRyZXNzIGlzCglncmVhdGVyIHRoYW4gdGhlIGJzcyBlbmQgYWRkcmVzcywgaWYgdGhlIGJzcyBlbmQgYWRkcmVzcyBpcwoJemVyby4gQW5kLCBkb24ndCBjaGVjayBpZiB0aGUgbG9hZCBlbmQgYWRkcmVzcyBpcyBsZXNzIHRoYW4gb3IKCWVxdWFsIHRvIHRoZSBlbnRyeSBhZGRyZXNzLCBpZiB0aGUgbG9hZCBlbmQgYWRkcmVzcyBpcyB6ZXJvLgoJCgkqIGRvY3MvbXVsdGlib290LnRleGkgKFRoZSBhZGRyZXNzIGZpZWxkcyBvZiBNdWx0aWJvb3QgaGVhZGVyKToKCUFkZGVkIGRlc2NyaXB0aW9ucyBhYm91dCB0aGUgYmVoYXZpb3Igb2YgdGhlIGJvb3QgbG9hZGVyIHdoZW4KCUxPQURfRU5EX0FERFIgaXMgemVybyBhbmQgQlNTX0VORF9BRERSIGlzIHplcm8uCgkKMjAwMi0wNS0yMiAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGJvb3RfZnVuYyk6IElmIERFQlVHIGlzIHRydWUsIHByaW50CglCT09UX0RSSVZFIGFuZCBCT09UX1BBUlRfT0ZGU0VULgoJRG9uJ3Qgc2V0IEVSUk5VTSBhZnRlciByYXdyZWFkIGZhaWxlZCwgYmVjYXVzZSByYXdyZWFkIHNob3VsZAoJc2V0IEVSUk5VTSBpdHNlbGYuCgkKMjAwMi0wNS0yMCAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogbGliL2RldmljZS5jIChyZWFkX2RldmljZV9tYXApOiBTaG93IGFuIGVycm9yIG1lc3NhZ2UgYW5kIGV4aXQKCWFibm9ybWFsbHksIGlmIE1BUFtEUklWRV0gaGFzIGFscmVhZHkgYmVlbiBmaWxsZWQuCgkqIHV0aWwvZ3J1Yi1pbnN0YWxsLmluOiBJZiB0aGVyZSBpcyBhbnkgZHVsaWNhdGVkIGVudHJ5LCBwcmludAoJYW4gZXJyb3IgbWVzc2FnZSBhbmQgZXhpdCBhYm5vcm1hbGx5LgoJCjIwMDItMDUtMjAgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIGxpYi9kZXZpY2UuYzogRG9uJ3QgaW5jbHVkZSBsaW51eC9oZHJlZy5oLCBsaW51eC9tYWpvci5oLAoJb3IgbGludXgva2Rldl90LmguCglbX19saW51eF9fXSAoSERJT19HRVRHRU8pOiBEZWZpbmVkLgoJW19fbGludXhfX10gKGhkX2dlb21ldHJ5KTogTGlrZXdpc2UuCglbX19saW51eF9fXSAoRkxPUFBZX01BSk9SKTogTGlrZXdpc2UuCglbX19saW51eF9fXSAoTUlOT1JCSVRTKTogTGlrZXdpc2UuCglbX19saW51eF9fXSAoTUFKT1IpOiBMaWtld2lzZS4KCQoyMDAyLTA1LTA4ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBuZXRib290L2ZzeXNfdGZ0cC5jICh0ZnRwX3JlYWQpOiBEb24ndCBjYWxsIGJ1Zl9maWxsIHVubGVzcwoJU0laRSBpcyBwb3NpdGl2ZS4KCQoyMDAyLTA1LTA4ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBuZXRib290L2V0aGVyYm9vdC5oIChFVEhfTUFYX01UVSk6IEJlY2F1c2Ugc29tZSBESENQL0JPT1RQCglzZXJ2ZXJzIGRvbid0IHRyZWF0IHRoZSBtYXhpbXVtIGxlbmd0aCB0aGUgc2FtZSBhcyBFdGhlcmJvb3QsCglzdWJ0cmFjdCB0aGUgc2l6ZSBvZiBhbiBJUCBoZWFkZXIgYW5kIHRoYXQgb2YgYW4gVURQIGhlYWRlci4KCQoyMDAyLTA0LTMwICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJRnJvbSBKZWFuLUphY3F1ZXMgTWljaGVsIDxqam1pY2hlbEBsaW5ib3guY29tPjoKCSogc3RhZ2UyL2Jvb3QuYyAobG9hZF9pbWFnZSk6IEZvciBMaW51eCwgY2hlY2sgaWYgREFUQV9MRU4gaXMKCWdyZWF0ZXIgdGhhbiBNVUxUSUJPT1RfU0VBUkNILiBJZiB0aGF0J3MgdHJ1ZSwgcmVhZCB0aGUgcmVzdAoJYWZ0ZXIgY29weWluZyBkYXRhIGFscmVhZHkgcmVhZCBpbiBCVUZGRVIuCgkKMjAwMi0wNC0zMCAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogc3RhZ2UyL2Jvb3QuYyAobG9hZF9pbWFnZSk6IEZvciBMaW51eCwgZG9uJ3QgY2hlY2sgaWYgdGhlCglsZW5ndGggb2YgcHJvdGVjdGVkIG1vZGUgY29kZSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlCglleHBlY3RlZCBsZW5ndGggbWludXMgMTYuIEluc3RlYWQsIGp1c3QgY2hlY2sgaWYgbm8gZXJyb3IKCW9jY3VycmVkLiBUaGF0IHdhcyBwcm9ibGVtYXRpYywgYmVjYXVzZSBtZW1kaXNrIGhhcyBubyBwcm90ZWN0ZWQKCW1vZGUgY29kZS4gQWxzbywgSSBkb24ndCBzZWUgd2hhdCB0aGUgbWFnaWMgbnVtYmVyIDE2IHdhcyBmb3IuCgkKMjAwMi0wNC0yOSAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgW1NVUFBPUlRfU0VSSUFMXSAodGVybWluYWxfZnVuYyk6IEFkZGVkIGEKCW5ldyBvcHRpb24gYGAtLXNpbGVudCcnLiBUaGlzIHN1cHByZXNzZXMgbWVzc2FnZXMsIGlmIHNwZWNpZmllZC4KCQoyMDAyLTA0LTI5ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBjb25maWcuZ3Vlc3M6IE5ldyB1cHN0cmVhbSB2ZXJzaW9uLgoJKiBjb25maWcuc3ViOiBMaWtld2lzZS4KCQoyMDAyLTA0LTIwICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBuZXRib290L2NvbmZpZy5jIChQQ0lfTklDKSBbSU5DTFVERV9EQVZJQ09NXTogRml4IHR5cG9zLgoJUmVwb3J0ZWQgYnkgSnVsaWVuIFBlcnJvdCA8anVsaWVuLnBlcnJvdEBpaWUuY25hbS5mcj4uCgkKMjAwMi0wNC0xNyAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgW1NVUFBPUlRfU0VSSUFMXSAodGVybWluYWxfZnVuYyk6IFNldAoJQ09VTlRfTElORVMgdG8gLTEsIHRvIGRpc2FibGUgdGhlIHBhZ2VyLgoJCjIwMDItMDQtMTYgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIGRvY3MvZ3J1Yi50ZXhpIChPYnRhaW5pbmcgYW5kIEJ1aWxkaW5nIEdSVUIpOiBVcGRhdGUgdGhlIGxpbmsKCXRvIHRoZSBiaW51dGlscyBzaXRlLgoKMjAwMi0wNC0wNiAgUGF2ZWwgUm9za2luICA8cHJvc2tpQGdudS5vcmc+CgoJKiB1dGlsL2dydWItaW5zdGFsbC5pbjogRml4IGhhcmRjb2RlZCAvZGV2L2hkYTEuCgoyMDAyLTA0LTA2ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyBbR1JVQl9VVElMXSAoZHVtcF9mdW5jKTogTmV3IGZ1bmN0aW9uLgoJW0dSVUJfVVRJTF0gKGJ1aWx0aW5fZHVtcCk6IE5ldyB2YXJpYWJsZS4KCShidWlsdGluX3RhYmxlKSBbR1JVQl9VVElMXTogQWRkZWQgYSBwb2ludGVyIHRvIEJVSUxUSU5fRFVNUC4KCSogdXRpbC9ncnViLWluc3RhbGwuaW46IE1ha2Ugc3VyZSB0aGF0IEdSVUIgcmVhZHMgdGhlIHNhbWUKCWltYWdlcyBhcyB0aGUgaG9zdCBvcGVyYXRpbmcgc3lzdGVtIGJ5IGNvbXBhcmluZyB0aGUgcmVzdWx0IG9mCglydW5uaW5nIHRoZSBjb21tYW5kICJkdW1wIiB3aXRoIHRoZSBjb250ZW50cyBvZiB0aGUgT1MgZmlsZS4KCQoyMDAyLTA0LTA0ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoc2V0dXBfZnVuYyk6IERvbid0IGVtYmVkIGEgZHJpdmUgbnVtYmVyLCBpZgoJdW5uZWNlc3NhcnkuCgkKMjAwMi0wMy0yOSAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogZG9jcy9ncnViLnRleGkgKEdlbmVyYWwgY29tbWFuZHMpOiBBZGRlZCBgYHBhZ2VyJycgaW50byB0aGUKCW1lbnUuCgkocGFnZXIpOiBOZXcgc3Vic2VjdGlvbi4KCSh0ZXJtaW5hbCk6IEFkZGVkIGEgZGVzY3JpcHRpb24gYWJvdXQgdGhlIG9wdGlvbgoJYGAtLWxpbmVzPUxJTkVTJycuCgoJKiBjb25maWd1cmUuaW4gKEFDX0lOSVRfQVVUT01BS0UpOiBTZXQgdGhlIHZlcnNpb24gbnVtYmVyIHRvCgkwLjkyLgoJCjIwMDItMDMtMjYgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIG5ldGJvb3QvZWVwcm8xMDAuYyAoZWVwcm8xMDBfcHJvYmUpOiBJbmNyZWFzZSB0aGUgZGVsYXkgYXQgdGhlCglpbml0aWFsaXphdGlvbi4KCQoyMDAyLTAzLTI2ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvYm9vdC5jIChsaW51eF9tZW1fc2l6ZSk6IE5ldyB2YXJpYWJsZS4KCShsb2FkX2ltYWdlKTogQ2hlY2sgYSBtZW09IG9wdGlvbiBhbmQgc2V0IExJTlVYX01FTV9TSVpFIHRvIHRoZQoJc3BlY2lmaWVkIG1lbW9yeSBzaXplLCBpZiBhbnkuIE90aGVyd2lzZSwgdG8gemVyby4gV2hlbiBhbgoJb3ZlcmZsb3cgaXMgZGV0ZWN0ZWQsIHVzZSBMSU5VWF9JTklUUkRfTUFYX0FERFJFU1MgaW5zdGVhZC4KCShsb2FkX2luaXRyZCk6IElmIExJTlVYX01FTV9TSVpFIGlzIG5vbi16ZXJvLCB1c2UgaXQgaW5zdGVhZCBvZgoJdGhlIGFjdHVhbCBtZW1vcnkgc2l6ZS4KCSogc3RhZ2UyL2NoYXJfaW8uYyAoc2FmZV9wYXJzZV9tYXhpbnQpOiBVc2UgRVJSX05VTUJFUl9PVkVSRkxPVwoJaW5zdGVhZCBvZiBFUlJfTlVNQkVSX1BBUlNJTkcsIHdoZW4gYW4gb3ZlcmZsb3cgb2NjdXJzLgoJKiBzdGFnZTIvY29tbW9uLmMgWyFTVEFHRTFfNV0gKGVycl9saXN0KTogQWRkZWQKCUVSUl9OVU1CRVJfT1ZFUkZMT1cuCgkqIHN0YWdlMi9zaGFyZWQuaCAoRVJSX05VTUJFUl9PVkVSRkxPVyk6IE5ldyBjb25zdGFudC4KCQoyMDAyLTAzLTI0ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvc3RhZ2UyLmMgKHJ1bl9tZW51KTogQ2FsbCBjbHMgb3V0c2lkZSB0aGUgbG9vcCB0byBydW4KCXNjcmlwdHMuCgkqIHN0YWdlMi9jbWRsaW5lLmMgKHJ1bl9zY3JpcHQpOiBQcm9tcHQgYSB1c2VyJ3MgaW50ZXJ2ZW50aW9uLAoJb25seSB3aGVuIEZBTExCQUNLX0VOVFJZIGlzIG5lZ2F0aXZlLgoJCjIwMDItMDItMTEgIFBhdmVsIFJvc2tpbiAgPHByb3NraUBnbnUub3JnPgoKCSogdXRpbC9ncnViLWluc3RhbGwuaW4gKGZpbmRfZGV2aWNlKTogTmV3IGZ1bmN0aW9uIC0gZmluZCBibG9jawoJZGV2aWNlIGZvciBnaXZlbiBmaWxlIG9yIGRpcmVjdG9yeS4gIFJlc29sdmUgc3ltbGlua3MgdG8gZml4Cglwcm9ibGVtIG9uIExpbnV4IHdpdGggZGV2ZnMgYW5kIG9sZCBkZXZpY2UgbmFtZXMgaW4gL2V0Yy9mc3RhYi4KCVVzZSBmaW5kX2RldmljZSgpIGZvciByb290X2RldmljZSwgYm9vdGRpcl9kZXZpY2UgYW5kCglncnViZGlyX2RldmljZS4KCjIwMDItMDItMDggIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIGdydWIvbWFpbi5jIChPUFRfTk9fUEFHRVIpOiBOZXcgbWFjcm8uCgkobG9uZ29wdHMpOiBBZGRlZCBhbiBlbnRyeSBmb3IgIi0tbm8tcGFnZXIiLgoJKHVzYWdlKTogQWRkZWQgYSBkZXNjcmlwdGlvbiBhYm91dCAiLS1uby1wYWdlciIuCgkobWFpbik6IEluIGNhc2Ugb2YgT1BUX05PX1BBR0VSLCBzZXQgVVNFX1BBR0VSIHRvIHplcm8uIFRoZSBzYW1lCgl0aGluZyBpcyBkb25lIHdpdGggT1BUX0JBVENILCBiZWNhdXNlIHRoZSBwYWdlciBpcyBqdXN0IGhhcm1mdWwKCWluIGJhdGNoIG1vZGUuCgkKMjAwMi0wMi0wOCAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGhlbHBfZnVuYyk6IFNob3cgYWxsIHRoZSBjb21tYW5kcyBydW5uYWJsZQoJd2l0aCB0aGUgY29tbWFuZC1saW5lIGludGVyZmFjZSwgaWYgIi0tYWxsIiBpcyBzcGVjaWZpZWQuCgkKMjAwMi0wMi0wOCAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCUFuIGludGVybmFsIHBhZ2VyIGlzIGltcGxlbWVudGVkLgoJCgkqIHN0YWdlMi9idWlsdGlucy5jIChwYWdlcl9mdW5jKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWx0aW5fcGFnZXIpOiBOZXcgdmFyaWFibGUuCgkodGVybWluYWxfZnVuYyk6IE5ldyBvcHRpb24sICItLWxpbmVzPUxJTkVTIiBpcyBhZGRlZC4gSWYgdGhpcwoJb3B0aW9uIGlzIHNwZWNpZmllZCwgc2V0IE1BWF9MSU5FUyB0byB0aGUgdmFsdWUuIE90aGVyd2lzZSwgc2V0CglNQVhfTElORVMgdG8gMjQuCgkodmJlcHJvYmVfZnVuYyk6IFJlbW92ZSB0aGUgcGFnZXIgY29kZSBzcGVjaWZpYyB0byB0aGlzCglmdW5jdGlvbi4KCShidWlsdGluX3RhYmxlKTogQWRkZWQgYSBwb2ludGVyIHRvIEJVSUxUSU5fUEFHRVIuCgkqIHN0YWdlMi9jaGFyX2lvLmMgKG1heF9saW5lcykgWyFTVEFHRTFfNV06IE5ldyB2YXJpYWJsZS4KCShjb3VudF9saW5lcykgWyFTVEFHRTFfNV06IExpa2V3aXNlLgoJKHVzZV9wYWdlcikgWyFTVEFHRTFfNV06IExpa2V3aXNlLgoJKGdydWJfcHV0Y2hhcikgWyFTVEFHRTFfNV06IGlmIEMgaXMgYSBuZXdsaW5lIGFuZCBDT1VOVF9MSU5FUyBpcwoJbm90IC0xLCBjb3VudCB1cCB0aGUgbnVtYmVyIG9mIGxpbmVzLiBJZiBpdCBleGNlZWRzIHRoZSBtYXhpbXVtCgludW1iZXIgb2YgbGluZXMgbWludXMgMiwgc2hvdyBhIG1lc3NhZ2UgYW5kIHdhaXQgZm9yIGlucHV0IG9mCglyZXR1cm4ga2V5LiAibWludXMgMiIgaXMgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIG1lc3NhZ2UKCXByaW50ZWQgYnkgdGhpcyBpbnRlcm5hbCBwYWdlci4KCSogc3RhZ2UyL2NtZGxpbmUuYyAoZW50ZXJfY21kbGluZSk6IElmIFVTRV9QQUdFUiBpcyB0cnVlLCBzZXQKCUNPVU5UX0xJTkVTIHRvIHplcm8sIGJlZm9yZSBydW5uaW5nIGEgY29tbWFuZCwgYW5kIHJlc2V0CglDT1VOVF9MSU5FUyB0byAtMSBhZnRlciB0aGF0LgoJKiBzdGFnZTIvc2hhcmVkLmggKG1heF9saW5lcykgWyFTVEFHRTFfNV06IERlY2xhcmVkLgoJKGNvdW50X2xpbmVzKSBbIVNUQUdFMV81XTogTGlrZXdpc2UuCgkodXNlX3BhZ2VyKSBbIVNUQUdFMV81XTogTGlrZXdpc2UuCgkKMjAwMi0wMi0wOCAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogc3RhZ2UyL2ZzeXNfamZzLmMgKGpmc19yZWFkKSBbU1RBR0UxXzVdOiBTZXQgYW5kIHJlc2V0CglESVNLX1JFQURfRlVOQyBldmVuIGluIFN0YWdlIDEuNS4KCSogc3RhZ2UyL2ZzeXNfeGZzLmMgKHhmc19yZWFkKSBbU1RBR0UxXzVdOiBMaWtld2lzZS4KCgkqIHN0YWdlMi9zdGFnZTFfNS5jIChzYXZlZF9zZWN0b3IpOiBJbml0aWFsaXplZCB3aXRoIC0xLgoJKGNtYWluKTogQ2hlY2sgaWYgU0FWRURfU0VDVE9SIHdhcyBzZXQgYXBwcm9wcmlhdGVseSBhZnRlcgoJcmVhZGluZyB0aGUgc2Vjb25kIHNlY3RvciBvZiBTdGFnZSAyLiBJZiBTQVZFRF9TRUNUT1IgaXMgbm90CglzZXQgKGkuZS4gaXQgaXMgZXF1YWwgdG8gLTEpLCBwcmludCBhbiBlcnJvciBhbmQgc3RvcC4KCQoyMDAyLTAyLTA1ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoc2V0dXBfZnVuYyk6IEFkZCBhIFZTVGEgZnMgZW50cnkgaW50bwoJU1RBR0UxXzVfTUFQLgoJCjIwMDItMDItMDUgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIHN0YWdlMi9zaGFyZWQuaCAoQlVJTFRJTl9IRUxQX0xJU1QpOiBOZXcgbWFjcm8uIFVzZWQgZm9yCgljb21tYW5kcyB3aG9zZSBoZWxwIG1lc3NhZ2VzIGFyZSBsaXN0ZWQgd2hlbiBubyBhcmd1bWVudCBpcwoJc3BlY2lmaWVkIHRvIHRoZSBjb21tYW5kICJoZWxwIi4KCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGJ1aWx0aW5fYmxvY2tsaXN0KTogQWRkZWQgdGhlIGF0dHJpYnV0ZQoJQlVJTFRJTl9IRUxQX0xJU1QuCgkoYnVpbHRpbl9ib290KTogTGlrZXdpc2UuCgkoYnVpbHRpbl9ib290cCk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fY2F0KTogTGlrZXdpc2UuCgkoYnVpbHRpbl9jaGFpbmxvYWRlcik6IExpa2V3aXNlLgoJKGJ1aWx0aW5fY29sb3IpOiBMaWtld2lzZS4KCShidWlsdGluX2NvbmZpZ2ZpbGUpOiBMaWtld2lzZS4KCShidWlsdGluX2RldmljZSk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fZGhjcCk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fZGlzcGxheWFwbSk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fZGlzcGxheW1lbSk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fZmluZCk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fZ2VvbWV0cnkpOiBMaWtld2lzZS4KCShidWlsdGluX2hhbHQpOiBMaWtld2lzZS4KCShidWlsdGluX2hlbHApOiBMaWtld2lzZS4KCShidWlsdGluX2hpZGUpOiBMaWtld2lzZS4KCShidWlsdGluX2lmY29uZmlnKTogTGlrZXdpc2UuCgkoYnVpbHRpbl9pbml0cmQpOiBMaWtld2lzZS4KCShidWlsdGluX2tlcm5lbCk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fbWFrZWFjdGl2ZSk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fbWFwKTogTGlrZXdpc2UuCgkoYnVpbHRpbl9tZDVjcnlwdCk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fbW9kdWxlKTogTGlrZXdpc2UuCgkoYnVpbHRpbl9tb2R1bGVub3VuemlwKTogTGlrZXdpc2UuCgkoYnVpbHRpbl9wYXJ0bmV3KTogTGlrZXdpc2UuCgkoYnVpbHRpbl9wYXJ0dHlwZSk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fcXVpdCk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fcmFycCk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fcmVib290KTogTGlrZXdpc2UuCgkoYnVpbHRpbl9yb290KTogTGlrZXdpc2UuCgkoYnVpbHRpbl9yb290bm92ZXJpZnkpOiBMaWtld2lzZS4KCShidWlsdGluX3NlcmlhbCk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fc2V0a2V5KTogTGlrZXdpc2UuCgkoYnVpbHRpbl9zZXR1cCk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fdGVybWluYWwpOiBMaWtld2lzZS4KCShidWlsdGluX3Rlc3R2YmUpOiBMaWtld2lzZS4KCShidWlsdGluX3RmdHBzZXJ2ZXIpOiBMaWtld2lzZS4KCShidWlsdGluX3VuaGlkZSk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fdXBwZXJtZW0pOiBMaWtld2lzZS4KCShidWlsdGluX3ZiZXByb2JlKTogTGlrZXdpc2UuCgoJKGhlbHBfZnVuYyk6IFdoZW4gbm8gYXJndW1lbnQgaXMgc3BlY2lmaWVkLCBpZiB0aGUgbGFzdCBlbnRyeQoJd2FzIGF0IHRoZSBsZWZ0IGNvbHVtbiwgcHJpbnQgYW4gZXh0cmEgbmV3bGluZS4KCQoyMDAyLTAyLTA1ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBlbmJ1Zy5vcmc+CgoJKiBzdGFnZTIvc2hhcmVkLmggKEJVSUxUSU5fSElEREVOKTogUmVuYW1lZCB0byAuLi4KCShCVUlMVElOX05PX0VDSE8pOiAuLi4gdGhpcy4gVGhlIG9sZCBuYW1lIHdhcyB0b28gZGlmZmljdWx0IHRvCglzZWUgX3doYXRfIHdhcyBoaWRkZW4uCgkKMjAwMi0wMi0wNSAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZW5idWcub3JnPgoKCSogbmV0Ym9vdC9taXNjLmMgKHR3aWRkbGUpOiBHbyBiYWNrIHRvIHRoZSBiYXIgcHJvZ3Jlc3MsIGNvcGllZAoJZnJvbSBldGhlcmJvb3QtNS4wLjUvc3JjL21pc2MuYy4gRXhlY3V0ZSB0aGUgY29kZSBvbmx5IGlmIERFQlVHCglpcyB0cnVlLgoJCjIwMDItMDItMDUgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGVuYnVnLm9yZz4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChkaXNwbGF5bWVtX2Z1bmMpOiBVc2UgaGV4IGRpZ2l0cyB0byBkaXNwbGF5Cglmb3IgY29uc2lzdGVuY3kuCgkKMjAwMi0wMi0wNCAgSmFzb24gVGhvbWFzICA8amFzb25AdG9waWMuY29tLmFoPgoKCUZyb20gRGVuaXMgS2l0em1hbiAgPGRraXR6bWFuQGJsdWUud2VlZy51aW93YS5lZHU+OgoJKiBzdGFnZTIvTWFrZWZpbGUuYW0gKGxpYmdydWJfYV9DRkxBR1MpOiBGaXhlZCBhIHR5cG8uCglGU1lTX1hGUywgVVNFX01ENV9QQVNTV09SRFMsIFNVUFBPUlRfU0VSSUFMLCBhbmQKCVNVUFBPUlRfSEVSQ1VMRVMgZGlkIG5vdCBnZXQgZGVmaW5lZC4KCjIwMDItMDEtMjAgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGdudS5vcmc+CgoJKiB1dGlsL2dydWItaW1hZ2UuaW46IENoZWNrIHN0YWdlMiBpbnN0ZWFkIG9mIHN0YWdlMi5jIHRvCglkZXRlcm1pbmUgd2hlcmUgdGhlIHNjcmlwdCBpcyBpbnZva2VkLCBiZWNhdXNlIHNyY2RpciBtYXkgbm90CgliZSB1c2VkIGZvciB0aGUgY29tcGlsYXRpb24uCgkKMjAwMi0wMS0yMCAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZ251Lm9yZz4KCgkqIGdydWIvYXNtc3R1Yi5jIChjb25zb2xlX3B1dGNoYXIpOiBXaGVuIG5vdCB1c2luZyBjdXJzZXMsCglpZ25vcmUgYSBjYXJyaWFnZSByZXR1cm4sIGJlY2F1c2UgYSBuZXdsaW5lIGluIFVuaXggaXMgb25seSBhCglsaW5lIGZlZWQuCgkKMjAwMi0wMS0xOCAgS2xhdXMgUmVpY2hsICA8S2xhdXMuUmVpY2hsQGFsY2F0ZWwuYXQ+CgoJKiBzdGFnZTIvZnN5c19taW5peC5jIChtaW5peF9kaXIpOiBGaXhlZCBidWcgZ2V0dGluZyBmaWxlbmFtZXMKCXdpdGggTUFYTkFNRUxFTiByaWdodC4KCgkqIHN0YWdlMi9jaGFyX2lvLmMgKGdldF9jbWRsaW5lLCBjbF9yZWZyZXNoKTogSWYgVEVSTUlOQUxfRFVNQgoJc2VjdGlvbiBpcyBhbHdheXMgMC4KCUxpbmUgaXMgb25seSBjbGVhcmVkIGlmICFURVJNSU5BTF9EVU1CLgoKCSogZ3J1Yi9tYWluLmMgKHVzZV9jdXJzZXMpOiBJbml0aWFsaXplIHRvIDAgaWYgIUhBVkVfTElCQ1VSU0VTCgkobWFpbik6IENoZWNrIGZvciBjdXJzZXMgdXNlIGFuZCBzZXQgdGVybWluYWwgdG8gZHVtYiBpZiB3ZQoJZG9uJ3QgdXNlIGl0IChoZWxwcyBmb3IgLS1iYXRjaCBhbmQgdmFyaWFudHMgb2Ygbm9uLWN1cnNlcwoJc2V0dXApLgoKMjAwMi0wMS0xNSAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoQU1fSU5JVF9BVVRPTUFLRSk6IFRoZSB2ZXJzaW9uIG51bWJlciBpcwoJdXBncmFkZWQgdG8gMC45MS4KCQoyMDAyLTAxLTE1ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBnbnUub3JnPgoKCSogZG9jcy9ncnViLnRleGkgKFByZXNldCBNZW51KTogTmV3IGNoYXB0ZXIuCgkKMjAwMi0wMS0xNSAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZ251Lm9yZz4KCgkqIGRvY3MvZ3J1Yi50ZXhpOiBBZGRlZCBzb21lIHRleHQgYWJvdXQgSkZTIGFuZCBYRlMuCgkKMjAwMi0wMS0wOCAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZ251Lm9yZz4KCgkqIGdydWIvbWFpbi5jICh1c2VfcHJlc2V0X21lbnUpOiBOZXcgdmFyaWFibGUuCgkoT1BUX1BSRVNFVF9NRU5VKTogTmV3IG1hY3JvLgoJKGxvbmdvcHRzKTogQWRkZWQgYW4gZW50cnkgZm9yICItLXByZXNldC1tZW51Ii4KCSh1c2FnZSk6IEFkZGVkIGEgZGVzY3JpcHRpb24gZm9yICItLXByZXNldC1tZW51Ii4gQWxzbywgY2hhbmdlCgl0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBkZXNjcmlwdGlvbiBmb3IgIi0tZGV2aWNlLW1hcCIgdG8KCWxvd2VyIGNhc2UgZm9yIGNvbnNpc3RlbmN5LgoJKG1haW4pOiBTZXQgVVNFX1BSRVNFVF9NRU5VIHRvIDEgaW4gdGhlIGNhc2Ugb2YgT1BUX1BSRVNFVF9NRU5VLgoJKiBzdGFnZTIvc2hhcmVkLmggKHVzZV9wcmVzZXRfbWVudSk6IERlY2xhcmVkLgoJKiBzdGFnZTIvc3RhZ2UyLmMgW1BSRVNFVF9NRU5VX1NUUklORyB8fCBTVVBQT1JUX0RJU0tMRVNTXQoJKG9wZW5fcHJlc2V0X21lbnUpIFtHUlVCX1VUSUxdOiBJZiBVU0VfUFJFU0VUX01FTlUgaXMgZmFsc2UsCglyZXR1cm4gemVybyBpbW1lZGlhdGVseS4KCjIwMDItMDEtMDggIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvY29tbW9uLmMgW1NVUFBPUlRfRElTS0xFU1NdCgkoc2V0dXBfZGlza2xlc3NfZW52aXJvbm1lbnQpOiBSZW1vdmVkLiBUaGUgZmVhdHVyZSBpcyBtb3ZlZCB0bwoJdGhlIHByZXNldCBtZW51LgoJKiBzdGFnZTIvc3RhZ2UyLmMgW1NVUFBPUlRfRElTS0xFU1NdIChwcmVzZXRfbWVudSk6IFNldCB0byB0aGUKCXN0cmluZyAiYm9vdHBcbiIuCglbU1VQUE9SVF9ESVNLTEVTU10gKHByZXNldF9tZW51X29mZnNldCk6IERlZmluZWQsIGFzIGlmCglQUkVTRVRfTUVOVV9TVFJJTkcgaXMgZGVmaW5lZC4KCVtTVVBQT1JUX0RJU0tMRVNTXSAob3Blbl9wcmVzZXRfbWVudSk6IExpa2V3aXNlLgoJW1NVUFBPUlRfRElTS0xFU1NdIChyZWFkX2Zyb21fcHJlc2V0X21lbnUpOiBMaWtld2lzZS4KCVtTVVBQT1JUX0RJU0tMRVNTXSAoY2xvc2VfcHJlc2V0X21lbnUpOiBMaWtld2lzZS4KCQoyMDAyLTAxLTA2ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBnbnUub3JnPgoKCVRoZSBwcmVzZXQgbWVudSBoYXMgYSBwcmlvcml0eSBvdmVyIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuCglTdWdnZXN0ZWQgYnkgQ2hyaXN0b3BoIFBsYXR0bmVyLgoJCgkqIHN0YWdlMi9zdGFnZTIuYyBbUFJFU0VUX01FTlVfU1RSSU5HXSAob3Blbl9wcmVzZXRfbWVudSk6CglDaGVjayBpZiBQUkVTRVRfTUVOVSBpcyBub3QgTlVMTC4KCVtQUkVTRVRfTUVOVV9TVFJJTkddIChjbG9zZV9wcmVzZXRfbWVudSk6IFNldCBQUkVTRVRfTUVOVSB0bwoJTlVMTC4KCShjbWFpbik6IE5ldyBpbnRlcm5hbCBmdW5jdGlvbiwgcmVzZXQuIFRoaXMgZnVuY3Rpb24gcmVzZXRzCglBVVRPX0ZJTEwsIENPTkZJR19MRU4sIE1FTlVfTEVOLCBOVU1fRU5UUklFUywgQ09ORklHX0VOVFJJRVMsCglNRU5VX0VOVFJJRVMgYW5kIGNhbGwgaW5pdF9jb25maWcuCglUcnkgdG8gb3BlbiB0aGUgcHJlc2V0IG1lbnUgZmlyc3QsIGFuZCB0cnkgdG8gb3BlbiB0aGUKCWNvbmZpZ3VyYXRpb24gZmlsZSwgb25seSBpZiB0aGF0IGZhaWxlZC4KCUV2ZW4gaWYgdGhlIHByZXNldCBtZW51IHdhcyByZWFkLCB0cnkgdG8gb3BlbiB0aGUgY29uZmlndXJhdGlvbgoJZmlsZS4gVGhpcyB0aW1lLCBvcGVuaW5nIHRoZSBwcmVzZXQgbWVudSBuZXZlciBzdWNjZWVkLCBiZWNhdXNlCgljbG9zZV9wcmVzZXRfbWVudSBlbnN1cmVzIHRoYXQgdGhlIHByZXNldCBtZW51IGlzIGF2YWlsYWJsZSBhdAoJbW9zdCBvbmNlLgoJCjIwMDItMDEtMDYgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGdudS5vcmc+CgoJKiBuZXRib290L21pc2MuYyAoaW5ldF9hdG9uKTogRG9uJ3QgY2hlY2sgaWYgKlAgaXMgYW4gYXN0ZXJpc2ssCglpZiBJIGlzIDMuIFJlcG9ydGVkIGJ5IFJpY2sgKGhpcyByZWFsIG5hbWUgYW5kIGFkZHJlc3MgYXJlCgl1bmtub3duKS4KCQoyMDAyLTAxLTAzICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBnbnUub3JnPgoKCVVwZGF0ZSB0aGUgbmV0Ym9vdCBzdHVmZiB0byBFdGhlcmJvb3QtNS4wLjUuCgkKCSogY29uZmlndXJlLmluICgtLWVuYWJsZS0zYzU5MCk6IFJlbW92ZWQuIFRoaXMgd2FzIGEgbWlzdGFrZS4KCSgtLWVuYWJsZS1kYXZpY29tKTogTmV3IG9wdGlvbi4KCSgtLWVuYWJsZS1lZXBybyk6IExpa2V3aXNlLgoJKC0tZW5hYmxlLW5hdHNlbWkpOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1uaTUwMTApOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1zaXM5MDApOiBMaWtld2lzZS4KCSgtLWVuYWJsZS13ODljODQwKTogTGlrZXdpc2UuCgkoLS1lbmFibGUtM2M1MDktaGFjayk6IFJlbW92ZWQuCgkoLS1lbmFibGUtbnM4MzkwLWZvcmNlLTE2Yml0KTogTGlrZXdpc2UuCgoJKiBuZXRib290L01ha2VmaWxlLmFtIChsaWJkcml2ZXJzX2FfU09VUkNFUyk6IEFkZGVkIHRpbWVyLmMgYW5kCgl0aW1lci5oLgoJKEVYVFJBX2xpYmRyaXZlcnNfYV9TT1VSQ0VTKTogQWRkZWQgZGF2aWNvbS5jLCBlZXByby5jLCBmYTMxMS5jLAoJbmF0c2VtaS5jLCBuaTUwMTAuYywgc2lzOTAwLmMsIHNpczkwMC5oLCB0bGFuLmMgYW5kIHc4OWM4NDAuYy4KCShFWFRSQV9ESVNUKTogQWRkZWQgc2lzOTAwLnR4dC4KCSgzYzU5NV9kcml2ZXJzKTogUmVtb3ZlIDNjNTkwLm8gZnJvbSB0aGlzLgoJKGRhdmljb21fZHJpdmVycyk6IE5ldyB2YXJpYWJsZS4KCShlZXByb19kcml2ZXJzKTogTGlrZXdpc2UuCgkobmF0c2VtaV9kcml2ZXJzKTogTGlrZXdpc2UuCgkobmk1MDEwX2RyaXZlcnMpOiBMaWtld2lzZS4KCShzaXM5MDBfZHJpdmVycyk6IExpa2V3aXNlLgoJKHc4OWM4NDBfZHJpdmVycyk6IExpa2V3aXNlLgoJKDNjNTkwX29fQ0ZMQUdTKTogUmVtb3ZlZC4KCShkYXZpY29tX29fQ0ZMQUdTKTogTmV3IHZhcmlhYmxlLgoJKGVlcHJvX29fQ0ZMQUdTKTogTGlrZXdpc2UuCgkobmF0c2VtaV9vX0NGTEFHUyk6IExpa2V3aXNlLgoJKG5pNTAxMF9vX0NGTEFHUyk6IExpa2V3aXNlLgoJKHNpczkwMF9vX0NGTEFHUyk6IExpa2V3aXNlLgoJKHc4OWM4NDBfb19DRkxBR1MpOiBMaWtld2lzZS4KCgkqIG5ldGJvb3QvZGF2aWNvbS5jOiBOZXcgZmlsZSwgZnJvbSBFdGhlcmJvb3QtNS4wLjUuCgkqIG5ldGJvb3QvZWVwcm8uYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvbmF0c2VtaS5jOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9uaTUwMTAuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3Qvc2lzOTAwLmM6IExpa2V3aXNlLgoJKiBuZXRib290L3NpczkwMC5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9zaXM5MDAudHh0OiBMaWtld2lzZS4KCSogbmV0Ym9vdC90aW1lci5jOiBMaWtld2lzZS4KCSogbmV0Ym9vdC90aW1lci5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC93ODljODQwLmM6IExpa2V3aXNlLgoJKiBuZXRib290L2ZhMzExLmM6IExpa2V3aXNlLgoJKiBuZXRib290L3RsYW4uYzogTGlrZXdpc2UuCgkKCSogbmV0Ym9vdC8zYzUwOS5jOiBDb3BpZWQgZnJvbSBFdGhlcmJvb3QtNS4wLjUuCgkqIG5ldGJvb3QvM2M1MDkuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvM2M1OTUuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvM2M5MHguYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvM2M5MHgudHh0OiBMaWtld2lzZS4KCSogbmV0Ym9vdC9jYXJkcy5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9jczg5eDAuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvZGVwY2EuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvZWVwcm8xMDAuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvZXBpYzEwMC5jOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9pODI1ODYuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvbGFuY2UuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvbGludXgtYXNtLXN0cmluZy5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9uaWMuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvbnM4MzkwLmM6IExpa2V3aXNlLgoJKiBuZXRib290L25zODM5MC5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9vdHVsaXAuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvcGNpLmg6IExpa2V3aXNlLgoJKiBuZXRib290L3J0bDgxMzkuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3Qvc2tfZzE2LmM6IExpa2V3aXNlLgoJKiBuZXRib290L3NtYzkwMDAuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvdGlhcmEuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvdHVsaXAuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvdmlhLXJoaW5lLmM6IExpa2V3aXNlLgoJCgkqIG5ldGJvb3QvY29uZmlnLmM6IEFwcGxpZWQgYSBkaWZmIGJldHdlZW4gRXRoZXJib290LTQuNi40IGFuZAoJRXRoZXJib290LTUuMC41IG1hbnVhbGx5LgoJKiBuZXRib290L21haW4uYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvcGNpLmM6IExpa2V3aXNlLgoJKiBuZXRib290L2V0aGVyYm9vdC5oOiBSZXdyaXR0ZW4gbW9zdGx5IGZyb20gc2NyYXRjaCwgYmFzZWQgb24KCXRoZSBzYW1lIGZpbGUgaW4gRXRoZXJib290LTUuMC41LgoJKiBuZXRib290L21pc2MuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3Qvb3NkZXAuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvZnN5c190ZnRwLmMgKEdSVUIpOiBEZWZpbmVkLgoJKGJ1Zl9maWxsKTogVXNlIHJmYzIxMzFfc2xlZXBfaW50ZXJ2YWwgaW5zdGVhZCBvZiByZmM5NTFfc2xlZXAuCgoJKiBzdGFnZTIvYnVpbHRpbnMuYyBbU1VQUE9SVF9ORVRCT09UXSAoR1JVQik6IERlZmluZWQuCgkoYm9vdF9mdW5jKSBbU1VQUE9SVF9ORVRCT09UXTogQ2FsbCBjbGVhbnVwX25ldC4KCSogc3RhZ2UyL2NtZGxpbmUuYyBbU1VQUE9SVF9ESVNLTEVTU10gKEdSVUIpOiBEZWZpbmVkLgoJKiBzdGFnZTIvY29tbW9uLmMgW1NVUFBPUlRfRElTS0xFU1NdIChHUlVCKTogTGlrZXdpc2UuCgkKMjAwMi0wMS0wMiAgSmVyZW15IEthdHogIDxrYXR6akByZWRoYXQuY29tPgoJCgkqIHV0aWwvZ3J1Yi1pbnN0YWxsLmluOiBTdXBwb3J0IHVzaW5nIG1rdGVtcCBhcyB3ZWxsIGFzIHRlbXBmaWxlCglmb3Igc2VjdXJlIHRlbXBvcmFyeSBmaWxlIGNyZWF0aW9uLgoKMjAwMi0wMS0wMiAgSmVyZW15IEthdHogIDxrYXR6akByZWRoYXQuY29tPgoJCgkqIHN0YWdlMi9tZDUuYyAobWQ1X3Bhc3N3b3JkKTogRW5zdXJlIHRoZSBwYXNzd29yZCBleGlzdHMgYmVmb3JlCgl0cnlpbmcgdG8gY2hlY2sgYWdhaW5zdCB0aGUgbWQ1IGNyeXB0ZWQgdmVyc2lvbi4KCjIwMDEtMTItMzAgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTEvc3RhZ2UxLlM6IERvbid0IGNhbGwgSU5UIDEzLCBBSD00OEgsIGJlY2F1c2UgaXQgaXMKCWRpZmZpY3VsdCB0byBjYWxsIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgd29ya2Fyb3VuZCBpbXBsZW1lbnRlZAoJaW4gdGhlIHByZXZpb3VzIGNoYW5nZSBkdWUgdG8gdGhlIHNpemUgbGltaXQgb2YgU3RhZ2UgMS4KCQoJKGxiYV9tb2RlKSBbTk9fQlVHR1lfQklPU19JTl9USEVfV09STERdOiBEb24ndCBjaGVjayB0aGUKCWdlb21ldHJ5IGV4cGxpY2l0bHkuIFRoaXMgc2hvdWxkbid0IGJlIGhhcm1mdWwsIGFzIElOVCAxMywKCUFIPTQySCBzaG91bGQgdGFrZSBjYXJlIG9mIGl0LCBhbmQgaWYgeW91IGNhbm5vdCByZWFkIFN0YWdlIDIKCWV2ZW4gd2l0aCBMQkEgYmVjYXVzZSBvZiBhIGdlb21ldHJ5IHByb2JsZW0sIHlvdSBjYW4gbmV2ZXIgcmVhZAoJaXQuCgoJKiBzdGFnZTIvc3RhcnQuUyAobGJhX21vZGUpIFtOT19CVUdHWV9CSU9TX0lOX1RIRV9XT1JMRF06CglMaWtld2lzZS4KCQoyMDAxLTEyLTMwICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2Jpb3MuYyAoZ2V0X2Rpc2tpbmZvKTogQ2xlYXIgb3V0IHRoZSBzdHJ1Y3R1cmUgRFJQCgliZWZvcmUgY2FsbGluZyBnZXRfZGlza2luZm9faW50MTNfZXh0ZW5zaW9ucywgYmVjYXVzZSB0aGUgUmFsZgoJQnJvd24ncyBJbnRlcnJ1cHQgTGlzdCBzYXlzIHRoYXQgRGVsbCBtYWNoaW5lcyB1c2luZyBQaG9lbml4QklPUwoJNC4wIFJlbGVhc2UgNi4wIGZhaWwsIGlmIERSUC5GTEFHUyBpcyBub3QgemVyby4gU2V0dGluZyB0aGUKCWVudGlyZSBzdHJ1Y3R1cmUgdG8gemVybyBtYXkgYmUgb3ZlcmtpbGwsIGJ1dCBpdCBzaG91bGQgYmUgc2FmZS4KCQoJKiBzdGFnZTIvY2hhcl9pby5jIFtTVEFHRTFfNV0gKGdydWJfbWVtc2V0KTogRGVmaW5lZC4KCQoyMDAxLTEyLTMwICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBnbnUub3JnPgoKCUZyb20gSm9obiBHb2VyemVuIDxqZ29lcnplbkBjb21wbGV0ZS5vcmc+OgoJKiB1dGlsL2dydWItaW5zdGFsbC5pbiAoY29udmVydCk6IEFkZGVkIE5ldEJTRCBzdXBwb3J0LgoJCjIwMDEtMTItMzAgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGdudS5vcmc+CgoJKiB1dGlsL2dydWItaW5zdGFsbC5pbjogU2V0IEdSVUJfUFJFRklYIGFuZCBCT09URElSIHRvICIvZ3J1YiIKCWFuZCAiJHtyb290ZGlyfSIgcmVzcGVjdGl2ZWx5IGluIE5ldEJTRC4KCQoyMDAxLTEyLTMwICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGJ1aWx0aW5fZ2VvbWV0cnkpOiBBZGQgZXh0cmEgc3BhY2UKCWNoYXJhY3RlcnMgaW50byB0aGUgbG9uZyBkZXNjcmlwdGlvbi4KCShidWlsdGluX2tlcm5lbCk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fdmJlcHJvYmUpOiBMaWtld2lzZS4KCQoyMDAxLTEyLTE5ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBnbnUub3JnPgoKCUZyb20gTWljaGFlbCBTdWxsaXZhbiA8bWlrZUB0cmRsbmsuY29tPjoKCSogc3RhZ2UxL3N0YWdlMS5TIChyZWFsX3N0YXJ0KTogQWRkZWQgYSB3b3JrYXJvdW5kIGZvciBBU1QgQklPUywKCWJlY2F1c2UgaXQgY2xvYmJlcnMgJWRsIHdpdGggSU5UIDEzLCBBSD00MUguCgoyMDAxLTEyLTE5ICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2ZzeXNfZmF0LmMgKGZhdF9yZWFkKTogRml4IHRoZSBjb250cmFkaWN0b3J5IGNvbW1lbnQuCglSZXBvcnRlZCBieSBGaWxpcCBWYW4gUmFlbWRvbmNrIDxtZWNoYW5peEBkaWdpYmVsLm9yZz4uCgkKMjAwMS0xMi0xMSAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChkaXNwbGF5YXBtX2Z1bmMpOiBEb24ndCB1c2UgbXVsdGktbGluZQoJc3RyaW5nIGxpdGVyYWxzIGJ1dCBzdHJpbmcgY29uY2F0ZW5hdGlvbiBpbnN0ZWFkLCB0byBzdXBwcmVzcwoJd2FybmluZ3MgZnJvbSBnY2MtMy4wLnguCgkqIHN0YWdlMi9jbWRsaW5lLmMgKHByaW50X2NtZGxpbmVfbWVzc2FnZSk6IExpa2V3aXNlLgoJKiB1dGlsL21iY2hrLmMgKHVzYWdlKTogTGlrZXdpc2UuCgkKCSogc3RhZ2UyL3NtcC1pbXBzLmMgKGltcHNfcmVhZF9jb25maWdfdGFibGUpOiBBZGQgYSBicmVhawoJc3RhdGVtZW50IGFmdGVyIHRoZSBsYWJlbCBgYGRlZmF1bHQnJy4KCQoJKiB1dGlsL21iY2hrLmM6IEluY2x1ZGUgPHN0ZGxpYi5oPiBmb3IgdGhlIHByb3RvdHlwZSBvZiBleGl0LgoKCSogc3RhZ2UyL3NlcmlhbC5jIChzZXJpYWxfcG9ydCk6IEluaXRpYWxpemUgd2l0aCAwIGluc3RlYWQgb2YKCS0xLCBhcyBhbiBpbnZhbGlkIHZhbHVlLCBiZWNhdXNlIFNFUklBTF9QT1JUIGlzIHVuc2lnbmVkLiBUaGlzCgljaGFuZ2Ugc2hvdWxkbid0IGFmZmVjdCBhbnl0aGluZy4KCShzZXJpYWxfZXhpc3RzKTogRm9yIHRoZSBhYm92ZSBjaGFuZ2UsIGNoZWNrIFNFUklBTF9QT1JUIHdpdGggMAoJaW5zdGVhZCBvZiAtMS4KCQoyMDAxLTEyLTEwICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL3NoYXJlZC5oIChFUlJfTk9fRElTS19TUEFDRSk6IE5ldyBjb25zdGFudC4KCSogc3RhZ2UyL2NvbW1vbi5jIChlcnJfbGlzdCk6IEFkZGVkIGFuIGVudHJ5IGZvcgoJRVJSX05PX0RJU0tfU1BBQ0UuCgkqIGRvY3MvZ3J1Yi50ZXhpIChTdGFnZTIgZXJyb3JzKTogQWRkZWQgdGhlIGRlc2NyaXB0aW9uLgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoZW1iZWRfZnVuYyk6IFVzZSBFUlJfTk9fRElTS19TUEFDRSBpbnN0ZWFkCglvZiBFUlJfREVWX1ZBTFVFUyB3aGVuIHRoZSBzcGFyZSBzcGFjZSBpcyB0b28gc21hbGwuIFN1Z2dlc3RlZAoJYnkgRXJpYyBNdW1wb3dlciA8bm9jdHVybmVAcGVybWFiaXQuY29tPi4KCQoyMDAxLTEyLTEwICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBnbnUub3JnPgoKCSogZ3J1Yi9hc21zdHViLmM6IEluY2x1ZGUgPHNpZ25hbC5oPi4KCShncnViX3N0YWdlMikgW0hBVkVfTElCQ1VSU0VTXTogSWYgVVNFX0NVUlNFUyBpcyB0cnVlLCBpZ25vcmUKCXRoZSBzaWduYWwgU0lHV0lOQ0guIFJlcG9ydGVkIGJ5IENocmlzdGlhbiBIdWRvbgoJPGNocmlzaEBkZWJpYW4ub3JnPi4KCjIwMDEtMTEtMjkgIFlvc2hpbm9yaSBLLiBPa3VqaSAgPG9rdWppQGdudS5vcmc+CgoJRnJvbSBKYXNvbiBUaG9tYXM6CgkqIHN0YWdlMi9kaXNrX2lvLmMgKHNldF9wYXJ0aXRpb25faGlkZGVuX2ZsYWcpOiBDb21wbGV0ZSByZXdyaXRlCglvZiB0aGlzIGZ1bmN0aW9uIHdoaWNoIG5vdyBzdXBwb3J0cyBsb2dpY2FsIHBhcnRpdGlvbnMuCgkKMjAwMS0xMS0xMiAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZ251Lm9yZz4KCgkqIGRvY3MvZ3J1Yi50ZXhpOiBUaGUgY29weXJpZ2h0IG9mIHRoaXMgZmlsZSBpcyBvbmx5IGhlbGQgYnkKCUZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgYXMgRXJpY2ggQm9sZXluIGhhcyBhc3NpZ25lZCBoaXMKCWNvcHlyaWdodCB0byB0aGUgRlNGLgoJKiBzdGFnZTEvc3RhZ2UxLlM6IExpa2V3aXNlLgoJKiBzdGFnZTIvYXNtLlM6IExpa2V3aXNlLgoJKiBzdGFnZTIvYm9vdC5jOiBMaWtld2lzZS4KCSogc3RhZ2UyL2J1aWx0aW5zLmM6IExpa2V3aXNlLgoJKiBzdGFnZTIvY2hhcl9pby5jOiBMaWtld2lzZS4KCSogc3RhZ2UyL2NtZGxpbmUuYzogTGlrZXdpc2UuCgkqIHN0YWdlMi9jb21tb24uYzogTGlrZXdpc2UuCgkqIHN0YWdlMi9kaXNrX2lvLmM6IExpa2V3aXNlLgoJKiBzdGFnZTIvZmF0Lmg6IExpa2V3aXNlLgoJKiBzdGFnZTIvZmlsZXN5cy5oOiBMaWtld2lzZS4KCSogc3RhZ2UyL2ZyZWVic2QuaDogTGlrZXdpc2UuCgkqIHN0YWdlMi9mc3lzX2V4dDJmcy5jOiBMaWtld2lzZS4KCSogc3RhZ2UyL2ZzeXNfZmF0LmM6IExpa2V3aXNlLgoJKiBzdGFnZTIvZnN5c19mZnMuYzogTGlrZXdpc2UuCgkqIHN0YWdlMi9ndW56aXAuYzogTGlrZXdpc2UuCgkqIHN0YWdlMi9pMzg2LWVsZi5oOiBMaWtld2lzZS4KCSogc3RhZ2UyL21iX2hlYWRlci5oOiBMaWtld2lzZS4KCSogc3RhZ2UyL21iX2luZm8uaDogTGlrZXdpc2UuCgkqIHN0YWdlMi9wY19zbGljZS5oOiBMaWtld2lzZS4KCSogc3RhZ2UyL3NoYXJlZC5oOiBMaWtld2lzZS4KCSogc3RhZ2UyL3N0YWdlMV81LmM6IExpa2V3aXNlLgoJKiBzdGFnZTIvc3RhZ2UyLmM6IExpa2V3aXNlLgoJKiBzdGFnZTIvc3RhcnQuUzogTGlrZXdpc2UuCgkKMjAwMS0xMS0wNyAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9idWlsdGlucy5jICh0ZXJtaW5hbF9mdW5jKSBbIVNVUFBPUlRfU0VSSUFMXTogRGlzYWJsZQoJdGhlIHdhaXQgY29kZSwgYXMgaXQgaXMgdXNhYmxlIG9ubHkgd2hlbiBzZXJpYWwgc3VwcG9ydCBpcyBvbi4KCVJlcG9ydGVkIGJ5IEthcmwgSGFtbWFyIDxrYXJsQGthbGxlLmNzYi5raS5zZT4uCgkKMjAwMS0xMC0yNyAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZ251Lm9yZz4KCglKRlMgYW5kIFhGUyBzdXBwb3J0IGlzIGFkZGVkLgoJCglGcm9tIFNlcmd1ZWkgVHp1a2Fub3YgPHR6dWthbm92QG5hcm9kLnJ1PjoKCSogY29uZmlndXJlLmluICgtLWRpc2FibGUtamZzKTogTmV3IG9wdGlvbi4KCSgtLWRpc2FibGUteGZzKTogTGlrZXdpc2UuCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAobm9pbnN0X0hFQURFUlMpOiBBZGRlZCBqZnMuaCBhbmQgeGZzLmguCgkobGliZ3J1Yl9hX1NPVVJDRVMpOiBBZGRlZCBmc3lzX2pmcy5jIGFuZCBmc3lzX3hmcy5jLgoJKGxpYmdydWJfYV9DRkxBR1MpOiBBZGRlZCAtREZTWVNfSkZTPTEgYW5kIC1ERlNZU19YRlM9MS4KCShwa2dkYXRhX0RBVEEpOiBBZGRlZCBqZnNfc3RhZ2UxXzUgYW5kIHhmc19zdGFnZTFfNS4KCShub2luc3RfUFJPR1JBTVMpOiBBZGRlZCBqZnNfc3RhZ2UxXzUuZXhlYyBhbmQKCXhmc19zdGFnZTFfNS5leGVjLgoJKHByZV9zdGFnZTJfZXhlY19TT1VSQ0VTKTogQWRkZWQgZnN5c19qZnMuYyBhbmQgZnN5c194ZnMuYy4KCShqZnNfc3RhZ2UxXzVfZXhlY19TT1VSQ0VTKTogTmV3IHZhcmlhYmxlLgoJKGpmc19zdGFnZTFfNV9leGVjX0NGTEFHUyk6IExpa2V3aXNlLgoJKGpmc19zdGFnZTFfNV9leGVjX0FTRkxBR1MpOiBMaWtld2lzZS4KCShqZnNfc3RhZ2UxXzVfZXhlY19MREZMQUdTKTogTGlrZXdpc2UuCgkoeGZzX3N0YWdlMV81X2V4ZWNfU09VUkNFUyk6IExpa2V3aXNlLgoJKHhmc19zdGFnZTFfNV9leGVjX0NGTEFHUyk6IExpa2V3aXNlLgoJKHhmc19zdGFnZTFfNV9leGVjX0FTRkxBR1MpOiBMaWtld2lzZS4KCSh4ZnNfc3RhZ2UxXzVfZXhlY19MREZMQUdTKTogTGlrZXdpc2UuCgkqIHN0YWdlMi9idWlsdGlucy5jIChzZXR1cF9mdW5jKTogQWRkIGl0ZW1zIGZvciBKRlMgYW5kIFhGUyBpbnRvCglTVEFHRTFfNV9NQVAuCgkqIHN0YWdlMi9kaXNrX2lvLmMgKGZzeXNfdGFibGUpOiBBZGRlZCBlbnRyaWVzIGZvciBKRlMgYW5kIFhGUy4KCSogc3RhZ2UyL2ZpbGVzeXMuaCBbRlNZU19KRlNdIChGU1lTX0pGU19OVU0pOiBTZXQgdG8gMS4KCVtGU1lTX0pGU10gKGpmc19tb3VudCk6IERlY2xhcmVkLgoJW0ZTWVNfSkZTXSAoamZzX3JlYWQpOiBMaWtld2lzZS4KCVtGU1lTX0pGU10gKGpmc19kaXIpOiBMaWtld2lzZS4KCVtGU1lTX0pGU10gKGpmc19lbWJlZCk6IExpa2V3aXNlLgoJWyFGU1lTX0pGU10gKEZTWVNfSkZTX05VTSk6IFNldCB0byAwLgoJW0ZTWVNfWEZTXSAoRlNZU19YRlNfTlVNKTogU2V0IHRvIDEuCglbRlNZU19YRlNdICh4ZnNfbW91bnQpOiBEZWNsYXJlZC4KCVtGU1lTX1hGU10gKHhmc19yZWFkKTogTGlrZXdpc2UuCglbRlNZU19YRlNdICh4ZnNfZGlyKTogTGlrZXdpc2UuCgkoTlVNX0ZTWVMpOiBBZGRlZCBGU1lTX0pGU19OVU0gYW5kIEZTWVNfWEZTX05VTS4KCSogc3RhZ2UyL3NoYXJlZC5oIChTVEFHRTJfSURfSkZTX1NUQUdFMV81KTogTmV3IG1hY3JvLgoJKFNUQUdFMl9JRF9YRlNfU1RBR0UxXzUpOiBMaWtld2lzZS4KCVtGU1lTX0pGU10gKFNUQUdFMl9JRCk6IFNldCB0byBTVEFHRTJfSURfSkZTX1NUQUdFMV81LgoJW0ZTWVNfWEZTXSAoU1RBR0UyX0lEKTogU2V0IHRvIFNUQUdFMl9JRF9YRlNfU1RBR0UxXzUuCgkqIHN0YWdlMi9mc3lzX2pmcy5jOiBOZXcgZmlsZS4KCSogc3RhZ2UyL2ZzeXNfeGZzLmM6IExpa2V3aXNlLgoJKiBzdGFnZTIvamZzLmg6IExpa2V3aXNlLgoJKiBzdGFnZTIveGZzLmg6IExpa2V3aXNlLgoKMjAwMS0xMC0yNyAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9hcG0uUzogQWx3YXlzIGRpc2Nvbm5lY3QgZnJvbSBBUE0uIFdyaXR0ZW4gYnkgRXJpY2gKCVN0ZWZhbiBCb2xleW4uCgoJKiB1dGlsL01ha2VmaWxlLmFtIChub2luc3RfREFUQSk6IFJlbW92ZWQuCgkoRVhUUkFfRElTVCk6IExpa2V3aXNlLgoJCjIwMDEtMTAtMTQgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBmaWcub3JnPgoKCSogY29uZmlndXJlLmluOiBFeHBsaWNpdGx5IGNhbGwgX0FNX0RFUEVOREVOQ0lFUyhDQykgZm9yIHRoZQoJYmVuZWZpdCBvZiBvbGRlciBBdXRvY29uZnMuCgoyMDAxLTEwLTEzICBZb3NoaW5vcmkgSy4gT2t1amkgIDxva3VqaUBnbnUub3JnPgoKCSogbmV0Ym9vdC9mc3lzX3RmdHAuYyAodGZ0cF9yZWFkKTogTW92ZSB0aGUgdW51c2VkIGRhdGEKCWZvcndhcmRzLCBvbmx5IGlmIEFNVCBpcyBtb3JlIHRoYW4gemVyby4gSWYgQU1UIGlzIG5vdCBwb3NpdGl2ZSwKCXN1YnRyYWN0IEJVRl9SRUFEIGZyb20gU0FWRURfRklMRVBPUyBhbmQgc2V0IEJVRl9SRUFEIHRvIHplcm8sCgl0byBza2lwIHRoZSB3aG9sZSBidWZmZXIuIFJlcG9ydGVkIGJ5IEZyYW5rIE1laG5lcnQuCgkKMjAwMS0xMC0xMyAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZ251Lm9yZz4KCglEb24ndCB1c2UgZ2V0X2Rpc2tpbmZvX2Zsb3BweS4gUmVwb3J0ZWQgYnkgQmVuIExpYmxpdAoJPGxpYmxpdEBlZWNzLmJlcmtlbGV5LmVkdT4uCgkKCSogc3RhZ2UyL2FzbS5TIChnZXRfZGlza2luZm9fZmxvcHB5KTogUmVtb3ZlZCAoYnkgY3BwKS4KCSogc3RhZ2UyL2Jpb3MuYyAoZ2V0X2Rpc2tpbmZvX2Zsb3BweSk6IFJlbW92ZWQuCgkoZ2V0X2Rpc2tpbmZvKTogRG9uJ3QgY2FsbCBnZXRfZGlza2luZm9fZmxvcHB5IGFueSBsb25nZXIuCgkKMjAwMS0xMC0xMyAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZ251Lm9yZz4KCglCYXNlZCBvbiBhIHBhdGNoIGZyb20gSmVyZW15IEthdHogPGthdHpqQHJlZGhhdC5jb20+OgoJKiBkb2NzL2dydWIudGV4aSAoU3RhZ2UyIGVycm9ycyk6IEFkZGVkIGRvY3VtZW50YXRpb24gb24gdGhlCgllcnJvciBudW1iZXIgMzMgKFNlcmlhbCBkZXZpY2Ugbm90IGNvbmZpZ3VyZWQpLgoJKiBncnViL2FzbXN0dWIuYyAoc2VyaWFsX2V4aXN0cyk6IE5ldyBmdW5jdGlvbi4KCSogc3RhZ2UyL3NlcmlhbC5jIChzZXJpYWxfZXhpc3RzKTogTGlrZXdpc2UuCgkqIHN0YWdlMi9zZXJpYWwuaCAoc2VyaWFsX2V4aXN0cyk6IE5ldyBwcm90b3R5cGUuCgkqIHN0YWdlMi9zaGFyZWQuaCAoZ3J1Yl9lcnJvcl90KTogRVJSX05FRURfU0VSSUFMIGlzIGFkZGVkLgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAodGVybWluYWxfZnVuYykgW1NVUFBPUlRfU0VSSUFMXTogSWYgYQoJc2VyaWFsIGRldmljZSBpcyBub3QgY29uZmlndXJlZCB5ZXQsIHJlc3RvcmUgdGhlIHRlcm1pbmFsIGFuZAoJc2V0IEVSUk5VTSB0byBFUlJfTkVFRF9TRVJJQUwuCgkqIHN0YWdlMi9jb21tb24uYyAoZXJyX2xpc3QpOiBBZGRlZCBhbiBpdGVtIGZvciBFUlJfTkVFRF9TRVJJQUwuCgkKMjAwMS0xMC0xMyAgWW9zaGlub3JpIEsuIE9rdWppICA8b2t1amlAZ251Lm9yZz4KCglGcm9tIEphc29uIFRob21hcyA8amFzb25AdG9waWMuY29tLmF1PjoKCSogdXRpbC9ncnViLWluc3RhbGwuaW4gKGNvbnZlcnQpOiBBZGQgc3VwcG9ydCBmb3IgREFDOTYwLgoKCUZyb20gQWRyaWFuIFBoaWxsaXBzIDxhLnBoaWxsaXBzQGRubWkubm8+OgoJKiBsaWIvZGV2aWNlLmMgKGdldF9kYWM5NjBfZGlza19uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRfZGV2aWNlX21hcCkgW19fbGludXhfX106IEFkZCBzdXBwb3J0IGZvciBEQUM5NjAuCgkKMjAwMS0xMC0xMSAgSm9jaGVuIEhvZW5pY2tlICA8am9jaGVuQGdudS5vcmc+CgoJKiBzdGFnZTIvZnN5c19yZWlzZXJmcy5jIChyZWlzZXJmc19zdXBlcl9ibG9jayk6IFVwZGF0ZWQKCXRvIGJldHRlciBtYXRjaCByZWNlbnQgcmVpc2VyZnMgdmVyc2lvbnMuCgkocmVpc2VyZnNfbW91bnQpOiBIYW5kbGUgY2FzZXMgd2hlcmUgam91cm5hbCBjYW4ndCBiZSBmb3VuZCwKCWUuZy4gam91cm5hbCBvbiBhbm90aGVyIGRpc2sgb3IgdW5leHBlY3RlZCBqb3VybmFsIHBhcmFtZXRlcnMuCglJbiB0aGF0IGNhc2UgdGhlIGpvdXJuYWwgaXNuJ3QgdXNlZC4KCQoyMDAxLTEwLTEwICBKb2NoZW4gSG9lbmlja2UgIDxqb2NoZW5AZ251Lm9yZz4KCgkqIHN0YWdlMi9mc3lzX3JlaXNlcmZzLmMgKHJlaXNlcmZzX21vdW50KTogIERvbid0IGxvb2sgYXQKCXRoZSBzdXBlcmJsb2NrIGZpZWxkIHNfam91cm5hbF9ibG9ja19jb3VudCBhbnltb3JlLiAgSXQgdXNlZAoJdG8gY29udGFpbiAwLCBpdCBuZXZlciBjb250YWluZWQgYSB2YWxpZCB2YWx1ZSwgYW5kIG5vdyBJCgloYXZlIGEgcmVwb3J0IHRoYXQgaXQgY2FuIGNvbnRhaW4gYW4gaW52YWxpZCB2YWx1ZS4KCUJ1ZyByZXBvcnRlZCBieSBKaW0gQ2FsZXkgPGNhbGV5QGNoZXNjby5jb20+LgoJCjIwMDEtMDktMjQgIEpvY2hlbiBIb2VuaWNrZSAgPGpvY2hlbkBnbnUub3JnPgoKCSogc3RhZ2UyL2ZzeXNfcmVpc2VyZnMuYyAocmVpc2VyZnNfZGlyKTogIFNldCBlcnJudW0gdG8gCglFUlJfRlNZU19DT1JSVVBUIGlmIGEgc3ltbGluayBjYW4ndCBiZSByZWFkIGZvciBzb21lIHJlYXNvbiwKCWJ1dCBubyBlcnJvciBpcyBzZXQgYnkgcmVhZC4KCQoyMDAxLTA4LTA4ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUZyb20gRGVycmlrIFBhdGVzIDxkcGF0ZXNAZHNkazEyLm5ldD46CgkqIHN0YWdlMi9hc20uUyBbIVNUQUdFMV81XSAoZ3J1Yl9oYWx0KTogU2V0IHRoZSBsZXZlbCBvZiBBUE0KCXN1cHBvcnQgdG8gMS4xLCBiZWZvcmUgdHVybmluZyBvZmYgdGhlIHBvd2VyIHN0YXRlLgoJCjIwMDEtMDgtMDggIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiB1dGlsL2dydWItbWQ1LWNyeXB0LmluOiBQcmVmaXggYmFja3F1b3RlcyB3aXRoIGJhY2tzbGFzaGVzIGluCglzdHJpbmdzLiAgRnJvbSBGZXJuYW5kbyBTaWx2ZWlyYS4KCQoyMDAxLTA4LTAyICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZmlnLm9yZz4KCgkqIHN0YWdlMi9jb21tb24uYyAoaW5pdF9iaW9zX2luZm8pOiBJZ25vcmUgemVyby1sZW5ndGggbWVtb3J5CglyYW5nZXMuICBGcm9tIERlcnJpayBQYXRlcyA8ZHBhdGVzQGRzZGsxMi5uZXQ+LgoKMjAwMS0wNy0yNiAgSm9jaGVuIEhvZW5pY2tlICA8am9jaGVuQGdudS5vcmc+CgoJKiBzdGFnZTIvTWFrZWZpbGUuYW0gKGxpYmdydWJfYV9DRkxBR1MpOiBFbmFibGUgVVNFX01ENV9QQVNTV09SRFMKCWZvciBsaWJncnViLiAgUHJldmlvdXNseSB0aGF0IHdhcyBpbXBsaWNpdGx5IGRvbmUgYnkgY29uZmlndXJlLmluCgl1bnRpbCB0aGUgcGF0Y2ggZnJvbSAyMDAxLTA3LTA0LCB3aGljaCBtb3ZlZCB0aGF0IGZsYWcgZnJvbSBDRkxBR1MKCXRvIEZTWVNfQ0ZMQUdTLiAgUmVwb3J0ZWQgYnkgWUFNQUdVQ0hJIFNoaW5nbwoJPHNoaW5nb0BraXAuaWlzLnRveWFtYS11LmFjLmpwPgoKMjAwMS0wNy0xMyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHV0aWwvZ3J1Yi1pbnN0YWxsLmluIChjb252ZXJ0KTogUmVjb2duaXplIHRoZSBuYW1pbmcgc2NoZW1lCglmb3IgTGludXggZGV2ZnMgZmxvcHB5IGRldmljZXMuIFJlcG9ydGVkIGJ5IEphc29uIFRob21hcwoJPGphc29uQHRvcGljLmNvbS5hdT4uCgkKMjAwMS0wNy0wNyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIG5ldGJvb3QvY29tcGlsZTogTmV3IGZpbGUuIFRoaXMgd2FzIGFsc28gbWlzc2luZy4uLiBIb3cgbWFueQoJYGBjb21waWxlJydzIGRvZXMgYXV0b21ha2Ugd2FudD8KCQoyMDAxLTA3LTA3ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUZyb20gSmFuIFplcmViZWNraSA8amFuLmxpc3RAZWxpdGUtcGZlcmRlLmRlPjoKCSogYWNpbmNsdWRlLm00IChncnViX0RFRklORV9GSUxFKTogRXNjYXBlIGRvdWJsZS1xdW90YXRpb25zIGFzCgl3ZWxsLgoJCjIwMDEtMDctMDUgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBjb25maWd1cmUuaW4gKEFNX0lOSVRfQVVUT01BS0UpOiBTZXQgdGhlIHZlcnNpb24gbnVtYmVyIHRvCgkwLjkwLgoKMjAwMS0wNy0wNSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCglVZ2hoISBJIGZvcmdvdCB0byBhZGQgdGhpcyBmaWxlIHRvIHRoZSBDVlMuCgoJKiBkb2NzL2NvbXBpbGU6IE5ldyBmaWxlLgoJCjIwMDEtMDctMDUgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBkb2NzL2dydWIudGV4aTogVXBkYXRlZC4KCQoyMDAxLTA3LTA1ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2Jvb3QuYyAobG9hZF9pbml0cmQpIFshTk9fREVDT01QUkVTU0lPTl06IFNldAoJTk9fREVDT01QUkVTU0lPTiB0byBvbmUgYmVmb3JlIG9wZW5pbmcgSU5JVFJELCBzbyB0aGF0IEdSVUIKCWRvZXNuJ3QgZGVjb21wcmVzcyBhbiBpbml0cmQgYXV0b21hdGljYWxseS4gUmVwb3J0ZWQgYnkKCVRoaWVycnkgTGFyb25kZS4KCQoyMDAxLTA3LTA0ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2NvbXBpbGU6IE5ldyBmaWxlLgoJKiBkb2NzL21kYXRlLXNoOiBMaWtld2lzZS4KCSogZG9jcy90ZXhpbmZvLnRleDogTGlrZXdpc2UuCgkqIGNvbXBpbGU6IFJlbW92ZWQuCgkqIG1kYXRlLXNoOiBMaWtld2lzZS4KCSogdGV4aW5mby50ZXg6IExpa2V3aXNlLgoJKiBjb25maWcuZ3Vlc3M6IFVwZGF0ZWQgZnJvbSBhdXRvbWFrZS0xLjRoLgoJKiBjb25maWcuc3ViOiBMaWtld2lzZS4KCSogZGVwY29tcDogTGlrZXdpc2UuCgkqIGluc3RhbGwtc2g6IExpa2V3aXNlLgoJKiBtaXNzaW5nOiBMaWtld2lzZS4KCSogbWtpbnN0YWxsZGlyczogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZS5pbiAoQVMpOiBOZXcgdmFyaWFibGUuCgkoQVNGTEFHUyk6IExpa2V3aXNlLgoJKC0tZGlzYWJsZS1tZDUtcGFzc3dvcmQpOiBVc2UgRlNZU19DRkxBR1MgaW5zdGVhZCBvZiBDRkxBR1MuCgkqIHN0YWdlMS9NYWtlZmlsZS5hbSAoQU1fQ0ZMQUdTKTogUmVuYW1lZCB0byAuLi4KCShBTV9BU0ZMQUdTKTogLi4uIHRoaXMuCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAocHJlX3N0YWdlMl9leGVjX0FTRkxBR1MpOiBOZXcgdmFyaWFibGUuCgkoc3RhcnRfZXhlY19DRkxBR1MpOiBSZW5hbWVkIHRvIC4uLgoJKHN0YXJ0X2V4ZWNfQVNGTEFHUyk6IC4uLiB0aGlzLgoJKHN0YXJ0X2V4ZWMtc3RhcnQubyk6IFJlbmFtZWQgdG8gLi4uCgkoc3RhcnRfZXhlYy1zdGFydC4kKE9CSkVYVCkpOiAuLi4gdGhpcy4KCShlMmZzX3N0YWdlMV81X2V4ZWNfQVNGTEFHUyk6IE5ldyB2YXJpYWJsZS4KCShmYXRfc3RhZ2UxXzVfZXhlY19BU0ZMQUdTKTogTGlrZXdpc2UuCgkoZmZzX3N0YWdlMV81X2V4ZWNfQVNGTEFHUyk6IExpa2V3aXNlLgoJKG1pbml4X3N0YWdlMV81X2V4ZWNfQVNGTEFHUyk6IExpa2V3aXNlLgoJKHJlaXNlcmZzX3N0YWdlMV81X2V4ZWNfQVNGTEFHUyk6IExpa2V3aXNlLgoJKHZzdGFmc19zdGFnZTFfNV9leGVjX0FTRkxBR1MpOiBMaWtld2lzZS4KCShkaXNrbGVzc19leGVjX0FTRkxBR1MpOiBMaWtld2lzZS4KCShuYmxvYWRlcl9leGVjX0NGTEFHUyk6IFJlbmFtZWQgdG8gLi4uCgkobmJsb2FkZXJfZXhlY19BU0ZMQUdTKTogLi4uIHRoaXMuCgkobmJsb2FkZXJfZXhlYy1uYmxvYWRlci5vKTogUmVuYW1lZCB0byAuLi4KCShuYmxvYWRlcl9leGVjLW5ibG9hZGVyLiQoT0JKRVhUKSk6IC4uLiB0aGlzLgoJKHB4ZWxvYWRlcl9leGVjX0NGTEFHUyk6IFJlbmFtZWQgdG8gLi4uCgkocHhlbG9hZGVyX2V4ZWNfQVNGTEFHUyk6IC4uLiB0aGlzLgoJKHB4ZWxvYWRlcl9leGVjLXB4ZWxvYWRlci4kKE9CSkVYVCkpOiBOZXcgdGFyZ2V0LgoKMjAwMS0wNy0wMyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCQoJRnJvbSBKdWxpZW4gQm9yZGV0IDxqdWxpZW4uYm9yZGV0QGludC1ldnJ5LmZyPjoKCSogc3RhZ2UyL2kzODYtZWxmLmggKEVsZjMyX1NoZHIpOiBOZXcgdHlwZS4KCSogc3RhZ2UyL2Jvb3QuYyAobG9hZF9pbWFnZSk6IEFkZGVkIEVMRiBzeW1ib2wgbG9hZGluZyBzdXBwb3J0LgoJCjIwMDEtMDYtMjIgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvY2hhcl9pby5jIFtTVEFHRTFfNV0gKGdydWJfc3RyY21wKTogRGVmaW5lZCwgZXZlbgoJZm9yIFN0YWdlIDEuNS4gU2VlIHRoZWNvbW1lbnQsIGZvciBhIHBvc3NpYmxlIGZ1dHVyZSBzdHJhdGVneS4KCSogc3RhZ2UyL2ZzeXNfdnN0YWZzLmMgWyFGU1lTX1ZTVEFGU106IERvbid0IGRlZmluZSBhbnl0aGluZy4KCVtTVEFHRTFfNV0gKGdydWJfc3RyY21wKTogUmVtb3ZlZC4KCShnZXRfZmlsZV9pbmZvKTogTWFkZSBzdGF0aWMuCgkodnN0YWZzX3JlYWRkaXIpOiBMaWtld2lzZS4KCSh2c3RhZnNfbmV4dGRpcik6IExpa2V3aXNlLgoJKGN1cnJfZXh0KTogTGlrZXdpc2UuCgkoY3VycmVudF9kaXJlbnRyeSk6IExpa2V3aXNlLgoJKGN1cnJlbnRfYmxvY2twb3MpOiBMaWtld2lzZS4KCShhKTogTGlrZXdpc2UuCgkKMjAwMS0wNi0yMiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCglWU1RhIGZpbGVzeXN0ZW0gc3VwcG9ydCBpcyBhZGRlZC4KCQoJRnJvbSBLcmlzdG9mZmVyIEJy5W5lbXlyIDx6dGlvbkBzd2lwbmV0LnNlPjoKCSogc3RhZ2UyL2NvbmZpZ3VyZS5pbiAoLS1kaXNhYmxlLXZzdGFmcyk6IE5ldyBvcHRpb24uCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAobm9pbnN0X0hFQURFUlMpOiBBZGRlZCB2c3RhZnMuaC4KCShsaWJncnViX2FfU09VUkNFUyk6IEFkZGVkIGZzeXNfdnN0YWZzLmMuCgkobGliZ3J1Yl9hX0NGTEFHUyk6IEFkZGVkIC1ERlNZU19WU1RBRlM9MS4KCShwa2dkYXRhX0RBVEEpOiBBZGRlZCB2c3RhZnNfc3RhZ2UxXzUuCgkobm9pbnN0X1BST0dSQU1TKTogQWRkZWQgdnN0YWZzX3N0YWdlMV81LmV4ZWMuCgkocHJlX3N0YWdlMl9leGVjX1NPVVJDRVMpOiBBZGRlZCBmc3lzX3ZzdGFmcy5jLgoJKHZzdGFmc19zdGFnZTFfNV9leGVjX1NPVVJDRVMpOiBOZXcgdmFyaWFibGUuCgkodnN0YWZzX3N0YWdlMV81X2V4ZWNfQ0ZMQUdTKTogTGlrZXdpc2UuCgkodnN0YWZzX3N0YWdlMV81X2V4ZWNfTERGTEFHUyk6IExpa2V3aXNlLgoJKiBzdGFnZTIvZGlza19pby5jIChmc3lzX3RhYmxlKTogQWRkZWQgYW4gZW50cnkgZm9yIHZzdGFmcy4KCSogc3RhZ2UyL2ZpbGVzeXMuaCBbRlNZU19WU1RBRlNdIChGU1lTX1ZTVEFGU19OVU0pOiBEZWZpbmVkIGFzCgkxLgoJW0ZTWVNfVlNUQUZTXSAodnN0YWZzX21vdW50KTogTmV3IHByb3RvdHlwZS4KCVtGU1lTX1ZTVEFGU10gKHZzdGFmc19yZWFkKTogTGlrZXdpc2UuCglbRlNZU19WU1RBRlNdICh2c3RhZnNfZGlyKTogTGlrZXdpc2UuCglbIUZTWVNfVlNUQUZTXSAoRlNZU19WU1RBRlNfTlVNKTogRGVmaW5lZCBhcyAwLgoJKE5VTV9GU1lTKTogQWRkZWQgRlNZU19WU1RBRlNfTlVNLgoJKiBzdGFnZTIvcGNfc2xpY2UuaCAoUENfU0xJQ0VfVFlQRV9WU1RBRlMpOiBOZXcgbWFjcm8uCgkqIHN0YWdlMi9zaGFyZWQuaCAoU1RBR0UyX0lEX1ZTVEFGU19TVEFHRTFfNSk6IExpa2V3aXNlLgoJW1NUQUdFMV81ICYmIEZTWVNfVlNUQUZTXSAoU1RBR0UyX0lEKTogRGVmaW5lZCBhcwoJU1RBR0UyX0lEX1ZTVEFGU19TVEFHRTFfNS4KCSogc3RhZ2UyL3ZzdGFmcy5oOiBOZXcgZmlsZS4KCSogc3RhZ2UyL2ZzeXNfdnN0YWZzLmM6IExpa2V3aXNlLgoJCjIwMDEtMDYtMjIgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJRnJvbSBUaGllcnJ5IExhcm9uZGUgPHRoaWVycnlAY3JpNzQub3JnPjoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGNvbmZpZ2ZpbGVfZnVuYyk6IEFkZGVkIGEgcHJvdG90eXBlLgoJKGJvb3RwX2Z1bmMpOiBJZiBgLS13aXRoLWNvbmZpZ2ZpbGUnIGlzIGdpdmVuLCBzZXQKCVdJVEhfQ09ORklHRklMRSB0byBvbmUsIGFuZCBjYWxsIGNvbmZpZ2ZpbGVfZnVuYyB3aXRoCglDT05GSUdfRklMRS4KCQoyMDAxLTA2LTIxICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogZG9jcy9ncnViLnRleGk6IFVwZGF0ZSB0aGUgbG9jYXRpb24gb2YgdGhlIENWUyByZXBvc2l0b3J5CglbL2hvbWUvY3ZzIC0+IC9jdnNyb290L2dydWJdLgoJKiBSRUFETUU6IExpa2V3aXNlLgoJCjIwMDEtMDYtMTkgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvYm9vdC5jIChsb2FkX2ltYWdlKTogSWYgdGhlIGltYWdlIGlzIGEgTXVsdGlib290IEVMRiBPUwoJaW1hZ2UsIGdldCB0aGUgcGh5c2ljYWwgZW50cnkgYWRkcmVzcywgd2hlbiBhIGxvYWRlZCBtZW1vcnkKCXNlZ21lbnQgY29udGFpbnMgaXQuIEFuZCwgc2V0IEVOVFJZX0FERFIgdG8gaXQsIGFmdGVyIHByaW50aW5nCglvdXQgdGhlIHZpcnR1YWwgb25lLiBTdWdnZXN0ZWQgYnkgUm9nZWxpbyBNLiBTZXJyYW5vIEpyLgoJPHJvZ2VsaW9AdmljdG9yaW8uY29tPi4KCQoyMDAxLTA1LTMwICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogZG9jcy9ncnViLnRleGk6IEZpeCBzb21lIHR5cG9zLiBSZXBvcnRlZCBieSBGbG9yaWFuIEhhdGF0Cgk8bWluaW5ldEB3YW5hZG9vLmZyPi4KCQoyMDAxLTA1LTI5ICBQYXZlbCBSb3NraW4gIDxwcm9za2lAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoQUNfT1VUUFVUKTogUmVtb3ZlIGRlYmlhbi9NYWtlZmlsZS4KCjIwMDEtMDUtMjggIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBmaWcub3JnPgoKCSogTWFrZWZpbGUuYW0gKFNVQkRJUlMpOiBSZW1vdmUgcmVmZXJlbmNlIHRvIGRlYmlhbiBkaXJlY3RvcnkuCglQYWNrYWdpbmcgaXMgbm8gbG9uZ2VyIGRvbmUgYnkgdGhlIEdSVUIgdGVhbS4KCjIwMDEtMDUtMDMgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBmaWcub3JnPgoKCSogc3RhZ2UxL3N0YWdlMS5TIChudF9tYWdpYyk6IEV4cGxpY2l0bHkgcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIE5UCgltYWdpYyBudW1iZXIuCgoyMDAxLTA1LTI1ICBLbGF1cyBSZWljaGwgIDxLbGF1cy5SZWljaGxAYWxjYXRlbC5hdD4KCgkqIHN0YWdlMi9zdGFnZTIuYyAocHJpbnRfZW50cmllc19yYXcpOiBOZXcgZnVuY3Rpb24uCgkocnVuX21lbnUpOiBVc2UgaXQgdG8gaW1wbGVtZW50IG1lbnUgJiBjb21tYW5kLWxpc3QgaWYgb24gZHVtYgoJdGVybWluYWxzLiAgCglDaGFuZ2VzIGFyZToKCSAgQWRqdXN0IEZJUlNUX0VOVFJZIG9ubHkgb24gbm9uLWR1bWIgdGVybWluYWxzLgoJICBTZXR0aW5nIG9mIFNIT1dfTUVOVSBpcyBob25vdXJlZCBhbHNvIG9uIGR1bWIKCSAgICB0ZXJtaW5hbHMuIAoJICBMaWtlbHkgaWYgU0hPV19NRU5VIGlzIGZhbHNlLCBFU0MgYnJpbmdzIGhlciB0byB0aGUKCSAgICBtZW51IC0gbm90IHRvIHRoZSBjb21tYW5kLWxpbmUgYXMgYmVmb3JlLgoJICBQUklOVF9CT1JERVIsIEdPVE9YWSwgU0VUX0xJTkVfeHh4IGFyZSBvbmx5IGNhbGxlZCBpZgoJICAgIG5vdCBvbiBkdW1iIHRlcm1pbmFscy4KCSAgU2hvdyBlbnRyeSBudW1iZXIgd2hlbiB0aW1lb3V0IGlzIHJ1bm5pbmcgaWYgdGVybWluYWwgaXMgZHVtYi4KCSAgUHJvbXB0IHdpdGggZW50cnkgbnVtYmVyIHdoZW4gd2FpdGluZyBmb3Iga2V5cy4KCjIwMDEtMDUtMTQgIFBhdmVsIFJvc2tpbiAgPHByb3NraUBnbnUub3JnPgoKCSogc3RhZ2UyL3NoYXJlZC5oIChFTlRSWSk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBgIyMnLgoKMjAwMS0wNS0wMyAgSm9jaGVuIEhvZW5pY2tlICA8am9jaGVuQGdudS5vcmc+CgoJKiBncnViL2FzbXN0dWIuYyAoYmlvc2Rpc2spOiBXb3JrIGFyb3VuZCBhIGJ1ZyBpbiBsaW51eCdzIGV6CglyZW1hcHBpbmcuICBQcm9ibGVtIHJlcG9ydGVkIGJ5IEJlbiBCeWVyIDxiYnllckByaWNlLmVkdT4uCgkKMjAwMS0wMy0yOCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGZpZy5vcmc+CgoJKiBzdGFnZTIvYm9vdC5jIChsb2FkX2ltYWdlKTogRG9uJ3QgY2FzdCBlbnRyeV9hZGRyIHRvIGFuIGludCwgb3IKCXRoZSB0b3AgYml0IHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgdGhlIHNpZ24uCgoyMDAxLTAzLTE2ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUZyb20gQm9kbyBSdWVza2FtcCA8YnJAaXRjaGlnby5jb20+OgoJKiBzdGFnZTIvYm9vdC5jIChsb2FkX2luaXRyZCk6IEF2b2lkIHRoZSBsYXN0IDY0a2IgZm9yCglMaW51eCAyLjIueCBidWcuCgkKMjAwMS0wMy0wMyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGRvY3MvbXVsdGlib290LnRleGkgKEhpc3RvcnkpOiBXcml0dGVuLgoJCjIwMDEtMDItMjggIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJRnJvbSBIQVNFR0FXQSBUb21va2kgPHRoYXNlZ2F3YUBtdGEuYmlnbG9iZS5uZS5qcD46CgkqIGxpYi9kZXZpY2UuYyAoZ2V0X2lkZV9kaXNrX25hbWUpIFtfX0ZyZWVCU0RfX106IEFkZCBzdXBwb3J0Cglmb3IgRnJlZUJTRC00LjAgb3IgbGF0ZXIuIFVzZSAiL2Rldi9yYWQwIi4KCSogdXRpbC9ncnViLWluc3RhbGwuaW4gKGNvbnZlcnQpOiBBZGQgY29kZSBmb3IgRnJlZUJTRAoJZGlza2xhYmVscy4KCjIwMDEtMDItMjggIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJRnJvbSBUaGllcnJ5IExhcm9uZGUgPHRoaWVycnlAY3JpNzQub3JnPjoKCSogc3RhZ2UyL3N0YWdlMi5jIChjbWFpbik6IElmIHRoZSBkZWZhdWx0IGVudHJ5IGlzIHdyb25nLCBzZXQgaXQKCXRvIEZBTExCQUNLX0VOVFJZIGlmIEZBTExCQUNLX0VOVFJZIGlzIHZhbGlkLCBvdGhlcndpc2Ugc2V0IGl0Cgl0byB6ZXJvLiBTdWdnZXN0ZWQgYnkgTmljb2xhcyBCb29zIDxuaWNvbGFzLmJvb3NAd2FuYWRvby5mcj4uCgkKMjAwMS0wMi0yOCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGFjY29uZmlnLmggKEFVVE9fTElOVVhfTUVNX09QVCk6IE5ldyBlbnRyeS4KCSogY29uZmlndXJlLmluICgtLWRpc2FibGUtYXV0by1saW51eC1tZW0tb3B0KTogTmV3IG9wdGlvbi4KCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGtlcm5lbF9mdW5jKSBbIUFVVE9fTElOVVhfTUVNX09QVF06IEFkZAoJS0VSTkVMX0xPQURfTk9fTUVNX09QVElPTiBpbnRvIExPQURfRkxBR1MsIHdoZXRoZXIgdGhlIHVzZXIKCXNwZWNpZmllcyAtLW5vLW1lbS1vcHRpb24gb3Igbm90LgoJCjIwMDEtMDItMjcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoY2hhaW5sb2FkZXJfZnVuYyk6IERvbid0IGNoZWNrIGlmIHRoZQoJY3VycmVudCBwYXJ0aXRpb24gaXMgRkFULCBidXQgY2hlY2sgaWYgaXQgaGFzIGEgRkFUIHBhcnRpdGlvbgoJdHlwZSBhbmQgdGhlIEJQQiBoYXMgYSBzeXN0ZW0gaWQgc3RhcnRpbmcgd2l0aCAiTVNXSU4iLgoJCjIwMDEtMDItMjcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJQWRkZWQgaGVyY3VsZXMgc3VwcG9ydCBiYXNlZCBvbiBhIHBhdGNoIGJ5IEZyYW5rIE1laG5lcnQKCTxmbTNAb3MuaW5mLnR1LWRyZXNkZW4uZGU+LiBJIHRyYW5zbGF0ZWQgaGlzIGFzc2VtYmx5IGNvZGUgaW50bwoJQywgYW5kIHNlcGFyYXRlZCBoZXJjdWxlcyBmcm9tIHRoZSBub3JtYWwgY29uc29sZS4KCQoJKiBjb25maWd1cmUuaW4gKC0tZGlzYWJsZS1oZXJjdWxlcyk6IE5ldyBvcHRpb24uCgkKCSogZ3J1Yi9hc21zdHViLmM6IEluY2x1ZGUgPGhlcmN1bGVzLmg+LgoJKHNldF9hdHRyaWIpOiBSZW5hbWVkIHRvIC4uLgoJKGNvbnNvbGVfc2V0X2F0dHJpYik6IC4uLiB0aGlzLgoJKGhlcmNfY2xzKTogTmV3IGZ1bmN0aW9uLgoJKGhlcmNfZ2V0eHkpOiBMaWtld2lzZS4KCShoZXJjX2dvdG94eSk6IExpa2V3aXNlLgoJKGhlcmNfcHV0Y2hhcik6IExpa2V3aXNlLgoJKGhlcmNfc2V0X2F0dHJpYik6IExpa2V3aXNlLgoJCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAobm9pbnN0X0hFQURFUlMpOiBBZGRlZCBoZXJjdWxlcy5oLgoJKGxpYmdydWJfYV9DRkxBR1MpOiBBZGRlZCAtRFNVUFBPUlRfSEVSQ1VMRVM9MS4KCShIRVJDVUxFU19GTEFHUyk6IE5ldyB2YXJpYWJsZS4KCShTVEFHRTJfQ09NUElMRSk6IEFkZGVkICQoSEVSQ1VMRVNfRkxBR1MpLgoJKHByZV9zdGFnZTJfZXhlY19TT1VSQ0VTKTogQWRkZWQgaGVyY3VsZXMuYy4KCSogc3RhZ2UyL2FzbS5TIFshU1RBR0UxXzVdIChzZXRfYXR0cmliKSBSZW5hbWVkIHRvIC4uLgoJWyFTVEFHRTFfNV0gKGNvbnNvbGVfc2V0X2F0dHJpYik6IC4uLiB0aGlzLgoJKiBzdGFnZTIvYnVpbHRpbnMuYyBbU1VQUE9SVF9IRVJDVUxFU10gKHRlcm1pbmFsX2Z1bmMpOiBBZGRlZAoJaGVyY3VsZXMgc3VwcG9ydC4KCShidWlsdGluX3RhYmxlKSBbU1VQUE9SVF9IRVJDVUxFU106IEFkZGVkIGEgcG9pbnRlciB0bwoJQlVJTFRJTl9URVJNSU5BTC4KCSogc3RhZ2UyL2NoYXJfaW8uYyBbU1VQUE9SVF9IRVJDVUxFU106IEluY2x1ZGUgPGhlcmN1bGVzLmg+LgoJWyFTVEFHRTFfNV0gKGdldF9jbWRsaW5lKSBbU1VQUE9SVF9IRVJDVUxFU106IEFkZGVkIGhlcmN1bGVzCglzdXBwb3J0LgoJWyFTVEFHRTFfNV0gKGdldGtleSkgW1NVUFBPUlRfSEVSQ1VMRVNdOiBMaWtld2lzZS4KCVshU1RBR0UxXzVdIChjaGVja2tleSkgW1NVUFBPUlRfSEVSQ1VMRVNdOiBMaWtld2lzZS4KCShncnViX3B1dGNoYXIpIFtTVVBQT1JUX0hFUkNVTEVTXTogTGlrZXdpc2UuCglbIVNUQUdFMV81XSAoZ290b3h5KSBbU1VQUE9SVF9IRVJDVUxFU106IExpa2V3aXNlLgoJWyFTVEFHRTFfNV0gKGdldHh5KSBbU1VQUE9SVF9IRVJDVUxFU106IExpa2V3aXNlLgoJWyFTVEFHRTFfNV0gKGNscykgW1NVUFBPUlRfSEVSQ1VMRVNdOiBMaWtld2lzZS4KCShzZXRfYXR0cmliKTogTmV3IGZ1bmN0aW9uLgoJKiBzdGFnZTIvc2hhcmVkLmggKGNvbnNvbGVfc2V0X2F0dHJpYik6IERlY2xhcmVkLgoJKFRFUk1JTkFMX0hFUkNVTEVTKTogTmV3IG1hY3JvLgoJKiBzdGFnZTIvc3RhZ2UyLmMgKHJ1bl9tZW51KSBbU1VQUE9SVF9IRVJDVUxFU106IEFkZGVkIGhlcmN1bGVzCglzdXBwb3J0LgoJKiBzdGFnZTIvaGVyY3VsZXMuaDogTmV3IGZpbGUuCgkqIHN0YWdlMi9oZXJjdWxlcy5jOiBMaWtld2lzZS4KCQoyMDAxLTAyLTE3ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUZyb20gIlRyZXV0d2VpbjsgQmVybmhhcmQiCgk8QmVybmhhcmQuVHJldXR3ZWluQFZlcndhbHR1bmcuVW5pLU11ZW5jaGVuLkRFPjoKCSogZG9jcy9ncnViLnRleGkgKERPUy9XaW5kb3dzKTogSW1wcm92ZWQgdGhlIHJlYWRhYmlsaXR5LgoJCjIwMDEtMDItMTEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBkb2NzL2dydWIudGV4aSAoQ29tbWFuZC1saW5lIGFuZCBtZW51IGNvbW1hbmRzKTogUmVuYW1lZCB0byAuLi4KCShHZW5lcmFsIGNvbW1hbmRzKTogLi4uIHRoaXMuCgkKMjAwMS0wMi0wOCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9hc20uUyBbU1RBR0UxXzVdIChjaGFpbl9zdGFnZTIpOiBTYXZlIHRoZSBzZWNvbmQgc2VjdG9yCglvZiBzdGFnZTIgaW4gJWVjeCB0ZW1wb3JhcmlseSwgYW5kIHNldCAlZWJwIHRvICVlY3ggYWZ0ZXIKCXN3aXRjaGluZyB0byBwcm90ZWN0ZWQgbW9kZS4gSSBmb3Jnb3QgdGhhdCAlZWJwIGlzIGJyb2tlbiBieQoJcm90X3RvX3JlYWwuIFJlcG9ydGVkIGJ5IFRvcnZhbGQgUmllZ2VsCgk8dHIxNkBpbmYudHUtZHJlc2Rlbi5kZT4uCgkKMjAwMS0wMi0wOCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGRvY3MvZ3J1Yi1uZXcudGV4aTogTW92ZWQgdG8gLi4uCgkqIGRvY3MvZ3J1Yi50ZXhpOiAuLi4gaGVyZS4gQW5kLCBpbmNsdWRlIGludGVybmFscy50ZXhpLgoJKiBkb2NzL2ludGVybmFscy50ZXhpOiBOZXcgZmlsZS4KCSogZG9jcy9wcm9nLXJlZi50ZXhpOiBSZW1vdmVkLgoJKiBkb2NzL3VzZXItcmVmLnRleGk6IExpa2V3aXNlLgoJKiBkb2NzL3R1dG9yaWFsLnRleGk6IExpa2V3aXNlLgoJKiBkb2NzL2FwcGVuZGljZXMudGV4aTogTGlrZXdpc2UuCgkqIGRvY3MvTWFrZWZpbGUuYW0gKGdydWJfVEVYSU5GT1MpOiBSZW1vdmVkIHByb2ctcmVmLnRleGksCgl1c2VyLXJlZi50ZXhpLCB0dXRvcmlhbC50ZXhpLCBhbmQgYXBwZW5kaWNlcy50ZXhpLiBBZGRlZAoJaW50ZXJuYWxzLnRleGkuCgkKMjAwMS0wMi0wMyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCglGcm9tIEVyaWsgU2Nob2VuZmVsZGVyIDxzY2hvZW5mckBnYWVydG5lci5kZT46CgkqIHN0YWdlMi9zaGFyZWQuaCAoTElOVVhfSU5JVFJEX01BWF9BRERSRVNTKTogQ2hhbmdlZCBmcm9tCgkweDNDMDAwMDAwIHRvIDB4MzgwMDAwMDAuCgkKMjAwMS0wMi0wMyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChzYXZlZGVmYXVsdF9mdW5jKQoJWyFTVVBQT1JUX0RJU0tMRVNTICYmICFHUlVCX1VUSUxdOiBDaGVjayBpZiB0aGUgdmVyc2lvbgoJY29udGFpbmVkIGluIHRoZSBidWZmZXIgbWF0Y2hlcyB0byBjdXJyZW50IG9uZSBhcyB3ZWxsLgoJCjIwMDEtMDItMDIgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoc2F2ZWRlZmF1bHRfZnVuYykKCVshU1VQUE9SVF9ESVNLTEVTUyAmJiAhR1JVQl9VVElMXTogQ2hlY2sgaWYgdGhlIHN0YWdlMiBpZCBpcwoJU1RBR0UyX0lEX1NUQUdFMi4gU3VnZ2VzdGVkIGJ5IEpvY2hlbiBIb2VuaWNrZS4KCQoJKiBzdGFnZTIvc3RhZ2UyLmMgKGNtYWluKTogSWYgREVGQVVMVF9FTlRSWSBpcyBvdXQgb2YgZW50cmllcywKCXJlc2V0IERFRkFVTFRfRU5UUlkgdG8gemVyby4KCQoyMDAxLTAyLTAyICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCU1ha2Ugc2F2ZWRlZmF1bHQgd29ya2FibGUgZXZlbiB3aXRoIFN0YWdlIDEuNS4gUmVwb3J0ZWQgYnkKCVRoaWVycnkgTGFyb25kZSA8dGhpZXJyeUBjcmk3NC5vcmc+LgoJCgkqIGdydWIvYXNtc3R1Yi5jIChjaGFpbl9zdGFnZTIpOiBBZGRlZCBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50LAoJU0VDT05EX1NFQ1RPUi4KCSogc3RhZ2UyL2FzbS5TIFtTVEFHRTFfNV0gKGNoYWluX3N0YWdlMik6IFNldCAlZWJwIHRvCglTRUNPTkRfU0VDVE9SLgoJKiBzdGFnZTIvZGlza19pby5jIFtTVEFHRTFfNV0gKGRpc2tfcmVhZF9ob29rKTogRGVmaW5lZC4KCVtTVEFHRTFfNV0gKGRpc2tfcmVhZF9mdW5jKTogTGlrZXdpc2UuCgkocmF3cmVhZCkgW1NUQUdFMV81XTogSGFuZGxlIERJU0tfUkVBRF9GVU5DLgoJKGdydWJfcmVhZCkgW1NUQUdFMV81XTogTGlrZXdpc2UuCgkqIHN0YWdlMi9mc3lzX2V4dDJmcy5jIChleHQyZnNfcmVhZCkgW1NUQUdFMV81XTogTGlrZXdpc2UuCgkqIHN0YWdlMi9mc3lzX2ZhdC5jIChmYXRfcmVhZCkgW1NUQUdFMV81XTogTGlrZXdpc2UuCgkqIHN0YWdlMi9mc3lzX2Zmcy5jIChmZnNfcmVhZCkgW1NUQUdFMV81XTogTGlrZXdpc2UuCgkqIHN0YWdlMi9mc3lzX21pbml4LmMgKG1pbml4X3JlYWQpIFtTVEFHRTFfNV06IExpa2V3aXNlLgoJKiBzdGFnZTIvZnN5c19yZWlzZXJmcy5jIChyZWlzZXJmc19yZWFkKSBbU1RBR0UxXzVdOiBMaWtld2lzZS4KCQoyMDAxLTAyLTAyICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogbmV0Ym9vdC9jb25maWcuYyBbR1JVQiAmJiBJTkNMVURFX1BDSV0gKHBjaV9kaXNwYXRjaF90YWJsZSk6CglOZXcgc3RydWN0dXJlLgoJW0dSVUIgJiYgSU5DTFVERV9QQ0ldIChQQ0lfTklDKTogTmV3IHZhcmlhYmxlLgoJKGV0aF9wcm9iZSkgW0dSVUIgJiYgSU5DTFVERV9QQ0ldOiBJZiBhIFBDSSBOSUMgY2FuZGlkYXRlIGlzCglwcmVzZW50LCBwcm9iZSBpdCBmaXJzdC4KCQoyMDAxLTAxLTI3ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUZyb20gRGFuaWxvIEdvZGVjIDxkYW5jaUBhZ2VuZGEuc2k+OgoJKiBzdGFnZTIvcGNfc2xpY2UuaCAoUENfU0xJQ0VfVFlQRV9MSU5VWF9SQUlEKTogTmV3IG1hY3JvLgoJKiBzdGFnZTIvZnN5c19leHQyZnMuYyAoZXh0MmZzX21vdW50KTogQWRkIGEgY2hlY2sgZm9yCglQQ19TTElDRV9MSU5VWF9SQUlELgoJCjIwMDEtMDEtMjcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJRnJvbSBCZXJuaGFyZCBUcmV1dHdlaW4KCTxCZXJuaGFyZC5UcmV1dHdlaW5AVmVyd2FsdHVuZy5VbmktTXVlbmNoZW4uREU+OgoJKiBkb2NzL2dydWItbmV3LnRleGkgKERPUy9XaW5kb3dzKTogTWFkZSBtb3JlIHJlYWRhYmxlLgoJCjIwMDEtMDEtMjcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBkb2NzL211bHRpYm9vdC50ZXhpOiBTdGFydCByZW9yZ2FuaXppbmcgTXVsdGlib290CglTcGVjaWZpY2F0aW9uLgoJCjIwMDEtMDEtMTUgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJRnJvbSBUaGllcnJ5IExhcm9uZGUgPHRoaWVycnkubGFyb25kZUBwb2x5bnVtLmNvbT46CgkqIGRvY3MvdXNlci1yZWYudGV4aSAoQ29tbWFuZC1saW5lIGFuZCBtZW51IGNvbW1hbmRzKTogVXBkYXRlCgl0aGUgZGVzY3JpcHRpb24gYWJvdXQgc2V0a2V5LgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoc2V0a2V5X2Z1bmMpOiBXaGVuIGNoZWNraW5nIGlmIFRPX0tFWSBhbmQKCUZST01fS0VZIGFyZSBzcGVjaWZpZWQsIHNlZSAqVE9fS0VZIGFuZCAqRlJPTV9LRVkgaW5zdGVhZCBvZgoJVE9fS0VZIGFuZCBGUk9NX0tFWSwgcmVzcGVjdGl2ZWx5LgoJCjIwMDEtMDEtMTMgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJRnJvbSBUaGllcnJ5IExhcm9uZGUgPHRoaWVycnkubGFyb25kZUBwb2x5bnVtLmNvbT46CgkqIHV0aWwvZ3J1Yi1tZDUtY3J5cHQuaW4gKHByZWZpeCk6IE5ldyB2YXJpYWJsZS4KCShleGVjX3ByZWZpeCk6IExpa2V3aXNlLgoJKHNiaW5kaXIpOiBMaWtld2lzZS4KCQoyMDAxLTAxLTEyICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogZG9jcy9tdWx0aWJvb3QuaCBbX19FTEZfX10gKE1VTFRJQk9PVF9IRUFERVJfRkxBR1MpOiBEZWZpbmVkCglhcyAweDAwMDAwMDAzIGluc3RlYWQgb2YgMHgwMDAxMDAwMy4KCSogZG9jcy9ib290LlMgKG11bHRpYm9vdF9oZWFkZXIpIFtfX0VMRl9fXTogRG9uJ3QgZGVmaW5lIGEub3V0CglrbHVkZ2UgaW5mb3JtYXRpb24uCgkKCSogZG9jcy9NYWtlZmlsZS5hbSAoRVhUUkFfUFJPR1JBTVMpOiBOZXcgdmFyaWFibGUuCglbQlVJTERfRVhBTVBMRV9LRVJORUxdIChub2luc3RfREFUQSk6IFJlbW92ZWQuCglbQlVJTERfRVhBTVBMRV9LRVJORUxdIChub2luc3RfUFJPR1JBTVMpOiBDaGFuZ2VkIHRvIGtlcm5lbC4KCVtCVUlMRF9FWEFNUExFX0tFUk5FTF0gKGtlcm5lbF9leGVjX1NPVVJDRVMpOiBSZW5hbWVkIHRvIC4uLgoJW0JVSUxEX0VYQU1QTEVfS0VSTkVMXSAoa2VybmVsX1NPVVJDRVMpOiAuLi4gdGhpcy4KCVtCVUlMRF9FWEFNUExFX0tFUk5FTF0gKGtlcm5lbF9leGVjX0NGTEFHUyk6IFJlbmFtZWQgdG8gLi4uCglbQlVJTERfRVhBTVBMRV9LRVJORUxdIChrZXJuZWxfQ0ZMQUdTKTogLi4uIHRoaXMuCglbQlVJTERfRVhBTVBMRV9LRVJORUxdIChrZXJuZWxfZXhlY19MREZMQUdTKTogUmVuYW1lZCB0byAuLi4KCVtCVUlMRF9FWEFNUExFX0tFUk5FTF0gKGtlcm5lbF9MREZMQUdTKTogLi4uIHRoaXMuCglbQlVJTERfRVhBTVBMRV9LRVJORUxdIChrZXJuZWwpOiBSZW1vdmVkLgoJW0JVSUxEX0VYQU1QTEVfS0VSTkVMXSAoYm9vdC5vKTogTmV3IGRlcGVuZGVuY3kuCgkoQ0xFQU5GSUxFUyk6IE5ldyB2YXJpYWJsZS4KCQoyMDAxLTAxLTExICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgW1NVUFBPUlRfTkVUQk9PVF0gKGlmY29uZmlnX2Z1bmMpOiBBbHdheXMKCXByaW50IGN1cnJlbnQgbmV0d29yayBjb25maWd1cmF0aW9uLgoJW1NVUFBPUlRfTkVUQk9PVF0gKHRmdHBzZXJ2ZXJfZnVuYyk6IFVzZSBpZmNvbmZpZyBpbnN0ZWFkIG9mCglhcnBfc2VydmVyX292ZXJyaWRlLgoJKiBuZXRib290L21haW4uYyAoYXJwX3NlcnZlcl9vdmVycmlkZSk6IFJlbW92ZWQuCgkqIG5ldGJvb3QvZXRoZXJib290LmggKGFycF9zZXJ2ZXJfb3ZlcnJpZGUpOiBMaWtld2lzZS4KCjIwMDEtMDEtMTEgIEV1Z2VuZSBEb3VkaW5lICA8ZHVkaW5AbnAubmsubm9ybmlrLnJ1PgoJCgkqIHN0YWdlMi9idWlsdGlucy5jIFtTVVBQT1JUX05FVEJPT1RdIChpZmNvbmZpZ19mdW5jKTogTmV3CglmdW5jdGlvbiB0byBjb25maWd1cmUgbmV0d29yayBpbnRlcmZhY2UgZnJvbSBjb21tYW5kIGxpbmUuCglbU1VQUE9SVF9ORVRCT09UXSAoYnVpbHRpbl9pZmNvbmZpZyk6IE5ldyB2YXJpYWJsZS4KCVtTVVBQT1JUX05FVEJPT1RdIChidWlsdGluX3RhYmxlKTogQWRkZWQgYSBwb2ludGVyIHRvCglCVUlMVElOX0lGQ09ORklHLgoJKiBuZXRib290L21haW4uYyAoaWZjb25maWcpOiBOZXcgZnVuY3Rpb24uCgkqIG5ldGJvb3QvZXRoZXJib290LmggKGlmY29uZmlnKTogQWRkZWQgdGhlIHByb3RvdHlwZS4KCQoyMDAxLTAxLTExICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogZG9jcy9NYWtlZmlsZS5hbSBbQlVJTERfRVhBTVBMRV9LRVJORUxdIChub2luc3RfREFUQSk6IE5ldwoJdmFyaWFibGUuCglbQlVJTERfRVhBTVBMRV9LRVJORUxdIChub2luc3RfUFJPR1JBTVMpOiBMaWtld2lzZS4KCVtCVUlMRF9FWEFNUExFX0tFUk5FTF0gKGtlcm5lbF9leGVjX1NPVVJDRVMpOiBMaWtld2lzZS4KCVtCVUlMRF9FWEFNUExFX0tFUk5FTF0gKGtlcm5lbF9leGVjX0NGTEFHUyk6IExpa2V3aXNlLgoJW0JVSUxEX0VYQU1QTEVfS0VSTkVMXSAoa2VybmVsX2V4ZWNfTERGTEFHUyk6IExpa2V3aXNlLgoJW0JVSUxEX0VYQU1QTEVfS0VSTkVMXSAoa2VybmVsKTogTmV3IHRhcmdldC4KCSogY29uZmlndXJlLmluICgtLWVuYWJsZS1leGFtcGxlLWtlcm5lbCk6IE5ldyBvcHRpb24uCgoJKiBkb2NzL2tlcm5lbC5jIChjbWFpbik6IENhc3QgdW5zaWduZWQgbG9uZyB2YXJpYWJsZXMgdG8KCXVuc2lnbmVkIGV4cGxpY2l0bHksIHRvIHN1cHByZXNzIEdDQyB3YXJuaW5ncy4KCQoyMDAxLTAxLTA4ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL3NoYXJlZC5oIChCT09UU0VDX0JQQl9ISURERU5fU0VDVE9SUyk6IE5ldyBtYWNyby4KCQoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoY2hhaW5sb2FkZXJfZnVuYyk6IElmIENVUlJFTlRfUEFSVElUSU9OIGlzCglGQVQsIHNldCB0aGUgaGlkZGVuIHNlY3RvcnMgZmllbGQgb2YgdGhlIEJQQiB0byBQQVJUX1NUQVJULCB0bwoJYXZvaWQgYSBXaW5kb3dzIGJ1ZyB3aGljaCBhZmZlY3RzIG9ubHkgd2hlbiBXaW5kb3dzIGlzIGJvb3RlZAoJZnJvbSBhIGxvZ2ljYWwgcGFydGl0aW9uLiBBbmQsIGNsZWFyIEVSUk5VTSBhZnRlciB0ZXN0aW5nIGlmIGEKCXBhcnRpdGlvbiBpcyBGQVQsIGJlY2F1c2Ugb3Blbl9wYXJ0aXRpb24gb3IgZmF0X21vdW50IG1heSBzZXQKCUVSUk5VTS4gUmVwb3J0ZWQgYnkgSW5nbyBLb3JiIDxpbmdvQGFrYW5hLmRlPi4KCQoyMDAxLTAxLTA3ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGJvb3RfZnVuYyk6IEluIHRoZSBjaGFpbi1sb2FkaW5nIG1vZGUsCgljbGVhciB0aGUgYWN0aXZlIGZsYWcgb2YgZWFjaCBvZiB0aGUgbG9hZGVkIHBhcnRpdGlvbiBlbnRyaWVzLAoJYW5kIHRoZW4gc2V0IHRoZSBhY3RpdmUgZmxhZyBvZiB0aGUgYm9vdGVkIHBhcnRpdGlvbiBpbWFnZS4KCQoyMDAxLTAxLTA0ICBKb2NoZW4gSG9lbmlja2UgIDxqb2NoZW5AZ251Lm9yZz4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChlbWJlZF9mdW5jKTogQ2FsbCBvcGVuX3BhcnRpdGlvbigpIGV2ZW4gZm9yCiAJTUJSLCBzbyB0aGF0IHBhcnRfc3RhcnQgaXMgY29ycmVjdC4gIFRoaXMgZml4ZXMgYSBidWcgcmVwb3J0ZWQgYnkKIAlNYXR0aGlhcyBHcmFuYmVycnkgPG1hdHRoaWFzQHNsdXJwZWUub3JnPi4KCQoyMDAwLTEyLTIyICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2Rpc2tfaW8uYyAobWFrZV9zYXZlZF9hY3RpdmUpOiBDaGFuZ2UgdGhlIHZhcmlhYmxlIG5hbWUKCWBgTUJSJycgdG8gbG93ZXIgY2FzZS4KCShzZXRfcGFydGl0aW9uX2hpZGRlbl9mbGFnKTogTGlrZXdpc2UuCgkKMjAwMC0xMi0yMCAgSm9jaGVuIEhvZW5pY2tlICA8am9jaGVuQGdudS5vcmc+CgoJRnJvbSBDZWRyaWMgV2FyZSA8d2FyZUBjb20uZW5zdC5mcj46CgkqIHN0YWdlMi9mc3lzX2V4dDIuYyAoZXh0MmZzX21vdW50KTogRGV0ZWN0IGV4dDIgcGFydGl0aW9ucyBpbgoJYSBPcGVuQlNEL05ldEJTRCBGU19FWFQyRlMgc2xpY2UuCgkqIHN0YWdlMi9wY19zbGljZS5oIChGU19BRE9TKTogTmV3IE1hY3JvIGZyb20gT3BlbkJTRC9OZXRCU0QuCgkoRlNfSEZTKTogTGlrZXdpc2UuCgkoRlNfRklMRUNPUkUpOiBMaWtld2lzZS4KCShGU19FWFQyRlMpOiBMaWtld2lzZS4KCQoyMDAwLTEyLTE3ICBKb2NoZW4gSG9lbmlja2UgIDxqb2NoZW5AZ251Lm9yZz4KCgkqIHN0YWdlMi9kaXNrX2lvLmMgKHJhd3JlYWQpOiBDaGVjayBpZiB0aGVyZSBpcyBhIEVaRCBwYXJ0aXRpb24KCWFuZCByZW1hcCBzZWN0b3IgMCB0byBzZWN0b3IgMSBsaWtlIEVaLUJJT1MgZG9lcy4KCShyYXd3cml0ZSk6IE5ldyBmdW5jdGlvbiB0byB3cml0ZSB0byBkaXNrLiAgQWxzbyBkb2VzIEVaRAoJcmVtYXBwaW5nLgoJKGRldndyaXRlKTogTmV3IGZ1bmN0aW9uLiAgRG9lcyB0aGUgc3BlY2lhbCByZW1hcHBpbmcgdG8KCXBhcnRpdGlvbnMgbmVlZGVkIGZvciBsaW51eC4gIFRoaXMgY29udGFpbnMgdGhlIGNvZGUgdGhhdCB3YXMKCXByZXZpb3VzbHkgZHVwbGljYXRlZCBpbiBlbWJlZF9mdW5jIGFuZCBpbnN0YWxsX2Z1bmMgYXQgc2V2ZXJhbAoJcGxhY2VzLgoJKG1ha2Vfc2F2ZWRfYWN0aXZlKTogVXNlIHJhd3dyaXRlLiBEb24ndCB1c2UgU0NSQVRDSFNFRywgYXMgaXQgaXMKCW5lZWRlZCBieSBkZXZ3cml0ZS4KCShzZXRfcGFydGl0aW9uX2hpZGRlbl9mbGFnKTogTGlrZXdpc2UuCQoJKiBzdGFnZTIvZGlza19pby5oIChyYXd3cml0ZSk6IE5ldyBmdW5jdGlvbi4KCShkZXZ3cml0ZSk6IExpa2V3aXNlLgoJKiBzdGFnZTIvcGNfc2xpY2UuaCAoUENfU0xJQ0VfVFlQRV9FWkQpOiBOZXcgbWFjcm8uCgkqIHN0YWdlMi9idWlsdGlucy5jIChlbWJlZF9pbmZvKTogTmV3IHZhcmlhYmxlIHRvIHN0b3JlIHRoZQoJcG9zaXRpb24gb2YgdGhlIGVtYmVkZGVkIHN0YWdlMV81IGZvciBzZXR1cF9mdW5jLgoJKGVtYmVkX2Z1bmMpOiBEb24ndCBlbWJlZCBhZnRlciB0aGUgTUJSIGlmIGFuIEVaLUJJT1MgaXMgZGV0ZWN0ZWQKCXRoZXJlLiAgVXNlIHRoZSBuZXcgZGV2d3JpdGUgbWV0aG9kLiAgSWYgZW1iZWRkaW5nIGlzIHN1Y2Nlc3NmdWwKCXN0b3JlIHBvc2l0aW9uIGluIGVtYmVkX2luZm8uCgkoaW5zdGFsbF9mdW5jKTogVXNlIGRldndyaXRlLiAgRG9uJ3QgdXNlIFNDUkFUQ0hTRUcuCgkocGFydG5ld19mdW5jKTogVXNlIHJhd3dyaXRlLiAgRG9uJ3QgdXNlIFNDUkFUQ0hTRUcuCgkocGFydHR5cGVfZnVuYyk6IExpa2V3aXNlLgoJKHNhdmVkZWZhdWx0X2Z1bmMpOiBMaWtld2lzZS4KCShzZXR1cF9mdW5jKTogTmV3IG5lc3RlZCBmdW5jdGlvbiBlbWJlZF9zdGFnZTFfNS4gIFN0YWdlMV81IGlzIG5vdwoJYWxzbyBiZSBlbWJlZGRlZCBpbnRvIGZpbGVzeXN0ZW1zIHdoaWNoIHN1cHBvcnRzIHRoYXQuCgkKMjAwMC0xMi0xNyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChjaGFpbmxvYWRlcl9mdW5jKTogU2V0IEVSUk5VTSB0bwoJRVJSX0VYRUNfRk9STUFULCB3aGVuIEVSUk5VTSBpcyBFUlJfTk9ORSwgZXZlbiBpZiBncnViX3JlYWQKCWZhaWxzIGluIHJlYWRpbmcgb25lIHNlY3Rvci4KCQoyMDAwLTEyLTE0ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogZG9jcy9wcm9nLXJlZi50ZXhpIChQYXJ0aXRpb24gdHlwZXMpOiBSZXdyaXRlIHRoZSBmb290bm90ZXMuCglTdWdnZXN0ZWQgYnkgUmFsZi5NZWRvd0B0LW9ubGluZS5kZSAoUmFsZiBNZWRvdykuCgkKMjAwMC0xMi0xNCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCglGcm9tIEVyaWsgU2Nob2VuZmVsZGVyIDxzY2hvZW5mckBnYWVydG5lci5kZT46CgkqIHV0aWwvZ3J1Yi1pbnN0YWxsLmluIChjb252ZXJ0KTogUmV2aXNlZCB0aGUgZml4IGZvciBmbG9wcHkKCWRldmljZSBoYW5kbGluZy4KCQoyMDAwLTEyLTE0ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUZyb20gSE9SSUtBV0EgS2F6dW5vcmkgPGthei1ob3JpQHRrZC5hdHQubmUuanA+OgoJKiBzdGFnZTIvYmlvcy5jIChnZXRfZGlza2luZm8pOiBBcHBlbmQgMTYgYnl0ZXMgZHVtbXkgZGF0YSB0bwoJRFJQLCBiZWNhdXNlIHRoZSBCSU9TIG9mIFRoaW5rcGFkIFgyMCB3cml0ZSBhIGdhcmJhZ2UgYmV5b25kIHRoZQoJc2l6ZSBvZiB0aGUgc3RydWN0dXJlLgoJCjIwMDAtMTItMDkgIEpvY2hlbiBIb2VuaWNrZSAgPGpvY2hlbkBnbnUub3JnPgoKCSogc3RhZ2UyL2Rpc2tfaW8uYyAobmV4dF9wYXJ0aXRpb24pOiBNYXNrIG91dCBic2QgcGFydGl0aW9uIHN1YgoJdHlwZSB3aGVuIGNoZWNraW5nIGlmIGxhc3QgcGFydGl0aW9uIHdhcyBhIGJzZCBwYXJ0aXRpb24uCglSZXBvcnRlZCBieSBIZWlra2kgVmF0aWFpbmVuIDxoZXNzdUBjcy50dXQuZmk+LgoJCjIwMDAtMTItMDkgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJRnJvbSBMZWVuZGVydCBNZXllciA8bGVlbi5tZXllckBob21lLm5sPjoKCSogdXRpbC9ncnViLWluc3RhbGwuaW4gKGNvbnZlcnQpOiBJZiBhIGZsb3BweSBkZXZpY2UgaXMKCXNwZWNpZmllZCwgcmVtb3ZlIGV2ZXJ5dGhpbmcgZnJvbSAkdG1wX3BhcnQuCgkKMjAwMC0xMi0wOSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGxpYi9kZXZpY2UuYyBbX19saW51eF9fXSAod3JpdGVfdG9fcGFydGl0aW9uKTogVXNlIHN0cmNweQoJaW5zdGVhZCBvZiBzdHJjYXQsIHRvIG92ZXJ3cml0ZSAiL2Rpc2MiLiBSZXBvcnRlZCBieSBUaGlhZ28KCU1hY2llaXJhIDx0aGlhZ29tQG1haWwuY29tPi4KCQoyMDAwLTEyLTA1ICBKb2NoZW4gSG9lbmlja2UgIDxqb2NoZW5AZ251Lm9yZz4KCgkqIHN0YWdlMi9mc3lzX21pbml4LmMgKG1pbml4X21vdW50KTogQ29ycmVjdGVkIHRoZSBjaGVjayBmb3IKCUlTX1BDX1NMSUNFX1RZUEVfTUlOSVg7IG1pbml4IHdhcyBvbmx5IHdvcmtpbmcgaWYgc2xpY2UgdHlwZSB3YXMKCXdyb25nISBSZXBvcnRlZCBieSBSYWxmIE1lZG93IDxyYWxmLm1lZG93QHQtb25saW5lLmRlPi4KCQoyMDAwLTExLTI3ICBKb2NoZW4gSG9lbmlja2UgIDxqb2NoZW5AZ251Lm9yZz4KCgkqIHN0YWdlMi9mc3lzX3JlaXNlcmZzLmM6IEhhbmRsZSBpdGVtcyB3aXRoIG9sZCB2ZXJzaW9uIGtleSBvbgoJbmV3IHZlcnNpb24gcmVpc2VyZnMgcGFydGl0aW9uLgoJKEtfT0ZGU0VUKTogUmVtb3ZlZC4KCShJSF9LRVlfT0ZGU0VUKTogTmV3IE1hY3JvLCB3aGljaCBjaGVja3MgaXRlbSBoZWFkIHZlcnNpb24uCgkoSUhfS0VZX0lTT0ZGU0VUKTogTGlrZXdpc2UuCgkocmVpc2VyZnNfcmVhZCk6IFVzZSBuZXcgbWFjcm9zLgoJKHJlaXNlcmZzX2Rpcik6IEZpeGVkIHZlcnNpb24gY2hlY2sgZm9yID40R0Igc3RhdCBlbnRyaWVzLgoJCjIwMDAtMTEtMjcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvY29tbW9uLmMgKGluaXRfYmlvc19pbmZvKSBbIVNUQUdFMV81XTogRG9uJ3QgY2FsbAoJdHJhY2tfaW50MTMsIGJlY2F1c2UgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaGFuZ3MgdXAgaW4gc29tZQoJZW52aXJvbm1lbnRzLgoJCjIwMDAtMTEtMjcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBncnViL2FzbXN0dWIuYyAoc2VyaWFsX2luaXQpIFshT19TWU5DXTogRG9uJ3Qgc3BlY2lmeSBPX1NZTkMKCXRvIG9wZW4gU0VSSUFMX0RFVklDRS4KCShzZXJpYWxfaW5pdCkgW09fRlNZTkNdOiBTcGVjaWZ5IE9fRlNZTkMgdG8gb3BlbiBTRVJJQUxfREVWSUNFLgoJUmVwb3J0ZWQgYnkgRmFyaWQgSGFqamkgPGZhcmlkLmhhamppQG9iLmthbXAubmV0Pi4KCQoyMDAwLTExLTIyICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUZyb20gVmVzYSBKYWFza2VsYWluZW4gPGphYXNrZWxhQHRpZXRvbXlyc2t5LmZpPjoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKHRlc3R2YmVfZnVuYyk6IERvbid0IHNldCB0aGUgYml0IDE0IG9mIGEKCVZCRSBtb2RlIG51bWJlciBleHBsaWNpdGx5IHdoZW4gY2FsbGluZyBnZXRfdmJlX21vZGVfaW5mby4KCSh2YmVwcm9iZV9mdW5jKTogTGlrZXdpc2UuCgkKMjAwMC0xMS0yMiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCglUaGUgY29kZSBmb3IgdGhlICJJTlQgMTNIIHRyYWNraW5nIHRlY2huaXF1ZSIgaXMgc29tZXdoYXQKCXNpbXBsaWZpZWQuCgoJKiBzdGFnZTIvYXNtLlMgWyFTVEFHRTFfNV0gKHRyYWNrX2ludDEzKTogRG9uJ3QgcmVwbGFjZSBhbiBpbnQxMwoJaGFuZGxlciB3aXRoIHNldF90Zl9pbnQxM19oYW5kbGVyLiBJbnN0ZWFkLCB0cmFja19pbnQxMyBpdHNlbGYKCWVtdWxhdGVzIGFuIGludDEzIGludGVycnVwdC4KCVshU1RBR0UxXzVdIChzZXRfdGZfaW50MTNfaGFuZGxlcik6IFJlbW92ZWQuCglbIVNUQUdFMV81XSAoaW50MV9oYW5kbGVyKTogVXNlIG1vdnpidyBpbnN0ZWFkIG9mIHhvcmIgYW5kIG1vdmIuCgkKMjAwMC0xMS0xNSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGFjY29uZmlnLmggKFBSRVNFVF9NRU5VX1NUUklORyk6IE5ldyBlbnRyeS4KCSogYWNpbmNsdWRlLm00IChncnViX0RFRklORV9GSUxFKTogTmV3IE00IG1hY3JvLgoJKiBjb25maWd1cmUuaW4gKC0tZW5hYmxlLXByZXNldC1tZW51KTogTmV3IG9wdGlvbi4KCSogc3RhZ2UyL3N0YWdlMi5jIFtQUkVTRVRfTUVOVV9TVFJJTkddIChwcmVzZXRfbWVudSk6IE5ldwoJdmFyaWFibGUuCglbUFJFU0VUX01FTlVfU1RSSU5HXSAocHJlc2V0X21lbnVfb2Zmc2V0KTogTGlrZXdpc2UuCglbUFJFU0VUX01FTlVfU1RSSU5HXSAob3Blbl9wcmVzZXRfbWVudSk6IE5ldyBmdW5jdGlvbi4KCVtQUkVTRVRfTUVOVV9TVFJJTkddIChyZWFkX2Zyb21fcHJlc2V0X21lbnUpOiBMaWtld2lzZS4KCVtQUkVTRVRfTUVOVV9TVFJJTkddIChjbG9zZV9wcmVzZXRfbWVudSk6IExpa2V3aXNlLgoJWyFQUkVTRVRfTUVOVV9TVFJJTkddIChvcGVuX3ByZXNldF9tZW51KTogTmV3IG1hY3JvLgoJWyFQUkVTRVRfTUVOVV9TVFJJTkddIChyZWFkX2Zyb21fcHJlc2V0X21lbnUpOiBMaWtld2lzZS4KCVshUFJFU0VUX01FTlVfU1RSSU5HXSAoY2xvc2VfcHJlc2V0X21lbnUpOiBMaWtld2lzZS4KCShnZXRfbGluZV9mcm9tX2NvbmZpZyk6IEFjY2VwdCBhIG5ldyBhcmd1bWVudCBSRUFEX0ZST01fRklMRS4KCUlmIGl0IGlzIGZhbHNlLCByZWFkIGRhdGEgZnJvbSB0aGUgcHJlc2V0IG1lbnUgaW5zdGVhZC4KCShjbWFpbik6IElmIGdydWJfb3BlbiBmYWlscyBpbiBvcGVuaW5nIHRoZSBjb25maWd1cmF0aW9uIGZpbGUsCgl0aGVuIHRyeSB0byBvcGVuIHRoZSBwcmVzZXQgbWVudS4KCQoyMDAwLTExLTExICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUZyb20gSmFuIEZyaWNrZSA8ZnJpY2tlQHVuaS1ncmVpZnN3YWxkLmRlPjoKCSogc3RhZ2UyL2FzbS5TIFshU1RBR0UxXzVdIChzZXRfdmJlX21vZGUpOiBBZGQgYSBtaXNzaW5nIGAkJwoJcHJlZml4LgoJCjIwMDAtMTEtMTEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvYmlvcy5jIChnZXRfZGlza2luZm8pOiBJZiBCSU9TIHN1cHBvcnRzIExCQSBidXQgZG9lc24ndAoJcmV0dXJuIHRoZSBjb3JyZWN0IHRvdGFsIG51bWJlciBvZiBzZWN0b3JzLCBjb21wdXRlIHRoaXMgYnkKCUMvSC9TIHJldHVybmVkIGJ5IGdldF9kaXNraW5mb19pbnQxM19leHRlbnNpb25zIGluc3RlYWQgb2YKCWdldF9kaXNraW5mb19zdGFuZGFyZC4KCQoyMDAwLTExLTA5ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2Rpc2tfaW8uYyAobWFrZV9zYXZlZF9hY3RpdmUpOiBTZXQgRVJSTlVNIHRvCglFUlJfREVWX1ZBTFVFUyBpbnN0ZWFkIG9mIEVSUl9OT19QQVJULCB3aGVuIHRoZSBzYXZlIHBhcnRpdGlvbgoJaXMgbm90IGEgcHJpbWFyeSBwYXJ0aXRpb24uCgkKMjAwMC0xMS0wNSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGRvY3MvdXNlci1yZWYudGV4aSAoRmVhdHVyZXMpOiBVcGRhdGUgdGhlIFVSTCBvZiBncnViLzk4LgoJCjIwMDAtMTEtMDMgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJVkJFIHN1cHBvcnQgaXMgX3BhcnRpYWxseV8gaW1wbGVtZW50ZWQuCgkKCSogc3RhZ2UyL21iX2hlYWRlci5oIChtdWx0aWJvb3RfaGVhZGVyKTogQWRkZWQgbmV3IGZpZWxkcywKCW1vZGVfdHlwZSwgd2lkdGgsIGhlaWdodCwgYW5kIGRlcHRoLgoJKE1VTFRJQk9PVF9GT1VORCk6IENoZWNrIGlmIE1VTFRJQk9PVF9WSURFT19NT0RFIGlzIHNldCwgYW5kCgljaGVjayBpZiBMRU4gaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDQ4LCBpZiBzZXQuCgkoTVVMVElCT09UX1VOU1VQUE9SVEVEKTogU2V0IHRvIDB4MDAwMEZGRjguCgkoTVVMVElCT09UX1ZJREVPX01PREUpOiBOZXcgbWFjcm8uCgkqIHN0YWdlMi9tYl9pbmZvLmggKG11bHRpYm9vdF9pbmZvKTogQWRkZWQgbmV3IGZpZWxkcywKCXZiZV9jb250cm9sX2luZm8sIHZiZV9tb2RlX2luZm8sIHZiZV9tb2RlLCB2YmVfaW50ZXJmYWNlX3NlZywKCXZiZV9pbnRlcmZhY2Vfb2ZmLCBhbmQgdmJlX2ludGVyZmFjZV9sZW4uCgkoTUJfSU5GT19WSURFT19JTkZPKTogTmV3IG1hY3JvLgoJCgkqIHN0YWdlMi9zaGFyZWQuaCAodmJlX2NvbnRyb2xsZXIpOiBOZXcgc3RydWN0dXJlLgoJKHZiZV9tb2RlKTogTGlrZXdpc2UuCgkoZ2V0X3ZiZV9jb250cm9sbGVyX2luZm8pOiBEZWNsYXJlZC4KCShnZXRfdmJlX21vZGVfaW5mbyk6IExpa2V3aXNlLgoJKHNldF92YmVfbW9kZSk6IExpa2V3aXNlLgoJKiBzdGFnZTIvYXNtLlMgWyFTVEFHRTFfNV0gKGdldF92YmVfY29udHJvbGxlcl9pbmZvKTogTmV3CglmdW5jdGlvbi4KCVshU1RBR0UxXzVdIChnZXRfdmJlX21vZGVfaW5mbyk6IExpa2V3aXNlLgoJWyFTVEFHRTFfNV0gKHNldF92YmVfbW9kZSk6IExpa2V3aXNlLgoJKiBncnViL2FzbXN0dWIuYyAoZ2V0X3ZiZV9jb250cm9sbGVyX2luZm8pOiBMaWtld2lzZS4KCShnZXRfdmJlX21vZGVfaW5mbyk6IExpa2V3aXNlLgoJKHNldF92YmVfbW9kZSk6IExpa2V3aXNlLgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKHRlc3R2YmVfZnVuYyk6IE5ldyBmdW5jdGlvbi4KCShidWlsdGluX3Rlc3R2YmUpOiBOZXcgdmFyaWFibGUuCgkodmJlcHJvYmVfZnVuYyk6IE5ldyBmdW5jdGlvbi4KCShidWlsdGluX3ZiZXByb2JlKTogTmV3IHZhcmlhYmxlLgoJKGJ1aWx0aW5fdGFibGUpOiBBZGRlZCBwb2ludGVycyB0byBCVUlMVElOX1RFU1RWQkUgYW5kCglCVUlMVElOX1ZCRVBST0JFLgoJCjIwMDAtMTEtMDEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBkb2NzL2hlbHAybWFuOiBDb3BpZWQgZnJvbSBoZWxwMm1hbi0xLjIzLgoJCjIwMDAtMTAtMjkgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvYXNtLlMgW1NUQUdFMV81XTogRG9uJ3QgaW5jbHVkZSBzZXRqbXAuUyBvciBhcG0uUy4KCQoyMDAwLTEwLTI3ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogbGliL2RldmljZS5jIChyZWFkX2RldmljZV9tYXApOiBEb24ndCBwYXJzZSBhIGxpbmUsIGlmIGl0IGlzCgllbXB0eS4gUmVwb3J0ZWQgYnkgSG9sZ2VyIEJhdWVyIDxiYXVlckBpdHNtLnVuaS1zdHV0dGdhcnQuZGU+LgoJCjIwMDAtMTAtMjUgIEpvY2hlbiBIb2VuaWNrZSAgPGpvY2hlbkBnbnUub3JnPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKG1kNWNyeXB0X2Z1bmMpOiBVc2UgYWxsIGJpdHMgb2YgY3VycnRpY2tzICgpCgl0byBnZW5lcmF0ZSB0aGUgc2FsdC4gIFRoZSBvbGQgY29kZSB3b3VsZCBvZnRlbiBwcm9kdWNlIHRoZSBzYW1lCglvbmUgY2hhcmFjdGVyIHNhbHQuCgoyMDAwLTEwLTI1ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2FwbS5TIChnZXRfYXBtX2luZm8pOiBGaXggYSBzZXJpb3VzIHR5cG86IHByb3RfdG9fcmVhbAoJLT4gcmVhbF90b19wcm90LiBVbW0sIEkgY2FuJ3QgdW5kZXJzdGFuZCB3aHkgaXQgd29ya2VkIGZvciBtZSEKCQoyMDAwLTEwLTI0ICBKb2NoZW4gSG9lbmlja2UgIDxqb2NoZW5AZ251Lm9yZz4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChzZXR1cF9mdW5jKTogV2hlbiBpbnZva2luZyBpbnN0YWxsIHdpdGggYW4KIAllbWJlZGRlZCBzdGFnZTFfNSBnaXZlIHRoZSBwYXRoIHRvIG1lbnUubHN0IGFzIHJlYWxfY29uZmlnX2ZpbGUuCgoyMDAwLTEwLTIzICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogZG9jcy9tdWx0aWJvb3QudGV4aTogVXBncmFkZWQgdG8gMC42LjkyLgoJKEJvb3QgaW5mb3JtYXRpb24gZm9ybWF0KTogUmUtZGVzaWduZWQgdGhlIGdyYXBoaWNzIHRhYmxlLgoJCjIwMDAtMTAtMjIgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBkb2NzL3R1dG9yaWFsLnRleGk6IE1pc2NlbGxhbmVvdXMgdXBkYXRlcy4KCSogZG9jcy91c2VyLXJlZi50ZXhpOiBMaWtld2lzZS4KCSogZG9jcy9hcHBlbmRpY2VzLnRleGk6IExpa2V3aXNlLgoJCjIwMDAtMTAtMjIgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiB1dGlsL2dydWItaW5zdGFsbC5pbiAodXNhZ2UpOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGNvbW1hcy4KCQoJKiB1dGlsL2dydWItbWQ1LWNyeXB0LmluOiBOZXcgZmlsZS4KCSogdXRpbC9NYWtlZmlsZS5hbSAoc2Jpbl9TQ1JJUFRTKTogQWRkZWQgZ3J1Yi1tZDUtY3J5cHQuCgkqIGNvbmZpZ3VyZS5pbiAoQUNfT1VUUFVUKTogQWRkZWQgdXRpbC9ncnViLW1kNS1jcnlwdC4KCSogZG9jcy9NYWtlZmlsZS5hbSAobWFuX01BTlMpOiBBZGRlZCBncnViLW1kNS1jcnlwdC44LgoJW01BSU5UQUlORVJfTU9ERV0gKCQoc3JjZGlyKS9ncnViLW1kNS1jcnlwdC44KTogTmV3IHRhcmdldC4KCSogZG9jcy9ncnViLW1kNS1jcnlwdC44OiBOZXcgZmlsZS4gR2VuZXJhdGVkIGJ5IGhlbHAybWFuLgoKCSogZG9jcy9ncnViLnRleGkgKGdydWItbWQ1LWNyeXB0KTogTmV3IGRpcmVudHJ5LgoJKEludm9raW5nIGdydWItbWQ1LWNyeXB0KTogTmV3IGVudHJ5LgoJKiBkb2NzL3VzZXItcmVmLnRleGkgKEludm9raW5nIGdydWItbWQ1LWNyeXB0KTogTmV3IGNoYXB0ZXIuCgkKMjAwMC0xMC0yMiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCglGcm9tIE1hdHRoaWFzIEdyYW5iZXJyeSA8bWF0dGhpYXNAc2x1cnBlZS5vcmc+OgoJKiB1dGlsL2dydWItaW5zdGFsbC5pbiAoY29udmVydCk6IEFkZGVkIGJhY2tzbGFzaGVzIGludG8KCWNvbnRpbnVvdXMgbGluZXMuCgkKMjAwMC0xMC0yMSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9tZDUuYyAoY2hlY2tfbWQ1X3Bhc3N3b3JkKTogUmVtb3ZlZC4KCShtZDVfcGFzc3dvcmQpOiBOZXcgZnVuY3Rpb24uIE1vc3RseSBjb3BpZWQgZnJvbQoJY2hlY2tfbWQ1X3Bhc3N3b3JkLgoJKG1kNV9pbml0KTogTWFkZSBzdGF0aWMuCgkobWQ1X3VwZGF0ZSk6IExpa2V3aXNlLgoJKG1kNV9maW5hbCk6IExpa2V3aXNlLgoJKiBzdGFnZTIvbWQ1LmggKGNoZWNrX21kNV9wYXNzd29yZCk6IENoYW5nZWQgdG8ganVzdCBhIG1hY3JvLgoJKG1kNV9wYXNzd29yZCk6IERlY2xhcmVkLgoJKG1ha2VfbWQ1X3Bhc3N3b3JkKTogTmV3IG1hY3JvLgoJKiBzdGFnZTIvY2hhcl9pby5jIFshU1RBR0UxXzVdIChncnViX3N0cnN0cik6IFJld3JpdGVuLCBiZWNhdXNlCglpdCB3YXMgdG9vIGJ1Z2d5LgoJKiBzdGFnZTIvYnVpbHRpbnMuYyBbVVNFX01ENV9QQVNTV09SRFNdIChtZDVjcnlwdF9mdW5jKTogTmV3CglmdW5jdGlvbi4KCVtVU0VfTUQ1X1BBU1NXT1JEU10gKGJ1aWx0aW5fbWQ1Y3J5cHQpOiBOZXcgdmFyaWFibGUuCgkoYnVpbHRpbl90YWJsZSkgW1VTRV9NRDVfUEFTU1dPUkRTXTogQWRkZWQgYSBwb2ludGVyIHRvCglCVUlMVElOX01ENUNSWVBULgoJKiBkb2NzL3R1dG9yaWFsLnRleGkgKFNlY3VyaXR5KTogQWRkZWQgYSBwYXJhZ3JhcGggYWJvdXQKCW1kNWNyeXB0LgoJCjIwMDAtMTAtMjEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBkb2NzL3VzZXItcmVmLnRleGk6IEZpeGVkIHNldmVyYWwgdHlwb3MgYW5kIHNvbWUgaW5hcHByb3ByaWF0ZQoJdGV4aW5mbyBjb21tYW5kcywgYW5kIHVwZGF0ZSB0aGUgZGVzY3JpcHRpb25zIGFib3V0IHNvbWUKCWNvbW1hbmRzLgoJCjIwMDAtMTAtMjAgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoZGlzcGxheWFwbV9mdW5jKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWx0aW5fZGlzcGxheWFwbSk6IE5ldyB2YXJpYWJsZS4KCShidWlsdGluX3RhYmxlKTogQWRkZWQgYSBwb2ludGVyIHRvIEJVSUxUSU5fRElTUExBWUFQTS4KCQoyMDAwLTEwLTIwICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUFQTSBCSU9TIHRhYmxlIHN1cHBvcnQgaXMgYWRkZWQsIGJhc2VkIG9uIGEgcGF0Y2ggYnkgTWF0dCBZb3Vyc3QKCTx5b3Vyc3RAbWl0LmVkdT4uCgkKCSogZG9jcy9tdWx0aWJvb3QudGV4aSAoQm9vdCBpbmZvcm1hdGlvbiBmb3JtYXQpOiBBZGRlZCB0aGUKCWRlZmluaXRpb24gb2YgQVBNIHRhYmxlIGZvcm1hdC4KCQoJKiBzdGFnZTIvbWJfaW5mby5oIChhcG1faW5mbyk6IE5ldyBzdHJ1Y3R1cmUuCgkobXVsdGlib290X2luZm8pOiBBZGRlZCBhIG5ldyBlbGVtZW50LCBhcG1fdGFibGUuCgkoTUJfSU5GT19BUE1fVEFCTEUpOiBOZXcgbWFjcm8uCgkqIHN0YWdlMi9hc20uUyAoYXBtX2Jpb3NfaW5mbyk6IE5ldyB2YXJpYWJsZS4KCUluY2x1ZGUgImFwbS5TIi4KCSogc3RhZ2UyL2FwbS5TOiBOZXcgZmlsZS4KCSogc3RhZ2UyL2NvbW1vbi5jIChpbml0X2Jpb3NfaW5mbykgWyFTVEFHRTFfNV06IEFkZGVkIEFQTSBCSU9TCgl0YWJsZSBzdXBwb3J0LgoJKiBzdGFnZTIvc2hhcmVkLmggKGFwbV9iaW9zX2luZm8pOiBEZWNsYXJlZC4KCShnZXRfYXBtX2luZm8pOiBMaWtld2lzZS4KCSogc3RhZ2UyL01ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogQWRkZWQgYXBtLlMuCgkqIGdydWIvYXNtc3R1Yi5jIChhcG1fYmlvc19pbmZvKTogTmV3IHZhcmlhYmxlLgoJKGdldF9hcG1faW5mbyk6IE5ldyBmdW5jdGlvbi4KCQoyMDAwLTEwLTE5ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCVNlZ3JlZ2F0ZSBmdW5jdGlvbnMgd2hpY2ggYXJlIGNvcHlyaWdodGVkIGRpZmZlcmVudGx5LgoJCgkqIHN0YWdlMi9zZXRqbXAuUzogTmV3IGZpbGUuCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IEFkZGVkIHNldGptcC5TLgoJKiBzdGFnZTIvYXNtLlM6IEluY2x1ZGUgInNldGptcC5TIi4KCShncnViX3NldGptcCk6IE1vdmVkIHRvIC4uLgoJKiBzdGFnZTIvc2V0am1wLlMgKGdydWJfc2V0am1wKTogLi4uIGhlcmUuCgkqIHN0YWdlMi9hc20uUyAoZ3J1Yl9sb25nam1wKTogTW92ZWQgdG8gLi4uCgkqIHN0YWdlMi9zZXRqbXAuUyAoZ3J1Yl9sb25nam1wKTogLi4uIGhlcmUuCgkKMjAwMC0xMC0xOCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAobm9pbnN0X0hFQURFUlMpOiBBZGRlZCBtZDUuaC4gUmVwb3J0ZWQgYnkKCVZvbGtlciBBdWd1c3RpbiA8Vm9sa2VyLkF1Z3VzdGluQHN0dWQudW5pLXJlZ2Vuc2J1cmcuZGU+LgoJCjIwMDAtMTAtMTcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBjb25maWd1cmUuaW4gKC0tZGlzYWJsZS1tZDVwYXNzd29yZCk6IFJlbmFtZWQgdG8gLi4uCgkoLS1kaXNhYmxlLW1kNS1wYXNzd29yZCk6IC4uLiB0aGlzLiBKdXN0IGZvciBteSBwcmVmZXJlbmNlLgoJCjIwMDAtMTAtMTcgIEpvY2hlbiBIb2VuaWNrZSAgPGpvY2hlbkBnbnUub3JnPgoKCUFkZGVkIE1ENSBwYXNzd29yZHMgYW5kIGV4dGVuZGVkIHBhc3N3b3JkIGNvbW1hbmQ6CgkKCSogY29uZmlndXJlLmluICgtLWRpc2FibGUtbWQ1cGFzc3dvcmQpOiBOZXcgb3B0aW9uLgoJKiBzdGFnZTIvTWFrZWZpbGUuYW0gKGxpYmdydWJfYV9TT1VSQ0VTKTogQWRkZWQgbWQ1LmMuCgkocHJlX3N0YWdlMl9leGVjX1NPVVJDRVMpOiBMaWtld2lzZS4KCSogc3RhZ2UyL21kNS5jOiBOZXcgZmlsZS4KCSogc3RhZ2UyL3NoYXJlZC5oIChwYXNzd29yZF90KTogTmV3IHR5cGUuCgkocGFzc3dvcmRfdHlwZSk6IE5ldyB2YXJpYWJsZS4KCShCVUlMVElOX0hJRERFTik6IE5ldyBmbGFnLCBkZXNjcmliaW5nIHRoYXQgYSBjb21tYW5kIHNob3VsZCBub3QKCWJlIHByaW50ZWQgd2hlbiBib290aW5nIHRoZSBlbnRyeS4KCShjaGVja19wYXNzd29yZCk6IE5ldyBmdW5jdGlvbi4KCSogc3RhZ2UyL2NtZGxpbmUuYyAocnVuX3NjcmlwdCk6IERvbid0IHNob3cgY29tbWFuZHMgdGhhdCBoYXZlCgl0aGUgaGlkZGVuIGF0dHJpYnV0ZS4KCSogc3RhZ2UyL2J1aWx0aW5zLmMgKHBhc3N3b3JkX3R5cGUpOiBOZXcgdmFyaWFibGUuCgkoY2hlY2tfcGFzc3dvcmQpOiBOZXcgZnVuY3Rpb24uCgkocGFzc3dvcmRfZnVuYyk6IEhhbmRsZSB0aGUgLS1tZDUgb3B0aW9uIGFuZCBzZXQgcGFzc3dvcmRfdHlwZS4KCUNoZWNrIGlmIGluIENNRExJTkUgb3IgU0NSSVBUIG1vZGUgYW5kIGFzayBwYXNzd29yZCBpbW1lZGlhdGVseS4KCShidWlsdGluX3Bhc3N3b3JkKTogQWxzbyBhbGxvdyBwYXNzd29yZHMgaW4gQ01ETElORSBtb2RlLCBtYWtlCglpdCBoaWRkZW4sIHNvIHRoZSB1c2VyIHdvbnQgc2VlIHRoZSBwYXNzd29yZCBoZSBzaG91bGQgZW50ZXIuCglDaGFuZ2VkIGNvbW1hbmQgZGVzY3JpcHRpb24uCgkoYnVpbHRpbl9wYXVzZSk6IE1ha2UgdGhlIGNvbW1hbmQgaGlkZGVuLgoJKHBhdXNlX2Z1bmMpOiBQcmludCBhcmd1bWVudCwgc2luY2UgdGhlIGNvbW1hbmQgaXMgbm93IGhpZGRlbi4KCSogc3RhZ2UyL3N0YWdlMi5jIChydW5fbWVudSk6IENhbGwgY2hlY2tfcGFzc3dvcmQgdG8gY2hlY2sgcGFzc3dvcmQuCgkqIGRvY3MvdHV0b3JpYWwudGV4aSAoU2VjdXJpdHkpOiBEZXNjcmliZSB0aGUgbmV3IGZlYXR1cmVzIG9mIHRoZQoJcGFzc3dvcmQgY29tbWFuZHMuCgkqIGRvY3MvdXNlci1yZWYudGV4aSAoTWVudS1zcGVjaWZpYyBjb21tYW5kcyk6IHBhc3N3b3JkIGNvbW1hbmQKIAltb3ZlZCAuLi4KCShDb21tYW5kLWxpbmUgYW5kIG1lbnUgY29tbWFuZHMpOiAuLi4gdG8gaGVyZS4gIE5ldyBmZWF0dXJlcyAKCWRvdW1lbnRlZC4KCQoyMDAwLTEwLTE3ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKHNldGtleV9mdW5jKTogQ2xlYXIgdGhlIGFsbCBlbGVtZW50cyBvZgoJQklPU19LRVlfTUFQIGFuZCBBU0NJSV9LRVlfTUFQIGluc3RlYWQgb2Ygb25seSB0aGUgZmlyc3QKCWVsZW1lbnRzLCB3aGVuIFRPX0tFWSBpcyBOVUxMLgoJCjIwMDAtMTAtMTYgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvYm9vdC5jIChsb2FkX2ltYWdlKTogV2hlbiBoYW5kbGluZyBMaW51eCBjbWRsaW5lLCBkb24ndAoJY29weSBhIG51bGwgY2hhcmFjdGVyIGZyb20gU1JDIHRvIERFU1QsIGJlY2F1c2UgdGhpcyBpbnNlcnRlZCBhbgoJZXh0cmEgbnVsbCBjaGFyYWN0ZXIgaW50byB0aGUgY21kbGluZS4gUmVwb3J0ZWQgYnkgUm9iZXJ0CglCaWhsbWV5ZXIgPHJvYmJlQG9yY3VzLnByaXYuYXQ+LgoJCjIwMDAtMTAtMTYgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJU29tZSBvZiB0aGUgbmV3IE11bHRpYm9vdCBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkLiBBUE0gc3VwcG9ydAoJYW5kIFZFU0Egc3VwcG9ydCBhcmUgbm90IHN0cmljdGx5IGRlZmluZWQgb3IgaW1wbGVtZW50ZWQgeWV0LgoJCgkqIGRvY3MvbXVsdGlib290LnRleGkgKFRvcCk6IEluY3JlYXNlIHRoZSB2ZXJzaW9uIG51bWJlci4KCShCb290IGluZm9ybWF0aW9uIGZvcm1hdCk6IENoYW5nZWQgdGhlIGRyaXZlIGluZm9ybWF0aW9uIGZvcm1hdCwKCWJlY2F1c2UgaXQgd2FzIG5vdCBzdHJhaWdodGZvcndhcmQuCgkKCSogZ3J1Yi9hc21zdHViLmMgKGlvX21hcCk6IE5ldyB2YXJpYWJsZS4KCSh0cmFja19pbnQxMyk6IE5ldyBmdW5jdGlvbi4KCShnZXRfcm9tX2NvbmZpZ190YWJsZSk6IExpa2V3aXNlLgoJKiBzdGFnZTIvc3RhZ2UyLmMgKGNtYWluKTogU2V0IENPTkZJR19FTlRSSUVTIHRvIE1CSS5EUklWRVNfQUREUgoJKyBNQkkuRFJJVkVTLkxFTkdUSCBpbnN0ZWFkIG9mIE1CSS5NTUFQX0FERFIgKyBNQkkuTU1BUF9MRU5HVEguCgkqIHN0YWdlMi9jb21tb24uYyAoaW5pdF9iaW9zX2luZm8pIFshU1RBR0UxXzVdOiBBZGRlZCBzdXBwb3J0Cglmb3IgZHJpdmUgaW5mbywgUk9NIGNvbmZpZyB0YWJsZSwgYW5kIGJvb3QgbG9hZGVyIG5hbWUgZmVhdHVyZXMKCW9mIHRoZSBNdWx0aWJvb3QgU3BlY2lmaWNhdGlvbi4KCSogc3RhZ2UyL21iX2luZm8uaCAoZHJpdmVfaW5mbyk6IE5ldyBzdHJ1Y3R1cmUuCgkoTUJfRElfQ0hTX01PREUpOiBOZXcgbWFjcm8uCgkoTUJfRElfTEJBX01PREUpOiBMaWtld2lzZS4KCShtdWx0aWJvb3RfaW5mbyk6IEFkZGVkIGRyaXZlc19sZW5ndGgsIGRyaXZlc19hZGRyLAoJY29uZmlnX3RhYmxlLCBhbmQgYm9vdF9sb2FkZXJfbmFtZS4KCShNQl9JTkZPX0RSSVZFX0lORk8pOiBOZXcgbWFjcm8uCgkoTUJfSU5GT19DT05GSUdfVEFCTEUpOiBMaWtld2lzZS4KCShNQl9JTkZPX0JPT1RfTE9BREVSX05BTUUpOiBMaWtld2lzZS4KCSogc3RhZ2UyL2FzbS5TIChnZXRfcm9tX2NvbmZpZ190YWJsZSk6IE5ldyBmdW5jdGlvbi4KCSogc3RhZ2UyL3NoYXJlZC5oIChnZXRfcm9tX2NvbmZpZ190YWJsZSk6IERlY2xhcmVkLgoJCjIwMDAtMTAtMTYgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiB1dGlsL2dydWItaW5zdGFsbC5pbiAoY29udmVydCk6IENoZWNrIG9ubHkgaWYgdGhlIGZpbGUgZXhpc3RzLAoJaW5zdGVhZCBvZiBjaGVja2luZyBpZiB0aGUgZmlsZSBpcyBhIGJsb2NrIGRldmljZSBhcyB3ZWxsLgoJQmVjYXVzZSwgaW4gYSBzYW5lIG9wZXJhdGluZyBzeXN0ZW0sIGl0IHNob3VsZCBiZSBhIGNoYXIgZGV2aWNlCglidXQgbm90IGEgYmxvY2sgZGV2aWNlICh1bmxpa2UgTGludXgpLCBhbmQgaXQgbWF5IGJlIGEgc3ltYm9saWMKCWxpbmsgKHRoaXMgY2FuIGhhcHBlbiBpZiB5b3UgdXNlIExpbnV4J3MgZGV2ZnMgd2l0aG91dCBkZXZmc2QpLgoJKHJlY2hlY2spOiBOZXcgdmFyaWFibGUuIFNldCB0byAibm8iIGJ5IGRlZmF1bHQsIGFuZCBzZXQgdG8KCSJ5ZXMiLCBpZiB5b3Ugc3BlY2lmeSB0aGUgbmV3IG9wdGlvbiBgYC0tcmVjaGVjaycnLiBJZiAkcmVjaGVjawoJaXMgInllcyIsIHJlbW92ZSB0aGUgZGV2aWNlIG1hcCBmaWxlLCBpZiBwcmVzZW50LgoJCjIwMDAtMTAtMTYgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJRnJvbSBSb2RlcmljaCBTY2h1cHA6CgkqIGxpYi9kZXZpY2UuYzogSW5jbHVkZSA8bGltaXRzLmg+LgoJW19fbGludXhfX10gKGhhdmVfZGV2ZnMpOiBOZXcgZnVuY3Rpb24uCgkoZ2V0X2Zsb3BweV9kaXNrX25hbWUpIFtfX2xpbnV4X19dOiBJZiBkZXZmcyBpcyBzdXBwb3J0ZWQsIHVzZQoJdGhlIG5hbWUgIi9kZXYvZmxvcHB5L04iIGluc3RlYWQuCgkoaW5pdF9kZXZpY2VfbWFwKSBbX19saW51eF9fXTogSWYgZGV2ZnMgaXMgc3VwcG9ydGVkLCB1c2UKCSIvZGV2L2Rpc2NzL2Rpc2NOIiBpbnN0ZWFkLgoJW19fbGludXhfX10gKHdyaXRlX3RvX3BhcnRpdGlvbik6IENoYW5nZSB0aGUgc2l6ZSBvZiBERVYgdG8KCVBBVEhfTUFYIGluc3RlYWQgb2YgNjQuCglJZiBkZXZmcyBpcyBzdXBwb3J0ZWQsIHJlcGxhY2UgIi9kaXNjIiBpbiB0aGUgZGV2aWNlIG5hbWUgd2l0aAoJIi9wYXJ0Ii4KCQoyMDAwLTEwLTE1ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUZyb20gUm9kZXJpY2ggU2NodXBwIDxyc2NoQEV4cGVyVGVhbS5kZT46CgkqIHV0aWwvZ3J1Yi1pbnN0YWxsLmluIChjb252ZXJ0KTogQWRkZWQgc3VwcG9ydCBmb3IgIm5hdGl2ZSIKCWRldmZzIGRldmljZSBuYW1lcy4KCQoyMDAwLTEwLTE0ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogZG9jcy90dXRvcmlhbC50ZXhpIChTZXJpYWwgdGVybWluYWwpOiBGaXhlZCBhIHR5cG8uCgkqIGRvY3MvdXNlci1yZWYudGV4aSAoR1JVQiBpbWFnZXMpOiBOZXcgY2hhcHRlci4KCSogZG9jcy9ncnViLnRleGk6IEFkZGVkIGFuIGVudHJ5IGZvciB0aGUgY2hhcHRlciAiR1JVQiBpbWFnZXMiLgoJCjIwMDAtMTAtMTQgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoc2V0a2V5X2Z1bmMpOiBJZiBUT19LRVkgaXMgTlVMTCAoaS5lLiB0aGUKCXVzZXIgc3BlY2lmaWVzIG5vIGFyZ3VtZW50KSwgY2xlYXIgQklPU19LRVlfTUFQIGFuZAoJQVNDSUlfS0VZX01BUC4KCUlmIFRPX0tFWSBpcyBub24tTlVMTCBidXQgRlJPTV9LRVkgaXMgTlVMTCwgc2V0IEVSUk5VTSB0bwoJRVJSX0JBRF9BUkdVTUVOVCBhbmQgcmV0dXJuIG9uZS4KCQoyMDAwLTEwLTEzICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogZG9jcy9ncnViLnRleGk6IEFkZGVkIGFuIGVudHJ5IGZvciB0aGUgbmV3IGNoYXB0ZXIgIlNlY3VyaXR5IiwKCWFuZCB0aGUgb3JkZXIgb2YgdGhlIGNoYXB0ZXJzIGluIHRoZSBUdXRvcmlhbCBNYW51YWwgd2FzCgljaGFuZ2VkLgoJKiBkb2NzL3R1dG9yaWFsLnRleGkgKENvbmZpZ3VyYXRpb24pOiBNb3ZlZCB0byByaWdodCBhZnRlciB0aGUKCWNoYXB0ZXIgIkJvb3RpbmciLgoJKFNlY3VyaXR5KTogTmV3IGNoYXB0ZXIuCgkKMjAwMC0xMC0xMCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCglGcm9tIEFsZXNzYW5kcm8gUnViaW5pOgoJKiB1dGlsL2dydWItaW5zdGFsbC5pbiAocm9vdF9kZXZpY2UpOiBVc2UgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbgoJJ3MlLipcKC9kZXYvW14gCV0qXCkuKiVcMSUnIGluc3RlYWQgb2YKCSdzJS4qXCgvZGV2L1thLXowLTldKlwpLiolXDElJy4KCShib290ZGlyX2RldmljZSk6IExpa2V3aXNlLgoJKGdydWJkaXJfZGV2aWNlKTogTGlrZXdpc2UuCgkKMjAwMC0xMC0xMCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9zdGFydC5TIChjb3B5X2J1ZmZlcik6IFVzZSBwdXNoYSBhbmQgcG9wYSBpbnN0ZWFkIG9mCglwdXNoaW5nIGFuZCBwb3BpbmcgJWRpIGFuZCAlc2kgaW5kaXZpZHVhbGx5LCB0byByZWR1Y2UgdGhlIGNvZGUKCXNpemUgYW5kIHNhdmUgJWN4IGFzIHdlbGwuIFJlcG9ydGVkIGJ5IEhlcmJlcnQgTmFjaHRuZWJlbAoJPG5hY2h0bmViQGlhZWUudHV3aWVuLmFjLmF0Pi4KCQoyMDAwLTEwLTEwICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUZyb20gRGFuaWVsIFBpdHRtYW4gPGRhbmllbEByaW1zcGFjZS5uZXQ+OgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoc2V0a2V5X2Z1bmMpOiBDaGVjayBpZgoJS0VZU1lNX1RBQkxFW0ldLlVOU0hJRlRFRF9OQU1FIGFuZCBLRVlTWU1fVEFCTEVbSV0uU0hJRlRFRF9OQU1FCglhcmUgbm90IE5VTExzLCBiZWZvcmUgY2FsbGluZyBncnViX3N0cmNtcC4KCQoyMDAwLTEwLTA4ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogdXRpbC9ncnViLWluc3RhbGwuaW4gKGdydWJfcHJlZml4KTogTmV3IHZhcmlhYmxlLiBUaGUgZGVmYXVsdAoJaXMgIi9ib290L2dydWIiLgoJSWYgdGhlIHVzZXIgaGFzIGEgc2VwYXJhdGUgYm9vdCBwYXJ0aXRpb24sIHNldCBncnViX3ByZWZpeAoJaW5zdGVhZCBvZiBncnViZGlyIHRvICIvZ3J1YiIuCglXaGVuIHJ1bm5pbmcgdGhlIGNvbW1hbmQgInNldHVwIiwgc3BlY2lmeSAkZ3J1Yl9wcmVmaXggaW5zdGVhZAoJb2YgJGdydWJkaXIgdG8gdGhlIG9wdGlvbiAiLS1wcmVmaXgiLgoJUmVwb3J0IGJ5IFRoaWVycnkgTGFyb25kZS4KCQoyMDAwLTEwLTA4ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGZpbmRfZnVuYyk6IENsZWFyIEVSUk5VTSBhZnRlciB0aGUgbGFzdAoJY2FsbCBvZiBuZXh0X3BhcnRpdGlvbiwgYmVjYXVzZSBpdCBhbHdheXMgc2V0cyBFUlJOVU0uIFJlcG9ydGVkCglieSBUaGllcnJ5IExhcm9uZGUgPHRoaWVycnkubGFyb25kZUBwb2x5bnVtLmNvbT4uCgkKMjAwMC0xMC0wNyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGxpYi9kZXZpY2UuYyBbX19saW51eF9fXSAod3JpdGVfdG9fcGFydGl0aW9uKTogT3BlbiBERVYgd2l0aAoJT19SRFdSIGluc3RlYWQgb2YgT19PUk9OTFkuCgkKMjAwMC0xMC0wNiAgQWxlc3NhbmRybyBSdWJpbmkgIDxydWJpbmlAZ251Lm9yZz4KCgkqIGRvY3MvdXNlci1yZWYudGV4aSAoQ29tbWFuZHMpOiBBZGRlZCBtaXNzaW5nIGNvbW1hbmRzIGFuZAoJcmV3b3JkZWQgcGFydCBvZiB0aGUgdGV4dC4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChzZXJpYWxfZnVuYyk6IFVuc3dhcCB0aGUgc2V0dGluZyBvZiAic3BlZWQiCglhbmQgInBvcnQiLgoKMjAwMC0xMC0wNiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChzZXR1cF9mdW5jKTogQXBwZW5kICIuLi4gIiB0byB0aGUKCW1lc3NhZ2VzIHdoZW4gY2FsbGluZyBlbWJlZF9mdW5jIGFuZCBpbnN0YWxsX2Z1bmMsIGFuZCBwcmludAoJdGhlIHJlc3VsdC4KCURvbid0IGp1bXAgdG8gdGhlIGxhYmVsICJmYWlsIiwgZXZlbiB3aGVuIGVtYmVkX2Z1bmMgZmFpbGVkLgoJCjIwMDAtMTAtMDUgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBmaWcub3JnPgoKCSogc3RhZ2UyL2Rpc2tfaW8uYyAocmVhbF9vcGVuX3BhcnRpdGlvbik6IE1ha2Ugc3VyZSB0aGF0IGJ1Zl9nZW9tCgljb3JyZXNwb25kcyB0byB0aGUgY3VycmVudCBkcml2ZSBiZWZvcmUgdXNpbmcgaXQuCgoJKiBsaWIvZGV2aWNlLmMgKGdldF9kcml2ZV9nZW9tZXRyeSk6IFVzZSBmc3RhdCBpZiB0aGUgbmF0aXZlCglnZW9tZXRyeSBtZXRob2RzIGZhaWwsIHN1Y2ggYXMgd2hlbiB0aGUgZHJpdmUgaXMgbWFwcGVkIHRvIGEKCXJlZ3VsYXIgZmlsZS4KCgkqIGRvY3MvdHV0b3JpYWwudGV4aTogQWRkIGBAa2Jkey4uLn0nIHRvIGV4YW1wbGVzIGluIG9yZGVyIHRvCglkaWZmZXJlbnRpYXRlIGJldHdlZW4gY29tbWFuZCBvdXRwdXQgYW5kIGNoYXJhY3RlcnMgdGhlIHVzZXIKCXNob3VsZCB0eXBlLgoJKiBkb2NzL3VzZXItcmVmLnRleGk6IExpa2V3aXNlLgoKMjAwMC0xMC0wNSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGRvY3MvZ3J1Yi50ZXhpOiBBZGRlZCBhbiBlbnRyeSBmb3IgdGhlIGNoYXB0ZXIgIlNlcmlhbAoJdGVybWluYWwiLgoJKiBkb2NzL3R1dG9yaWFsLnRleGkgKFNlcmlhbCB0ZXJtaW5hbCk6IE5ldyBjaGFwdGVyLgoJCjIwMDAtMTAtMDQgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBmaWcub3JnPgoKCSogdXRpbC9ncnViLWltYWdlIChWRVJTSU9OKTogRml4IHZlcnNpb24gY2FsY3VsYXRpb24gdG8gdG9sZXJhdGUKCWAoR05VIEdSVUIgMC41Ljk2KSctc3R5bGUgdmVyc2lvbnMuCgoJKiBkb2NzL2dydWIudGV4aTogUmVtb3ZlIGJyYWNlcyBmcm9tIGBAdW5udW1iZXJlZCcgc2VjdGlvbnMgc28KCXRoYXQgdGV4aTJodG1sIGRvZXNuJ3QgY29tcGxhaW4uCgoJKiBkZWJpYW4vcnVsZXM6IEJ1aWxkIEhUTUwgZG9jdW1lbnRhdGlvbiB0byBhcHBlYXNlIHRoZSBEZWJpYW4KCW1hc3Nlcy4KCjIwMDAtMTAtMDQgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvZnN5c19yZWlzZXJmcy5jIChyZWlzZXJmc19tb3VudCk6IENvbXBhcmUgUEFSVF9MRU5HVEgKCXdpdGggU1VQRVJCTE9DSyArIChzaXplb2Yoc3VwZXIpID4+IFNFQ1RPUl9CSVRTKSBpbnN0ZWFkIG9mCglzaXplb2Yoc3RydWN0IHJlaXNlcmZzX3N1cGVyX2Jsb2NrKS4gUmVwb3J0ZWQgYnkgSm9jaGVuCglIb2VuaWNrZS4KCQoyMDAwLTEwLTA1ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogY29uZmlndXJlLmluIChBTV9JTklUX0FVVE9NQUtFKTogVGhlIHZlcnNpb24gbnVtYmVyIGlzIHNldCB0bwoJMC41Ljk3LiBUaGlzIHZlcnNpb24gbnVtYmVyIGlzIGEgZHVtbXksIGFzIHdlIHdpbGwgbmV2ZXIgcmVsZWFzZQoJMC41Ljk3IGFjdHVhbGx5LgoJCjIwMDAtMTAtMDEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBsaWIvZGV2aWNlLmMgW19fbGludXhfX106IERvbid0IGluY2x1ZGUgPGxpbnV4L2Nkcm9tLmg+LgoJW19fbGludXhfXyAmJiAhQ0RST01fR0VUX0NBUEFCSUxJVFldIChDRFJPTV9HRVRfQ0FQQUJJTElUWSk6CglEZWZpbmVkIGFzIDB4NTMzMS4KCQoyMDAwLTEwLTAxICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogbGliL2RldmljZS5jIChnZXRfZHJpdmVfZ2VvbWV0cnkpIFtfX0dOVV9fXTogR2V0IHRoZSBudW1iZXIgb2YKCXRvdGFsIHNlY3RvcnMgYnkgZnN0YXQuIFRoZSByZXN0IGFyZSBmaWxsZWQgd2l0aCBhcmJpdHJhcnkKCXZhbHVlcy4KCQoyMDAwLTA5LTMwICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogdXRpbC9ncnViLWluc3RhbGwuaW4gKGNvbnZlcnQpOiBUaGUgY29kZSBmb3IgZ251KiAoaS5lLgoJR05VL0h1cmQpIHdhcyByZXdyaXR0ZW4sIHNpbmNlIGl0IGRpZG4ndCB3b3JrIGZvciBCU0QKCXBhcnRpdGlvbnMuCglVc2UgIiR0bXBfZGlzayAqJCIgaW5zdGVhZCBvZiAiJHRtcF9kaXNrIiB0byBnZXQgdGhlIGRyaXZlIG5hbWUuCgkKMjAwMC0wOS0zMCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9mc3lzX3JlaXNlcmZzLmMgKHJlaXNlcmZzX21vdW50KTogQ2hlY2sgaWYgdGhlIGxlbmd0aAoJb2YgdGhlIHBhcnRpdGlvbiBpcyBsZXNzIHRoYW4gdGhlIHNpemUgb2YgYSBzdXBlciBibG9jaywgYmVmb3JlCglhdHRlbXB0aW5nIHRvIHJlYWQgdGhlIHN1cGVyIGJsb2NrLgoKCSogZ3J1Yi9hc21zdHViLmMgKGNvbnNvbGVfcHV0Y2hhcikKCVtIQVZFX0xJQkNVUlNFU19IICYmIFJFRlJFU0hfSU1NRURJQVRFTFldOiBDYWxsIHJlZnJlc2gsIHRvIGVhc2UKCWRlYnVnZ2luZy4KCQoyMDAwLTA5LTMwICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUFkZGVkIHR3byBuZXcgY29tbWFuZHMsICJwYXJ0bmV3IiBhbmQgInBhcnR0eXBlIiwgYmFzZWQgb24gdGhlCglwYXRjaCBieSBTdGVmYW4gT25kcmVqaWNrYSA8b25kcmVqQGlkYXRhLnNrPjoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKHBhcnRuZXdfZnVuYyk6IE5ldyBmdW5jdGlvbi4KCShidWlsdGluX3BhcnRuZXcpOiBOZXcgdmFyaWFibGUuCgkocGFydHR5cGVfZnVuYyk6IE5ldyBmdW5jdGlvbi4KCShidWlsdGluX3BhcnR0eXBlKTogTmV3IHZhcmlhYmxlLgoJKGJ1aWx0aW5fdGFibGUpOiBBZGRlZCBwb2ludGVycyB0byBCVUlMVElOX1BBUlRORVcgYW5kIHRvCglCVUlMVElOX1BBUlRUWVBFLgoJCjIwMDAtMDktMjkgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoZmluZF9mdW5jKTogTmV3IHZhcmlhYmxlIEdPVF9GSUxFIGlzIHNldCB0bwoJb25lIGlmIEZJTEVOQU1FIGlzIGZvdW5kLiBPdGhlcndpc2UsIGl0IGlzIHNldCB0byB6ZXJvLgoJQ2xlYXIgRVJSTlVNIGF0IHRoZSBlbmQgaW4gdGhlIGxvb3AgZm9yIGZsb3BwaWVzLCB0byBlbnN1cmUgdGhhdAoJRVJSTlVNIGlzIGNsZWFyZWQgYmVmb3JlIGV4YW1pbmluZyBoYXJkIGRpc2tzLgoJUmV3cml0ZSB0aGUgbG9vcCBmb3IgaGFyZCBkaXNrcyB1c2luZyBuZXh0X3BhcnRpdGlvbnMsIHNvIHRoaXMKCWZ1bmN0aW9uIG5vdyBjaGVja3MgYWxsIHBhcnRpdGlvbnMgeW91IGhhdmUgY2VydGFpbmx5LgoJSWYgR09UX0ZJTEUgaXMgbm9uLXplcm8sIHNldCBFUlJOVU0gdG8gRVJSX0ZJTEVfTk9UX0ZPVU5EIGFuZAoJcmV0dXJuIG9uZS4KCQoyMDAwLTA5LTI5ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2Rpc2tfaW8uYyAoY2hlY2tfQlNEX3BhcnRzKTogUmVtb3ZlZC4KCShuZXh0X3BhcnRpdGlvbik6IE5ldyBmdW5jdGlvbi4KCShyZWFsX29wZW5fcGFydGl0aW9uKTogUmV3cml0dGVuIHVzaW5nIG5leHRfcGFydGl0aW9uLgoJKHNldF9kZXZpY2UpIFshU1RBR0UxXzVdOiBTa2lwIGEgY29tbWEgaW4gREVWSUNFLCBldmVuIHdoZW4gdGhlCglCU0QgcGFydGl0aW9uIGlzIG5vdCBzcGVjaWZpZWQuCglbIVNUQUdFMV81XSAocHJpbnRfY29tcGxldGlvbnMpOiBEb24ndCBhcHBlbmQgJyknIGlmIHRoZQoJcGFydGl0aW9uIGlzIGEgUEMgc2xpY2Ugd2hpY2ggbWF5IGhhdmUgQlNEIHBhcnRpdGlvbnMuIEluc3RlYWQsCgl0cnkgdG8gY29tcGxldGUgdGhlIGNvbW1hbmQtbGluZSB3aXRoIHBvc3NpYmxlIHBhcnRpdGlvbnMuCgkqIHN0YWdlMi9zaGFyZWQuaCAobmV4dF9wYXJ0aXRpb24pOiBEZWNsYXJlZC4KCQoyMDAwLTA5LTI3ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogY29uZmlndXJlLmluICgtLWVuYWJsZS1zZXJpYWwpOiBDaGFuZ2VkIHRvIC4uLgoJKC0tZGlzYWJsZS1zZXJpYWwpOiAuLi4gdGhpcy4gTm93IHRoZSBzZXJpYWwgc3VwcG9ydCBpcyBlbmFibGVkCglieSBkZWZhdWx0LgoJCjIwMDAtMDktMjcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvY2hhcl9pby5jIFshU1RBR0UxXzVdIChnZXRfY21kbGluZSkgWyFTVVBQT1JUX1NFUklBTF06IAoJRG9uJ3QgY2hlY2sgaWYgdGhlIHRlcm1pbmFsIGlzIGR1bWIuIElmIHRoZSB0ZXJtaW5hbCBpcyBjb25zb2xlLAoJYWx3YXlzIHVzZSBjb25zb2xlIGZ1bmN0aW9ucy4KCSogc3RhZ2UyL2J1aWx0aW5zLmMgWyFTVVBQT1JUX05FVEJPT1RdIChib290cF9mdW5jKTogVW5kZWZpbmVkLgoJWyFTVVBQT1JUX05FVEJPT1RdIChidWlsdGluX2Jvb3RwKTogTGlrZXdpc2UuCglbIUdSVUJfVVRJTF0gKGRldmljZV9mdW5jKTogTGlrZXdpc2UuCglbIUdSVUJfVVRJTF0gKGJ1aWx0aW5fZGV2aWNlKTogTGlrZXdpc2UuCglbIVNVUFBPUlRfTkVUQk9PVF0gKGRoY3BfZnVuYyk6IExpa2V3aXNlLgoJWyFTVVBQT1JUX05FVEJPT1RdIChidWlsdGluX2RoY3ApOiBMaWtld2lzZS4KCVshR1JVQl9VVElMXSAocXVpdF9mdW5jKTogTGlrZXdpc2UuCglbIUdSVUJfVVRJTF0gKGJ1aWx0aW5fcXVpdCk6IExpa2V3aXNlLgoJWyFTVVBQT1JUX05FVEJPT1RdIChyYXJwX2Z1bmMpOiBMaWtld2lzZS4KCVshU1VQUE9SVF9ORVRCT09UXSAoYnVpbHRpbl9yYXJwKTogTGlrZXdpc2UuCglbIVNVUFBPUlRfU0VSSUFMXSAoc2VyaWFsX2Z1bmMpOiBMaWtld2lzZS4KCVshU1VQUE9SVF9TRVJJQUxdIChidWlsdGluX3NlcmlhbCk6IExpa2V3aXNlLgoJWyFTVVBQT1JUX1NFUklBTF0gKHRlcm1pbmFsX2Z1bmMpOiBMaWtld2lzZS4KCVshU1VQUE9SVF9TRVJJQUxdIChidWlsdGluX3Rlcm1pbmFsKTogTGlrZXdpc2UuCglbIVNVUFBPUlRfTkVUQk9PVF0gKHRmdHBzZXJ2ZXJfZnVuYyk6IExpa2V3aXNlLgoJWyFTVVBQT1JUX05FVEJPT1RdIChidWlsdGluX3RmdHBzZXJ2ZXIpOiBMaWtld2lzZS4KCShidWlsdGluX3RhYmxlKSBbIVNVUFBPUlRfTkVUQk9PVF06IFJlbW92ZWQgdGhlIHBvaW50ZXJzIHRvCglCVUlMVElOX0JPT1RQLCBCVUlMVElOX0RIQ1AsIEJVSUxUSU5fUkFSUCwgYW5kCglCVUlMVElOX1RGVFBTRVJWRVIuCgkoYnVpbHRpbl90YWJsZSkgWyFTVVBQT1JUX1NFUklBTF06IFJlbW92ZWQgdGhlIHBvaW50ZXJzIHRvCglCVUlMVElOX1NFUklBTCBhbmQgQlVJTFRJTl9URVJNSU5BTC4KCShidWlsdGluX3RhYmxlKSBbIUdSVUJfVVRJTF06IFJlbW92ZWQgdGhlIHBvaW50ZXJzIHRvCglCVUlMVElOX0RFVklDRSBhbmQgQlVJTFRJTl9RVUlULgoJCjIwMDAtMDktMjYgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiB1dGlsL2dydWItaW5zdGFsbC5pbiAoYm9vdGRpcl9kZXZpY2UpOiBOZXcgdmFyaWFibGUuIElmCgkkYm9vdGRpcl9kZXZpY2UgaXMgbm90IHRoZSBzYW1lIGFzICRyb290X2RldmljZSwgc2V0IHJvb3RfZGV2aWNlCglhbmQgZ3J1YmRpciB0byAkYm9vdGRpcl9kZXZpY2UgYW5kICIvZ3J1YiIsIHJlc3BlY3RpdmVseS4KCUFkZCAtLXByZWZpeD0kZ3J1YmRpciBpbnRvIHRoZSBjb21tYW5kICJzZXR1cCIuCgkKMjAwMC0wOS0yNiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCglBZGQgLS1wcmVmaXg9RElSIHRvIHRoZSBjb21tYW5kICJzZXR1cCIuCgkKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKHNldHVwX2Z1bmMpOiBOZXcgbmVzdGVkIGZ1bmN0aW9uLAoJY2hlY2tfZmlsZSBjaGVja3MgaWYgdGhlIGZpbGUgRklMRSBleGlzdHMuCglSZW1vdmUgdGhlIHByZWZpeCAiL2Jvb3QvZ3J1YiIgaW4gU1RBR0UxXzVfTUFQLgoJRG9uJ3QgaGFyZGNvZGUgIi9ib290L2dydWIvc3RhZ2UxIiwgIi9ib290L2dydWIvc3RhZ2UyIiwgb3IKCSIvYm9vdC9ncnViL21lbnUubHN0Ii4gSW5zdGVhZCwgY2hlY2sgaWYgQVJHIGNvbnRhaW5zCgkiLS1wcmVmaXg9IiwgYW5kIGlmIHNwZWNpZmllZCwgc2V0IFBSRUZJWCB0byB0aGUgdmFsdWUuCglJZiBub3Qgc3BlY2lmaWVkLCBjaGVjayAiL2Jvb3QvZ3J1Yi9zdGFnZTEiIGFuZCwgaWYgbm90IGZvdW5kLAoJY2hlY2sgIi9ncnViL3N0YWdlMSIuIElmIGEgc3RhZ2UxIHdhcyBmb3VuZCwgc2V0IFBSRUZJWCB0byB0aGUKCWRpcmVjdG9yeSB3aGljaCBjb250YWlucyB0aGUgc3RhZ2UxLgoJCjIwMDAtMDktMTIgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJQWRkIGFkZGl0aW9uYWwgbWFnaWMgdG8gYXZvaWQgYSBidWcgaW4gTGludXguICpzaWdoKgoJCgkqIHN0YWdlMi9ib290LmMgKGxvYWRfaW1hZ2UpOiBDb3B5IFNSQyB0byBERVNUIGZpcnN0LCBhbmQgYXBwZW5kCglhICJtZW09IiBvcHRpb24gdG8gREVTVCBpbnN0ZWFkIG9mIHByZXBlbmRpbmcuCgkKMjAwMC0wOS0xMSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCglSZXBvcnRlZCBieSBBbGVzc2FuZHJvIFJ1YmluaToKCSogc3RhZ2UyL2ZzeXNfbWluaXguYyAobWluaXhfbW91bnQpOiBDaGVjayBpZiBDVVJSRU5UX1NMSUNFIGlzIGEKCXBhcnRpdGlvbiB0eXBlIGZvciBtaW5peCBmcywgdXNpbmcgdGhlIG1hY3JvCglJU19QQ19TTElDRV9UWVBFX01JTklYLgoJKiBzdGFnZTIvcGNfc2xpY2UuaCAoUENfU0xJQ0VfVFlQRV9MSU5VWF9NSU5JWCk6IE5ldyBtYWNyby4KCShJU19QQ19TTElDRV9UWVBFX01JTklYKTogTGlrZXdpc2UuCgkKMjAwMC0wOS0wOSAgQWxlc3NhbmRybyBSdWJpbmkgIDxydWJpbmlAbW9yZ2FuYS5zeXN0ZW15Lml0PgoKCSogc3RhZ2UxL3N0YWdlMS5TIChub3RpZmljYXRpb25fc3RyaW5nKTogUHJpbnQgIkdSVUIgIiBpbnN0ZWFkCglvZiAic3RhZ2UxICIuCgkqIHN0YWdlMi9zdGFydC5TIFtTVEFHRTFfNV0gKG5vdGlmaWNhdGlvbl9zdHJpbmcpOiBQcmludAoJIkxvYWRpbmcgc3RhZ2UxLjUiIGluc3RlYWQgb2YgInN0YWdlMS41ICIuCglbIVNUQUdFMV81XSAobm90aWZpY2F0aW9uX3N0cmluZyk6IFByaW50ICJMb2FkaW5nIHN0YWdlMiIKCWluc3RlYWQgb2YgInN0YWdlMiAiLgoJKG5vdGlmaWNhdGlvbl9zdGVwKTogTmV3IGxhYmVsLCBmb2xsb3dlZCBieSBhIHN0cmluZyAiLiIuCgkobm90aWZpY2F0aW9uX2RvbmUpOiBOZXcgbGFiZWwsIGZvbGxvd2VkIGJ5IGEgc3RyaW5nICJcclxuIi4KCShjb3B5X2J1ZmZlcik6IFByaW50IE5PVElGSUNBVElPTl9TVEVQIGFmdGVyIGNvcHlpbmcgdGhlIGJ1ZmZlci4KCShib290aXQpOiBQcmludCBOT1RJRklDQVRJT05fRE9ORSBiZWZvcmUgcmVzdG9yaW5nICVkeC4KCQoyMDAwLTA5LTA5ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUZyb20gQWxlc3NhbmRybyBSdWJpbmk6CgkqIGNvbmZpZ3VyZS5pbiAoQ1BQRkxBR1MpOiBBZGRlZCAtbWFsaWduLWp1bXBzPTEsCgktbWFsaWduLWxvb3BzPTEgYW5kIC1tYWxpZ24tZnVuY3Rpb25zPTEuCgkKMjAwMC0wOS0wNyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCglGcm9tIEhhbCBTbnlkZXIgPGhhbEB2YWlsc3lzLmNvbT46CgkqIGxpYi9kZXZpY2UuYyAoZ2V0X2RyaXZlX2dlb21ldHJ5KSBbX19GcmVlQlNEX18gfHwgX19OZXRCU0RfXwoJfHwgX19PcGVuQlNEX19dOiBDYWxsIGlvY3RsIGZvciBGRCBpbnN0ZWFkIG9mCglESVNLU1tEUklWRV0uRkxBR1MuIFRoaXMgd2FzIGEgbWlzdGFrZSB3aGVuIEkgc2VncmVnYXRlZCB0aGlzCglmdW5jdGlvbiBmcm9tIGFzbXN0dWIuYy4KCQoyMDAwLTA5LTA3ICBBbGVzc2FuZHJvIFJ1YmluaSAgPHJ1YmluaUBnbnUub3JnPgoKCSogZG9jcy90dXRvcmlhbC50ZXhpOiBGaXhlZCBhIGZldyB0eXBvcyBhbmQgbWlub3IgaW1wcmVjaXNpb25zLgoJKiBkb2NzL3Byb2ctcmVmLnRleGk6IExpa2V3aXNlLgoJKiBkb2NzL3VzZXItcmVmLnRleGk6IExpa2V3aXNlLgoKMjAwMC0wOS0wNyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCglGcm9tIEFsZXNzYW5kcm8gUnViaW5pOgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAodGVybWluYWxfZnVuYyk6IFJlbmFtZSBUSU1FT1VUIHRvIFRPLCB0bwoJc3VwcHJlc3MgR0NDIHdhcm5pbmdzLgoJKiBncnViL2FzbXN0dWIuYyAoc2VyaWFsX2NoZWNra2V5KTogTGlrZXdpc2UuCgkKMjAwMC0wOS0wNiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9jaGFyX2lvLmMgWyFTVEFHRTFfNV0gKGF1dG9fZmlsbCk6IE5ldyB2YXJpYWJsZS4KCVshU1RBR0UxXzVdIChnZXRfY21kbGluZSk6IFNhdmUgQVVUT19GSUxMIGluIFNBVkVEX0FVVE9fRklMTCBpbgoJdGhlIGJlZ2lubmluZyBhbmQgcmVzdG9yZSBBVVRPX0ZJTEwgYmVmb3JlIHJldHVybi4KCVNldCBBVVRPX0ZJTEwgdG8gb25lIGFuZCB6ZXJvIGJlZm9yZSBhbmQgYWZ0ZXIgY2FsbGluZwoJcHJpbnRfY29tcGxldGlvbnMsIHJlc3BlY3RpdmVseS4KCShncnViX3B1dGNoYXIpIFshU1RBR0UxXzVdOiBVc2UgYSBzdGF0aWMgdmFyaWFibGUgQ09MIHRvIHRyYWNrCgl0aGUgcG9zaXRpb24gb2YgdGhlIGN1cnNvci4gSWYgQyBpcyBhIGNhcnJpYWdlIHJldHVybiwgY2xlYXIKCUNPTC4gSWYgQyBpcyBhIGJhY2tzcGFjZSBhbmQgQ09MIGlzIHBvc2l0aXZlLCBkZWNyZWFzZSBDT0wuIElmIEMKCWlzIGEgcHJpbnRhYmxlIGNoYXJhY3RlciwgaW5jcmVhc2UgQ09MLiBJbiB0aGlzIGNhc2UsIGlmCglBVVRPX0ZJTEwgaXMgbm9uLXplcm8gYW5kIENPTCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gNzksCglwdXQgYSBuZXdsaW5lIGF1dG9tYXRpY2FsbHkuCgkqIHN0YWdlMi9zaGFyZWQuaCAoYXV0b19maWxsKTogRGVjbGFyZWQuCgkqIHN0YWdlMi9zdGFnZTIuYyAocnVuX21lbnUpOiBJbiB0aGUgbWVudSBpbnRlcmZhY2UsIGRpc2FibGUgdGhlCglhdXRvIGZpbGwgbW9kZSAoaS5lLiBzZXQgQVVUT19GSUxMIHRvIHplcm8pLCBhbmQgZW5hYmxlIGl0IGFnYWluCgl3aGVuIGJvb3RpbmcgYW4gZW50cnkuCgkoY21haW4pOiBJbml0aWFsaXplIEFVVE9fRklMTCAoaS5lLiBzZXQgaXQgdG8gb25lKSBpbiB0aGUKCWJlZ2lubmluZyBvZiB0aGUgbG9vcC4KCQoyMDAwLTA5LTA2ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUFkZCBzdXBwb3J0IGZvciAiYm9vdCBwcmV2aW91c2x5IGJvb3RlZCBlbnRyeSBieSBkZWZhdWx0IiwgYmFzZWQKCW9uIHRoZSBwYXRjaCBieSBNaWtlIE1leWVyIDxtd21AbWlyZWQub3JnPiwgYnV0IEkndmUgbW9kaWZpZWQKCWhpcyBwYXRjaCB0aG9yb3VnaGx5LgoJCgkqIGdydWIvYXNtc3R1Yi5jIChzYXZlZF9lbnRyeW5vKTogTmV3IHZhcmlhYmxlLiBUaGlzIGlzIGEgZHVtbXkuCgkqIHN0YWdlMS9zdGFnZTEuaCAoQ09NUEFUX1ZFUlNJT05fTUlOT1IpOiBJbmNyZW1lbnRlZC4KCSogc3RhZ2UyL2FzbS5TIChzYXZlZF9lbnRyeW5vKTogTmV3IHZhcmlhYmxlLgoJKGNvZGVzdGFydCkgWyFTVVBQT1JUX0RJU0tMRVNTXTogU2V0IElOU1RBTExfU0VDT05EX1NFQ1RPUiB0bwoJJWVicC4gJWVicCBpcyBzZXQgaW4gc3RhcnQuUy4KCShpbnN0YWxsX3NlY29uZF9zZWN0b3IpOiBOZXcgdmFyaWFibGUuCgkqIHN0YWdlMi9idWlsdGlucy5jIChjdXJyZW50X2VudHJ5bm8pOiBOZXcgdmFyaWFibGUuCgkoZGVmYXVsdF9mdW5jKSBbIVNVUFBPUlRfRElTS0xFU1NdOiBJZiBBUkcgaXMgInNhdmVkIiwgc2V0CglERUZBVUxUX0VOVFJZIHRvIFNBVkVEX0VOVFJZTk8uCgkoc2F2ZWRlZmF1bHRfZnVuYyk6IE5ldyBmdW5jdGlvbi4KCShidWlsdGluX3NhdmVkZWZhdWx0KTogTmV3IHZhcmlhYmxlLgoJKGJ1aWx0aW5fdGFibGUpOiBBZGRlZCBhIHBvaW50ZXIgdG8gQlVJTFRJTl9TQVZFREVGQVVMVC4KCSogc3RhZ2UyL3NoYXJlZC5oIChTVEFHRTJfU0FWRURfRU5UUllOTyk6IE5ldyBtYWNyby4KCShTVEFHRTJfU1RBR0UyX0lEKTogQ2hhbmdlZCB0byAweDEwLgoJKFNUQUdFMl9GT1JDRV9MQkEpOiBDaGFnZWQgdG8gMHgxMS4KCShTVEFHRTJfVkVSX1NUUl9PRkZTKTogQ2hhbmdlZCB0byAweDEyLgoJKGluc3RhbGxfc2Vjb25kX3NlY3Rvcik6IERlY2xhcmVkLgoJKHNhdmVkX2VudHJ5bm8pOiBMaWtld2lzZS4KCShjdXJyZW50X2VudHJ5bm8pOiBMaWtld2lzZS4KCSogc3RhZ2UyL3N0YWdlMi5jIChydW5fbWVudSk6IFNldCBDVVJSRU5UX0VOVFJZTk8gdG8gRklSU1RfRU5UUlkKCSsgRU5UUllOTywgcmlnaHQgYmVmb3JlIGNhbGxpbmcgcnVuX3NjcmlwdC4KCSogc3RhZ2UyL3N0YXJ0LlMgKHN0YXJ0KTogU2F2ZSB0aGUgc2VjdG9yIG51bWJlciBvZiB0aGUgc2Vjb25kCglzZWN0b3IgaW4gJWVicC4KCQoyMDAwLTA5LTA1ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UxL3N0YWdlMS5TIChsYmFfbW9kZSkgWyFOT19CVUdHWV9CSU9TX0lOX1RIRV9XT1JMRF06CglEb24ndCBjaGVjayBmb3IgdGhlIGdlb21ldHJ5LCBzaW5jZSBzb21lIEJJT1NlcyBkb24ndCByZXR1cm4gdGhlCgludW1iZXIgb2YgdG90YWwgc2VjdG9ycyBjb3JyZWN0bHksIGV2ZW4gaWYgdGhleSBoYXZlIHdvcmtpbmcgTEJBCglzdXBwb3J0LgoJKiBzdGFnZTIvc3RhcnQuUyAobGJhX21vZGUpIFshTk9fQlVHR1lfQklPU19JTl9USEVfV09STERdOgoJTGlrZXdpc2UuCgkqIHN0YWdlMi9iaW9zLmMgKGJpb3NkaXNrKSBbIU5PX0JVR0dZX0JJT1NfSU5fVEhFX1dPUkxEXToKCUxpa2V3aXNlLgoJUmVwb3J0ZWQgYnkgSmFuIEZyaWNrZSA8ZnJpY2tlQHVuaS1ncmVpZnN3YWxkLmRlPiBhbmQgUGl4ZWwKCTxwaXhlbEBtYW5kcmFrZXNvZnQuY29tPi4KCQoyMDAwLTA5LTA1ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUZyb20gQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUBnbnUub3JnPjoKCSogc3RhZ2UyL2NoYXJfaW8uYyAocHJpbnRfZXJyb3IpIFshU1RBR0UxXzVdOiBQcmludCBFUlJOVU0gbGlrZQoJIkVycm9yIDk6IFVua25vd24gYm9vdCBmYWlsdXJlIi4KCShwcmludF9lcnJvcikgW1NUQUdFMV81XTogRG9uJ3QgcHJpbnQgYSBjb2xvbi4KCSogdXRpbC9ncnViLWluc3RhbGwuaW46IFdoZW4gY2hlY2tpbmcgaWYgYW4gZXJyb3Igb2NjdXJyZWQsIHVzZQoJdGhlIGV4cHJlc3Npb24gIkVycm9yIFswLTldKjogIiBpbnN0ZWFkIG9mICJFcnJvcjogIi4KCSogZG9jcy91c2VyLXJlZi50ZXhpIChTdGFnZTEuNSBlcnJvcnMpOiBVcGRhdGVkLCBzaW5jZSB0aGUgZXJyb3IKCWZvcm0gY2hhbmdlZC4KCQoyMDAwLTA5LTA0ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL3N0YWdlMi5jIChydW5fbWVudSkgW0dSVUJfVVRJTF06IFNldCBESVNQX1VQIGFuZAoJRElTUF9ET1dOIHRvIEFDU19VQVJST1cgYW5kIEFDU19EQVJST1csIHJlc3BlY3RpdmVseS4gRG9uJ3QgY2FsbAoJZ3J1Yl9wcmludGYgaGVyZS4KCShydW5fbWVudSkgWyFHUlVCX1VUSUxdOiBEb24ndCBjYWxsIGdydWJfcHJpbnRmIGhlcmUuIEluc3RlYWQsCgljYWxsIGl0Li4uCgkocnVuX21lbnUpOiAuLi4gaGVyZS4KCSogc3RhZ2UyL3NoYXJlZC5oIChBQ1NfVUxDT1JORVIpOiBBbHdheXMgZGVmaW5lIHRoaXMgb3Vyc2VsdmVzLAoJd2hldGhlciB5b3VyIGN1cnNlcyBsaWJyYXJ5IGhhcyB0aGUgZGVmaW5pdGlvbi4KCShBQ1NfVVJDT1JORVIpOiBMaWtld2lzZS4KCShBQ1NfTExDT1JORVIpOiBMaWtld2lzZS4KCShBQ1NfTFJDT1JORVIpOiBMaWtld2lzZS4KCShBQ1NfSExJTkUpOiBMaWtld2lzZS4KCShBQ1NfVkxJTkUpOiBMaWtld2lzZS4KCShBQ1NfTEFSUk9XKTogTGlrZXdpc2UuCgkoQUNTX1JBUlJPVyk6IExpa2V3aXNlLgoJKEFDU19VQVJST1cpOiBMaWtld2lzZS4KCShBQ1NfREFSUk9XKTogTGlrZXdpc2UuCgoJKiBzdGFnZTIvY2hhcl9pby5jIFtTVVBQT1JUX1NFUklBTF0gKHNlcmlhbF9jbHMpOiBJZiB0aGUKCXRlcm1pbmFsIGlzIGR1bWIsIGp1c3QgcHV0IGEgbmV3bGluZS4KCSogc3RhZ2UyL2J1aWx0aW5zLmMgKHRlcm1pbmFsX2Z1bmMpIFtTVVBQT1JUX1NFUklBTF06IFdoZW4KCWNob29zaW5nIGEgdGVybWluYWwsIGRvbid0IHNldCBURVJNSU5BTCB0byB0aGUgdHlwZSBvZiB0aGUKCXRlcm1pbmFsLiBJbnN0ZWFkLCBhcHBseSBhIGxvZ2ljYWwgQU5EIG9wZXJhdGlvbiB3aXRoCglURVJNSU5BTF9EVU1CLCBzaW5jZSBwcmV2aW91cyBjb2RlIGJydXNoZWQgb2ZmIHRoZSBkdW1iCglhdHRyaWJ1dGUuCgkKMjAwMC0wOS0wNCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9zdGFnZTIuYyAocnVuX21lbnUpOiBJZiBTSE9XX01FTlUgaXMgemVybywgcHJpbnQgYQoJbWVzc2FnZSB3aXRoIHRoZSB0aW1lb3V0IHBlciBzZWNvbmQuCglJZiBHUlVCX1RJTUVPVVQgaXMgbmVnYXRpdmUsIHNldCBTSE9XX01FTlUgdG8gb25lLCBzaW5jZSB0aGUKCWNvbmRpdGlvbiAibm8gdGltZW91dCBhbmQgbm8gaW50ZXJmYWNlIiBpcyBub25zZW5zZS4KCUlmIEdSVUJfVElNRU9VVCBpcyBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gemVybyBhbmQgdGhlCgl0ZXJtaW5hbCBpcyBkdW1iLCBzZXQgU0hPV19NRU5VIHRvIHplcm8uCglJZiBTSE9XX01FTlUgaXMgbm9uLXplcm8gYW5kIHRoZSB0ZXJtaW5hbCBpcyBkdW1iLCBlbnRlciB0aGUKCWNvbW1hbmQtbGluZSBpbnRlcmZhY2UgaW5zdGVhZC4gSWYgQVVUSCBpcyBmYWxzZSBhbmQgUEFTU1dPUkQgaXMKCW5vbi1OVUxMLCBwcm9tcHQgdGhlIHVzZXIgdG8gZW50ZXIgYSBwYXNzd29yZCB1bnRpbCB0aGUgZW50ZXJlZAoJcGFzc3dvcmQgaXMgaWRlbnRpY2FsIHRvIFBBU1NXT1JELgoJCjIwMDAtMDktMDMgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiB1dGlsL2dydWItaW5zdGFsbC5pbjogRml4IGEgdHlwbzogZ3J1Yl9kaXIgLT4gZ3J1YmRpci4KCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGluc3RhbGxfZnVuYykgW0dSVUJfVVRJTF06IE9wZW4gYSBTdGFnZSAyCgl3aXRoICJyKyIgaW5zdGVhZCBvZiAiciIsIGFzIEdSVUIgbmVlZHMgdG8gb3ZlcndyaXRlIGl0LgoJCjIwMDAtMDktMDIgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvc3RhZ2UyLmMgKHJ1bl9tZW51KTogRG9uJ3QgdXNlIGVpdGhlciBgcCcgb3IgYG4nIHRvCgltb3ZlIHRoZSBjdXJzb3IsIGJlY2F1c2UgYHAnIGlzIGFscmVhZHkgdXNlZCBmb3IgYW5vdGhlcgoJcHVycG9zZSAocGFzc3dvcmQpLgoJKHJ1bl9tZW51KSBbU1VQUE9SVF9TRVJJQUxdOiBEb24ndCBzZXQgdGhlIHZhcmlhYmxlcyBESVNQX1VQIGFuZAoJRElTUF9ET1dOIGF0IHRoZSBzdGFydCB0aW1lLiBJbnN0ZWFkLCBzZXQgdGhlbSBqdXN0IGJlZm9yZSB1c2luZwoJdGhlbSBhY3R1YWxseSwgYmVjYXVzZSBURVJNSU5BTCBtYXkgY2hhbmdlIHdoZW4gcnVubmluZyBhIG1lbnUuCgkKMjAwMC0wOS0wMSAgS2xhdXMgUmVpY2hsICA8S2xhdXMuUmVpY2hsQGFsY2F0ZWwuYXQ+CgoJKiBzdGFnZTIvc3RhZ2UyLmMgKHJ1bl9tZW51KTogU2V0dXAgYW5kIHVzZSBkaXNwX3VwLCBkaXNwX2Rvd24KCWRlcGVuZGluZyBvbiB0aGUgdGVybWluYWwgbW9kZS4KCShydW5fbWVudSk6IEFsbG93ICdeJyAocmVzcC4gJ3AnKSBhbmQgJ3YnIChyZXNwICduJykga2V5cyB3ZQoJZGVzY3JpYmVkIGluIG91ciBoZWxwIGFib3ZlIChyZXNwLiBhdXRob3JzIHByZWZlcmVuY2VzKS4KCjIwMDAtMDgtMzEgIEtsYXVzIFJlaWNobCAgPEtsYXVzLlJlaWNobEBhbGNhdGVsLmF0PgoKCSogc3RhZ2UyL3N0YWdlMi5jIChzZXRfbGluZSk6IEdvIGJhY2sgb25lIGNoYXIsIHdoaWNoIGlzCgljb25zaXN0ZW50IHdpdGggdGhlIG9yaWdpbmFsIHNpdHVhdGlvbiwgd2hlbiBhIHRpbWVvdXQgd2FzCglydW5uaW5nLiAgCgkocnVuX21lbnUpOiBJZiBHUlVCX1RJTUVPVVQgaXMgc3RvcHBlZCBkb24ndCBsb29wIGJ1c3kgb3ZlcgoJQ0hFQ0tLRVksIGp1c3QgcmVsYXggaW4gR0VUS0VZLiAKCgkqIHN0YWdlMi9idWlsdGlucy5jIChzZXJpYWxfZnVuYyk6IC0tc3BlZWQgaGFuZGxpbmc6IGNvcnJlY3RlZAoJdHlwbzogc2V0IFNQRUVEIGluc3RlYWQgb2YgUE9SVC4gCgkKMjAwMC0wOC0zMSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9idWlsdGlucy5jICh0ZXJtaW5hbF9mdW5jKTogQWRkZWQgdHdvIG5ldyBvcHRpb25zLAoJLS1kdW1iIGFuZCAtLXRpbWVvdXQ9U0VDUy4KCSogc3RhZ2UyL2NoYXJfaW8uYyBbIVNUQUdFMV81XSAoZ2V0a2V5KTogVXNlIGxvZ2ljYWwgQU5ECglvcGVyYXRpb25zLCB3aGVuIGNoZWNraW5nIGlmIHRoZSB0ZXJtaW5hbCBpcyBhIGNvbnNvbGUgb3IgYQoJc2VyaWFsIHRlcm1pbmFsLgoJWyFTVEFHRTFfNV0gKGdldGtleSkgW1NVUFBPUlRfU0VSSUFMXTogRG9uJ3QgY2hlY2sgaWYgYm90aAoJVEVSTUlOQUxfQ09OU09MRSBhbmQgVEVSTUlOQUxfU0VSSUFMIGFyZSBzZXQgaW4gVEVSTUlOQUwuCgkKMjAwMC0wOC0zMSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMS9zdGFnZTEuUyAoTU9WX01FTV9UT19BTCk6IE5ldyBtYWNyby4KCShyZWFsX3N0YXJ0KTogVXNlIHRoZSBtYWNybyBNT1ZfTUVNX1RPX0FMIGluc3RlYWQgb2YgdXNpbmcgbW92YgoJZGlyZWN0bHksIGJlY2F1c2UgYmludXRpbHMtMi45LjEuMC54IGRvZXNuJ3QgcHJvZHVjZSBhIHNob3J0CglvcGNvZGUgZm9yIGl0IGF1dG9tYXRpY2FsbHkuIFJlcG9ydGVkIGJ5IEFsZXNzYW5kcm8gUnViaW5pCgk8cnViaW5pQGdudS5vcmc+LgoKMjAwMC0wOC0zMCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoQ1BQRkxBR1MpOiBSZW1vdmUgLVd1bmRlZiBieSBkZWZhdWx0LiBBZGQgdGhlCglvcHRpb24gb25seSBpZiB0aGUgQyBjb21waWxlciBzdXBwb3J0cyBpdCwgYmVjYXVzZSBHQ0MgMi43LngKCWRvZXNuJ3Qgc3VwcG9ydCBpdC4KCSogZ3J1Yi9tYWluLmMgKGxvbmdvcHRzKTogVGhlIHR5cGUgb2YgdGhlIGFyZ3VtZW50IGZvciAiaG9sZCIgaXMKCWNoYW5nZWQgdG8gT1BUSU9OQUxfQVJHVU1FTlQuCgkobWFpbik6IElmIC0taG9sZCBpcyBzcGVjaWZpZWQsIGNoZWNrIGlmIE9QVEFSRyBpcyB6ZXJvLiBJZiBzbywKCXNldCBIT0xEIHRvIC0xLCBvdGhlcndpc2UsIHNldCBpdCB0byB0aGUgZGlnaXQgT1BUQVJHLgoJSWYgSE9MRCBpcyBncmVhdGVyIHRoYW4gemVybywgZGVjcmVhc2UgaXQgb25jZSBwZXIgbG9vcC4KCQoyMDAwLTA4LTMwICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCVRoZSBjb21tYW5kLWxpbmUgaW50ZXJmYWNlIGlzIHN3aXRjaGVkIHRvIHNpbmdsZS1saW5lIGVkaXRpbmcKCW1vZGUuCgkKCSogc3RhZ2UyL2NoYXJfaW8uYyBbIVNUQUdFMV81XSAoZ2V0X2NtZGxpbmUpOiBFeHRlbnNpdmVseQoJcmV3cml0dGVuLiBUaGUgbmVzdGVkIGZ1bmN0aW9ucyBjbF9wcmludCBhbmQgY2xfa2lsbF90b19lbmQgYXJlCglyZW1vdmVkLCBjbF9yZWZyZXNoLCBjbF9iYWNrd2FyZCwgY2xfZm9yd2FyZCBhbmQgY2xfZGVsZXRlIGFyZQoJYWRkZWQsIGFuZCwgY2xfaW5pdCBhbmQgY2xfaW5zZXJ0IGFyZSByZXdyaXR0ZW4gZnJvbSBzY3JhdGNoLgoJU2VlIHRoZSBzb3VyY2UgY29kZSwgZm9yIG1vcmUgaW5mb3JtYXRpb24uIEkgZG9uJ3QgdGhpbmsgdGhpcwoJa2luZCBvZiBjaGFuZ2VzIGNhbiBiZSByZXByZXNlbnRlZCBpbiBDaGFuZ2VMb2cuCglbIVNUQUdFMV81XSAoQ01ETElORV9XSURUSCk6IE5ldyBtYWNyby4KCVshU1RBR0UxXzVdIChDTURMSU5FX01BUkdJTik6IExpa2V3aXNlLgoJKiBzdGFnZTIvc2hhcmVkLmggKFRFUk1JTkFMX0RVTUIpOiBMaWtld2lzZS4KCQoyMDAwLTA4LTI4ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogZ3J1Yi9hc21zdHViLmMgKGNvbnNvbGVfcHV0Y2hhcikgW0hBVkVfTElCQ1VSU0VTXTogSWYKCVVTRV9DVVJTRVMgaXMgdHJ1ZSwgZW11bGF0ZSBhIG5ldyBsaW5lIGxpa2UgYSBvcmRpbmFyeSB0ZXJtaW5hbCwKCWJlY2F1c2UgbmN1cnNlcyB0cmVhdHMgaXQgYmFkbHkuIElmIGN1cnJlbnQgcG9zaXRpb24gb24geS1heGlzCglpcyB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4sIGNhbGwgc2Nyb2xsLiBPdGhlcndpc2UsIGNhbGwgbW92ZQoJd2l0aCB0aGUgYXJndW1lbnRzLCBZICsgMSBhbmQgWCwgd2hlcmUgWCBhbmQgWSBhcmUgY3VycmVudAoJcG9zaXRpb24gb2YgdGhlIGN1cnNvci4KCQoyMDAwLTA4LTI4ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2FzbS5TIChjb25zb2xlX3B1dGNoYXIpOiBEb24ndCBwcmludCBhIGNhcnJpYWdlIHJldHVybgoJd2hlbiBDIGlzIGEgbmV3bGluZS4KCSogc3RhZ2UyL2NoYXJfaW8uYyAoZ3J1Yl9wdXRjaGFyKTogQ2FsbCBncnViX3B1dGNoYXIgd2l0aCB0aGUKCWFydWdtZW50IHNldCB0byBhIGNhcnJpYWdlIHJldHVybiwgaWYgQyBpcyBhIG5ld2xpbmUuCglbIVNUQUdFMV81ICYmIFNVUFBPUlRfU0VSSUFMXTogRG9uJ3QgcHJpbnQgYSBjYXJyaWFnZSByZXR1cm4KCXdoZW4gQyBpcyBhIG5ld2xpbmUuCgkKMjAwMC0wOC0yNyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGxpYi9kZXZpY2UuYyBbX19saW51eF9fXTogRG9uJ3QgaW5jbHVkZSBsaW51eC9mcy5oLgoJWyFCTEtHRVRTSVpFXSAoQkxLR0VUU0laRSk6IERlZmluZWQgYXMgX0lPKDB4MTIsOTYpLgoJKiBncnViL2FzbXN0dWIuYyBbX19saW51eF9fXTogRG9uJ3QgaW5jbHVkZSBsaW51eC9mcy5oLgoJCjIwMDAtMDgtMjcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJUHJlc2VydmUgYSBtYWdpYyBudW1iZXIgdXNlZCBieSBXaW5kb3dzIE5UIGluIGEgTUJSLiBTaGl0IQoJUmVwb3J0ZWQgYnkgS2hpbWVua28gVmljdG9yLgoJCgkqIHN0YWdlMS9zdGFnZTEuaCAoU1RBR0UxX1dJTkRPV1NfTlRfTUFHSUMpOiBOZXcgbWFjcm8uCgkqIHN0YWdlMS9zdGFnZTEuUyAoY29weV9idWZmZXIpOiBVc2UgcHVzaGEgYW5kIHBvcGEsIGluc3RlYWQgb2YKCXB1c2hpbmcvcG9waW5nICVjeCBhbmQgJXNpIHNlcGFyYXRlbHksIHRvIHJlZHVjZSB0aGUgY29kZSBzaXplLgoJKG50X21hZ2ljKTogTmV3IGxhYmVsLiBTZXQgdGhlIG9mZnNldCB0byBfc3RhcnQgcGx1cwoJU1RBR0UxX1dJTkRPV1NfTlRfTUFHSUMKCShwYXJ0X3N0YXJ0KTogTmV3IGxhYmVsLgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoaW5zdGFsbF9mdW5jKTogSWYgREVTVF9EUklWRSBpcyBhIGhhcmQKCWRpc2ssIGNvcHkgdGhlIHBvc3NpYmxlIHBhcnRpdGlvbiB0YWJsZSBhbmQgV2luZG93cyBOVCBtYWdpYyB0bwoJU1RBR0UxX0JVRkZFUiBmcm9tIE9MRF9TRUNULgoJCjIwMDAtMDgtMjYgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvY2hhcl9pby5jICh0cmFuc2xhdGVfa2V5Y29kZSkgW1NVUFBPUlRfU0VSSUFMXTogRG9uJ3QKCWRyYWluIHRoZSBpbnB1dCBidWZmZXIsIHNpbmNlIHRoYXQgd2FzIGlycml0YXRpbmcuCgkKMjAwMC0wOC0yNiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCglEb24ndCBzYXZlL3Jlc3RvcmUgZnJhZ2lsZSByZWdpc3RlcnMgdW5uZWNlc3NhcmlseS4KCQoJKiBzdGFnZTIvYXNtLlMgWyFTVEFHRTFfNV0gKHRyYWNrX2ludDEzKTogRG9uJ3Qgc2F2ZS9yZXN0b3JlCgklZWN4LCAlZWR4LCBvciAlZWF4LgoJWyFTVEFHRTFfNV0gKHNldF9pbnQxM19oYW5kbGVyKTogTGlrZXdpc2UuCgkoYmlvc2Rpc2tfaW50MTNfZXh0ZW5zaW9ucyk6IExpa2V3aXNlLgoJKGJpb3NkaXNrX3N0YW5kYXJkKTogTGlrZXdpc2UuCgkoY2hlY2tfaW50MTNfZXh0ZW5zaW9ucyk6IExpa2V3aXNlLgoJKGdldF9kaXNraW5mb19pbnQxM19leHRlbnNpb25zKTogTGlrZXdpc2UuCgkoZ2V0X2Rpc2tpbmZvX3N0YW5kYXJkKTogTGlrZXdpc2UuCgkoZ2V0X2Rpc2tpbmZvX2Zsb3BweSk6IExpa2V3aXNlLgoJWyFTVEFHRTFfNV0gKGdldF9laXNhbWVtc2l6ZSk6IExpa2V3aXNlLgoJWyFTVEFHRTFfNV0gKGdldF9tbWFwX2VudHJ5KTogTGlrZXdpc2UuCglbIVNUQUdFMV81XSAoY29uc29sZV9jbHMpOiBMaWtld2lzZS4KCVshU1RBR0UxXzVdIChub2N1cnNvcik6IExpa2V3aXNlLgoJWyFTVEFHRTFfNV0gKGNvbnNvbGVfZ2V0eHkpOiBMaWtld2lzZS4KCVshU1RBR0UxXzVdIChjb25zb2xlX2dvdG94eSk6IExpa2V3aXNlLgoJWyFTVEFHRTFfNV0gKHNldF9hdHRyaWIpOiBMaWtld2lzZS4KCVshU1RBR0UxXzVdIChnZXRydHNlY3MpOiBMaWtld2lzZS4KCVshU1RBR0UxXzVdIChjdXJydGlja3MpOiBMaWtld2lzZSwgYW5kIGRvbid0IHplcm8gJWVheAoJZXhwbGljaXRseSwgc2luY2UgcHJvdF90b19yZWFsIGRvZXMgdGhhdC4KCQoyMDAwLTA4LTI1ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2NoYXJfaW8uYyBbIVNUQUdFMV81XSAodHJhbnNsYXRlX2tleWNvZGUpOiBOZXcKCWZ1bmN0aW9uLiBUaGUgc2VyaWFsIHBhcnQgaXMgc3RvbGVuIGZyb20gdGhlIHBhdGNoIGJ5IENocmlzdG9waAoJUGxhdHRuZXIuCglbIVNUQUdFMV81XSAoZ2V0X2NtZGxpbmUpOiBDYWxsIHRyYW5zbGF0ZV9rZXljb2RlIGluc3RlYWQgb2YKCXRyYW5zbGF0aW5nIHNwZWNpYWwga2V5IGNvZGVzIGludG8gQVNDSUkgY2hhcmFjdGVycyBieSBpdHNlbGYuCgkqIHN0YWdlMi9zdGFnZTIuYyAocnVuX21lbnUpOiBXcmFwIGdldGtleSB3aXRoIHRoZSBtYWNybwoJQVNDSUlfQ0hBUiwgd2hlbiBjaGVja2luZyBpZiBFU0MgaXMgcHJlc3NlZC4KCUNhbGwgdHJhbnNsYXRlX2tleWNvZGUgYXMgd2VsbCBhcyBnZXRrZXksIHVubGVzcyBjaGVja2tleQoJcmV0dXJucyAtMS4gU28gZG9uJ3QgY2hlY2sgaWYgQyBpcyBLRVlfRE9XTiBvciBLRVlfVVAuIEFuZCBkb24ndAoJdXNlIHRoZSBtYWNybyBBU0NJSV9DSEFSIGZvciBDIGV4cGxpY2l0bHkuCgkqIHN0YWdlMi9zaGFyZWQuaCAodHJhbnNsYXRlX2tleWNvZGUpOiBEZWNsYXJlZC4KCQoyMDAwLTA4LTI0ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgW0dSVUJfVVRJTF06IEluY2x1ZGUgc3RkaW8uaCBiZWZvcmUKCXNoYXJlZC5oLiBSZXBvcnRlZCBieSBNYXRoaWV1IENob3VxdWV0LVN0cmluZ2VyCgk8bWNob3VxdWVAY3Muc3RldmVucy10ZWNoLmVkdT4uCgkKMjAwMC0wOC0yMSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtc2VyaWFsLXNwZWVkLWVtdWxhdGlvbik6IE5ldyBvcHRpb24uCgkoU0VSSUFMX1NQRUVEX1NJTVVMQVRJT04pOiBOZXcgY29uZGl0aW9uYWwuCgkqIGdydWIvTWFrZWZpbGUuYW0gKFNFUklBTF9GTEFHUyk6IE5ldyB2YXJpYWJsZS4gU2V0CgktRFNVUFBPUlRfU0VSSUFMPTEgYW5kIC1EU0lNVUxBVEVfU0xPV05FU1NfT0ZfU0VSSUFMPTEsIGlmCglTRVJJQUxfU1BFRURfU0lNVUxBVElPTiBpcyBkZWZpbmVkLCBvdGhlcndpc2UsIHNldCBpdCB0bwoJb25seSAtRFNVUFBPUlRfU0VSSUFMPTEuCgkoQU1fQ0ZMQUdTKTogUmVtb3ZlZCAtRFNVUFBPUlRfU0VSSUFMPTEgYW5kIGFkZGVkCgkkKFNFUklBTF9GTEFHUykuCgkqIGdydWIvYXNtc3R1Yi5jIFtTSU1VTEFURV9TTE9XTkVTU19PRl9TRVJJQUxdIChzZXJpYWxfc3BlZWQpOgoJTmV3IHZhcmlhYmxlLgoJKGdydWJfc2V0am1wKTogUmVtb3ZlZC4KCShncnViX2xvbmdqbXApOiBMaWtld2lzZS4KCShzZXJpYWxfZ2V0a2V5KSBbU0lNVUxBVEVfU0xPV05FU1NfT0ZfU0VSSUFMXTogV2FpdCBmb3IKCTEwMDAwMDAgLyAoU0VSSUFMX1NQRUVEID4+IDMpIG1pY3Jvc2Vjb25kcyB1c2luZyBnZXR0aW1lb2ZkYXkuCgkoc2VyaWFsX3B1dGNoYXIpIFtTSU1VTEFURV9TTE9XTkVTU19PRl9TRVJJQUxdOiBMaWtld2lzZS4KCShzZXJpYWxfaW5pdCkgW1NJTVVMQVRFX1NMT1dORVNTX09GX1NFUklBTF06IFNldCBTRVJJQUxfU1BFRUQgdG8KCVNQRUVELgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoc2VyaWFsX2Z1bmMpIFtTVVBQT1JUX1NFUklBTF06IEFkZGVkCglhIG5ldyBvcHRpb24sIGAtLXNwZWVkJy4KCShidWlsdGluX3NlcmlhbCk6IEFkZGVkIGEgZGVzY3JpcHRpb24gYWJvdXQgLS1zcGVlZC4KCSh0ZXJtaW5hbF9mdW5jKTogV2hlbiBnZXQgYSBrZXkgZnJvbSBhIHNlcmlhbCBkZXZpY2UsIGlmIEdSVUIgaXMKCWluIHRoZSBjb21tYW5kLWxpbmUgaW50ZXJmYWNlLCBjYWxsIGdydWJfbG9uZ2ptcCB3aXRoCglSRVNUQVJUX0NNRExJTkVfRU5WLCBpbnN0ZWFkIG9mIGluaXRfcGFnZS4KCSogc3RhZ2UyL2NtZGxpbmUuYyAocmVzdGFydF9jbWRsaW5lX2Vudik6IE5ldyB2YXJpYWJsZS4KCShlbnRlcl9jbWRsaW5lKTogQ2FsbCBncnViX3NldGptcCB3aXRoIFJFU1RBUlRfQ01ETElORV9FTlYgYWZ0ZXIKCWNhbGxpbmcgaW5pdF9jbWRsaW5lLgoJKHJ1bl9zY3JpcHQpOiBSdW4gQlVJTFRJTi0+RlVOQyB3aXRoIEJVSUxUSU5fU0NSSVBUIGluc3RlYWQgb2YKCUJVSUxUSU5fQ01ETElORS4KCSogc3RhZ2UyL3NoYXJlZC5oIChCVUlMVElOX1NDUklQVCk6IE5ldyBtYWNyby4KCVtHUlVCX1VUSUxdIChncnViX3NldGptcCk6IERlZmluZWQgYXMgc2V0am1wLgoJW0dSVUJfVVRJTF0gKGdydWJfbG9uZ2ptcCk6IERlZmluZWQgYXMgbG9uZ2ptcC4KCShyZXN0YXJ0X2NtZGxpbmVfZW52KTogRGVjbGFyZWQuCgkKMjAwMC0wOC0yMCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtc2VyaWFsKTogTmV3IG9wdGlvbi4gU2VyaWFsIHRlcm1pbmFsCglzdXBwb3J0IHdpbGwgYmUgZW5hYmxlZCBieSBkZWZhdWx0LCBvbmNlIGl0IGlzIHN0YWJpbGl6ZWQuCgkoU0VSSUFMX1NVUFBPUlQpOiBOZXcgY29uZGl0aW9uYWwuCgkqIGdydWIvTWFrZWZpbGUuYW0gKEFNX0NGTEFHUyk6IEFkZGVkIC1EU1VQUE9SVF9TRVJJQUw9MS4KCSogZ3J1Yi9hc21zdHViLmMgKGNscyk6IFJlbmFtZWQgdG8gLi4uCgkoY29uc29sZV9jbHMpOiAuLi4gdGhpcy4KCShnZXR4eSk6IFJlbmFtZWQgdG8gLi4uCgkoY29uc29sZV9nZXR4eSk6IC4uLiB0aGlzLgoJKGdvdG94eSk6IFJlbmFtZWQgdG8gLi4uCgkoY29uc29sZV9nb3RveHkpOiAuLi4gdGhpcy4KCSogc3RhZ2UyL01ha2VmaWxlLmFtIChsaWJncnViX2FfQ0ZMQUdTKTogQWRkZWQKCS1EU1VQUE9SVF9TRVJJQUw9MS4KCShORVRCT09UX0ZMQUdTKTogTmV3IHZhcmlhYmxlLgoJKFNFUklBTF9GTEFHUyk6IExpa2V3aXNlLgoJKFNUQUdFMl9DT01QSUxFKTogQWRkZWQgJChORVRCT09UX0ZMQUdTKSBhbmQgJChTRVJJQUxfRkxBR1MpLgoJKiBzdGFnZTIvYXNtLlMgWyFTVEFHRTFfNV0gKGNscyk6IFJlbmFtZWQgdG8gLi4uCglbIVNUQUdFMV81XSAoY29uc29sZV9jbHMpOiAuLi4gdGhpcy4KCVshU1RBR0UxXzVdIChnZXR4eSk6IFJlbmFtZWQgdG8gLi4uCglbIVNUQUdFMV81XSAoY29uc29sZV9nZXR4eSk6IC4uLiB0aGlzLgoJWyFTVEFHRTFfNV0gKGdvdG94eSk6IFJlbmFtZWQgdG8gLi4uCglbIVNUQUdFMV81XSAoY29uc29sZV9nb3RveHkpOiAuLi4gdGhpcy4KCSogc3RhZ2UyL2J1aWx0aW5zLmMgKHRlcm1pbmFsX2Z1bmMpOiBJZiB0aGUgYml0IGZsYWcKCUJVSUxUSU5fQ01ETElORSBpbiBGTEFHUyBpcyBzZXQsIGNhbGwgaW5pdF9wYWdlLiBCdXQgdGhpcyBzaG91bGQKCWJlIGZpeGVkIHNvIHRoYXQgaXQgcmVzdGFydHMgZW50ZXJfY21kbGluZSBpbnN0ZWFkLgoJKiBzdGFnZTIvY2hhcl9pby5jIFshU1RBR0UxXzVdIChnb3RveHkpOiBOZXcgZnVuY3Rpb24uCglbIVNUQUdFMV81XSAoc2VyaWFsX2dvdG94eSk6IExpa2V3aXNlLgoJWyFTVEFHRTFfNV0gKGdldHh5KTogTGlrZXdpc2UuCglbIVNUQUdFMV81XSAoc2VyaWFsX2dldHh5KTogTGlrZXdpc2UuCglbIVNUQUdFMV81XSAoY2xzKTogTGlrZXdpc2UuCglbIVNUQUdFMV81XSAoc2VyaWFsX2Nscyk6IExpa2V3aXNlLgoJKiBzdGFnZTIvc2VyaWFsLmggKHNlcmlhbF9jbHMpOiBEZWNsYXJlZC4KCShzZXJpYWxfZ2V0eHkpOiBMaWtld2lzZS4KCShzZXJpYWxfZ290b3h5KTogTGlrZXdpc2UuCgkqIHN0YWdlMi9zaGFyZWQuaCAoY29uc29sZV9jbHMpOiBMaWtld2lzZS4KCShjb25zb2xlX2dldHh5KTogTGlrZXdpc2UuCgkoY29uc29sZV9nb3RveHkpOiBMaWtld2lzZS4KCSogc3RhZ2UyL3N0YWdlMi5jIChwcmludF9lbnRyaWVzKTogSWYgc2VyaWFsIHRlcm1pbmFsIGlzCgllbmFibGVkLCBwcmludCBBQ1NfVUFSUk9XIGFuZCBBQ1NfREFSUk9XIGluc3RlYWQgb2YgRElTUF9VUCBhbmQKCURJU1BfRE9XTiwgcmVzcGVjdGl2ZWx5LgoJKHByaW50X2JvcmRlcik6IElmIHNlcmlhbCB0ZXJtaW5hbCBpcyBlbmFibGVkLCBwcmludAoJQUNTX1VMQ09STkVSLCBBQ1NfVVJDT1JORVIsIEFDU19MTENPUk5FUiwgQUNTX0xSQ09STkVSLAoJQUNTX0hMSU5FIGFuZCBBQ1NfVkxJTkUgaW5zdGVhZCBvZiBESVNQX1VMLCBESVNQX1VSLCBESVNQX0xMLAoJRElTUF9MUiwgRElTUF9IT1JJWiBhbmQgRElTUF9WRVJULCByZXNwZWN0aXZlbHkuCgkocHJpbnRfYm9yZGVyKSBbU1VQUE9SVF9TRVJJQUxdOiBDb2xvciB0aGUgbWVudSBvbmx5IGlmIGNvbnNvbGUKCWlzIHVzZWQuCgkoc2V0X2xpbmUpOiBUYWtlIHR3byBtb3JlIGFyZ3VtZW50cywgRU5UUllOTyBhbmQgTUVOVV9FTlRSSUVTLgoJKHNldF9saW5lX25vcm1hbCk6IExpa2V3aXNlLgoJKHNldF9saW5lX2hpZ2hsaWdodCk6IExpa2V3aXNlLgoJKHNldF9saW5lKSBbU1VQUE9SVF9TRVJJQUxdOiBJZiBzZXJpYWwgdGVybWluYWwgaXMgZW5hYmxlZCwgZ2V0Cgl0aGUgbWVudSBlbnRyeSB3aG9zZSBhdHRyaWJ1dGVzIGFyZSBiZWluZyBjaGFuZ2VkIGFuZCByZWRyYXcgdGhlCglsaW5lLgoJKHNldF9saW5lX2hpZ2hsaWdodCkgW1NVUFBPUlRfU0VSSUFMXTogSWYgc2VyaWFsIHRlcm1pbmFsIGlzCgllbmFibGVkLCBwcmludCBgRVNDIFsgNyBtJyBhbmQgYEVTQyBbIDAgbScgYmVmb3JlIGFuZCBhZnRlcgoJY2FsbGluZyBzZXRfbGluZSwgcmVzcGVjdGl2ZWx5LgoJKHJ1bl9tZW51KSBbU1VQUE9SVF9TRVJJQUxdOiBDYWxsIG5vY3Vyc29yIG9ubHkgaWYgY29uc29sZSBpcwoJdXNlZC4KCQoyMDAwLTA4LTIwICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCU5vdyB0aGUgc2VyaWFsIGNvbnNvbGUgc3VwcG9ydCBpcyBwYXJ0aWFsbHkgd29ya2luZy4KCQoJKiBncnViL2FzbXN0dWIuYyAoc2VyaWFsX2NoZWNra2V5KTogU3BlY2lmeSBhIHBvaW50ZXIgdG8gVElNRU9VVAoJYXMgdGhlIGZpZnRoIGFyZ3VtZW50IHRvIHNlbGVjdC4KCShzZXJpYWxfZ2V0X3BvcnQpOiBOZXcgZnVuY3Rpb24uIEp1c3QgYSBkdW1teS4KCShzZXJpYWxfaW5pdCk6IElmIGEgc2VyaWFsIGRldmljZSBpcyBvcGVuZWQsIGNsb3NlIFNFUklBTF9GRAoJYmVmb3JlIG9wZWluZyBhIG5ldyBzZXJpYWwgZGV2aWNlLgoJRG9uJ3Qgc3BlY2lmeSBPX05ERUxBWSB0byBvcGVuLgoJKiBzdGFnZTIvYnVpbHRpbnMuYyBbU1VQUE9SVF9TRVJJQUxdOiBJbmNsdWRlIHNlcmlhbC5oLgoJKHNlcmlhbF9mdW5jKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWx0aW5fc2VyaWFsKTogTmV3IHZhcmlhYmxlLgoJKHRlcm1pbmFsX2Z1bmMpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbHRpbl90ZXJtaW5hbCk6IE5ldyB2YXJpYWJsZS4KCShidWlsdGluX3RhYmxlKTogQWRkIHBvaW50ZXJzIHRvIEJVSUxUSU5fU0VSSUFMIGFuZAoJQlVJTFRJTl9URVJNSU5BTC4KCSogc3RhZ2UyL2NoYXJfaW8uYyBbU1VQUE9SVF9TRVJJQUxdOiBJbmNsdWRlIHNlcmlhbC5oLgoJKGdldGtleSkgW1NVUFBPUlRfU0VSSUFMXTogSWYgYm90aCBURVJNSU5BTF9DT05TT0xFIGFuZAoJVEVSTUlOQUxfU0VSSUFMIGFyZSBzZXQgaW4gVEVSTUlOQUwgc2ltdWx0YW5lb3VzbHksIHByaW50IGEKCXdhcm5pbmcgYW5kIGZvcmNlIHRoZSBjb25zb2xlIHRlcm1pbmFsLgoJKGNoZWNra2V5KSBbU1VQUE9SVF9TRVJJQUxdOiBJZiBURVJNSU5BTF9TRVJJQUwgaXMgc2V0IGluCglURVJNSU5BTCwgY2FsbCBzZXJpYWxfY2hlY2trZXkuCgkoZ3J1Yl9wdXRjaGFyKSBbU1VQUE9SVF9TRVJJQUxdOiBJZiBURVJNSU5BTF9TRVJJQUwgaXMgc2V0IGluCglURVJNSU5BTCwgY2FsbCBzZXJpYWxfcHV0Y2hhci4gSWYgQyBpcyBhIG5ld2xpbmUsIHByaW50IGEKCWNhcnJpYWdlIHJldHVybiwgYmVmb3JlIHByaW50aW5nIGEgbmV3bGluZS4KCQoyMDAwLTA4LTE1ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCVRoZSBpbWFnZSBgbmJncnViJyBub3cgcmVsb2NhdGVzIGl0c2VsZiBmcm9tIDB4MTAwMDAgdG8gMHg4MDAwLAoJc2luY2UgdGhlIE5ldHdvcmsgQm9vdCBJbWFnZSBQcm9wb3NhbCBkb2Vzbid0IHBlcm1pdCBhIHNlY29uZAoJbG9hZGVyIHRvIGJlIGxvYWRlZCBiZWxvdyAweDEwMDAwLiBSZXBvcnRlZCBieSBNYXR0aGlhcwoJS3JldHNjaG1lciA8TWNDcmF0Y2hAZ214Lm5ldD4uCgkKCSogTWFrZWZpbGUuYW0gKE5CTE9BREVSX0xJTkspOiBOZXcgdmFyaWFibGUuCgkobmJsb2FkZXJfZXhlY19MREZMQUdTKTogU2V0IHRvICQoTkJMT0FERVJfTElOSykgaW5zdGVhZCBvZgoJJChTVEFSVF9MSU5LKS4KCSogc3RhZ2UyL25iaS5oIChOQklfREVTVF9BRERSKTogQ2hhbmdlZCB0byAweDEwMDAwLgoJKE5CSV9ERVNUX1NFRyk6IE5ldyBtYWNyby4KCShOQklfREVTVF9PRkYpOiBMaWtld2lzZS4KCShSRUxPQ0FURURfQUREUik6IExpa2V3aXNlLgoJKFJFTE9DQVRFRF9TRUcpOiBMaWtld2lzZS4KCShSRUxPQ0FURURfT0ZGKTogTGlrZXdpc2UuCgkoU1RBR0UyX1NUQVJUX0FERFIpOiBMaWtld2lzZS4KCSogc3RhZ2UyL25ibG9hZGVyLlM6IEFkZGVkIC5jb2RlMTYgZGlyZWN0aXZlIGF0IHRoZSBzdGFydCBvZiB0aGUKCWNvZGUuCglTZXQgdGhlIHNlZ21lbnQgYW5kIHRoZSBvZmZzZXQgb2YgdGhlIGxvYWQgYWRkcmVzcyB0bwoJTkJJX0RFU1RfU0VHIGFuZCBOQklfREVTVF9PRkYsIHJlc3BlY3RpdmVseS4KCVNldCB0aGUgc2VnbWVudCBhbmQgdGhlIG9mZnNldCBvZiB0aGUgc3RhcnQgYWRkcmVzcyB0bwoJTkJJX0RFU1RfU0VHIGFuZCBOQklfREVTVF9PRkYgKyByZWxvY2F0ZSAtIF9zdGFydCwgcmVzcGVjdGl2ZWx5LgoJQWRkZWQgYSByb3V0aW5lIGZvciByZWxvY2F0aW5nIGl0c2VsZi4KCShyZWxvY2F0ZSk6IE5ldyBsYWJlbC4KCShjb3B5X3Jlc3QpOiBMaWtld2lzZS4KCShjb3B5X2xvb3ApOiBMaWtld2lzZS4KCShjb3B5KTogTGlrZXdpc2UuCgkoYm9vdF9zdGFnZTIpOiBMaWtld2lzZS4KCQoyMDAwLTA4LTEzICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogZ3J1Yi9tYWluLmMgKG1haW4pOiBNb3ZlIHRoZSB2ZXJzaW9uIG51bWJlciBpbnNpZGUgdGhlCglwYXJlbnRoZXNlcywgc2luY2UgdGhlIGdydWIgc2hlbGwgaXMgbWVyZWx5IG9uZSBvZiB0aGUgcHJvZ3JhbXMKCWluY2x1ZGVkIGluIEdOVSBHUlVCLgoJCjIwMDAtMDgtMTMgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJQWRkIGEgc2VyaWFsIGRldmljZSBlbXVsYXRpb24gaW50byB0aGUgZ3J1YiBzaGVsbC4KCQoJKiBncnViL2FzbXN0dWIuYzogSW5jbHVkZSBzeXMvdGltZS5oIGFuZCB0ZXJtaW9zLmguCgkoc2VyaWFsX2ZkKTogTmV3IHZhcmlhYmxlLgoJKHNlcmlhbF9kZXZpY2UpOiBMaWtld2lzZS4KCShzZXJpYWxfZ2V0a2V5KTogTmV3IGZ1bmN0aW9uLgoJKHNlcmlhbF9jaGVja2tleSk6IExpa2V3aXNlLgoJKHNlcmlhbF9wdXRjaGFyKTogTGlrZXdpc2UuCgkoZ2V0X3Rlcm1pb3Nfc3BlZWQpOiBMaWtld2lzZS4KCShzZXJpYWxfaW5pdCk6IExpa2V3aXNlLgoJKHNldF9zZXJpYWxfZGV2aWNlKTogTGlrZXdpc2UuCgkoZ3J1Yl9zdGFnZTIpOiBSZXN0b3JlIFNFUklBTF9ERVZJQ0UgYW5kIFNFUklBTF9GRCwgaWYgdGhleSB3ZXJlCglhbGxvY2F0ZWQuCgkqIHN0YWdlMi9zZXJpYWwuaCBbR1JVQl9VVElMXSAoc2V0X3NlcmlhbF9kZXZpY2UpOiBEZWNsYXJlZC4KCQoyMDAwLTA4LTEzICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2FzbS5TIChjb2Rlc3RhcnQpIFtTVVBQT1JUX0RJU0tMRVNTXTogRG9uJ3QgcmVzZXQgYQoJZGlzayBzeXN0ZW0uIFRoYXQgaXMgbm90IG9ubHkgdW5jZXNzYXJ5IGJ1dCBhbHNvIGhhcm1mdWwuCgkKMjAwMC0wOC0xMiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCglBZGQgYSBzZXJpYWwgZGV2aWNlIGRyaXZlciAoYnV0IG9ubHkgdGhlIGRyaXZlcikuCgkKCSogc3RhZ2UyL3NlcmlhbC5jOiBOZXcgZmlsZS4KCSogc3RhZ2UyL3NlcmlhbC5oOiBMaWtld2lzZS4KCSogc3RhZ2UyL3NoYXJlZC5oIChzZXJpYWxfZ2V0a2V5KTogTW92ZWQgdG8gc3RhZ2UyL3NlcmlhbC5oLgoJKHNlcmlhbF9jaGVja2tleSk6IExpa2V3aXNlLgoJKHNlcmlhbF9wdXRjaGFyKTogTGlrZXdpc2UuCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAobm9pbnN0X0hFQURFUlMpOiBBZGRlZCBzZXJpYWwuaC4KCShwcmVfc3RhZ2UyX2V4ZWNfU09VUkNFUyk6IEFkZGVkIHNlcmlhbC5jLgoKMjAwMC0wOC0xMCAgUGF2ZWwgUm9za2luICA8cHJvc2tpQGdudS5vcmc+CgoJKiBkb2NzL3R1dG9yaWFsLnRleGk6IE1pbm9yIGZpeGVzLgoKMjAwMC0wOC0xMCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGRvY3MvdHV0b3JpYWwudGV4aSAoSW5zdGFsbGF0aW9uKTogRGl2aWRlZCBpbnRvIHRocmVlIHNlY3Rpb25zCglpbnN0ZWFkIG9mIHR3byBzZWN0aW9ucy4gRG9uJ3QgZGVzY3JpYmUgdGhlIHVzYWdlIG9mIHRoZSB0aGUKCWdydWIgc2hlbGwgYW55IGxvbmdlci4gSW5zdGVhZCwgaG93IHRvIHVzZSBncnViLWluc3RhbGwgaXMKCWRvY3VtZW50ZWQuCgkKMjAwMC0wOC0wOSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9idWlsdGlucy5jIFtHUlVCX1VUSUxdOiBJbmNsdWRlIHN0ZGlvLmguCgkoZW1iZWRfZnVuYykgW0dSVUJfVVRJTCAmJiBfX2xpbnV4X19dOiBXaGVuIGVtYmVkZGluZyBhIFN0YWdlCgkxLjUgaW50byBhIHBhcnRpdGlvbiwgY2FsbCB3cml0ZV90b19wYXJ0aXRpb24gaW5zdGVhZCBvZgoJYmlvc2Rpc2suCgkoaW5zdGFsbF9mdW5jKTogU2V0IERFU1RfUEFSVElUSU9OIHRvIHRoZSBwYXJ0aXRpb24gd2hlcmUgU3RhZ2UKCTEgcmVzaWRlcy4KCVNldCBTUkNfUEFSVF9TVEFSVCB0byB0aGUgc3RhcnRpbmcgYWRkcmVzcyBvZiB0aGUgcGFydGl0aW9uCgl3aGVyZSBTdGFnZSAyIHJlc2lkZXMuCgkoaW5zdGFsbF9mdW5jKSBbR1JVQl9VVElMXTogU2V0IFNUQUdFMl9PU19GSUxFIHRvIHRoZSBmaWxlIG5hbWUKCW9mIFN0YWdlIDIgdW5kZXIgYW4gT1MsIGlmIHRoZSBuZXcgb3B0aW9uICItLXN0YWdlMiIgaXMKCXNwZWNpZmllZC4gT3RoZXJ3aXNlLCBzZXQgaXQgdG8gbnVsbC4KCUlmIFNUQUdFMl9PU19GSUxFIGlzIG5vdCBudWxsLCBtb2RpZnkgdGhlIFN0YWdlIDIgdmlhIHRoZQoJZmlsZXN5c3RlbSBzZXJ2aWNlZCBieSB0aGUgT1MuCgkoaW5zdGFsbF9mdW5jKSBbR1JVQl9VVElMICYmIF9fbGludXhfX106IElmIFNUQUdFMl9PU19GSUxFIGlzCgludWxsIGJ1dCB0aGUgU3RhZ2UyIHJlc2lkZXMgaW4gYSBwYXJ0aXRpb24sIHVzZQoJd3JpdGVfdG9fcGFydGl0aW9uLgoJSWYgREVTVF9QQVJUSVRJT04gaXMgbm90IDB4RkZGRkZGLCB1c2Ugd3JpdGVfdG9fcGFydGl0aW9uLCB0bwoJZW1iZWQgU3RhZ2UgMS4KCShzZXR1cF9mdW5jKSBbR1JVQl9VVElMXTogSWYgLS1zdGFnZTIgaXMgc3BlY2lmaWVkLCBzZXQKCVNUQUdFMl9BUkcgdG8gdGhlIHN0cmluZyBwb2ludGluZyB0byB0aGUgb3B0aW9uLiBPdGhlcndpc2UsIHNldAoJaXQgdG8gbnVsbC4KCShzZXR1cF9mdW5jKSBbIUdSVUJfVVRJTF06IFNldCBTVEFHRTJfQVJHIHRvIG51bGwuCgkoc2V0dXBfZnVuYyk6IElmIFNUQUdFMl9BUkcgaXMgbm90IG51bGwsIGFkZCBTVEFHRTJfQVJHIGFuZCBhCglzcGFjZSBjaGFyYWN0ZXIgaW50byBDTURfQVJHLgoJKiBsaWIvZGV2aWNlLmMgKF9MQVJHRUZJTEVfU09VUkNFKTogRGVmaW5lZC4KCShfRklMRV9PRkZTRVRfQklUUyk6IExpa2V3aXNlLgoJW19fbGludXhfX10gKHdyaXRlX3RvX3BhcnRpdGlvbik6IE5ldyBmdW5jdGlvbi4KCSogbGliL2RldmljZS5oIFtfX2xpbnV4X19dICh3cml0ZV90b19wYXJ0aXRpb24pOiBEZWNsYXJlZC4KCSogdXRpbC9ncnViLWluc3RhbGwuaW46IFNwZWNpZnkgdGhlIG9wdGlvbiAiLS1zdGFnZTIiIGZvciB0aGUKCWNvbW1hbmQgInNldHVwIi4KCQoyMDAwLTA4LTA0ICBKb2NoZW4gSG9lbmlja2UgIDxqb2NoZW5AZ251Lm9yZz4KCgkqIHN0YWdlMi9mc3lzX2ZhdC5jIChmYXRfc3VwZXJibG9jayk6IGNsdXN0X2VvZl9tYXJrZXIgYWRkZWQuCgkoZmF0X21vdW50KTogSW5pdGlhbGl6ZSBjbHVzdF9lb2ZfbWFya2VyIHRvIDB4ZmY4LCAweGZmZjgsIG9yCgkweGZmZmZmZjgsIGRlcGVuZGluZyBvbiBmYXQgc2l6ZS4gIFN1cHBvcnQgZm9yIHNpbmdsZSBhY3RpdmUgRkFUCglhZGRlZCAoRkFUMzIgZXh0ZW5zaW9uKS4gQ2hhbmdlZCB0aGUgYm91bmRhcnkgYmV0d2VlbiBGQVQxMiBhbmQKCUZBVDE2LCBhZ2Fpbi4gIFRoZSBNaWNyb3NvZnQgS0IgYXJ0aWNsZSBRNjU1NDEgc2VlbXMgdG8gYmUgd3JvbmcKCWhlcmUsIEkgZ28gd2l0aCBtdG9vbHMgYW5kIHRoZSBwcmV2aW91cyBiZWhhdmlvdXIgb2YgZ3J1YjogRkFUMTIKCWlmZiBudW1iZXIgb2YgY2x1c3RlcnMgKHdpdGhvdXQgY291bnRpbmcgdGhlIHR3byBub25leGlzdGluZwoJY2x1c3RlcnMpIGlzIGxlc3Mgb3IgZXF1YWwgNDA5NS4KCShmYXRfcmVhZCk6IFJlcG9ydCBlcnJvciBpZiBjbHVzdGVyIG51bWJlciBpcyB0b28gYmlnLCBidXQgbm90CglncmVhdGVyIG9yIGVxdWFsIGNsdXN0X2VvZl9tYXJrZXIuCgkqIHN0YWdlMi9mc3lzX3JlaXNlcmZzLmMgKGpvdXJuYWxfaW5pdCk6IEZpeGVkIGNhbGN1bGF0aW9uIG9mCglqb3VybmFsX3RyYW5zYWN0aW9uLgoJCjIwMDAtMDgtMDEgIEpvY2hlbiBIb2VuaWNrZSAgPGpvY2hlbkBnbnUub3JnPgoKCSogc3RhZ2UyL2ZzeXNfcmVpc2VyZnMuYzogU3ltbGluayBzdXBwb3J0IGFkZGVkLgoJKFNfSVNMTkspOiBOZXcgbWFjcm8uCgkoUEFUSF9NQVgpOiBMaWtld2lzZS4KCShNQVhfTElOS19DT1VOVCk6IExpa2V3aXNlLgoJKHJlaXNlcmZzX2Rpcik6IENoZWNrIGZvciBzeW1saW5rIGFuZCBoYW5kbGUgdGhlbS4KCShyZWFkX3RyZWVfbm9kZSk6IFRha2UgYSBibG9jayBudW1iZXIgYW5kIGNoZWNrIGlmIHRyZWUgbm9kZSB3YXMKIAlhbHJlYWR5IHJlYWQgaW4uICBJZiBub3QgdXBkYXRlIHRoZSBJTkZPLT5ibG9ja3MgZmllbGQuCgkobmV4dF9rZXkpOiBDaGFuZ2VkIGNhbGwgb2YgcmVhZF90cmVlX25vZGUuCgkoc2VhcmNoX3N0YXQpOiBMaWtld2lzZS4KCShqb3VybmFsX2luaXQpOiBGaXhlZCBhIHNtYWxsIGJ1Zy4gIFNvbWUgZGVidWdnaW5nIG1lc3NhZ2VzIGFkZGVkLgoJCjIwMDAtMDctMzEgIFBhdmVsIFJvc2tpbiAgPHByb3NraUBnbnUub3JnPgoKCSogZ3J1Yi9hc21zdHViLmMgKGJpb3NkaXNrKSBbX19saW51eF9fXTogVGhlIGZpcnN0IGFyZ3VtZW50IGZvcgoJX2xsc2VlayByZW5hbWVkIGZyb20gInNlZWtlZF9mZCIgdG8gImZpbGVkZXMiLgoKMjAwMC0wNy0zMCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGRvY3MvYXBwZW5kaWNlcy50ZXhpIChGQVEpOiBBZGRlZCB0aGUgYW5zd2VyIGZvciB0aGUgc2VwYXJhdGUKCWJvb3QgcGFydGl0aW9uIHByb2JsZW0uCgkKMjAwMC0wNy0zMCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCglVcGRhdGUgdGhlIG5ldHdvcmsgc3VwcG9ydCB0byBFdGhlcmJvb3QtNC42LjQuCgkKCUZyb20gRGFuaWVsIFdhZ25lciA8d2FnaUBnbXguY2g+OgoJKiBuZXRib290LzNjNTA5LmM6IENvcGllZCBmcm9tIEV0aGVyYm9vdC00LjYuNC4KCSogbmV0Ym9vdC8zYzUwOS5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9jYXJkcy5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9uczgzOTAuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3Qvc2tfZzE2LmM6IExpa2V3aXNlLgoJKiBuZXRib290L3NrX2cxNi5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC90dWxpcC5jOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9wY2kuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvbWFpbi5jIChkaGNwZGlzY292ZXIpOiBVcGRhdGVkLgoJKGRoY3ByZXF1ZXN0KTogTGlrZXdpc2UuCgkoYm9vdHApOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9SRUFETUUubmV0Ym9vdDogQWRkZWQgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBuZXcKCW9wdGlvbiAtLWVuYWJsZS1uczgzOTAtZm9yY2UtMTZiaXQuCgkqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtbnM4MzkwLWZvcmNlLTE2Yml0KTogTmV3IG9wdGlvbi4KCgkqIG5ldGJvb3QvY29uZmlnLmM6IFVwZGF0ZWQuCgoyMDAwLTA3LTI5ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCVRoZSBMaW51eCB6SW1hZ2Ugc3VwcG9ydCBpcyB3b3JraW5nIG5vdy4KCQoJKiBzdGFnZTIvYXNtLlMgKGxpbnV4X2Jvb3QpOiBBZGQgMyBpbnRvICVlY3ggYW5kIHNoaWZ0ICVlY3ggdG8KCXRoZSByaWdodCBieSAyIGJpdHMsIGluc3RlYWQgb2Ygc2hpZnQgJWVjeCB0byB0aGUgbGVmdCBieSAyCgliaXRzLgoJCjIwMDAtMDctMjkgIEpvY2hlbiBIb2VuaWNrZSAgPGpvY2hlbkBnbnUub3JnPgoKCSogc3RhZ2UyL2ZzeXNfcmVpc2VyZnMuYyAoYmxvY2tfcmVhZCk6IENoYW5nZWQgdGhlIHZhcmlhYmxlICJsZW4iCgl0byAial9sZW4iIChpdCBzaGFkb3dlZCBhIHBhcmFtZXRlcikuCgkKMjAwMC0wNy0yOSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoQ1BQRkxBR1MpOiBBZGRlZCAtV3NoYWRvdywgLVdwb2ludGVyLWFyaXRoIGFuZAoJLVd1bmRlZiwgYXMgR0NDIHNvbWV0aW1lcyBtb3JlIGNsZXZlciB0aGFuIG1lLiA6KQoJKiBzdGFnZTIvc2hhcmVkLmggWyFBU01fRklMRV0gKG11bHRpX2Jvb3QpOiBDaGFuZ2UgdGhlIG5hbWUgb2YKCXRoZSBzZWNvbmQgYXJndW1lbnQgZnJvbSAibWJpIiB0byAibWJfaW5mbyIuCglbIUFTTV9GSUxFXSAoYmlvc2Rpc2spOiBSZW5hbWUgdGhlIGZpcnN0IGFyZ3VtZW50ICJyZWFkIiB0bwoJInN1YmZ1bmMiLgoJKiBsaWIvZGV2aWNlLmggKGluaXRfZGV2aWNlX21hcCk6IENoYW5nZSB0aGUgbmFtZSBvZiB0aGUgdGhpcmQKCWFyZ3VtZW50IGZyb20gImZsb3BweV9kaXNrcyIgdG8gIm5vX2Zsb3BwaWVzIi4KCSogbGliL2RldmljZS5jIChyZWFkX2RldmljZV9tYXApOiBSZW5hbWUgdGhlIGludGVybmFsIGZ1bmN0aW9uCgkicHJpbnRfZXJyb3IiIHRvICJzaG93X2Vycm9yIi4KCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGluc3RhbGxfZnVuYyk6IFJlbmFtZSBDT05GSUdfRklMRSB0bwoJUkVBTF9DT05GSUcuCgkoc2V0dXBfZnVuYyk6IFJlbmFtZSBJTlNUQUxMX0RSSVZFLCBJTlNUQUxMX1BBUlRJVElPTiBhbmQKCUNPTkZJR19GSUxFIHRvIElOU1RBTExFRF9EUklWRSwgSU5TVEFMTEVEX1BBUlRJVElPTiBhbmQKCUNPTkZJR19GSUxFTkFNRSwgcmVzcGVjdGl2ZWx5LgoJKiBzdGFnZTIvY2hhcl9pby5jIChjb252ZXJ0X3RvX2FzY2lpKTogUmVuYW1lIHRoZSBpbnRlcm5hbAoJdmFyaWFibGUgQyB0byBUTVAuCgkoZ2V0X2NtZGxpbmUpOiBSZW5hbWUgS0lMTCB0byBLSUxMX0JVRi4KCVJlbmFtZSB0aGUgc2Vjb25kIGFyZ3VtZW50IGZvciBjbF9wcmludCB0byBSRUFMX0VDSE9fQ0hBUiBmcm9tCglFQ0hPX0NIQVIuCgkqIHN0YWdlMi9zdGFnZTIuYyAocnVuX21lbnUpOiBSZW5hbWUgdGhlIGludGVybmFsIHZhcmlhYmxlCglOVU1fRU5UUklFUyB0byBORVdfTlVNX0VOVFJJRVMuCgkoY21haW4pOiBSZW5hbWUgS0lMTCB0byBLSUxMX0JVRi4KCSogc3RhZ2UyL2Rpc2tfaW5vZGVfZmZzLmg6IENoZWNrIGlmIEJZVEVfTVNGIGlzIGRlZmluZWQgYmVmb3JlCgljaGVja2luZyB0aGUgdmFsdWUuCgkqIHN0YWdlMi9mc3lzX2V4dDJmcy5jIChleHQyZnNfZGlyKTogQ2hlY2sgaWYgRTJERUJVRyBpcwoJZGVmaW5lZCwgaW5zdGVhZCBvZiBpZiB0aGUgdmFsdWUgaXMgbm9uLXplcm8uCgkqIGdydWIvYXNtc3R1Yi5jOiBDaGVjayBpZiBfX0dMSUJDX18gaXMgZGVmaW5lZCBiZWZvcmUgY2hlY2tpbmcKCXRoZSB2YWx1ZS4KCShiaW9zZGlzaykgW19fbGludXhfX106IExpa2V3aXNlLgoJUmVuYW1lIHRoZSBmaXJzdCBhcmd1bWVudCBmb3IgX2xsc2VlayB0byAic2Vla2VkX2ZkIiBmcm9tICJmZCIuCgkobXVsdGlfYm9vdCk6IFJlbmFtZSB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvICJtYl9pbmZvIiBmcm9tCgkibWJpIi4KCQoyMDAwLTA3LTI3ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZmlnLm9yZz4KCgkqIHV0aWwvZ3J1Yi1pbWFnZS5pbjogSW5pdGlhbCBjdXQgYXQgYSBzY3JpcHQgZm9yIGNyZWF0aW5nIEdSVUIKCWJvb3QgaW1hZ2VzLgoJKiB1dGlsL01ha2VmaWxlLmFtIChub2luc3RfU0NSSVBUUyk6IEFkZGVkIGdydWItaW1hZ2UuCgkqIGNvbmZpZ3VyZS5pbiAoQUNfT1VUUFVUKTogQWRkZWQgdXRpbC9ncnViLWltYWdlLgoKMjAwMC0wNy0yNyAgSm9jaGVuIEhvZW5pY2tlICA8am9jaGVuQGdudS5vcmc+CgoJKiBzdGFnZTIvYXNtLlMgKGNoZWNrX2ludDEzX2V4dGVuc2lvbnMpOiBGaXhlZCB0aGUgZWZmZWN0IG9mCgl0aGUgLS1mb3JjZS1sYmEgc3dpdGNoIGluIHN0YWdlMi9zdGFnZTFfNS4KCQoyMDAwLTA3LTI1ICBKb2NoZW4gSG9lbmlja2UgIDxqb2NoZW5AZ251Lm9yZz4KCgkqIHN0YWdlMi9mc3lzX2ZhdC5jIChmYXRfbW91bnQpOiBGaXhlZCBjYWxjdWxhdGlvbiBvZiBudW1fY2x1c3QuCglJdCB3YXMgb2ZmIGJ5IHR3bywgc2luY2UgdGhlIHR3byBub24gZXhpc3RpbmcgY2x1c3RlcnMgMCBhbmQgMQoJd2VyZSBub3QgdGFrZW4gaW50byBhY2NvdW50LiAgQWxzbyBmaXhlZCB0aGUgYm91bmRhcnkgYmV0d2VlbgoJRkFUMTIgYW5kIEZBVDE2LgoJCjIwMDAtMDctMjUgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvYXNtLlMgWyFTVEFHRTFfNV0gKGxpbnV4X3RleHRfbGVuKTogTmV3IHZhcmlhYmxlLgoJWyFTVEFHRTFfNV0gKGxpbnV4X2Jvb3QpOiBEb24ndCBzZXQgJWVheCB0byBMSU5VWF9TRVRVUAoJbWVhbmluZ2xlc3NseS4KCVNldCAlZWN4IHRvIExJTlVYX1RFWFRfTEVOIGluc3RlYWQgb2YgTElOVVhfS0VSTkVMX01BWExFTi4KCVshU1RBR0UxXzVdIChiaWdfbGludXhfYm9vdCk6IERpc2FibGUgaW50ZXJydXB0cyBiZWZvcmUgY2hhbmdpbmcKCXRoZSBzdGFjayBwb2ludGVyLgoJQ2hhbmdlICVzcyByaWdodCBiZWZvcmUgJXNwLgoJUmV2ZXJzZSB0aGUgYXJndW1lbnRzIGZvciBsam1wLiBBIHNlZ21lbnQgbXVzdCBiZSBhZnRlciBhbgoJb2Zmc2V0LiAqc2lnaCoKCSogc3RhZ2UyL2Jvb3QuYyAobG9hZF9pbWFnZSk6IFNldCBMSU5VWF9URVhUX0xFTiB0byBURVhUX0xFTiwKCWlmIGEgTGludXgga2VybmVsIGlzIGxvYWRlZCBzdWNjZXNzZnVsbHkuCgkqIHN0YWdlMi9zaGFyZWQuaCAoTElOVVhfVklEX01PREVfT0ZGU0VUKTogUmVtb3ZlZC4KCVshQVNNX0ZJTEVdIChsaW51eF9rZXJuZWxfaGVhZGVyKTogQ2hhbmdlIHRoZSB0eXBlIG9mIHRoZSBtZW1iZXIKCWBoZWFwX2VuZF9wdHInIHRvIHVuc2lnbmVkIHNob3J0LgoJWyFBU01fRklMRV0gKGxpbnV4X3RleHRfbGVuKTogRGVjbGFyZWQuCgkKMjAwMC0wNy0yNCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCglDb21wbHkgd2l0aCB0aGUgTGludXgvaTM4NiBib290IHByb3RvY29sIHZlcnNpb24gMi4wMi4KCQoJKiBzdGFnZTIvYXNtLlMgWyFTVEFHRTFfNV0gKGxpbnV4X2Jvb3QpOiBTZXQgdGhlIGxlbmd0aCBvZiBtb3ZlZAoJYnl0ZXMgdG8gTElOVVhfS0VSTkVMX01BWExFTiBpbnN0ZWFkIG9mCglMSU5VWF9LRVJORUxfTEVOX09GRlNFVCglZWF4KSwgc2luY2UgdGhlIGZpZWxkIGlzIG9ic29sZXRlLgoJWyFTVEFHRTFfNV0gKGJpZ19saW51eF9ib290KTogRG9uJ3QgdXNlIFNFR01FTlQgb3IgT0ZGU0VULgoJSW5zdGVhZCwgZW1iZWQgdGhlIHNlZ21lbnQgYW5kIHRoZSBvZmZzZXQgaW4gdGhlIGNvZGUgaXRzZWxmLgoJU2V0ICVkcywgJWVzLCAlZnMgYW5kICVncyB0byAlYXggKExJTlVYX0lOSVRfU0VHKS4KCSogc3RhZ2UyL2Jvb3QuYyAobG9hZF9pbWFnZSk6IFJld3JpdGUgdGhlIExpbnV4IHN1cHBvcnQgY29kZQoJaGVhdmlseS4gVXNlIGEgc3RydWN0dXJlIGluc3RlYWQgb2YgYSBiYXRjaCBvZiBtYWNyb3MsIHRvIGFjY2VzcwoJYSBMaW51eCBrZXJuZWwgaGVhZGVyLgoJKGxvYWRfaW5pdHJkKTogSWYgTU9WRVRPIHBsdXMgTEVOIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bwoJTElOVVhfSU5JVFJEX01BWF9BRERSRVNTLCBzZXQgTU9WRVRPIHRvIExJTlVYX0lOSVRSRF9NQVhfQUREUkVTUwoJbWludXMgTEVOIHdpdGggcGFnZSBhbGlnbmVkLgoJKiBzdGFnZTIvc2hhcmVkLmggKExJTlVYX01BR0lDX1NJR05BVFVSRSk6IE5ldyBtYWNyby4KCShMSU5VWF9ERUZBVUxUX1NFVFVQX1NFQ1RTKTogTGlrZXdpc2UuCgkoTElOVVhfRkxBR19DQU5fVVNFX0hFQVApOiBMaWtld2lzZS4KCShMSU5VWF9JTklUUkRfTUFYX0FERFJFU1MpOiBMaWtld2lzZS4KCShMSU5VWF9NQVhfU0VUVVBfU0VDVFMpOiBMaWtld2lzZS4KCShMSU5VWF9CT09UX0xPQURFUl9UWVBFKTogTGlrZXdpc2UuCgkoTElOVVhfSEVBUF9FTkRfT0ZGU0VUKTogTGlrZXdpc2UuCgkoTElOVVhfU0VUVVBfTUFYTEVOKTogUmVtb3ZlZC4KCShMSU5VWF9LRVJORUxfTEVOX09GRlNFVCk6IExpa2V3aXNlLgoJKExJTlVYX1NFVFVQX0xFTl9PRkZTRVQpOiBMaWtld2lzZS4KCShMSU5VWF9TRVRVUF9TVEFDSyk6IFNldCB0byAweDdGMDAgaW5zdGVhZCBvZiAweDNGRjQgKHdoeSB3YXMgaXQKCXRoaXMgdmFsdWU/KS4KCShMSU5VWF9TRVRVUF9MT0FERVIpOiBSZW1vdmVkLgoJKExJTlVYX1NFVFVQX0xPQURfRkxBR1MpOiBMaWtld2lzZS4KCShMSU5VWF9TRVRVUF9DT0RFX1NUQVJUKTogTGlrZXdpc2UuCgkoTElOVVhfU0VUVVBfSU5JVFJEKTogTGlrZXdpc2UuCgkoQ0xfTVlfTE9DQVRJT04pOiBTZXQgdG8gUkFXX0FERFIoMHg5N0YwMCkgaW5zdGVhZCBvZgoJUkFXX0FERFIoMHg5MjAwMCkuCgkoQ0xfTVlfRU5EX0FERFIpOiBTZXQgdG8gUkFXX2FkZHIoMHg5N0ZGRikgaW5zdGVhZCBvZgoJUkFXX0FERFIoMHg5MjBGRikuCgkoQ0xfTUFHSUNfQUREUik6IFJlbW92ZWQuCgkoQ0xfT0ZGU0VUKTogTGlrZXdpc2UuCglbIUFTTV9GSUxFXSAoc3RydWN0IGxpbnV4X2tlcm5lbF9oZWFkZXIpOiBOZXcgc3RydWN0dXJlIHRhZy4KCQoyMDAwLTA3LTIzICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogZG9jcy90dXRvcmlhbC50ZXhpOiBGaXggc29tZSBzeW50YXggZXJyb3JzIGFuZCBhbWJpZ3VvdXMKCXNlbnRlbmNlcy4gU3VnZ2VzdGVkIGJ5IE0uIE1laWFyYXNoaSA8bWVzQHN0LnJpbS5vci5qcD4uCgkKMjAwMC0wNy0xNCAgS2hpbWVua28gVmljdG9yICA8Z3J1YkBraGltLnNjaDU3Lm1zay5ydT4KCgkqIHN0YWdlMi9ib290LmMgKGxvYWRfaW1hZ2UpOiBXaGVuIGdldHRpbmcgdGhlIHRleHQgbGVuZ3RoIG9mIGEgCglMaW51eCBrZXJuZWwsIHVzZSB1bnNpZ25lZCBsb25nIGluc3RlYWQgb2YgdW5zaWduZWQgc2hvcnQuCgkKMjAwMC0wNy0xMyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGxpYi9kZXZpY2UuYzogSW5jbHVkZSBlcnJuby5oLiBSZXBvcnRlZCBieSBUaGllcnJ5IERFTEhBSVNFCgk8dGhpZXJyeS5kZWxoYWlzZUBkZWxoYWlzZS5jb20+LgoJCjIwMDAtMDctMTIgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJSnVzdCB0byBzdGFydCBpbXBsZW1lbnRpbmcgc2VyaWFsIGNvbnNvbGUgc3VwcG9ydC4uLgoJCgkqIHN0YWdlMi9hc20uUyAoZ3J1Yl9wdXRjaGFyKTogUmVuYW1lZCB0byAuLi4KCShjb25zb2xlX3B1dGNoYXIpOiAuLi4gdGhpcy4KCVshU1RBR0UxXzVdIChnZXRrZXkpOiBSZW5hbWVkIHRvIC4uLgoJWyFTVEFHRTFfNV0gKGNvbnNvbGVfZ2V0a2V5KTogLi4uIHRoaXMuCglbIVNUQUdFMV81XSAoY2hlY2trZXkpOiBSZW5hbWVkIHRvIC4uLgoJWyFTVEFHRTFfNV0gKGNvbnNvbGVfY2hlY2trZXkpOiAuLi4gdGhpcy4KCSogc3RhZ2UyL2NoYXJfaW8uYyBbIVNUQUdFMV81XSAoZ2V0a2V5KTogTmV3IGZ1bmN0aW9uLgoJWyFTVEFHRTFfNV0gKGNoZWNra2V5KTogTGlrZXdpc2UuCgkoZ3J1Yl9wdXRjaGFyKTogTGlrZXdpc2UuCgkqIHN0YWdlMi9zaGFyZWQuaCBbIVNUQUdFMV81XSAodGVybWluYWwpOiBEZWNsYXJlZC4KCVshU1RBR0UxXzVdIChURVJNSU5BTF9DT05TT0xFKTogTmV3IG1hY3JvLgoJWyFTVEFHRTFfNV0gKFRFUk1JTkFMX1NFUklBTCk6IExpa2V3aXNlLgoJKGNvbnNvbGVfcHV0Y2hhcik6IERlY2xhcmVkLgoJKHNlcmlhbF9wdXRjaGFyKTogTGlrZXdpc2UuCgkoY29uc29sZV9nZXRrZXkpOiBMaWtld2lzZS4KCShzZXJpYWxfZ2V0a2V5KTogTGlrZXdpc2UuCgkoY29uc29sZV9jaGVja2tleSk6IExpa2V3aXNlLgoJKHNlcmlhbF9jaGVja2tleSk6IExpa2V3aXNlLgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAodGVybWluYWwpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLiBUaGUgZGVmYXVsdAoJaXMgVEVSTUlOQUxfQ09OU09MRS4KCSogZ3J1Yi9hc21zdHViLmMgKGdydWJfcHV0Y2hhcik6IFJlbmFtZWQgdG8gLi4uCgkoY29uc29sZV9wdXRjaGFyKTogLi4uIHRoaXMuCgkoZ2V0a2V5KTogUmVuYW1lZCB0byAuLi4KCShjb25zb2xlX2dldGtleSk6IC4uLiB0aGlzLgoJKGNoZWNra2V5KTogUmVuYW1lZCB0byAuLi4KCShjb25zb2xlX2NoZWNra2V5KTogLi4uIHRoaXMuCgkKMjAwMC0wNy0xMiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAobGliZ3J1Yl9hX0NGTEFHUyk6IEFkZGVkCgktSSQodG9wX3NyY2RpcikvbGliLgoJKiBzdGFnZTIvYnVpbHRpbnMuYyBbR1JVQl9VVElMXTogSW5jbHVkZSBkZXZpY2UuaC4KCQoyMDAwLTA3LTEyICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCVNlZ3JlYXRlIE9TLXNwZWNpZmljIGhlbHBlciBmdW5jdGlvbnMgZnJvbSBhc21zdHViLmMuCgkKCSogZ3J1Yi9hc21zdHViLmMgW19fbGludXhfX106IERvbid0IGluY2x1ZGUgbGludXgvaGRyZWcuaCwKCWxpbnV4L21ham9yLmgsIGxpbnV4L2tkZXZfdC5oLCBvciBsaW51eC9jZHJvbS5oLgoJW19fRnJlZUJTRF9fIHx8IF9fTmV0QlNEX18gfHwgX19PcGVuQlNEX19dOiBEb24ndCBpbmNsdWRlCglzeXMvaW9jdGwuaCwgc3lzL2Rpc2tsYWJlbC5oLCBvciBzeXMvaW9jdGwuaC4KCVtIQVZFX09QRU5ESVNLXTogRG9uJ3QgaW5jbHVkZSB1dGlsLmguCglJbmNsdWRlIGRldmljZS5oLgoJKERFRkFVTFRfRkRfQ1lMSU5ERVJTKTogUmVtb3ZlZC4KCShERUZBVUxUX0ZEX0hFQURTKTogTGlrZXdpc2UuCgkoREVGQVVMVF9GRF9TRUNUT1JTKTogTGlrZXdpc2UuCgkoREVGQVVMVF9IRF9DWUxJTkRFUlMpOiBMaWtld2lzZS4KCShERUZBVUxUX0hEX0hFQURTKTogTGlrZXdpc2UuCgkoREVGQVVMVF9IRF9TRUNUT1JTKTogTGlrZXdpc2UuCgkoTlVNX0RJU0tTKTogTGlrZXdpc2UuCgkoaW5pdF9kZXZpY2VfbWFwKTogTGlrZXdpc2UuCgkoZ2V0X2Zsb3BweV9kaXNrX25hbWUpOiBMaWtld2lzZS4KCShnZXRfaWRlX2Rpc2tfbmFtZSk6IExpa2V3aXNlLgoJKGdldF9zY3NpX2Rpc2tfbmFtZSk6IExpa2V3aXNlLgoJKGNoZWNrX2RldmljZSk6IExpa2V3aXNlLgoJKGdldF9kcml2ZV9nZW9tZXRyeSk6IExpa2V3aXNlLgoJKiBncnViL21haW4uYyAobm9fZmxvcHB5KTogUmVtb3ZlZC4KCShwcm9iZV9zZWNvbmRfZmxvcHB5KTogTGlrZXdpc2UuCgkoZmxvcHB5X2Rpc2tzKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShtYWluKTogU2V0IEZMT1BQWV9ESVNLUyB0byB6ZXJvLCBpZiBPUFRfTk9fRkxPUFBZLiBTZXQKCUZMT1BQWV9ESVNLUyB0byB0d28sIGlmIE9QVF9QUk9CRV9TRUNPTkRfRkxPUFBZLgoJKiBsaWIvTWFrZWZpbGUuYW0gKEFNX0NGTEFHUyk6IE5ldyB2YXJpYWJsZS4KCSogbGliL2RldmljZS5oOiBOZXcgZmlsZS4KCSogbGliL2RldmljZS5jOiBMaWtld2lzZS4KCSogc3RhZ2UyL3NoYXJlZC5oIChub19mbG9wcHkpOiBSZW1vdmVkLgoJKHByb2JlX3NlY29uZF9mbG9wcHkpOiBMaWtld2lzZS4KCShjaGVja19kZXZpY2UpOiBMaWtld2lzZS4KCShmbG9wcHlfZGlza3MpOiBEZWNsYXJlZC4KCQoyMDAwLTA3LTAyICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogZ3J1Yi9tYWluLmMgKHVzYWdlKTogRW5jbG9zZSB0aGUgbWFpbCBhZGRyZXNzIHdpdGggcGFyZW50aGVzZXMKCWFuZCBhZGQgYSBwZXJpb2QgaW50byB0aGUgZW5kIG9mIHRoZSBsaW5lLiBUaGF0J3MganVzdCBhCgljb3NtZXRpYyBjaGFuZ2UuCgkKMjAwMC0wNy0wMiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGRvY3MvYXBwZW5kaWNlcy50ZXhpIChPYnRhaW5pbmcgYW5kIEJ1aWxkaW5nIEdSVUIpOiBJbmRpY2F0ZQoJdGhlIEN5Z251cydzIGJpbnV0aWxzIHdlYnBhZ2UgaW5zdGVhZCBvZiB0aGUgaGpsJ3Mgc2l0ZSwgc2luY2UKCXlvdSBjYW4gbm93IHVzZSBhIHB1YmxpYyByZWxlYXNlIChpLmUuIDIuMTApLgoJCjIwMDAtMDYtMjMgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvYm9vdC5jIChsb2FkX2ltYWdlKTogVGFrZSBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50CglMT0FEX0ZMQUdTLgoJSWYgdGhlIGtlcm5lbCB0eXBlIGlzIExpbnV4IGFuZCB0aGUgYml0CglLRVJORUxfTE9BRF9OT19NRU1fT1BUSU9OIGluIExPQURfRkxBR1MgaXMgc2V0LCBkb24ndCBwYXNzIGEKCUxpbnV4J3MgbWVtIG9wdGlvbiBhdXRvbWF0aWNhbGx5LgoJKiBzdGFnZTIvc2hhcmVkLmggKGxvYWRfaW1hZ2UpOiBBZGRlZCB0aGUgbmV3IGFyZ3VtZW50LgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoa2VybmVsX2Z1bmMpOiBJZiBgLS1uby1tZW0tb3B0aW9uJyBpcwoJc3BlY2lmaWVkLCBzZXQgdGhlIGJpdCBLRVJORUxfTE9BRF9OT19NRU1fT1BUSU9OIGluIExPQURfRkxBR1MsCglvdGhlcndpc2UsIExPQURfRkxBR1MgaXMgemVyby4KCQoyMDAwLTA2LTIyICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogZG9jcy90dXRvcmlhbC50ZXhpOiBGaXhlZCBzb21lIHR5cG9zIGFuZCBzeW50YXggZXJyb3JzLgoJKiBkb2NzL3VzZXItcmVmLnRleGk6IExpa2V3aXNlLgoJCjIwMDAtMDYtMjEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvc3RhZ2UyLmMgKHJ1bl9tZW51KTogSW5pdGlhbGl6ZSBDVVJfRU5UUlkgYXQgdGhlCglkZWZpbml0aW9uLgoJSWYgU0hPV19NRU5VIGlzIHplcm8sIGRvbid0IGRpc3BsYXkgdGhlIG1lbnUgaW50ZXJmYWNlLiBJbnN0ZWFkLAoJd2FpdCB1bnRpbCB0aGUgdGltZW91dCBpcyBleHBpcmVkIGFuZCB0aGVuIGJvb3QgdGhlIGRlZmF1bHQKCWVudHJ5LiBJZiB0aGUgdXNlciBwcmVzc2VzIGBFU0MnIGR1cmluZyB0aGUgdGltZW91dCwgc2V0CglTSE9XX01FTlUgdG8gb25lIGFuZCBicmVhayB0aGUgbG9vcC4KCURpc3BsYXkgdGhlIG1lbnUgaWYgU0hPV19NRU5VIGlzIHRydWUsIGluc3RlYWQgb2YgaWYKCUdSVUJfVElNRU9VVCBpcyBub24temVyby4KCVNldCBTSE9XX01FTlUgdG8gb25lIGJlZm9yZSBnbyB0byB0aGUgbGFiZWwgYHJlc3RhcnQnLgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoc2hvd19tZW51KTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShoaWRkZW5tZW51X2Z1bmMpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbHRpbl9oaWRkZW5tZW51KTogTmV3IHZhcmlhYmxlLgoJKGJ1aWx0aW5fdGFibGUpOiBBZGRlZCBhIHBvaW50ZXIgdG8gQlVJTFRJTl9ISURERU5NRU5VLgoJKiBzdGFnZTIvc2hhcmVkLmggKHNob3dfbWVudSk6IERlY2xhcmVkLgoJCjIwMDAtMDYtMTkgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBkb2NzL21kYXRlLXNoOiBNb3ZlZCB0byAuLi4KCSogbWRhdGUtc2g6IC4uLiBoZXJlLgoJKiBkb2NzL3RleGluZm8udGV4OiBNb3ZlZCB0byAuLi4KCSogdGV4aW5mby50ZXg6IC4uLiBoZXJlLgoJCjIwMDAtMDYtMDkgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvbWJfaW5mby5oIChBZGRyUmFuZ2VEZXNjKTogVXNlIG9uZSA2NGJpdHMgZmllbGQgaW5zdGVhZAoJb2YgdHdvIDMyYml0cyBmaWVsZHMgZm9yIEJhc2VBZGRyIGFuZCBMZW5ndGgsIHJlc3BlY3RpdmVseS4KCUJhc2VBZGRyTG93ICsgQmFzZUFkZHJIaWdoIC0+IEJhc2VBZGRyLCBMZW5ndGhMb3cgKyBMZW5ndGhIaWdoCgktPiBMZW5ndGguCgkqIHN0YWdlMi9idWlsdGlucy5jIChkaXNwbGF5bWVtX2Z1bmMpOiBQcmludCBCYXNlQWRkciA+PiAzMiwKCUJhc2VBZGRyICYgMHhGRkZGRkZGRiwgTGVuZ3RoID4+IDMyIGFuZCBMZW5ndGggJiAweEZGRkZGRkZGLAoJaW5zdGVhZCBvZiBCYXNlQWRkckxvdywgQmFzZUFkZHJIaWdoLCBMZW5ndGhMb3cgYW5kIExlbmd0aEhpZ2gsCglmb3IgTUFQLgoJKiBzdGFnZTIvY29tbW9uLmMgKGZha2VtYXApOiBBZGp1c3RlZCB0byB0aGUgbmV3IGRlZmluaXRpb24gb2YKCUFkZHJSYW5nZURlc2MuCgkobW1hcF9hdmFpbF9hdCk6IENoYW5nZSB0aGUgdHlwZSBvZiBUT1AgdG8gdW5zaWduZWQgbG9uZyBsb25nLgoJSWYgVE9QIGlzIGdyZWF0ZXIgdGhhbiAweEZGRkZGRkZGLCBzZXQgaXQgdG8gMHhGRkZGRkZGRiwgc2luY2UKCUdSVUIgaXRzZWxmIGNhbm5vdCBkZWFsIHdpdGggNjRiaXRzIGFkZHJlc3NlcyBhdCB0aGUgbW9tZW50LgoJKGluaXRfYmlvc19pbmZvKTogV2hlbiBnZXR0aW5nIGEgbWF4aW11bSBhdmFpbGFibGUgYWRkcmVzcyBmcm9tCgl0aGUgbWVtb3J5IG1hcCwgdXNlIGEgbmV3IHVuc2lnbmVkIGxvbmcgbG9uZyB2YXJpYWJsZSBNQVhfQUREUgoJYXMgdGhlIHRlbXBvcmFyeSB2YXJpYWJsZSBpbnN0ZWFkIG9mIE1FTVRNUC4gVGhpcyBzaG91bGQgYWxsb3cKCUdSVUIgdG8gZGV0ZWN0IGF0IG1vc3QgNFRCLgoJCjIwMDAtMDYtMTggIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBkb2NzL2FwcGVuZGljZXMudGV4aSAoRkFRKTogQWRkZWQgYW4gcXVlc3Rpb24gYWJvdXQgTGludXgncwoJYG1lbT0nIG9wdGlvbiBhbmQgdGhlIGFuc3dlci4KCQoyMDAwLTA2LTE3ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2Jvb3QuYyAobG9hZF9pbWFnZSk6IFBhc3MgYSBtZW0gb3B0aW9uIHRvIExpbnV4LCBvbmx5CglpZiBTUkMgaGFzIG5vIHN1YnN0cmluZyAibWVtPSIuCgkKMjAwMC0wNi0xNyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9jb21waWxlOiBSZW1vdmVkLgoJKiBuZXRib290L2NvbXBpbGU6IExpa2V3aXNlLgoJKiBjb21waWxlOiBOZXcgZmlsZS4gQ29waWVkIGZyb20gQXV0b21ha2UuCgkKMjAwMC0wNi0xNiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9ib290LmMgKGxvYWRfaW1hZ2UpOiBEb24ndCByZW1vdmUgdGhlIHZnYSBvcHRpb24gYWZ0ZXIKCXBhcnNpbmcgaXQuIFN1Z2dlc3RlZCBieSBUaW0gUmlrZXIuCgoyMDAwLTA2LTE1ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2FzbS5TIChncnViX2hhbHQpOiBVc2Ugam1wIGluc3RlYWQgb2YgamMsIGlmIElOVCAxNQoJQVg9NTMwN2ggZmFpbHMuCgkKMjAwMC0wNi0xNSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoQU1fSU5JVF9BVVRPTUFLRSk6IEluY3JlYXNlIHRoZSB2ZXJzaW9uIG51bWJlci4KCUkgd2lzaCB0aGF0IDAuNS45NiB3aWxsIG5vdCBiZSByZWxlYXNlZCBhY3R1YWxseS4uLgoJCgkqIHN0YWdlMi9idWlsdGlucy5jIChoYWx0X2Z1bmMpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbHRpbl9oYWx0KTogTmV3IHZhcmlhYmxlLgoJKHJlYm9vdF9mdW5jKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWx0aW5fcmVib290KTogTmV3IHZhcmlhYmxlLgoJKGJ1aWx0aW5fdGFibGUpOiBBZGRlZCBwb2ludGVycyB0byBCVUlMVElOX0hBTFQgYW5kCglCVUlMVElOX1JFQk9PVC4KCSogc3RhZ2UyL2FzbS5TIChncnViX2hhbHQpOiBOZXcgZnVuY3Rpb24uCgkoZ3J1Yl9yZWJvb3QpOiBMaWtld2lzZS4KCSogc3RhZ2UyL3NoYXJlZC5oIChncnViX2hhbHQpOiBEZWNsYXJlZC4KCShncnViX3JlYm9vdCk6IExpa2V3aXNlLgoJKiBncnViL2FzbXN0dWIuYyAoZ3J1Yl9yZWJvb3QpOiBOZXcgZnVuY3Rpb24uCgkoZ3J1Yl9oYWx0KTogTGlrZXdpc2UuCgkKMjAwMC0wNi0xMiAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGZpZy5vcmc+CgoJKiBzdGFnZTIvc3RhZ2UyLmMgKHJ1bl9tZW51KTogRG9uJ3QgZGlzcGxheSB0aGUgbWVudSBpZiB0aGUKCXRpbWVvdXQgaXMgemVyby4gIFRoaXMgbWFrZXMgZm9yIGNsZWFuZXIgdXNlIGFzIGEgbm9uaW50ZXJhY3RpdmUKCWJvb3Rsb2FkZXIuCgoyMDAwLTA2LTExICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogZG9jcy90dXRvcmlhbC50ZXhpIChHTlUvTGludXgpOiBBZGRlZCBhIGNhdXRpb24gYWJvdXQgdGhlCgkibWVtPSIgb3B0aW9uLgoJCjIwMDAtMDYtMTEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiB1dGlsL2dydWItaW5zdGFsbC5pbiAoY29udmVydCk6IFdoZW4gJGhvc3Rfb3MgaXMgbGludXgqLCB1c2UKCXRoZSBleHByZXNzaW9uICdzJVwoW3NoXWRbYS16XVwpWzAtOV0qJCVcMSUnIGluc3RlYWQgb2YKCSdzJVswLTldKiQlJScsIHRvIGdldCByaWQgb2YgdGhlIHBhcnRpdGlvbiBwYXJ0LiBUaGlzIGZpeGVzIHRoZQoJYnVnICIvZGV2L2ZkMCIgLT4gIi9kZXYvZmQiLiAoQnV0IGRvbid0IHlvdSB0aGluayB0aGUgbmFtaW5nIGlzCglxdWl0ZSBpbmNvbnNpc3RlbnQgd2l0aCBoYXJkIGRpc2tzPyBXaHkgbm90IC9kZXYvZmRbYS16XT8pCglSZXBvcnQgYnkgUGF2ZWwgUm9za2luLgoJCjIwMDAtMDYtMDggIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBkb2NzL3R1dG9yaWFsLnRleGkgKE5ldHdvcmspOiBUaGUgYm9keSBpcyBtb3ZlZCB0byAuLi4KCShHZW5lcmFsIHVzYWdlIG9mIG5ldHdvcmsgc3VwcG9ydCk6IC4uLiB0aGlzIG5ldyBzZWN0aW9uLgoJKERpc2tsZXNzKTogTmV3IHNlY3Rpb24uCgkqIGRvY3MvdXNlci1yZWYudGV4aSAoR2VuZXJhbCBjb21tYW5kcyk6IEFkZGVkIGEgZGVzY3JpcHRpb24KCWFib3V0IHRoZSBjb21tYW5kICJ0ZnRwc2VydmVyIi4KCQoyMDAwLTA2LTA4ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogbmV0Ym9vdC9tYWluLmMgKGRlY29kZV9yZmMxNTMzKSBbR1JVQl06IEVsaW1pbmF0ZSB0cmFpbGluZwoJTlVMcyBpbiB0aGUgTlZUIHN0cmluZyBmb3IgYSBjb25maWd1cmF0aW9uIGZpbGUgbmFtZSwgaWYgYW55LgoJKGRlY29kZV9yZmMxNTMzKTogTGlrZXdpc2UsIGlmIEV4dGVuc2lvbnMgUGF0aCBpcyBwcmVzZW50LAoJZWxpbWluYXRlIHRoZSB0cmFpbGluZyBOVUxzLCBpZiBhbnkuCglBbHNvLCBjaGVjayB0aGUgbGVuZ3RoIGNhcmVmdWxseSB0byBlbnN1cmUgdGhhdCBFWFRQQVRIIGNhbiBmaXQKCWluIEZOQU1FLgoJCjIwMDAtMDYtMDYgIEpvY2hlbiBIb2VuaWNrZSAgPGpvY2hlbkBnbnUub3JnPgoKCSogc3RhZ2UyL2ZzeXNfcmVpc2VyZnMuYzogQWRkZWQgam91cm5hbGluZyB0byByZWlzZXIuCgkocmVpc2VyZnNfam91cm5hbF9kZXNjKTogbmV3IHN0cnVjdHVyZS4KCShyZWlzZXJmc19qb3VybmFsX2NvbW1pdCk6IGxpa2V3aXNlLgogCShyZWlzZXJmc19qb3VybmFsX2hlYWRlcik6IGxpa2V3aXNlLgoJKGZzeXNfcmVpc2VyX2luZm8pOiBBZGRlZCBmaWVsZHMgZm9yIGpvdXJuYWxpbmcuCgkoam91cm5hbF9yZWFkKTogbmV3IGZ1bmN0aW9uLgoJKGpvdXJuYWxfaW5pdCkgbGlrZXdpc2UuCgkoYmxvY2tfcmVhZCk6IE5ldyBmdW5jdGlvbiB0byByZWFkIHJlaXNlcmZzIGJsb2Nrcywgd2hpY2ggcmVhZHMKCWZyb20gdGhlIGpvdXJuYWwgaWYgaXQgY29udGFpbnMgbmV3ZXIgdmVyc2lvbnMuIEFsbCByZWxldmFudAoJZGV2cmVhZCBjYWxscyBhcmUgcmVwbGFjZWQgd2l0aCBjYWxscyB0byB0aGlzIG1ldGhvZC4KCShyZWlzZXJmc19tb3VudCk6IENoZWNrIGZvciBqb3VybmFsaW5nIHN1cGVyIGJsb2NrIGFuZCBjYWxsCglqb3VybmFsX2luaXQuCgoyMDAwLTA2LTA2ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogbmV0Ym9vdC9tYWluLmMgKGRoY3ByZXF1ZXN0KSBbR1JVQl06IFNldCB0aGUgbGVuZ3RoIG9mIHRoZQoJUGFyYW1ldGVyIFJlcXVlc3QgTGlzdCB0byAoNCArIDIpLgoJU2V0IHRoZSBsaXN0IHRvIFJGQzE1MzNfVkVORE9SX01BR0lDIGFuZAoJUkZDMTUzM19WRU5ET1JfQ09ORklHRklMRSBpbiBhZGRpdGlvbiB0byB0aGUgc3RhbmRhcmQKCXBhcmFtZXRlcnMuCgkoZGVjb2RlX3JmYzE1MzMpIFtHUlVCXTogSWYgQyBpcyBlcXVhbCB0bwoJUkZDMTUzM19WRU5ET1JfQ09ORklHRklMRSwgY29weSB0aGUgY29udGVudHMgb2YgdGhlIHRhZyB0bwoJQ09ORklHX0ZJTEUuCglJZiBDIGlzIGVxdWFsIHRvIFJGQzE1MzNfVkVORE9SX01BR0lDLCBpbmNyZW1lbnQKCVZFTkRPUkVYVF9JU1ZBTElELgoJKiBuZXRib290L2V0aGVyYm9vdC5oIFtHUlVCXSAoUkZDMTUzM19WRU5ET1JfQ09ORklHRklMRSk6IE5ldwoJbWFjcm8uIERlZmluZWQgYXMgMTUwLgoJCjIwMDAtMDYtMDMgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvYXNtLlMgKGNoZWNrX2ludDEzX2V4dGVuc2lvbnMpOiBDaGVjayB0aGUgYml0bWFwIG9ubHkKCWlmIEZPUkNFX0xCQSBpcyB6ZXJvLgoJKiBzdGFnZTIvYmlvcy5jIChnZXRfZGlza2luZm8pOiBHZXQgcmlkIG9mIHRoZSB3cm9uZyBjaGVjayBmb3IKCXRoZSBiaXQgMCBvZiBEUlAuRkxBR1MuIE5vdyB0aGUgYml0bWFwIGNoZWNrIGlzIGNvcnJlY3RseQoJcGVyZm9ybWVkIGluIHRoZSBmdW5jdGlvbiBjaGVja19pbnQxM19leHRlbnNpb25zLgoJCjIwMDAtMDYtMDIgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBkb2NzL3VzZXItcmVmLnRleGkgKEludm9raW5nIHRoZSBncnViIHNoZWxsKTogQWRkZWQgYSBjYXV0aW9uLgoJV2h5IGRvbid0IHNvIG1hbnkgcGVvcGxlIHN0aWxsIHVuZGVyc3RhbmQgdGhhdCBCSU9TIGRyaXZlCgludW1iZXJpbmcgYXJlIGRpZmZlcmVudCBmcm9tIE9TIGRldmljZSBuYW1pbmc/IEhvdyBtYW55IGNhdXRpb25zCglhbmQgd2FybmluZ3Mgc2hvdWxkIHdlIHdyaXRlIGluIHRoZSBkb2N1bWVudGF0aW9uPyBTaWdoLgoJCjIwMDAtMDYtMDEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJRnJvbSBDaGlwIFNhbHplbmJlcmc6CgkqIHN0YWdlMi9jbWRsaW5lLmMgKGVudGVyX2NtZGxpbmUpIFtTVVBQT1JUX0RJU0tMRVNTXTogUmVkaXNwbGF5CgluZXR3b3JrIGNvbmZpZ3VyYXRpb24gYWZ0ZXIgY2xlYXJpbmcgc2NyZWVuLCBiZWZvcmUgZmlyc3QgcHJvbXB0LgoKCSogc3RhZ2UyL2NtZGxpbmUuYzogSW5jbHVkZSA8c2hhcmVkLmg+IGluc3RlYWQgb2YgInNoYXJlZC5oIi4KCVtTVVBQT1JUX0RJU0tMRVNTXTogSW5jbHVkZSA8ZXRoZXJib290Lmg+LgoKMjAwMC0wNi0wMSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChzZXR1cF9mdW5jKTogQ2hlY2sgaWYgSU5TVEFMTF9EUklWRSBpcyBhCgloYXJkIGRpc2sgYXMgd2VsbCBhcyBJTUFHRV9EUklWRSwgYmVmb3JlIHRyeWluZyB0byBpbnN0YWxsIGEKCVN0YWdlIDEuNS4gUmVwb3J0ZWQgYnkgUGF2ZWwgUm9za2luLgoJCjIwMDAtMDUtMzEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBhY2luY2x1ZGUubTQgKGdydWJfQVNNX0FCU09MVVRFX1dJVEhPVVRfQVNURVJJU0spOiBOZXcKCWZ1bmN0aW9uLiBDaGVjayBpZiBHQVMgcmVxdWlyZXMgYWJzb2x1dGUgaW5kaXJlY3QgY2FsbHMvanVtcHMKCXdpdGggTk8gYXN0ZXJpc2suCgkqIGNvbmZpZ3VyZS5pbjogQ2FsbCBncnViX0FTTV9BQlNPTFVURV9XSVRIT1VUX0FTVEVSSVNLLgoJKiBhY2NvbmZpZy5oIChBQlNPTFVURV9XSVRIT1VUX0FTVEVSSVNLKTogTmV3IG1hY3JvIGVudHJ5LgoJKiBuZXRib290L3BjaS5jIChiaW9zMzJfc2VydmljZSkgWyFBQlNPTFVURV9XSVRIT1VUX0FTVEVSSVNLXToKCVByZWZpeCB0aGUgb3BlcmFuZCB0byAibGNhbGwiIHdpdGggYConLgoJKHBjaWJpb3NfcmVhZF9jb25maWdfYnl0ZSkgWyFBQlNPTFVURV9XSVRIT1VUX0FTVEVSSVNLXToKCUxpa2V3aXNlLgoJKHBjaWJpb3NfcmVhZF9jb25maWdfd29yZCkgWyFBQlNPTFVURV9XSVRIT1VUX0FTVEVSSVNLXToKCUxpa2V3aXNlLgoJKHBjaWJpb3NfcmVhZF9jb25maWdfZHdvcmQpIFshQUJTT0xVVEVfV0lUSE9VVF9BU1RFUklTS106CglMaWtld2lzZS4KCShwY2liaW9zX3dyaXRlX2NvbmZpZ19ieXRlKSBbIUFCU09MVVRFX1dJVEhPVVRfQVNURVJJU0tdOgoJTGlrZXdpc2UuCgkocGNpYmlvc193cml0ZV9jb25maWdfd29yZCkgWyFBQlNPTFVURV9XSVRIT1VUX0FTVEVSSVNLXToKCUxpa2V3aXNlLgoJKHBjaWJpb3Nfd3JpdGVfY29uZmlnX2R3b3JkKSBbIUFCU09MVVRFX1dJVEhPVVRfQVNURVJJU0tdOgoJTGlrZXdpc2UuCgkoY2hlY2tfcGNpYmlvcykgWyFBQlNPTFVURV9XSVRIT1VUX0FTVEVSSVNLXTogTGlrZXdpc2UuCgkqIHN0YWdlMi9hc20uUyAoY2hhaW5fc3RhZ2UxKSBbIUFCU09MVVRFX1dJVEhPVVRfQVNURVJJU0tdOgoJUHJlZml4IHRoZSBvcGVyYW5kIHRvICJsam1wIiB3aXRoIGAqJy4KCShjaGFpbl9zdGFnZTIpIFshQUJTT0xVVEVfV0lUSE9VVF9BU1RFUklTS106IExpa2V3aXNlLgoJKGJpZ19saW51eF9ib290KSBbIUFCU09MVVRFX1dJVEhPVVRfQVNURVJJU0tdOiBMaWtld2lzZS4KCQoyMDAwLTA1LTI5ICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHZhbGludXguY29tPgoKCSogc3RhZ2UyL3NoYXJlZC5oIChncnViX21lbW1vdmUpOiBQcm90b3R5cGUgdG8gdXNlIHZvaWQgKi4KCSogc3RhZ2UyL2NoYXJfaW8uYyAoZ3J1Yl9tZW1tb3ZlKTogRGVmaW5lIGxpa2V3aXNlLgoKMjAwMC0wNS0zMCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGZpZy5vcmc+CgoJKiBkb2NzL3VzZXItcmVmLnRleGkgKFN0YWdlMiBlcnJvcnMpOiBVcGRhdGUgZXJyb3IgbWVzc2FnZXMuCgoyMDAwLTA1LTI5ICBQYXZlbCBSb3NraW4gIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCgkqIHV0aWwvZ3J1Yi1pbnN0YWxsLmluOiBGaXggYSB0eXBvIHRoYXQgcHJldmVudGVkIGVycm9yIG1lc3NhZ2VzCglmcm9tIGFwcGVhcmluZy4KCUNvcHkgYW5kIHJlbW92ZSBmaWxlcyBpbmRpdmlkdWFsbHkgYW5kIGV4aXQgd2l0aCBhbiBlcnJvciBhcwoJc29vbiBhcyBpdCBmYWlscy4KCVNob3cgJGxvZ19maWxlIGlmIC0tZGVidWcgd2FzIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUuCgoyMDAwLTA0LTE5ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZmlnLm9yZz4KCgkqIHN0YWdlMi9jbWRsaW5lLmMgKGVudGVyX2NtZGxpbmUpOiBEb24ndCBnaXZlIGVycm9ycyBvbiBlbXB0eQoJY29tbWFuZCBsaW5lcy4KCgkqIHN0YWdlMi9jb21tb24uYyAoZXJyX2xpc3QpOiBDbGVhbiB1cCB3b3JkaW5ncyBzbGlnaHRseS4KCjIwMDAtMDUtMjkgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJQmFzZWQgb24gYSBwYXRjaCBieSBOZWFsIEggV2FsZmllbGQgPG5lYWxAd2FsZmllbGQub3JnPjoKCSogbmV0Ym9vdC9taXNjLmMgW0dSVUJdIChpbmV0X2F0b24pOiBEZWZpbmVkLgoJKiBuZXRib290L21haW4uYyAoYXJwX3NlcnZlcl9vdmVycmlkZSk6IE5ldyBmdW5jdGlvbi4KCSogbmV0Ym9vdC9ldGhlcmJvb3QuaCBbR1JVQl0gKGFycF9zZXJ2ZXJfb3ZlcnJpZGUpOiBEZWNsYXJlZC4KCShpbmV0X2F0b24pOiBMaWtld2lzZS4KCSogc3RhZ2UyL2J1aWx0aW5zLmMgKHRmdHBzZXJ2ZXJfZnVuYyk6IE5ldyBmdW5jdGlvbi4KCShidWlsdGluX3RmdHBzZXJ2ZXIpOiBOZXcgdmFyaWFibGUuCgkoYnVpbHRpbl90YWJsZSk6IEFkZGVkIGEgcG9pbnRlciB0byBCVUlMVElOX1RGVFBTRVJWRVIuCgkKMjAwMC0wNS0yOCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9hc20uUyAoY29kZXN0YXJ0KTogRml4IGEgdHlwbzogRElTS0xFU1NfU1VQUE9SVCAtPgoJU1VQUE9SVF9ESVNLTEVTUy4KCSogc3RhZ2UyL25ibG9hZGVyLlM6IEZpeCB0aGUgaW1hZ2UgbGVuZ3RoIGFuZCB0aGUgbWVtb3J5IGxlbmd0aAoJZmllbGRzLiBUaGV5IHNob3VsZG4ndCBjb250YWluIHRoZSBmaXJzdCBzZWN0b3IgZm9yIGEgdGFnLgoJTW1oLi4uLCB0aGF0IGlzIHVuY2xlYXIgYXMgZmFyIGFzIEkgc2VlIHRoZSBOZXQgQm9vdCBJbWFnZQoJUHJvcG9zYWwuLi4KCSogc3RhZ2UyL3NoYXJlZC5oIChTVEFDS09GRik6IEVuY2xvc2VkIHdpdGggcGFyZW50aGVzZXMuCgkoUFJPVFNUQUNLSU5JVCk6IExpa2V3aXNlLgoJCjIwMDAtMDUtMjcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJQWRkIGRpc2tsZXNzIHN1cHBvcnQsIG1vc3RseSBiYXNlZCBvbiBwYXRjaGVzIGJ5IENocmlzdG9waAoJUGxhdHRuZXIgPENocmlzdG9waC5QbGF0dG5lckBkb3QuYXQ+LCBidXQgYWxzbyBiYXNlZCBvbiBhIHBhdGNoCglieSBDaGlwIFNhbHplbmJlcmcgPGNoaXBAdmFsaW51eC5jb20+IGZvciBQWEUuIE9mIGNvdXJzZSwgSSd2ZQoJbW9kaWZpZWQgYm90aCB0aGUgcGF0Y2hlcyB0aG9yb3VnaGx5IHRvIGFkYXB0IHRoZW0gdG8gbXkKCXByZWZlcmVuY2UuCgoJKiBjb25maWd1cmUuaW4gKC0tZW5hYmxlLWRpc2tsZXNzKTogTmV3IG9wdGlvbi4gU2V0IGEKCWNvbmRpdGlvbmFsIERJU0tMRVNTX1NVUFBPUlQuCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAobm9pbnN0X0hFQURFUlMpOiBBZGRlZCBuYmkuaC4KCShFWFRSQV9QUk9HUkFNUyk6IE5ldyB2YXJpYWJsZS4KCShwa2dkYXRhX0RBVEEpIFtESVNLTEVTU19TVVBQT1JUXTogQWRkZWQKCW5iZ3J1YiBhbmQgcHhlZ3J1Yi4KCShub2luc3RfREFUQSkgW0RJU0tMRVNTX1NVUFBPUlRdOiBBZGRlZCBuYmxvYWRlciwgcHhlbG9hZGVyIGFuZAoJZGlza2xlc3MuCgkobm9pbnN0X1BST0dSQU1TKSBbRElTS0xFU1NfU1VQUE9SVF06IEFkZGVkIG5ibG9hZGVyLmV4ZWMsCglweGVsb2FkZXIuZXhlYyBhbmQgZGlza2xlc3MuZXhlYy4KCShQWEVMT0FERVJfTElOSyk6IE5ldyB2YXJpYWJsZS4KCShCVUlMVF9TT1VSQ0VTKSBbRElTS0xFU1NfU1VQUE9SVF06IEFkZGVkIGRpc2tsZXNzX3NpemUuaC4KCShkaXNrbGVzc19leGVjX1NPVVJDRVMpOiBOZXcgdmFyaWFibGUuCgkoZGlza2xlc3NfZXhlY19DRkxBR1MpOiBMaWtld2lzZS4KCShkaXNrbGVzc19leGVjX0xERkxBR1MpOiBMaWtld2lzZS4KCShkaXNrbGVzc19leGVjX0xEQUREKTogTGlrZXdpc2UuCgkoZGlza2xlc3Nfc2l6ZS5oKTogTmV3IHRhcmdldC4KCShuYmxvYWRlcl9leGVjX1NPVVJDRVMpOiBOZXcgdmFyaWFibGUuCgkobmJsb2FkZXJfZXhlY19DRkxBR1MpOiBMaWtld2lzZS4KCShuYmxvYWRlcl9leGVjX0xERkxBR1MpOiBMaWtld2lzZS4KCShuYmxvYWRlcl9leGVjLW5ibG9hZGVyLm8pOiBOZXcgZGVwZW5kZW5jeS4KCShuYmdydWIpOiBOZXcgdGFyZ2V0LgoJKHB4ZWxvYWRlcl9leGVjX1NPVVJDRVMpOiBuZXcgdmFyaWFibGUuCgkocHhlbG9hZGVyX2V4ZWNfQ0ZMQUdTKTogTGlrZXdpc2UuCgkocHhlbG9hZGVyX2V4ZWNfTERGTEFHUyk6IExpa2V3aXNlLgoJKHB4ZWdydWIpOiBOZXcgdGFyZ2V0LgoJKiBzdGFnZTIvYXNtLlMgKGluc3RhbGxfcGFydGl0aW9uKTogU2V0IHRvIDB4RkZGRkZGIGluc3RlYWQgb2YKCTB4MDIwMDAwLiBXaGF0IHdhcyB0aGUgYmVuZWZpdCBmcm9tIHRoZSBwcmV2aW91cyBzZXR0aW5nPwoJKGNvZGVzdGFydCkgW1NVUFBPUlRfRElTS0xFU1NdOiBEb24ndCBtb3ZlICVkbCB0byBCT09UX0RSSVZFLgoJKGJvb3RfZHJpdmUpIFtTVVBQT1JUX0RJU0tMRVNTXTogU2V0IHRvIE5FVFdPUktfRFJJVkUgaW5zdGVhZCBvZgoJemVyby4KCSogc3RhZ2UyL2NvbW1vbi5jOiBJbmNsdWRlIDxzaGFyZWQuaD4gaW5zdGVhZCBvZiAic2hhcmVkLmgiLAoJanVzdCBmb3IgYSBjb3NtZXRpYyByZWFzb24uCglbU1VQUE9SVF9ESVNLTEVTU106IEluY2x1ZGUgZXRoZXJib290LmguCglbU1VQUE9SVF9ESVNLTEVTU10gKHNldHVwX2Rpc2tsZXNzX2Vudmlyb25tZW50KTogTmV3IGludGVybmFsCglmdW5jdGlvbi4KCShpbml0X2Jpb3NfaW5mbykgW1NVUFBPUlRfRElTS0xFU1NdOiBDYWxsCglzZXR1cF9kaXNrbGVzc19lbnZpcm9ubWVudCBhZnRlciB0aGUgbWVtb3J5IGluaXRpYWxpemF0aW9uIGlzCglmaW5pc2hlZC4gUmV0dXJuIGlmIGZhaWxzLgoJKiBzdGFnZTIvbmJsb2FkZXIuUzogTmV3IGZpbGUuCgkqIHN0YWdlMi9weGVsb2FkZXIuUzogTGlrZXdpc2UuCgkqIHN0YWdlMi9uYmkuaDogTGlrZXdpc2UuCgkKMjAwMC0wNS0yNSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIG5ldGJvb3QvZnN5c190ZnRwLmMgKGJ1Zl9maWxsKTogV2FybiB3aGVuIGFtYXppbmcgdGhpbmdzCgloYXBwZW4uCgkodGZ0cF9kaXIpOiBSZXZlcnQgcHJldmlvdXMgY2hhbmdlLiBEb24ndCB1c2UgVEZUUF9NSU5fUEFDS0VUCglidXQgY2FsY3VsYXRlIHRoZSBhcHByb3ByaWF0ZSBsZW5ndGguCgkKMjAwMC0wNS0yMyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIG5ldGJvb3QvZnN5c190ZnRwLmMgKHRmdHBfZGlyKTogQXBwZW5kICIwXDAiIHRvIHRoZSByZXF1ZXN0CglzdHJpbmcsIGJlY2F1c2UgdGhlICJ0c2l6ZSIgb3B0aW9uIG11c3QgYmUgZm9sbG93ZWQgYnkgemVybywKCWFjY29yZGluZyB0byBSRkMgMjM0OS4KCQoyMDAwLTA1LTIyICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCVN5bmNocm9uaXplIHRoZSBkb2N1bWVudGF0aW9uIHdpdGggdGhlIGNvZGUuCgkKCSogZG9jcy91c2VyLXJlZi50ZXhpOiBBZGRlZCBSZWlzZXJGUyBhcyBhIHN1cHBvcnRlZCBmaWxlc3lzdGVtLgoJVXBkYXRlZCB0aGUgZGVzY3JpcHRpb25zIGFib3V0IGBwYXNzd29yZCcsIGBpbnN0YWxsJywgYGtlcm5lbCcsCglhbmQgYHNldHVwJy4KCUFkZGVkIGEgZGVzY3JpcHRpb24gYWJvdXQgYGxvY2snLgoJQWRkZWQgZGVzY3JpcHRpb25zIGFib3V0IEVSUl9VTkFMSUdORUQgYW5kIEVSUl9QUklWSUxFR0VELgoJQWRkZWQgYSBkZXNjcmlwdGlvbiBhYm91dCB0aGUgb3B0aW9uIGAtLWZvcmNlLWxiYScgb2YKCXRoZSBwcm9ncmFtIGBncnViLWluc3RhbGwnLgoJKiBkb2NzL3R1dG9yaWFsLnRleGk6IFVwZGF0ZWQgdGhlIHN1YnNlY3Rpb24gZm9yIE5ldEJTRC4KCQoyMDAwLTA1LTIxICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2FzbS5TIChzZXRfaW50MTNfaGFuZGxlcik6IERvbid0IHVzZSBNQkkgdG8gZ2V0IHRoZQoJbG93ZXIgbWVtb3J5IHNpemUuIEluc3RlYWQsIGRlY3JlYXNlIGl0IGluIHRoZSBCSU9TIG1lbW9yeQoJZGlyZWN0bHkgYW5kIHNldCAlZWF4IHRvIGl0LCBzaW5jZSBNQkkuTUVNX0xPV0VSIG1heSBub3QgYmUgdGhlCglzYW1lIGFzIFsweDQxM10gYW55IGxvbmdlciBkdWUgdG8gdGhlIHByZXZpb3VzIGNoYW5nZS4KCgkqIGdydWIvYXNtc3R1Yi5jIChDT05WRU5USU9OQUxfTUVNU0laRSk6IENoYW5nZWQgdG8gNjQwICogMTAyNAoJZnJvbSA2NDAuIFlvdSBkaWRuJ3QgbGlrZSB0aGUgaW5jb25zaXN0ZW5jeSBiZXR3ZWVuCglFWFRFTkRFRF9NRU1TSVpFIGFuZCBDT05WRU5USU9OQUxfTUVNU0laRSwgZGlkIHlvdT8KCShnZXRfbWVtc2l6ZSk6IFJldHVybiBDT05WRU5USU9OQUxfTUVNU0laRSA+PiAxMCBpbnN0ZWFkIG9mCglDT05WRU5USU9OQUxfTUVNU0laRSwgaWYgVFlQRSBpcyB6ZXJvLgoJKGdldF9laXNhbWVtc2l6ZSk6IFJldHVybiBFWFRFTkRFRF9NRU1TSVpFID4+IDEwIGluc3RlYWQgb2YKCUVYVEVOREVEX01FTVNJWkUgLyAxMDI0LiBKdXN0IGEgY29zbWV0aWMgY2hhbmdlLgoJKE1NQVJfREVTQ19MRU5HVEgpOiBOZXcgbWFjcm8uIERlZmluZWQgYXMgMjAuCgkoZ2V0X21tYXBfZW50cnkpOiBEZWZpbmUgYSBuZXcgdmFyaWFibGUgREVTQ19UQUJMRSBzdGF0aWNhbGx5LCAKCWFuZCBjb3B5IHRoZSBDT05UdGggZW50cnkgdG8gKkRFU0MgaWYgQ09OVCBpcyBhIGNvcnJlY3QgaW5kZXguCgkKMjAwMC0wNS0yMSAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEB2YWxpbnV4LmNvbT4KCgkqIHN0YWdlMi9jb21tb24uYyAobW1hcF9hdmFpbF9hdCk6IE5ldyBmdW5jdGlvbiwgYWJzdHJhY3RlZCBvdXQKCW9mIGluaXRfYmlvc19pbmZvLCB0byBzY2FuIEU4MjAgbWVtb3J5IG1hcC4KCShpbml0X2Jpb3NfaW5mbyk6IFVzZSBtbWFwX2F2YWlsX2F0IGZvciBfYm90aF8gTUJJLk1FTV9VUFBFUiBhbmQKCU1CSS5NRU1fTE9XRVIuCgoyMDAwLTA1LTE3ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCVVwZGF0ZSB0aGUgbmV0d29yayBzdXBwb3J0IHRvIEV0aGVyYm9vdC00LjYuMS4KCgkqIG5ldGJvb3QvY29uZmlnLmMgKHBjaV9uaWNfbGlzdCkgW0lOQ0xVREVfVFVMSVBdOiBBZGRlZCBhbgoJZW50cnkgZm9yIERhdmljb20gOTEwMi4KCSogbmV0Ym9vdC9lcGljMTAwLmM6IEp1c3QgY29waWVkLgoJKiBuZXRib290L3BjaS5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC90dWxpcC5jOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9ldGhlcmJvb3QuaCAodGZ0cCk6IENoYW5nZSB0aGUgdHlwZSBvZiB0aGUgZmlyc3QKCWFyZ3VtZW50IHRvIGNvbnN0IGNoYXIgKiBmcm9tIGNoYXIgKi4KCSogbmV0Ym9vdC9tYWluLmMgKHRmdHApOiBMaWtld2lzZS4KCQoyMDAwLTA1LTEzICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogdXRpbC9ncnViLWluc3RhbGwuaW46IElmIHRoZSBwcm9ncmFtIGBjcCcgZmFpbHMsIGV4aXQgd2l0aCB0aGUKCXN0YXR1cyBjb2RlIDEuIFN1Z2dlc3RlZCBieSBQYXZlbCBSb3NraW4uCgkKMjAwMC0wNS0xMyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCglGcm9tIFBpeGVsIDxwaXhlbEBtYW5kcmFrZXNvZnQuY29tPjoKCSogc3RhZ2UyL3BjX3NsaWNlLmggKFBDX1NMSUNFX1RZUEVfTElOVVhfRVhURU5ERUQpOiBOZXcgbWFjcm8uCgkoSVNfUENfU0xJQ0VfVFlQRV9FWFRFTkRFRCk6IEFkZGVkIGEgY2hlY2sgZm9yCglQQ19TTElDRV9UWVBFX0xJTlVYX0VYVEVOREVELgoJCjIwMDAtMDUtMDUgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvY29tbW9uLmMgKGluaXRfYmlvc19pbmZvKSBbIVNUQUdFMV81XTogV2hlbiB0aGUgbWVtb3J5CgltYXAgaXMgcHJlc2VudCwgc2VhcmNoIHRoZSBtYXhpbXVtIGZvciBNRU1UTVAgaW4gYnl0ZXMgaW5zdGVhZAoJb2Yga2lsb2J5dGVzIGFuZCBzZXQgRVhURU5ERURfTUVNT1JZIHRvIE1FTVRNUCBtaW51cyAxTUIgaW4KCWtpbG9ieXRlcy4KCQoyMDAwLTA1LTA1ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUlnbm9yZSBhbnkgbWVtb3J5IGhvbGVzIHdoZW4gcGFzc2luZyB0aGUgbWF4aW11bSBtZW1vcnkgYWRkcmVzcwoJdG8gbm9uLU11bHRpYm9vdCBrZXJuZWxzIChpLmUuIExpbnV4IGFuZCAqQlNEKS4KCQoJKiBzdGFnZTIvY29tbW9uLmMgWyFTVEFHRTFfNV0gKGV4dGVuZGVkX21lbW9yeSk6IE5ldyBnbG9iYWwKCXZhcmlhYmxlLgoJKGluaXRfYmlvc19pbmZvKSBbIVNUQUdFMV81XTogQ2hhbmdlIHRoZSB0eXBlIG9mIENPTlQsIE1FTVRNUAoJYW5kIEFERFIgdG8gdW5zaWduZWQgbG9uZyBmcm9tIGludC4KCVNldCBFWFRFTkRFRF9NRU1PUlkgdG8gTUJJLk1FTV9VUFBFUiBieSBkZWZhdWx0LgoJSWYgTUJJLk1NQVBfTEVOR1RIIGlzIG5vdCB6ZXJvLCBzZXQgRVhURU5ERURfTUVNT1JZIHRvIHRoZQoJbWF4aW11bSBhdmFpbGFibGUgYWRkcmVzcywgaWdub3JpbmcgYW55IG1lbW9yeSBob2xlcy4KCUlmIE1CSS5NTUFQX0xFTkdUSCBpcyB6ZXJvIGJ1dCBnZXRfZWlzYW1lbXNpemUgcmV0dXJucyBvdGhlcgoJdGhhbiAtMSwgc2V0IEVYVEVOREVEX01FTU9SWSB0byAoQ09OVCA+PiAxMCkgKyAweDNjMDAgaWYgQ09OVCBpcwoJbm9uLXplcm8sIG90aGVyd2lzZSwgc2V0IGl0IHRvIE1FTVRNUC4KCSogc3RhZ2UyL3NoYXJlZC5oIFshU1RBR0UxXzVdIChleHRlbmRlZF9tZW1vcnkpOiBEZWNsYXJlZC4KCSogc3RhZ2UyL2Jvb3QuYyAobG9hZF9pbWFnZSk6IEFsd2F5cyBwYXNzIHRoZSAibWVtPSIgb3B0aW9uIHRvIGEKCUxpbnV4IGtlcm5lbCwgdXNpbmcgRVhURU5ERURfTUVNT1JZIGluc3RlYWQgb2YgTUJJLk1FTV9VUFBFUi4KCShic2RfYm9vdCk6IFVzZSBFWFRFTkRFRF9NRU1PUlkgaW5zdGVhZCBvZiBNQkkuTUVNX1VQUEVSLgoJCjIwMDAtMDQtMzAgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTEvc3RhZ2UxLlMgKG1lc3NhZ2UpOiBVc2UgbG9kc2IgaW5zdGVhZCBvZiBpbmN3IGFuZCBtb3ZiLgoJRnJvbSBBbmRyZXcgQ2xhdXNlbiA8Y2xhdXNlbkBnbnUub3JnPi4KCgkqIHN0YWdlMS9zdGFnZTEuUyAoY29weV9idWZmZXIpOiBTZXQgJWN4IHRvIDB4MTAwIGFuZCB1c2UgbW92c3cKCWluc3RlYWQgb2YgbW92c2IsIHNpbmNlIGl0IGlzIGd1YXJhbnRlZWQgdGhhdCB0aGUgcmVnaW9uIGlzCglwcm9wZXJseSBhbGlnbmVkLgoJCjIwMDAtMDQtMjkgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoc2V0dXBfZnVuYyk6IFVzZSBTRUNUT1JfQklUUyBpbnN0ZWFkIG9mCglTRUNUT1JfU0laRSB0byBjb21wdXRlIEJMT0NLU0laRS4KCjIwMDAtMDQtMjYgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBuZXRib290L2RlcGNhLmM6IENvcGllZCBmcm9tIEV0aGVyYm9vdC00LjYuMC4KCQoyMDAwLTA0LTIzICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCU1vcmUgc2VjdXJpdHktcmVsYXRlZCBmZWF0dXJlcy4KCQoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoYXV0aCk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkoY29uZmlnZmlsZV9mdW5jKTogQ2xlYXIgQVVUSCBiZWZvcmUganVtcGluZyB0byBjbWFpbi4KCShsb2NrX2Z1bmMpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbHRpbl9sb2NrKTogTmV3IHZhcmlhYmxlLgoJKHBhc3N3b3JkX2Z1bmMpOiBNYWtlIHN1cmUgdGhhdCBMRU4gKyAyIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0bwoJUEFTU1dPUkRfQlVGTEVOLCBiZWNhdXNlIG5vdyB0aGUgcGFzc3dvcmQgbXVzdCBiZSB0ZXJtaW5hdGVkCgl3aXRoIGRvdWJsZSBOVUxzLCBpbiBvcmRlciB0byBwZXJtaXQgYW4gZW1wdHkgY29uZmlndXJhdGlvbiBmaWxlCgluYW1lLgoJQ29weSBMRU4gYnl0ZXMgZnJvbSBBUkcgdG8gUEFTU1dPUkQsIGluc3RlYWQgb2YgTEVOICsgMSBieXRlcy4KCUNsZWFyIHRoZSByZXN0IG9mIHRoZSBidWZmZXIgUEFTU1dPUkQuCgkoYnVpbHRpbl90YWJsZSk6IEFkZGVkIGEgcG9pbnRlciB0byBCVUlMVElOX0xPQ0suCgkqIHN0YWdlMi9jb21tb24uYyAoZXJyX2xpc3QpOiBBZGRlZCBhbiBlbnRyeSBmb3IgRVJSX1BSSVZJTEVHRUQuCgkqIHN0YWdlMi9zdGFnZTIuYyAocnVuX21lbnUpOiBJZiBBVVRIIGlzIHRydWUsIHNob3cgdGhlIG1lc3NhZ2VzCglmb3IgYSBub24tcGFzc3dvcmQgY29uZmlndXJhdGlvbiwgZXZlbiBpZiBQQVNTV09SRCBpcyBub3QgTlVMTC4KCUxpa2V3aXNlLCBpZiBBVVRIIGlzIHRydWUsIGFsbG93IHRoZSB1c2VyIHRvIHVzZSBwcml2aWxlZ2VkCglpbnN0cnVjdGlvbnMgKHN1Y2ggYXMgYGMnKS4KCUlmIGEgY29ycmVjdCBwYXNzd29yZCBpcyBlbnRlcmVkLCBjaGVjayBpZiAqUFBUUiBpcyBOVUwgb3Igbm90LgoJSWYgaXQgaXMgTlVMLCBzZXQgQVVUSCB0byAxIGFuZCBnbyB0byB0aGUgbGFiZWwgcmVzdGFydCwKCW90aGVyd2lzZSwgY29weSBQUFRSIHRvIE5FV19GSUxFLCBjbGVhciBBVVRILCBhbmQgcmV0dXJuLgoJKiBzdGFnZTIvc2hhcmVkLmggKGdydWJfZXJyb3JfdCk6IEFkZGVkIGEgbmV3IGNvbnN0YW50CglFUlJfUFJJVklMRUdFRC4KCShhdXRoKTogRGVjbGFyZWQuCgkKMjAwMC0wNC0yMyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGRvY3MvdXNlci1yZWYudGV4aSAoQ29tbWFuZC1saW5lLXNwZWNpZmljIGNvbW1hbmRzKTogRG9uJ3QgdXNlCgl0aGUgY29tbWFuZCBAdmFyIGZvciB0aGUgYXJndW1lbnQgImZpbGUiIHRvIHRoZSBjb21tYW5kCgkiY29uZmlnZmlsZSIgb24gdGhlIGRlZmluaXRpb24uCgkKMjAwMC0wNC0yMiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCglVcGRhdGUgdGhlIG5ldHdvcmsgc3VwcG9ydCB0byBFdGhlcmJvb3QgNC41LjguCgoJKiBjb25maWd1cmUuaW4gKC0tZW5hYmxlLTNjNTkwKTogTmV3IG9wdGlvbi4KCSgtLWVuYWJsZS0zYzU5NSk6IExpa2V3aXNlLgoJKC0tZW5hYmxlLWRlcGNhKTogTGlrZXdpc2UuCgkoLS1lbmFibGUtbGFuY2UpOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1uczgzOTApOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1udHVsaXApOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1sYW5jZXBjaSk6IFJlbW92ZWQuCgkoLS1lbmFibGUtbmVwY2kpOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1vdHVsaXApOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1zbWM5MDAwKTogVGhlIGR1cGxpY2F0ZWQgb25lIGlzIG5hbWVkIHRvIC4uLgoJKC0tZW5hYmxlLXNtYzkwMDAtc2Nhbik6IC4uLiB0aGlzLiBUaGlzIHdhcyBhIHR5cG8sIHBlcmhhcHMuCgkKCSogbmV0Ym9vdC9NYWtlZmlsZS5hbSAobGliZHJpdmVyc19hX1NPVVJDRVMpOiBSZW1vdmVkCglieXRlb3JkZXIuaCwgaWYuaCwgbmV0Ym9vdF9jb25maWcuaCBhbmQgbmV0ZGV2aWNlLmgsIGFuZCBhZGRlZAoJY2FyZHMuaC4KCShFWFRSQV9saWJkcml2ZXJzX2FfU09VUkNFUyk6IFJlbW92ZWQgbnR1bGlwLmMgYW5kIHR1bGlwLmgsIGFuZAoJYWRkZWQgM2M1OTUuYywgM2M1OTUuaCwgZGVwY2EuYywgb3R1bGlwLmMgYW5kIG90dWxpcC5oLgoJKGxpYmRyaXZlcnNfYV9DRkxBR1MpOiBEZWZpbmUgRlNZU19URlRQIGFzIDEgaW5zdGVhZCBvZiBlbXB0eS4KCShFWFRSQV9ESVNUKTogUmVtb3ZlZCBudHVsaXAudHh0LCBhbmQgYWRkZWQgY3M4OXgwLnR4dCBhbmQKCXR1bGlwLnR4dC4KCSgzYzU5NV9kcml2ZXJzKTogTmV3IHZhcmlhYmxlLgoJKGRlcGNhX2RyaXZlcnMpOiBMaWtld2lzZS4KCShsYW5jZV9kcml2ZXJzKTogUmVtb3ZlZCBsYW5jZXBjaS5vIGFuZCBhZGRlZCBsYW5jZS5vLgoJKG5zODM5MF9kcml2ZXJzKTogUmVtb3ZlZCBuZXBjaS5vIGFuZCBhZGRlZCBuczgzOTAuby4KCShudHVsaXBfZHJpdmVycyk6IERlbGV0ZWQuCgkob3R1bGlwX2RyaXZlcnMpOiBOZXcgdmFyaWFibGUuCgkoJCgzYzU5NV9kcml2ZXJzKSk6IE5ldyB0YXJnZXQuCgkoJChkZXBjYV9kcml2ZXJzKSk6IExpa2V3aXNlLgoJKCQobnR1bGlwX2RyaXZlcnMpKTogRGVsZXRlZC4KCSgkKG90dWxpcF9kcml2ZXJzKSk6IE5ldyB0YXJnZXQuCgkoM2M1OTBfb19DRkxBR1MpOiBOZXcgdmFyaWFibGUuCgkoM2M1OTVfb19DRkxBR1MpOiBMaWtld2lzZS4KCShkZXBjYV9vX0NGTEFHUyk6IExpa2V3aXNlLgoJKGxhbmNlcGNpX29fQ0ZMQUdTKTogRGVsZXRlZC4KCShsYW5jZV9vX0NGTEFHUyk6IE5ldyB2YXJpYWJsZS4KCShuZXBjaV9vX0NGTEFHUyk6IERlbGV0ZWQuCgkobnM4MzkwX29fQ0ZMQUdTKTogTmV3IHZhcmlhYmxlLgoJKG50dWxpcF9vX0NGTEFHUyk6IERlbGV0ZWQuCgkob3R1bGlwX29fQ0ZMQUdTKTogTmV3IHZhcmlhYmxlLgoJCgkqIG5ldGJvb3QvM2M5MHguYzogVXBkYXRlZCB0byBFdGhlcmJvb3QtNC41LjguCgkqIG5ldGJvb3QvM2M5MHgudHh0OiBMaWtld2lzZS4KCSogbmV0Ym9vdC9jczg5eDAuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvY3M4OXgwLmg6IExpa2V3aXNlLgoJKiBuZXRib290L2VlcHJvMTAwLmM6IExpa2V3aXNlLgoJKiBuZXRib290L2VwaWMxMDAuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvZXBpYzEwMC5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9pODI1ODYuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvbGFuY2UuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvbGludXgtYXNtLWlvLmg6IExpa2V3aXNlLgoJKiBuZXRib290L2xpbnV4LWFzbS1zdHJpbmcuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvbmljLmg6IExpa2V3aXNlLgoJKiBuZXRib290L25zODM5MC5jOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9uczgzOTAuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvcGNpLmM6IExpa2V3aXNlLgoJKiBuZXRib290L3BjaS5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9ydGw4MTM5LmM6IExpa2V3aXNlLgoJKiBuZXRib290L3NrX2cxNi5jOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9za19nMTYuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3Qvc21jOTAwMC5jOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9zbWM5MDAwLmg6IExpa2V3aXNlLgoJKiBuZXRib290L3RpYXJhLmM6IExpa2V3aXNlLgoJKiBuZXRib290L3R1bGlwLmM6IExpa2V3aXNlLgoJKiBuZXRib290L3ZpYS1yaGluZS5jOiBMaWtld2lzZS4KCgkqIG5ldGJvb3QvY29uZmlnLmM6IFVwZGF0ZWQgdG8gRXRoZXJib290LTQuNS44IGFuZCBtb2RpZmllZCAoc2VlCgliZWxvdykuCglbR1JVQl0gKHByaW50X2NvbmZpZyk6IFVuZGVmaW5lZC4KCShldGhfcHJvYmUpIFtHUlVCXTogSWYgUFJPQkVEIGlzIHRydWUsIGRvIG5vdGhpbmcuIE90aGVyd2lzZSwKCWNsZWFyIE5FVFdPUktfUkVBRFkgYW5kIEFSUFRBQkxFLCBzZXQgUk9NIHRvIFJPTV9JTkZPX0xPQ0FUSU9OLAoJYW5kIHNldCBQUk9CRUQgdG8gMSBpZiBzdWNjZWVkcy4KCSogbmV0Ym9vdC9ldGhlcmJvb3QuaDogTGlrZXdpc2UsCgkoR1JVQik6IE5ldyBtYWNyby4KCVtHUlVCXTogSW5jbHVkZSA8c2hhcmVkLmg+LgoJW0dSVUJdIChOT19ESENQX1NVUFBPUlQpOiBVbmRlZmluZWQuCglbR1JVQl0gKFJFTE9DKTogRGVmaW5lZCBhcyB6ZXJvLgoJW0dSVUJdIChJTlRFUk5BTF9CT09UUF9EQVRBKTogRGVmaW5lZCBhcyBvbmUuCglbR1JVQl0gKFVTRV9JTlRFUk5BTF9CVUZGRVIpOiBMaWtld2lzZS4KCVtHUlVCXSAoQkFDS09GRl9MSU1JVCk6IERlZmluZWQgYXMgNy4KCVtHUlVCXSAoQ1RSTF9DKTogTmV3IG1hY3JvLgoJW0dSVUJdIChwcmludF9uZXR3b3JrX2NvbmZpZ3VyYXRpb24pOiBEZWNsYXJlZC4KCVtHUlVCXSAoaXBfYWJvcnQpOiBMaWtld2lzZS4KCVtHUlVCXSAobmV0d29ya19yZWFkeSk6IExpa2V3aXNlLgoJKiBuZXRib290L2ZzeXNfdGZ0cC5jOiBEb24ndCBpbmNsdWRlIDxuZXRib290X2NvbmZpZy5oPi4KCShpc29ja2V0KTogUmVuYW1lZCB0byAuLi4KCShpcG9ydCk6IC4uLiB0aGlzLgoJKG9zb2NrZXQpOiBSZW5hbWVkIHRvIC4uLgoJKG9wb3J0KTogLi4uIHRoaXMuCgkoYmNvdW50ZXIpOiBOZXcgdmFyaWFibGUuCgkoYnVmX2ZpbGwpOiBXaGVuIGNoZWNraW5nIHRoZSBibG9jayBvcmRlciwgc2VlIEJDT1VOVEVSIGFzIHdlbGwKCWFzIEJMT0NLLgoJRG9uJ3QgcHJvY2VzcyBhIHBhY2tldCwgaWYgQkxPQ0sgbWludXMgUFJFVkJMT0NLIGlzIG5vdCAxLAoJaW5zdGVhZCBvZiBpZiBCTE9DSyBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gUFJFVkJMT0NLLgoJSW5jcmVtZW50IEJDT1VOVEVSIGFmdGVyIHJlc2V0aW5nIFJFVFJZLgoJKHNlbmRfcnJxKTogQ2xlYXIgQkNPVU5URVIuCglDYWxsIGF3YWl0X3JlcGx5IHdpdGggQVdBSVRfUURSQUlOLgoJKiBuZXRib290L21haW4uYzogRG9uJ3QgaW5jbHVkZSA8bmV0Ym9vdF9jb25maWcuaD4uCgkoZGhjcGRpc2NvdmVyKTogTWFkZSBjb25zdC4KCShkaGNwcmVxdWVzdCk6IExpa2V3aXNlLiBVcGRhdGVkIHRoZSBjb250ZW50cy4KCShicm9hZGNhc3QpOiBNYWRlIGNvbnN0LgoJKHVkcF90cmFuc21pdCk6IENvcGllZC4KCSh0ZnRwKTogTGlrZXdpc2UuCgkoYm9vdHApOiBMaWtld2lzZS4KCShyYXJwKTogTGlrZXdpc2UuCgkoYXdhaXRfcmVwbHkpOiBMaWtld2lzZS4KCShkZWNvZGVfcmZjMTUzMyk6IExpa2V3aXNlLgoJKHJmYzk1MV9zbGVlcCk6IExpa2V3aXNlLgoJKGNsZWFudXBfbmV0KTogTGlrZXdpc2UuCgkqIG5ldGJvb3QvbWlzYy5jIChzbGVlcCk6IENvcGllZC4KCSh0d2lkZGxlKTogTGlrZXdpc2UuCgkoZ2V0ZGVjKTogTGlrZXdpc2UuCgkqIG5ldGJvb3Qvb3NkZXAuaDogQ29waWVkIGFuZCBtb2RpZmllZCAoc2VlIGJlbG93KS4KCVtHUlVCXSAoRVRIRVJCT09UMzIpOiBVc2VkIHRoZSBzYW1lIGRlZmluaXRpb24gYXMgTGludXggYW5kCglGcmVlQlNELgoJW0dSVUJdIChudG9obCk6IExpa2V3aXNlLgoJW0dSVUJdIChodG9ubCk6IExpa2V3aXNlLgoJW0dSVUJdIChudG9ocyk6IExpa2V3aXNlLgoJW0dSVUJdIChodG9ucyk6IExpa2V3aXNlLgoJW0dSVUJdIChzd2FwMzIpOiBMaWtld2lzZS4KCVtHUlVCXSAoc3dhcDE2KTogTGlrZXdpc2UuCglbR1JVQl06IEluY2x1ZGUgImxpbnV4LWFzbS1pby5oIi4KCgkqIG5ldGJvb3QvYnl0ZW9yZGVyLmg6IFJlbW92ZWQuCgkqIG5ldGJvb3QvaWYuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvbmV0Ym9vdF9jb25maWcuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvbmV0ZGV2aWNlLmg6IExpa2V3aXNlLgoJKiBuZXRib290L250dWxpcC5jOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9udHVsaXAudHh0OiBMaWtld2lzZS4KCSogbmV0Ym9vdC90dWxpcC5oOiBMaWtld2lzZS4KCQoJKiBuZXRib290LzNjNTk1LmM6IE5ldyBmaWxlLiBDb3BpZWQgZnJvbSBFdGhlcmJvb3QtNC41LjguCgkqIG5ldGJvb3QvM2M1OTUuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvY2FyZHMuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvY3M4OXgwLnR4dDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvZGVwY2EuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3Qvb3R1bGlwLmM6IExpa2V3aXNlLgoJKiBuZXRib290L290dWxpcC5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC90dWxpcC50eHQ6IExpa2V3aXNlLgoJCjIwMDAtMDItMjkgIEpvY2hlbiBIb2VuaWNrZSAgPGpvY2hlbkBnbnUub3JnPgoKCSogc3RhZ2UyL2NvbW1vbi5jIChlcnJfbGlzdCk6IEFkZGVkIG1lc3NhZ2UgZm9yIEVSUl9VTkFMSUdORUQuCgkqIHN0YWdlMi9zaGFyZWQuaCBbIVNUQUdFMV81XSAoZGlza19yZWFkX2hvb2ssZGlza19yZWFkX2Z1bmMpOiBOZXcKIAlwYXJhbWV0ZXJzIG9mZnNldCBhbmQgbGVuZ3RoLgoJKEVSUl9VTkFMSUdORUQpOiBOZXcgZXJyb3IgY29kZS4KCSogc3RhZ2UyL2Rpc2tfaW8uYyAocmF3cmVhZCkgWyFTVEFHRTFfNV06IENhbGwgZGlza19yZWFkX2Z1bmMgd2l0aAoJb2Zmc2V0IGFuZCBsZW5ndGguCgkqIHN0YWdlMi9idWlsdGluLmMgKGRpc2tfcmVhZF9wcmludF9mdW5jKTogUHJpbnQgb2Zmc2V0IGFuZCBsZW5ndGguCgkoYmxvY2tsaXN0X2Z1bmMpOiBQcmludCBkZXRhaWxlZCBieXRlIHJhbmdlcyBmb3IgcGFydGlhbCBzZWN0b3JzLgoJKGluc3RhbGxfZnVuYyk6IERldGVjdCBwYXJ0aWFsIHNlY3RvcnMgYW5kIHByaW50IGVycm9yIG1lc3NhZ2UuCgoyMDAwLTA0LTE4ICBQYXZlbCBSb3NraW4gIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCgkqIHV0aWwvZ3J1Yi1pbnN0YWxsLmluOiBEb24ndCB1c2UgYCEnIGluIGB0ZXN0JyBmb3IgbW9yZQoJcG9ydGFiaWxpdHkuCglEb24ndCB1c2UgYGZvcicgd2l0aG91dCBgaW4nIGZvciBjb21wYXRhYmlsaXR5IHdpdGggYXNoLgoJQ2hlY2sgaW5zdGFsbF9kZXZpY2UgYmVmb3JlIHJ1bm5pbmcgZ3J1YiBpZiBwb3NzaWJsZS4gQWRkZWQKCWVycm9yIG1lc3NhZ2VzIGlmIGluc3RhbGxfZGV2aWNlIGlzIG5vdCBzZXQgb3Igbm90IHVuaXF1ZS4KCUV4aXQgaWYgbWtkaXIgZmFpbHMuCglBZGQgYSBtZXNzYWdlIGFib3V0IHN1Y2Nlc3NmdWwgaW5zdGFsbGF0aW9uLgoJUmVtb3ZlIHVubmVlZGVkIGJhY2tzbGFzaCBpbiB0aGUgZmluYWwgbWVzc2FnZS4KCShjb252ZXJ0KTogdXNlIGB0ZXN0IC1iJyBpbnN0ZWFkIG9mIGB0ZXN0IC1lJyBiZWNhdXNlIGFzaAoJZG9lc24ndAl1bmRlcnN0YW5kIHRoZSBsYXRlci4gQ29ycmVjdCBlcnJvciBtZXNzYWdlIGFjY29yZGluZ2x5LgoJCjIwMDAtMDQtMTcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJVGhlIHVzZXIgZG9lc24ndCBoYXZlIHRvIHJlY29tcGlsZSBHUlVCIGZvciBoaXMvaGVyIGJ1Z2d5IEJJT1MKCWFueSBsb25nZXIuIEl0IGlzIGNvbmZpZ3VyYWJsZSB0byBpZ25vcmUgdGhlIExCQSBzdXBwb3J0IGJpdG1hcAoJYXQgdGhlIGluc3RhbGxhdGlvbiB0aW1lLgoJCgkqIHN0YWdlMS9zdGFnZTEuUyAoZm9yY2VfbGJhKTogTmV3IHZhcmlhYmxlLgoJKHN0YWdlMl9hZGRyZXNzKTogTW92ZWQgZm9yd2FyZHMsIHRvIGFsaWduIHNvbWUgdmFyaWFibGVzIGluCgluYXR1cmFsIGJvdW5kYXJpZXMuCgkocmVhbF9zdGFydCk6IENoZWNrIGlmIEZPUkNFX0xCQSBpcyBub24temVybywgaWYgc28sIGp1bXAgdG8KCXNraXBfbGJhX2JpdG1hcF9jaGVjaywgb3RoZXJ3aXNlLCBjaGVjayBpZiBiaXQgMCBvZiB0aGUgc3VwcG9ydAoJYml0bWFwIGlzIG5vbi16ZXJvLgoJRG9uJ3QgdXNlICNpZmRlZiBmb3IgQ0hFQ0tfTEJBX1NVUFBPUlRfQklUTUFQLgoJKHNraXBfbGJhX2JpdG1hcF9jaGVjayk6IE5ldyBsYWJlbC4KCSogc3RhZ2UxL3N0YWdlMS5oIChDT01QQVRfVkVSU0lPTl9NSU5PUik6IFNldCB0byAxLgoJKFNUQUdFMV9GT1JDRV9MQkEpOiBOZXcgbWFjcm8uCgkoU1RBR0UxX1NUQUdFMl9BRERSRVNTKTogU2V0IHRvIDB4NDIuCgkoU1RBR0UxX1NUQUdFMl9TRUNUT1IpOiBTZXQgdG8gMHg0NC4KCShTVEFHRTFfU1RBR0UyX1NFR01FTlQpOiBTZXQgdG8gMHg0OC4KCSogc3RhZ2UyL2FzbS5TIChmb3JjZV9sYmEpOiBOZXcgdmFyaWFibGUuCgkqIHN0YWdlMi9iaW9zLmMgKGdldF9kaXNraW5mbyk6IERvbid0IHVzZSAjaWZkZWYgZm9yCglDSEVDS19MQkFfU1VQUE9SVF9CSVRNQVAuIEluc3RlYWQsIGNoZWNrIGlmIEZPUkNFX0xCQSBpcwoJbm9uLXplcm8uIElmIHNvLCBkb24ndCBjaGVjayB0aGUgYml0IDAgb2YgRFJQLkZMQUcuCgkqIHN0YWdlMi9idWlsdGlucy5jIChpbnN0YWxsX2Z1bmMpOiBDaGVjayBpZiBhIG5ldyBvcHRpb24KCWAtLWZvcmNlLWxiYScgaXMgc3BlY2lmaWVkLiBJZiBzcGVjaWZpZWQsIHNldCBJU19GT1JDRV9MQkEgdG8gMQoJYW5kIHNldCBBUkcgdG8gYSB2YWx1ZSByZXR1cm5lZCBieSBza2lwX3RvLiBPdGhlcndpc2UsCglJU19GT1JDRV9MQkEgaXMgemVyby4KCVNldCB0aGUgImZvcmNlIExCQSIgZmxhZyBpbiBTVEFHRTFfQlVGRkVSICh0aGUgb2Zmc2V0IGlzCglTVEFHRTFfRk9SQ0VfTEJBKSB0byBJU19GT1JDRV9MQkEuCglMaWtld2lzZSwgc2V0IHRoZSAiZm9yY2UgTEJBIiBmbGFnIGluIFNUQUdFMl9TRUNPTkRfQlVGRkVSCgkodGhlIG9mZnNldCBpcyBTVEFHRTJfRk9SQ0VfTEJBKSB0byBJU19GT1JDRV9MQkEuCglJZiBJU19TVEFHRTFfNSBpcyB0cnVlLCB0aGVuIG1vZGlmeSB0aGUgU3RhZ2UyLCByZWdhcmRsZXNzIG9mCgl0aGUgcHJlc2VuY2Ugb2YgdGhlIG9wdGlvbiBSRUFMX0NPTkZJR19GSUxFLiBTZXQgdGhlICJmb3JjZSBMQkEiCglmbGFnIGluIFNDUkFUQ0hBRERSICh0aGUgb2Zmc2V0IGlzIFNUQUdFMl9GT1JDRV9MQkEpIHRvCglJU19GT1JDRV9MQkEuCgkoYnVpbHRpbl9pbnN0YWxsKTogQWRkZWQgZGVzY3JpcHRpb24gYWJvdXQgYC0tZm9yY2UtbGJhJyBpbnRvCgl0aGUgZG9jcy4KCShzZXR1cF9mdW5jKTogQ2hlY2sgaWYgYC0tZm9yY2UtbGJhJyBpcyBzcGVjaWZpZWQgaW4gQVJHLiBJZgoJc3BlY2lmaWVkLCBzZXQgSVNfRk9SQ0VfTEJBIHRvIDEgYW5kIHNldCBBUkcgdG8gYSB2YWx1ZSByZXR1cm5lZAoJYnkgc2tpcF90by4gT3RoZXJ3aXNlLCBJU19GT1JDRV9MQkEgaXMgemVyby4KCUlmIElTX0ZPUkNFX0xCQSBpcyB0cnVlLCBwcmVwZW5kICItLWZvcmNlLWxiYSAiIHRvIENNRF9BUkcuCgkoYnVpbHRpbl9zZXR1cCk6IEFkZGVkIGRlc2NyaXB0aW9ucyBhYm91dCBgLS1mb3JjZS1sYmEnIGludG8gdGhlCglkb2NzLgoJKiBzdGFnZTIvc2hhcmVkLmggKFNUQUdFMl9GT1JDRV9MQkEpOiBOZXcgbWFjcm8uCgkoU1RBR0UyX1ZFUl9TVFJfT0ZGUyk6IFNldCB0byAweGUuCgkoZm9yY2VfbGJhKTogRGVjbGFyZWQuCgkqIHV0aWwvZ3J1Yi1pbnN0YWxsLmluIChmb3JjZV9sYmEpOiBOZXcgdmFyaWFibGUuIFNldCB0byBhbgoJZW1wdHkgc3RpbmcgYnkgZGVmYXVsdC4KCSh1c2FnZSk6IEFkZGVkIGEgZGVzY3JpcHRpb24gYWJvdXQgYC0tZm9yY2UtbGJhJy4KCSgtLWZvcmNlLWxiYSk6IENoZWNrZWQgaW4gdGhlIG9wdGlvbiBoYW5kbGluZyBjb2RlLiBJZgoJc3BlY2lmaWVkLCBzZXQgRk9SQ0VfTEJBIHRvICItLWZvcmNlLWxiYSIuCglSdW4gdGhlIGNvbW1hbmQgInNldHVwIiB3aXRoICRmb3JjZV9sYmEgYWRkZWQgYmVmb3JlCgkkaW5zdGFsbF9kcml2ZS4KCSogY29uZmlndXJlLmluICgtLWRpc2FibGUtbGJhLXN1cHBvcnQtYml0bWFwKTogUmVtb3ZlZC4KCQoyMDAwLTA0LTE1ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogdXRpbC9ncnViLWluc3RhbGwuaW4gKHJvb3RfZGV2aWNlKTogQXBwZW5kIGAvJyB0byAke3Jvb3RkaXJ9LAoJc2luY2UgUk9PVERJUiBtYXkgYmUgZW1wdHkuIFJlcG9ydGVkIGJ5IFNhdG9zaGkgTmFnYXlhc3UKCTxzbmFnYUBvYWsuZm9ydXMub3IuanA+LgoJCjIwMDAtMDQtMTUgIEpvY2hlbiBIb2VuaWNrZSAgPGpvY2hlbkBnbnUub3JnPgoKCSogY29uZmlndXJlLmluOiBBZGRlZCAtLWRpc2FibGUtcmVpc2VyZnMgb3B0aW9uLgoJKiBzdGFnZTIvTWFrZWZpbGUuYW0gKGxpYmdydWJfYV9TT1VSQ0VTKTogQWRkZWQgZnN5c19yZWlzZXJmcy5jLgoJKGxpYmdydWJfYV9DRkxBR1MpOiBBZGRlZCAtREZTWVNfUkVJU0VSRlM9MS4KCShwa2dkYXRhX0RBVEEpOiBBZGRlZCByZWlzZXJmc19zdGFnZTFfNS4KCShub2luc3RfUFJPR1JBTVMpOiBBZGRlZCByZWlzZXJmc19zdGFnZTFfNS5leGVjLgoJKHByZV9zdGFnZTJfZXhlY19TT1VSQ0VTKTogQWRkZWQgZnN5c19yZWlzZXJmcy5jLgoJKHJlaXNlcmZzX3N0YWdlMV81X2V4ZWNfU09VUkNFUyk6IE5ldyB2YXJpYWJsZS4KCShyZWlzZXJmc19zdGFnZTFfNV9leGVjX0NGTEFHUyk6IExpa2V3aXNlLgoJKHJlaXNlcmZzX3N0YWdlMV81X2V4ZWNfTERGTEFHUyk6IExpa2V3aXNlLgoJKiBzdGFnZTIvZGlza19pby5jIChmc3lzX3RhYmxlKTogQWRkZWQgcmVpc2VyZnMgZW50cnkuCgkqIHN0YWdlMi9maWxlc3lzLmggKEZTWVNfUkVJU0VSRlNfTlVNKTogTmV3IG1hY3JvLgoJW0ZTWVNfUkVJU0VSRlNdIChyZWlzZXJmc19tb3VudCwgcmVpc2VyZnNfcmVhZCwgcmVpc2VyZnNfZGlyLAogCXJlaXNlcmZzX2VtYmVkKTogRGVjbGFyZSBleHRlcm5hbCBmdW5jdGlvbiBmcm9tIGZzeXNfcmVpc2VyZnMuYy4KCVshTlVNX0ZTWVNdIChOVU1fRlNZUyk6IEFkZGVkIEZTWVNfUkVJU0VSRlNfTlVNLgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoc2V0dXBfZnVuYyk6IEFkZGVkIHJlaXNlcmZzIHRvCglTVEFHRTFfNV9NQVAuCgkqIHN0YWdlMi9zaGFyZWQuaCAoU1RBR0UyX0lEX1JFSVNFUkZTX1NUQUdFMV81KTogTmV3IG1hY3JvLgoJW1NUQUdFMV81XSBbRlNZU19SRUlTRVJGU10gKFNUQUdFMl9JRCk6IERlZmluZWQgdG8KIAlTVEFHRTJfSURfUkVJU0VSRlNfU1RBR0UxXzUuCgkqIHN0YWdlMi9mc3lzX3JlaXNlcmZzLmM6IE5ldyBmaWxlLgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGVtYmVkX2Z1bmMpOiBDYWxsIG9wZW5fZGV2aWNlIGluc3RlYWQgb2YKCW9wZW5fcGFydGl0aW9uLgoJRG9uJ3QgY2hlY2sgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgRkZTLiBJbnN0ZWFkLCBjaGVjayBpZgoJRlNZU19UQUJMRVtGU1lTX1RZUEVdLkVNQkVEX0ZVTkMgaXMgTlVMTCBhbmQsIGlmIG5vdCwgY2FsbCBpdC4KCShmaW5kX2Z1bmMpOiBXaGVuIENVUlJFTlRfU0xJQ0UgaXMgbm90IGEgQlNEIHNsaWNlLCBjaGVjayBpZiB0aGUKCWZpbGUgY2FuIGJlIG9wZW5lZCwgb25seSBpZiBvcGVuX2RldmljZSBzdWNjZWVkcy4KCSogc3RhZ2UyL2ZpbGVzeXMuaCAoZnN5c190YWJsZSk6IE5ldyBlbnRyeSBlbWJlZF9mdW5jLgoJKGZmc19lbWJlZCk6IERlY2xhcmVkLgoJKiBzdGFnZTIvZGlza19pby5jIChmc3lzX3RhYmxlKTogRmlsbCBlbWJlZF9mdW5jIGVudHJpZXMuIFRoZQoJZW50cnkgZm9yIEZGUyBpcyBmZnNfZW1iZWQgYW5kIHRoZSBvdGhlcnMgYXJlIE5VTExzLgoJKiBzdGFnZTIvZnN5c19mZnMuYyAoZmZzX2VtYmVkKTogTmV3IGZ1bmN0aW9uLgoKCSogc3RhZ2UyL3NoYXJlZC5oIChTRUNUT1JfU0hJRlQpOiBOZXcgY29uc3RhbnQgd2l0aAoJKDEgPDwgU0VDVE9SX1NISUZUKSA9PSBTRUNUT1JfU0laRS4KCSogc3RhZ2UyL3NoYXJlZC5oIFshTk9fQkxPQ0tfRklMRVNdIChibG9ja19maWxlcyk6IE5vIGxvbmdlcgoJZXh0ZXJuLgoJKiBzdGFnZTIvZGlza19pby5jIFshTk9fQkxPQ0tfRklMRVNdIChibG9ja19maWxlcyk6IExpa2V3aXNlLgoJKHJhd3JlYWQsIGRldnJlYWQpOiBVc2UgU0VDVE9SX0JJVFMuCgkocmF3cmVhZCk6IEZpeGVkIGNhbGN1bGF0aW9uIG9mIEJVRkFERFIgaWYgYW4gZXJyb3Igb2NjdXJlZC4gU2V0CglpdCB0byBCVUZGRVJBRERSICsgQllURV9PRkZTRVQgaW5zdGVhZCBvZiBCVUZGRVJTRUcgKwoJQllURV9PRkZTRVQuCgkoZ3J1Yl9jbG9zZSkgWyFOT19CTE9DS19GSUxFU106IElmIEJMT0NLX0ZJTEUgaXMgbm9uLXplcm8sCglyZXR1cm4gaW1tZWRpYXRlbHkuCgkoZ3J1Yl9jbG9zZSk6IERvbid0IGNoZWNrIGlmIEZTWVNfVFlQRSBpcyBOVU1fRlNZUy4KCSogc3RhZ2UyL2ZzeXNfZmF0LmMgKGxvZzIpOiBOZXcgaW5saW5lIGZ1bmN0aW9uLgoJKGZhdF9tb3VudCk6IFVzZSBsb2cyIGluc3RlYWQgb2YgY2FsY3VsYXRpbmcgdGhlIHNpemUvYml0IGJ5IGEKCWxvb3AuCgoyMDAwLTA0LTEyICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogY29uZmlndXJlLmluOiBVc2UgQUNfUEFUSF9QUk9HIGluc3RlYWQgb2YgQUNfUEFUSF9UT09MLAoJYmVjYXVzZSBJIGRvbid0IHdhbnQgdG8gdXNlIHRoZSBDVlMgdmVyc2lvbi4gTm93IHlvdSBjYW4gdXNlCglhdXRvY29uZiAyLjEzLgoJCjIwMDAtMDQtMTAgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvc3RhZ2UyLmMgKHJ1bl9tZW51KTogSW4gdGhlIGNhc2Ugd2hlcmUgQyBpcyBgbycsIGNoZWNrCglpZiBFTlRSWU5PIGlzIGxlc3MgdGhhbiAxMS4gSWYgbm90LCBpbmNyZWFzZSBGSVJTVF9FTlRSWSBpbnN0ZWFkCglvZiBFTlRSWU5PLiBSZXBvcnRlZCBieSBQaXhlbCA8cGl4ZWxAbWFuZHJha2Vzb2Z0LmNvbT4uCgkKMjAwMC0wNC0wOSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMS9kZXBjb21wOiBSZW1vdmVkLCBiZWNhdXNlIGl0IG1ha2VzIGBtYWtlIGRpc3QnCgl1bndvcmthYmxlLgoKCUZvciBkZXZlbG9wZXJzOiBEb24ndCBydW4gYXV0b21ha2Ugd2l0aCAtLWFkZC1taXNzaW5nLiBJbnN0ZWFkLAoJeW91IHNob3VsZCBzcGVjaWZ5IC0tZm9yY2UtbWlzc2luZy4gSWYgeW91IHJlYWxseSB3YW50IHRvIGFkZCBhCglzY3JpcHQgZnJvbSBhdXRvbWFrZSwgY29weSBpdCBhdCBoYW5kLiAqc2lnaCoKCQoyMDAwLTA0LTA1ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGtlcm5lbF9mdW5jKTogQWRkZWQgbWlzc2luZyBgYHNpemUnJwoJYXJndW1lbnRzIGludG8gYGdydWJfbWVtY21wJ3MuIFJlcG9ydGVkIGJ5IENocmlzdG9waCBQbGF0dG5lcgoJPGNocmlzdG9waC5wbGF0dG5lckBkb3QuYXQ+LgoKCUZyb20gVG9yc3RlbiBEdXdlIDxkdXdlQGNhbGRlcmEuZGU+OgoJKiBzdGFnZTIvYm9vdC5jIChsb2FkX2luaXRyZCk6IE1hc2sgdGhlIGFkZHJlc3Mgd2l0aCAweDNGRkZGRkZGCglpbnN0ZWFkIG9mIDB4RkZGRkZGRkYgdG8gcGxhY2UgdGhlIGluaXRyZCBiZWxvdyAxR0IuCgkobG9hZF9pbWFnZSk6IEluIExpbnV4IGJvb3QsIGFkZCB0aGUgb3B0aW9uICJtZW09IiBvbmx5IGlmIG1vcmUKCXRoYW4gNjRNQiBhcmUgcHJlc2VudC4KCSogZ3J1Yi9hc21zdHViLmMgW19fbGludXhfX106IEluY2x1ZGUgPGxpbnV4L2Nkcm9tLmg+IGZvcgoJQ0RST01fR0VUX0NBUEFCSUxJVFkuCglbX19GcmVlQlNEX18gfHwgX19OZXRCU0RfXyB8fCBfX09wZW5CU0RfX106IEluY2x1ZGUgPHN5cy9jZGlvLmg+Cglmb3IgQ0RJT0NDTFJERUJVRy4KCShjaGVja19kZXZpY2UpIFtfX2xpbnV4X19dIFtDRFJPTV9HRVRfQ0FQQUJJTElUWV06IElmIGlvY3RsIGZvcgoJQ0RST01fR0VUX0NBUEFJQklMSVRZIHN1Y2NlZWRzLCByZXR1cm4gemVyby4KCVtfX0ZyZWVCU0RfXyB8fCBfX05ldEJTRF9fIHx8IF9fT3BlbkJTRF9fXSBbQ0RJT0NDTFJERUJVR106IElmCglpb2N0bCBmb3IgQ0RJT0NDTFJERUJVRyBzdWNjZWVkcywgcmV0dXJuIHplcm8uCgoJKiBzdGFnZTIvYm9vdC5jIChsb2FkX2luaXRyZCk6IFN1YnRyYWN0IDB4MTAwMCAob25lIHBhZ2Ugc2l6ZSkKCWZyb20gTU9WRVRPLCB0byBhdm9pZCBhIExpbnV4IDIuMy54eCdzIGJ1Zy4KCQoyMDAwLTA0LTAzICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUFkZCBhIGRpcnR5IGhhY2sgaW50byB0aGUga2VybmVsIGxvYWRlciBzbyB0aGF0IHRoZSB1c2VyIGNhbgoJZm9yY2UgR1JVQiB0byBsb2FkIE5ldEJTRCBFTEYga2VybmVscy4gVGhlIHN1cHBvcnQgY29kZSBpcwoJbW9zdGx5IHN0b2xlbiBmcm9tIGEgcGF0Y2ggYnkgUGF2ZWwgUm9za2luLgoJCgkqIHN0YWdlMi9ib290LmMgKGxvYWRfaW1hZ2UpOiBBZGRlZCBhbiBvcHRpb25hbCBhcmd1bWVudAoJU1VHR0VTVEVEX1RZUEUuCglJZiBCVUZGRVIgaXMgYSBib290YWJsZSBFTEYgaW1hZ2UgYW5kIFNVR0dFU1RFRF9UWVBFIGlzCglLRVJORUxfVFlQRV9ORVRCU0QsIHRoZW4gbG9hZCBpdCBhcyBhbiBFTEYgaW1hZ2UgYW5kIHNldCBTVFIyIHRvCgkiTmV0QlNEIiBhbmQgVFlQRSB0byBTVUdHRVNURURfVFlQRS4KCUlmIHRoZSBpbWFnZSBpcyBhIExpbnV4IGtlcm5lbCBhbmQgU1VHR0VTVEVEX1RZUEUgaXMgbm90CglLRVJORUxfVFlQRV9OT05FLCBtYWtlIHN1cmUgdGhhdCBTVUdHRVNURURfVFlQRSBtYXRjaGVzIHVwIHRvCgl0aGUgTGludXgga2VybmVsIHR5cGUuCglJZiBUWVBFIGlzIEtFUk5FTF9UWVBFX05FVEJTRCwgc2V0IE1FTUFERFIgdG8KCVJBV19BRERSIChwaGRyLT5wYWRkciAmIDB4RkZGRkZGKSBsaWtlIEZyZWVCU0QuCglJZiBTVUdHRVNURURfVFlQRSBpcyBub3QgS0VSTkVMX1RZUEVfTk9ORSwgbWFrZSBzdXJlIHRoYXQKCVNVR0dFU1RFRF9UWVBFIGlzIGVxdWFsIHRvIFRZUEUuCgkoYnNkX2Jvb3QpOiBJZiBUWVBFIGlzIG5vdCBLRVJORUxfVFlQRV9GUkVFQlNEIChpLmUuIE5ldEJTRCBvcgoJT3BlbkJTRCkgYW5kIHRoZSBiaXQgTUJfSU5GT19BT1VUX1NZTVMgaXMgc2V0LCBzZXQgRU5EX01BUksgdG8KCU1CSS5TWU1TLkEuQUREUiArIDQgKyBNQkkuU1lNUy5BLlRBQlNJWkUgKyBNQkkuU1lNUy5BLlNUUlNJWkUuCglJZiB0aGUgYml0IGlzIGNsZWFyLCBzZXQgRU5EX01BUksgdG8gMC4KCVBhc3MgRU5EX01BUksgdG8gKkVOVFJZX0FERFIgaW5zdGVhZCBvZiBkaXJlY3RseSBjYWxjdWxhdGluZyB0aGUKCWVuZCBvZiBzeW1ib2xzLgoJKiBzdGFnZTIvc2hhcmVkLmggKGxvYWRfaW1hZ2UpOiBBZGRlZCB0aGUgYXJndW1lbnQKCVNVR0dFU1RFRF9UWVBFIHRvIHRoZSBwcm90b3R5cGUuCgkqIHN0YWdlMi9idWlsdGlucy5jIChrZXJuZWxfZnVuYyk6IEFkZGVkIGEgbmV3IG9wdGlvbiwKCWAtLXR5cGU9VFlQRScuIENoZWNrIGlmIEFSRyBpcyBzdGFydGVkIHdpdGggIi0tdHlwZT0iLgoJSWYgc28sIHNldCBTVUdHRVNURURfVFlQRSB0byBLRVJORUxfVFlQRV9ORVRCU0QsCglLRVJORUxfVFlQRV9GUkVFQlNELCBLRVJORUxfVFlQRV9ORVRCU0QsIEtFUk5FTF9UWVBFX0xJTlVYLAoJS0VSTkVMX1RZUEVfQklHX0xJTlVYLCBLRVJORUxfVFlQRV9NVUxUSUJPT1QgaWYgQVJHIGlzICJuZXRic2QiLAoJImZyZWVic2QiLCAib3BlbmJzZCIsICJsaW51eCIsICJiaWdsaW51eCIsICJtdWx0aWJvb3QiLAoJcmVzcGVjdGl2ZWx5LiBPdGhlcndpc2UsIHNldCBFUlJOVU0gdG8gRVJSX0JBRF9BUkdVTUVOVCBhbmQKCXJldHVybiAxLiBTZXQgS0VSTkVMX0FSRyB0byBhIHN0cmluZyBhZnRlciB0aGUgb3B0aW9uLgoJKGJ1aWx0aW5fa2VybmVsKTogQWRkZWQgYSBkZXNjcmlwdGlvbiBhYm91dCB0aGUgbmV3IG9wdGlvbi4KCQoyMDAwLTA0LTAzICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL3N0YWdlMi5jIChydW5fbWVudSkgW0dSVUJfVVRJTF06IFJlbW92ZWQgYSBuZXN0ZWQKCSIjaWZkZWYgR1JVQl9VVElMIiAuLi4gIiNlbmRpZiIuCgkqIHN0YWdlMi9idWlsdGlucy5jICh1bmhpZGVfZnVuYyk6IERvbid0IG1vZGlmeSBTQVZFRF9EUklWRSBvcgoJU0FWRURfUEFSVElUSU9OLgoJKGhpZGVfZnVuYyk6IExpa2V3aXNlLgoJKiBzdGFnZTIvZGlza19pby5jIChzZXRfcGFydGl0aW9uX2hpZGRlbl9mbGFnKTogVXNlCglDVVJSRU5UX0RSSVZFIGFuZCBDVVJSRU5UX1BBUlRJVElPTiBpbnN0ZWFkIG9mIFNBVkVEX0RSSVZFIGFuZAoJU0FWRURfUEFSVElUSU9OLiBDaGVjayBpZiBiaXQgNyBpbiBDVVJSRU5UX0RSSVZFIGlzIG5vbi16ZXJvCglpbnN0ZWFkIG9mIGlmIENVUlJFTlRfRFJJVkUgaXMgbm9uLXplcm8uCgoJKiBncnViL2FzbXN0dWIuYyAoaW5pdF9kZXZpY2VfbWFwKTogQ2hhbmdlIHRoZSBtZXNzYWdlCgkiUHJvYmUgZGV2aWNlcy4uLiIgdG8gIlByb2JpbmcgZGV2aWNlcy4uLiIuIFN1Z2dlc3RlZCBieSBOZWFsIEgKCVdhbGZpZWxkLgoKCSogc3RhZ2UyL3BjX3NsaWNlLmggKFBDX1NMSUNFX1RZUEVfSElEREVOX0ZMQUcpOiBNb3ZlIHRoZQoJZGVmaW5pdGlvbiBiZWZvcmUgdGhlIFBDIHBhcnRpdGlvbiB0eXBlIGRlZmluaXRpb25zLgoJKElTX1BDX1NMSUNFX1RZUEVfRkFUKTogQ2xlYXIgdGhlIGhpZGRlbiBmbGFnIGluIFRZUEUgYmVmb3JlCgljaGVja2luZyBpZiBUWVBFIGlzIGVpdGhlciBvZiB0aGUgRkFUIHBhcnRpdGlvbiB0eXBlcy4gUmVwb3J0ZWQKCWJ5IFRob21hcyBTY2h3ZWlrbGUgPHRzY2h3ZWlrbGVAZmlkdWNpYS5kZT4uCgkKMjAwMC0wNC0wMiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChzZXR1cF9mdW5jKTogRG9uJ3QgcmVhZCBhIHN0YWdlIDEuNSB0byBnZXQKCXRoZSBzaXplLiBVc2UgRklMRU1BWCBpbnN0ZWFkLgoJSWYgZW1iZWRfZnVuYyBmYWlscyAoaS5lLiBFUlJOVU0gaXMgbm9uLXplcm8pLCBnb3RvIGZhaWwuCgkKMjAwMC0wNC0wMiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCglTdWdnZXN0ZWQgYnkgTmVhbCBIIFdhbGZpZWxkIDxuZWFsQHdhbGZpZWxkLm9yZz46CgkqIHN0YWdlMi9jb21tb24uYyAoaW5pdF9iaW9zX2luZm8pOiBSZW1vdmVkIGEgbmVzdGVkCgkiI2lmbmRlZiBTVEFHRTFfNSIgLi4uICIjZW5kaWYiLgoJKiB1dGlsL2dydWItaW5zdGFsbC5pbjogUXVvdGUgbW9zdCBvZiB0aGUgcmVmZXJlbmNlcyB0bwoJc2hlbGwgdmFyaWFibGVzIGJ5IGRvdWJsZSBxdW90YXRpb24gbWFya3MuCgkodXNhZ2UpOiBBZGRlZCBhIGRlc2NyaXB0aW9uIGFib3V0IHRoZSBhcmd1bWVudC4KCSogc3RhZ2UyL2J1aWx0aW5zLmMgKHNldHVwX2Z1bmMpOiBDaGFuZ2UgZWFjaCBvZiB0aGUgbWVzc2FnZXMKCXdoZW4gcnVubmluZyBlbWJlZF9mdW5jIGFuZCBpbnN0YWxsX2Z1bmMuICJSdW4iIC0+ICJSdW5uaW5nIi4KCUlmIGluc3RhbGxfZnVuYyBzdWNjZWVkcywgcHJpbnQgYSBtZXNzYWdlICgiRG9uZS4iKS4KCglGcm9tIEZyYW5rIE1laG5lcnQgPGZtM0Bvcy5pbmYudHUtZHJlc2Rlbi5kZT46CgkqIHN0YWdlMi9jaGFyX2lvLmMgKGNvbnZlcnRfdG9fYXNjaWkpIFshU1RBR0UxXzVdOiBBY2NlcHQgJ1gnCglhbmQgJ2InIGFzIHdlbGwuIElmIEMgaXMgJ1gnIG9yICdiJywgdGhlbiBzZXQgTVVMVCB0byAxNi4KCShncnViX3ByaW50Zik6IFNldCBhIG5ldyB2YXJpYWJsZSBNQVNLIHRvIDB4RkZGRkZGRkYgYnkgZGVmYXVsdC4KCU1hc2sgKkRBVEFQVFIgd2l0aCBNQVNLIHdoZW4gY2FsbGluZyBjb252ZXJ0X3RvX2FzY2lpLgoJKGdydWJfcHJpbnRmKSBbIVNUQUdFMV81XTogQWRkZWQgJ2InIGFuZCAnWCcuIElmIEMgaXMgJ2InLCBzZXQKCU1BU0sgdG8gMHhGRiBhbmQgZmFsbCB0aHJvdWdoIHRvIHRoZSBjYXNlICd1Jy4gJ1gnIGlzIHRoZSBzYW1lCglhcyAneCcuCgoJRnJvbSBKb3NpcCBSb2RpbiA8am95QGNpYmFsaWEuZ2t2ay5ocj46CgkqIGdydWIudGV4aTogU2V2ZXJhbCBhd2t3YXJkIEVuZ2xpc2ggc2VudGVuY2VzIGFyZSBmaXhlZC4KCSogdHV0b3JpYWwudGV4aTogTGlrZXdpc2UuCgkqIHVzZXItcmVmLnRleGk6IExpa2V3aXNlLgoJKiBhcHBlbmRpY2VzLnRleGk6IExpa2V3aXNlLgoJCjIwMDAtMDMtMjcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTEvZGVwY29tcDogTmV3IGZpbGUuIEF1dG9tYWtlIGZvcmNlcyB0byBpbnN0YWxsIGl0LiBUaGlzCglpcyBhIGtub3duIGJ1Zywgc28gSSB3aWxsIHJlbW92ZSB0aGlzIHdoZW4gVG9tIGZpeGVzIGl0LgoJKiBjb25maWd1cmUuaW4gKEFNX0lOSVRfQVVUT01BS0UpOiBEb24ndCBnZXQgdGhlIHBhY2thZ2UgbmFtZQoJYW5kIHRoZSB2ZXJzaW9uIGZyb20gZGViaWFuL2NoYW5nZWxvZy4gVGhpcyBpcyBhIHdvcmthcm91bmQuCgkKMjAwMC0wMy0yMCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAobm9kaXN0X3BrZ2RhdGFfREFUQSk6IFJlbmFtZWQgdG8gLi4uCgkocGtnZGF0YV9EQVRBKTogLi4uIHRoaXMuIERBVEEgaXMgbm90IGRpc3RyaWJ1dGVkIGJ5IGRlZmF1bHQuCgkoQ0xFQU5GSUxFUyk6IERlbGV0ZSB0aGUgZmlyc3Qgb25lLiBJIGRvbid0IGtub3cgd2h5IHRoaXMKCXZhcmlhYmxlIHdhcyBkdXBsaWNhdGVkLgoJU2V0IHRvICQocGtnZGF0YV9EQVRBKSBpbnN0ZWFkIG9mICQobm9kaXN0X3BrZ2RhdGFfREFUQSkuCgkoc3RhcnRfZXhlY19ERVBFTkRFTkNJRVMpOiBSZW1vdmVkLiBUaGlzIGRvZXNuJ3QgbWFrZSBzZW5zZS4KCShzdGFydF9leGVjLXN0YXJ0Lm8pOiBOZXcgcnVsZS4KCSogZGVwY29tcDogTmV3IGZpbGUuIENvcGllZCBmcm9tIGF1dG9tYWtlLgoJKiBtaXNzaW5nOiBVcGRhdGVkIGZyb20gYXV0b21ha2UuCgkKMjAwMC0wMy0xNSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIG5ldGJvb3QvTWFrZWZpbGUuYW0gKEVYVFJBX2xpYmRyaXZlcnNfYV9TT1VSQ0VTKTogM2M4OXgwLmggLT4KCWNzODl4MC5oLiBKdXN0IGEgdHlwby4KCQoyMDAwLTAzLTEwICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZmlnLm9yZz4KCgkqIGRlYmlhbi9ydWxlczogU3RyaXAgbWJjaGsuCgoJKiBkZWJpYW4vcG9zdGluc3Q6IEZpeCB1cCAvdXNyL2RvYyBzeW1saW5rIGNyZWF0aW9uLgoKMjAwMC0wMy0wMSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIG5ldGJvb3QvZnN5c190ZnRwLmMgKHRmdHBfZGlyKTogQWRkIEJVRl9SRUFEIGludG8gRklMRU1BWAoJYWZ0ZXIgQlVGX0VPRiBiZWNvbWVzIG5vbi16ZXJvLiBSZXBvcnRlZCBieSBQZXIgTHVuZGJlcmcuCgkKMjAwMC0wMy0wMSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChjb2xvcl9mdW5jKTogUmV0dXJuIDEgaWYgc2FmZV9wYXJzZV9tYXhpbnQKCXJldHVybnMgemVybyBpbnN0ZWFkIG9mIG5vbi16ZXJvLiBSZXBvcnRlZCBieSBNYWdudXMgSG9sbWJlcmcKCTxwdWNrb0BseXNhdG9yLmxpdS5zZT4uCgkKMjAwMC0wMi0yOSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGdydWIvYXNtc3R1Yi5jIFtfX2xpbnV4X19dOiBJbmNsdWRlIDxsaW51eC9rZGV2X3QuaD4gZm9yIHRoZQoJbWFjcm8gTUFKT1IuIEZyb20gS2FsbGUgT2xhdmkgTmllbWl0YWxvIDx0b3NpQGVlczIub3VsdS5maT4uCgkKMjAwMC0wMi0yNyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGRvY3MvdHV0b3JpYWwudGV4aSAoTmV0d29yayk6IE5ldyBjaGFwdGVyLgoJCjIwMDAtMDItMjYgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBkb2NzL2hlbHAybWFuOiBVcGdyYWRlZCB0byAxLjAyMC4KCSogZG9jcy9ncnViLjg6IFJlZ2VuZXJhdGVkLgoJKiBkb2NzL2dydWItaW5zdGFsbC44OiBMaWtld2lzZS4KCSogZG9jcy9tYmNoay4xOiBMaWtld2lzZS4KCgkqIGRvY3MvdHV0b3JpYWwudGV4aSAoQm9vdCk6IFJld3JpdHRlbiBoZWF2aWx5LiBBZGRlZCB0aGUgbm90ZXMKCW9uIEZyZWVCU0QsIE5ldEJTRCwgT3BlbkJTRCwgRE9TL1dpbmRvd3MgYW5kIFNDTyBVbml4V2FyZS4KCSogZG9jcy9tZW51LmxzdDogTG9hZCAiL2Jvb3QvbG9hZGVyIiBpbnN0ZWFkIG9mICIva2VybmVsIiBpbiB0aGUKCUZyZWVCU0QgZW50cnkuIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBkb2N1bWVudGF0aW9uLgoJCjIwMDAtMDItMjUgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBuZXRib290L2ZzeXNfdGZ0cC5jICh0ZnRwX3JlYWQpOiBTZXQgQlVGX1JFQUQgdG8gemVybyBpZgoJRklMRVBPUyBpcyBsZXNzIHRoYW4gU0FWRURfRklMRVBPUywgYmVmb3JlIGNhbGxpbmcgYnVmX2ZpbGwuCglEb24ndCBkaXNjYXJkIGFsbCBvZiB0aGUgY29waWVkIGRhdGEgc28gdGhhdCB3ZSBjYW4gbW92ZSBGSUxFUE9TCgliYWNrd2FyZHMgY2hlYXBseS4gTm93IFNBVkVEX0ZJTEVQT1MgaW5kaWNhdGVzIHRoZSBmaWxlIHBvc2l0aW9uCgljb3JyZXNwb25kaW5nIHRvIHRoZSBmaXJzdCBieXRlIG9mIEJVRi4gSWYgKEZJTEVQT1MgLQoJU0FWRURfRklMRVBPUykgaXMgZ3JlYXRlciB0aGFuIChGU1lTX0JVRkxFTiAvIDIpLCBtb3ZlIHRoZSBkYXRhCglmb3J3YXJkcyBhbmQgYWRkIChGU1lTX0JVRkxFTiAvIDIpIGludG8gU0FWRURfRklMRVBPUyBhbmQKCXN1YnRyYWN0IHRoZSBzYW1lIHZhbHVlIGZyb20gQlVGX1JFQUQuCgkKMjAwMC0wMi0yNCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9kaXNrX2lvLmMgWyFTVEFHRTFfNV0gKHByaW50X2ZzeXNfdHlwZSk6IE1hc2sKCUNVUlJFTlRfU0xJQ0Ugd2l0aCAweEZGIHdoZW4gcHJpbnRpbmcgdGhlIHBhcnRpdGlvbiB0eXBlLgoKCSogZ3J1Yi9hc21zdHViLmMgW19fbGludXhfX106IEluY2x1ZGUgPGxpbnV4L21ham9yLmg+IGZvciB0aGUKCWRlZmluaXRpb24gRkxPUFBZX01BSk9SLgoJKGNoZWNrX2RldmljZSkgW19fbGludXhfX106IFNraXAgdGhlIEhESU9fR0VUR0VPIGlvY3RsIGlmIHRoZQoJbWFqb3IgbnVtYmVyIG9mIFNULlNUX1JERVYgaXMgRkxPUFBZX01BSk9SLgoJCjIwMDAtMDItMjEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvZGlza19pby5jIChjaGVja19CU0RfcGFydHMpIFshU1RBR0UxXzVdOiBVc2UgdGhlIHRlcm0KCSJCU0Qgc3ViLXBhcnRpdGlvbiIgaW5zdGVhZCBvZiAiQlNEIHNsaWNlIiBmb3IgY29uc2lzdGVuY3kuCgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoYm9vdF9mdW5jKTogQ29weSB0aGUgcGFydGl0aW9uIHRhYmxlIHRvCglCT09UX1BBUlRfVEFCTEUgaW5zdGVhZCBvZiAoQk9PVFNFQ19MT0NBVElPTiArCglCT09UU0VDX1BBUlRfT0ZGU0VUKS4gRG9uJ3QgdXNlIGdydWJfbWVtbW92ZSwgYnV0IGNvcHkgaXQKCWRpcmVjdGx5LCBzaW5jZSBtZW1jaGVjayBpcyB0b28gc3RyaWN0LgoJKiBzdGFnZTIvZGlza19pby5jIChyZWFsX29wZW5fcGFydGl0aW9uKSBbIVNUQUdFMV81XTogU2V0CglDVVJfUEFSVF9BRERSIHRvIChCT09UX1BBUlRfVEFCTEUgKyAoaSA8PCA0KSkuCgkqIHN0YWdlMi9zaGFyZWQuaCAoQk9PVF9QQVJUX1RBQkxFKTogTmV3IG1hY3JvLgoJKGNoYWluX3N0YWdlMSk6IENoYW5nZSB0aGUgdHlwZXMgb2YgYWxsIHRoZSBhcmd1bWVudHMgdG8KCXVuc2lnbmVkIGxvbmcuCgkoY2hhaW5fc3RhZ2UyKTogTGlrZXdpc2UuCgkqIGdydWIvYXNtc3R1Yi5jIChjaGFpbl9zdGFnZTEpOiBBZGp1c3RlZCB0byB0aGUgcHJvdG90eXBlLgoJKGNoYWluX3N0YWdlMik6IExpa2V3aXNlLgoJCjIwMDAtMDItMjEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvZGlza19pby5jIChjaGVja19CU0RfcGFydHMpIFshU1RBR0UxXzVdOiBJZiB0aGUgQlNECglsYWJlbCBpcyBpbnZhbGlkLCBwcmludCBhIG1lc3NhZ2Ugd2l0aCB0aGUgcGFydGl0aW9uIHR5cGUgaW4gdGhlCgljYXNlIHdoZXJlIEZMQUdTIGlzIG5vbi16ZXJvIGFuZCBET19DT01QTEVUSU9OIGlzIHplcm8uCgkKMjAwMC0wMi0yMCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGRvY3MvdXNlci1yZWYudGV4aSAoQ29tbWFuZC1saW5lLXNwZWNpZmljIGNvbW1hbmRzKTogQWRkZWQgYQoJZGVzY3JpcHRpb24gYWJvdXQgImNtcCIuCgkqIGRvY3MvYXBwZW5kaWNlcy50ZXhpIChSZXBvcnRpbmcgYnVncyk6IFJld3JpdHRlbi4KCQoyMDAwLTAyLTIwICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCVVwZGF0ZSB0aGUgbmV0Ym9vdCBjb2RlIHRvIEV0aGVyYm9vdCA0LjQuMy4KCQoJKiBuZXRib290L25ldGJvb3RfY29uZmlnLmg6IENvcGllZCBmcm9tIGV0aGVyYm9vdC00LjQuMy4KCSogbmV0Ym9vdC9jczg5eDAuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvY3M4OXgwLmM6IExpa2V3aXNlLgoJKiBuZXRib290L2k4MjU4Ni5jOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9sYW5jZS5jOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9saW51eC1hc20tc3RyaW5nLmg6IExpa2V3aXNlLgoJKiBuZXRib290L25pYy5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9udHVsaXAuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3Qvb3NkZXAuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvcGNpLmg6IExpa2V3aXNlLgoJKiBuZXRib290L3BjaS5jOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9ydGw4MTM5LmM6IExpa2V3aXNlLgoJKiBuZXRib290L3RpYXJhLmM6IExpa2V3aXNlLgoJCjIwMDAtMDItMTkgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoY21wX2Z1bmMpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbHRpbl9jbXApOiBOZXcgdmFyaWFibGUuCgkoYnVpbHRpbl90YWJsZSk6IEFkZGVkIGEgcG9pbnRlciB0byBCVUlMVElOX0NNUC4KCgkqIHN0YWdlMi9mc3lzX2ZhdC5jIChmYXRfbW91bnQpOiBDaGVjayBpZiBCUEIuU0VDVFNfUEVSX0NMVVNUIGlzCgl6ZXJvIGFmdGVyIHJlYWRpbmcgdGhlIEJQQiB0byBhdm9pZCB6ZXJvIGRpdmlzaW9uLgoJCjIwMDAtMDItMTggIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvZGlza19pby5jIFshU1RBR0UxXzVdIChtYWtlX3NhdmVkX2FjdGl2ZSk6IE1ha2Ugc3VyZQoJdGhhdCBTQVZFRF9QQVJUSVRJT04gaXMgbm90IGFuIGV4dGVuZGVkIHBhcnRpdGlvbi4KCUlmIFNBVkVEX0RSSVZFIGlzIG5vdCBhIGhhcmQgZGlzayBkcml2ZSwgc2V0IEVSUk5VTSB0bwoJRVJSX0RFVl9WQUxVRVMgYW5kIHJldHVybiB6ZXJvLgoKCSogbmV0Ym9vdC8zYzU5eC5jOiBSZW1vdmVkLgoJKiBuZXRib290L01ha2VmaWxlLmFtIChFWFRSQV9saWJkcml2ZXJzX2FfU09VUkNFUyk6IERlbGV0ZWQKCTNjNTl4LmMuCgkoM2M1OXhfZHJpdmVycyk6IERlbGV0ZWQuCgkoM2M1OXhfb19DRkxBR1MpOiBMaWtld2lzZS4KCSogY29uZmlndXJlLmluICgtLWVuYWJsZS0zYzU5eCk6IExpa2V3aXNlLgoJCjIwMDAtMDItMTcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBjb25maWd1cmUuaW4gKC0tZW5hYmxlLTNjOTB4KTogQWRkIC1ESU5DTFVERV8zQzkwWD0xIGluc3RlYWQKCW9mIC1ESU5DTFVERV8zQzkweD0xLiBUaGlzIHdhcyBqdXN0IGEgdHlwby4gUmVwb3J0ZWQgYnkgUGVyCglMdW5kYmVyZy4KCQoyMDAwLTAyLTE3ICBKb2NoZW4gSG9lbmlja2UgIDxqb2NoZW5AZ251Lm9yZz4KCQoJKiBzdGFnZTIvZnN5c19mYXQuYyAoZmF0X3JlYWQpOiBGb3Jnb3QgdG8gaW5jcmVhc2UgQlVGLgoJKGZhdF9kaXIpOiBVc2UgZmF0X3JlYWQgaW5zdGVhZCBvZiBncnViX3JlYWQ7IHRoaXMgbWFrZXMKCXNldHRpbmcgdGhlIEZTTUFYIHVubmVjZXNzYXJ5LgoJKGZhdF9tb3VudCk6IEZTTUFYIGlzIG5vIGxvbmdlciBzZXQuCgkKMjAwMC0wMi0xNiAgSm9jaGVuIEhvZW5pY2tlICA8am9jaGVuQGdudS5vcmc+CgoJKiBzdGFnZTIvY2hhcl9pby5jIChncnViX2lzc3BhY2UpOiBNYWtlIGNhcnJpYWdlIHJldHVybiBhIHdoaXRlCglzcGFjZS4KCQoJKiBzdGFnZTIvZnN5c19mYXQuYyAoZmF0X2Rpcik6IExvbmcgZmlsZW5hbWUgc3VwcG9ydC4KCShOQU1FX0JVRik6IE5ldyBtYWNyby4KCSogc3RhZ2UyL2ZhdC5oIChGQVRfTE9OR0RJUl9JRCwgRkFUX0xPTkdESVJfQUxJQVNDSEVDS1NVTSwKCUZBVF9BVFRSSUJfTE9OR05BTUUpOiBOZXcgTWFjcm9zLgoKCSogc3RhZ2UyL2ZzeXNfZmF0LmMgKGZhdF9jcmVhdGVfYmxvY2tsaXN0KTogRGVsZXRlZCwgaW5zdGVhZAoJZmF0X3JlYWQgaXMgaW1wbGVtZW50ZWQuCgkoZmF0X3JlYWQpOiBuZXcgZnVuY3Rpb24uCgkqIHN0YWdlMi9kaXNrX2lvLmMgKGZzeXNfdGFibGUpOiBVc2UgZmF0X3JlYWQuCgkqIHN0YWdlMi9maWxlc3lzLmg6IERlY2xhcmUgZmF0X3JlYWQsIHJlbW92ZSBOT19CTE9DS19GSUxFUwoJaGFjay4KCSogc3RhZ2UyL01ha2VmaWxlLmFtOiBDb21waWxlIGZhdF9zdGFnZTFfNSB3aXRoCgktRE5PX0JMT0NLX0ZJTEVTPTEuCgkKCSogc3RhZ2UyL2ZhdC5oIChmYXRfYnBiKTogTmV3IHN0cnVjdHVyZSBkZXNjcmliaW5nIGJwYi4KCShGQVRfQ1ZUX1UxNik6IE5ldyBtYWNyby4KCShGQVRfQlBCX0NIRUNLX1NJRywgRkFUX0JQQl9OVU1fU0VDVE9SUywKCUZBVF9CUEJfQllURVNfUEVSX1NFQ1RPUiwgRkFUX0JQQl9TRUNUX1BFUl9DTFVTLCBGQVRfQlBCX05VTUZBVCwKCUZBVF9CUEJfUkVTRVJWRURfU0VDVE9SUywgRkFUX0JQQl9GQVRfU0VDVE9SU18xNiwKCUZBVF9CUEJfRkFUX1NFQ1RPUlNfMzIsIEZBVF9CUEJfSVNfRkFUMzIsIEZBVF9CUEJfRkFUX1NFQ1RPUlMsCglGQVRfQlBCX0ZBVF9TVEFSVCwgRkFUX0JQQl9ST09UX0RJUl9DTFVTVEVSLAoJRkFUX0JQQl9ISURERU5fU0VDVE9SUywgRkFUX0JQQl9ST09UX0RJUl9TVEFSVCwKCUZBVF9CUEJfUk9PVF9ESVJfTEVOR1RILCBGQVRfQlBCX0RBVEFfT0ZGU0VULAoJRkFUX0JQQl9OVU1fQ0xVU1QpOiBNYWNyb3MgcmVtb3ZlZC4KCSogc3RhZ2UyL2ZzeXNfZmF0LmMgKGZhdF9zdXBlcmJsb2NrKTogTmV3IHN0cnVjdHVyZSBjb250YWluaW5nCglhbGwgaW5mbyBhYm91dCBjdXJyZW50bHkgbW91bnRlZCBmaWxlc3lzdGVtLgoJKEZBVF9TVVBFUik6IE5ldyBNYWNyby4KCShCUEIpOiBNYWNybyByZW1vdm9kLgoJKGZhdF9tb3VudCk6IFVzZSBmYXRfYnBiIHN0cnVjdHVyZSwgZmlsbCBGQVRfU1VQRVIuCgkoZmF0X3JlYWQsIGZhdF9kaXIpOiBVc2UgRkFUX1NVUEVSIGluZm8uCgoyMDAwLTAyLTE2ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCVBhc3MgdGhlIGJvb3QgcGFydGl0aW9uIGluZm9ybWF0aW9uIHRvIGEgY2hhaW4tbG9hZGVyLCBpbiB0aGUKCXBhcnRpdGlvbiB0YWJsZSBhcmVhIG9mIHRoZSBsb2FkZXIsIGluc3RlYWQgb2YgcmlnaHQgYmVmb3JlIHRoZQoJbG9hZGVkIGFkZHJlc3MuIFJlcG9ydGVkIGJ5IHRha2VoaXJvQGNvcmFsLm9jbi5uZS5qcCAoVGFrZWhpcm8KCVN1enVraSkuCgkKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGNoYWlubG9hZGVyX2Z1bmMpOiBFbWJlZCB0aGUgcGFydGl0aW9uCgl0YWJsZSBvZiB0aGUgYm9vdCBkcml2ZSBpbiB0aGUgcGFydGl0aW9uIHRhYmxlIGFyZWEgb2YgdGhlCgljaGFpbi1sb2FkZXIsIGlmIHRoZSBib290IGRyaXZlIGlzIGEgaGFyZCBkaXNrIGRyaXZlLgoJUGFzcyBCT09UX1BBUlRfQUREUiBpbnN0ZWFkIG9mIChCT09UU0VDX0xPQ0FUSU9OIC0gMTYpIGFzIHRoZQoJdGhpcmQgYXJndW1lbnQgZm9yIHRoZSBmdW5jdGlvbiBjaGFpbl9zdGFnZTEuCgkqIHN0YWdlMi9kaXNrX2lvLmMgWyFTVEFHRTFfNV0gKGJvb3RfcGFydF9hZGRyKTogTmV3IHZhcmlhYmxlLgoJWyFTVEFHRTFfNV0gKGJvb3RfcGFydF9vZmZzZXQpOiBMaWtld2lzZS4KCVshU1RBR0UxXzVdIChjdXJfcGFydF9vZmZzZXQpOiBMaWtld2lzZS4KCVshU1RBR0UxXzVdIChjdXJfcGFydF9hZGRyKTogTGlrZXdpc2UuCglbIVNUQUdFMV81XSAoY3VyX3BhcnRfZGVzYyk6IFJlbW92ZWQuCgkocmVhbF9vcGVuX3BhcnRpdGlvbikgWyFTVEFHRTFfNV06IFNldCBDVVJfUEFSVF9PRkZTRVQgYW5kCglDVVJfUEFSVF9BRERSIHRvIFBBUlRfT0ZGU0VUIGFuZCAoQk9PVFNFQ19MT0NBVElPTiArCglQQ19TTElDRV9PRkZTRVQgKyAoaSA8PCA0KSksIHJlc3BlY3RpdmVseS4KCVshU1RBR0UxXzVdIChzZXRfYm9vdGRldik6IFNldCBCT09UX1BBUlRfT0ZGU0VUIGFuZAoJQk9PVF9QQVJUX0FERFIgdG8gQ1VSX1BBUlRfT0ZGU0VUIGFuZCBDVVJfUEFSVF9BRERSLAoJcmVzcGVjdGl2ZWx5LgoJKiBzdGFnZTIvc2hhcmVkLmggKGJvb3RfcGFydF9hZGRyKTogRGVjbGFyZWQuCgkoYm9vdF9wYXJ0X29mZnNldCk6IExpa2V3aXNlLgoJCjIwMDAtMDItMTIgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoZ2VvbWV0cnlfZnVuYyk6IEF0dGVtcHQgdG8gcmVhZCB0aGUgZmlyc3QKCXNlY3RvciB0byBleGFtaW5lIGlmIExCQSBtb2RlIGlzIHJlYWxseSBzdXBwb3J0ZWQuCgoJKiBuZXRib290L2ZzeXNfdGZ0cC5jIChidWZfZmlsbCkgW1RGVFBfREVCVUddOiBBZGRlZCBzb21lIGRlYnVnCgltZXNzYWdlcy4KCShzZW5kX3JycSkgW1RGVFBfREVCVUddOiBMaWtld2lzZS4KCSh0ZnRwX3JlYWQpIFtURlRQX0RFQlVHXTogTGlrZXdpc2UuCgkodGZ0cF9kaXIpIFtURlRQX0RFQlVHXTogTGlrZXdpc2UuCgkodGZ0cF9jbG9zZSkgW1RGVFBfREVCVUddOiBMaWtld2lzZS4KCSh0ZnRwX3JlYWQpOiBDYWxsIGJ1Zl9maWxsIHdpdGggdGhlIGFyZ3VtZW50IDEgZmlyc3QsIGlmIEZJTEVQT1MKCWhhcyBiZWVuIG1vdmVkIGJhY2t3YXJkcywgYW5kIHVzZSBncnViX21lbW1vdmUgZm9yIGNvcHlpbmcKCVNBVkVEX1RQIHRvIFRQIGluc3RlYWQgb2YgYSBkaXJlY3QgYXNzaWdubWVudC4KCUlmIHNlbmRfcnJxIGZhaWxzLCBzZXQgRVJSTlVNIHRvIEVSUl9XUklURSBpbnN0ZWFkIG9mIEVSUl9SRUFELgoJQ2hlY2sgaWYgQlVGX1JFQUQgaXMgemVybyBpbnN0ZWFkIG9mIGlmIEJVRl9FT0YgaXMgbm9uLXplcm8gYXQKCXRoZSBlbmQgb2YgdGhlIGxvb3AuCgkodGZ0cF9kaXIpOiBTZXQgRVJSTlVNIHRvIEVSUl9XUklURSBpbnN0ZWFkIG9mIEVSUl9SRUFELCBpZgoJc2VuZF9ycnEgZmFpbHMuCglTYXZlIFRQIGFuZCBMRU4gaW4gU0FWRURfVFAgYW5kIFNBVkVEX0xFTiByZXNwZWN0aXZlbHkgYmVmb3JlCglidWZfZmlsbCBpbnN0ZWFkIG9mIGFmdGVyIGl0LCBiZWNhdXNlIGl0IGRlc3Ryb3lzIHRoZSBjb250ZW50cwoJb2YgVFAuCgkqIG5ldGJvb3QvbWFpbi5jIChwcmludF9uZXR3b3JrX2NvbmZpZ3VyYXRpb24pOiBUaGUgb3JkZXIgb2YgdGhlCglhcmd1bWVudHMgZm9yIGdydWJfc3ByaW50ZiBpbiB0aGUgbG9jYWwgZnVuY3Rpb24gc3ByaW50X2lwX2FkZHIKCWlzIHJldmVyc2VkLgoKCSogY29uZmlndXJlLmluICgtLWVuYWJsZS1wYWNrZXRfcmV0cmFuc21pc3Npb24pOiBSZW5hbWVkIHRvIC4uLgoJKC0tZGlzYWJsZS1wYWNrZXQtcmV0cmFuc21pc3Npb24pOiAuLi4gdGhpcy4gQXNzdW1lIHRoYXQgYQoJbmV0d29yawlpcyBjb25nZXN0ZWQgYnkgZGVmYXVsdC4KCQoyMDAwLTAyLTExICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUZyb20gUGF2ZWwgUm9za2luOgoJKiBzdGFnZTIvc2hhcmVkLmggWyFHUlVCX1NIQVJFRF9IRUFERVJdIChHUlVCX1NIQVJFRF9IRUFERVIpOgoJRGVmaW5lZC4KCVtHUlVCX1NIQVJFRF9IRUFERVJdOiBEb24ndCBkZWNsYXJlIG9yIGRlZmluZSBhbnl0aGluZy4KCgkqIG5ldGJvb3QvbWFpbi5jIChwcmludF9uZXR3b3JrX2NvbmZpZ3VyYXRpb24pOiBOZXcgZnVuY3Rpb24uCgkoYXdhaXRfcmVwbHkpOiBDaGVjayBmb3IgQ29udHJvbC1DIGluc3RlYWQgb2YgRVNDLCBiZWNhdXNlIEdSVUIKCWFscmVhZHkgdXNlcyBFU0MgZm9yIGFub3RoZXIgcHVycG9zZS4KCShyZmM5NTFfc2xlZXApOiBDaGVjayBmb3IgdGhlIGtleSBpbnB1dCBpbiB0aGUgbG9vcC4gSWYKCUNvbnRyb2wtQyBpcyBwdXNoZWQsIHJldHVybiBpbW1lZGlhdGVseS4KCSogbmV0Ym9vdC9ldGhlcmJvb3QgKHByaW50X25ldHdvcmtfY29uZmlndXJhdGlvbik6IERlY2xhcmVkLgoJKENUUkxfQyk6IE5ldyBtYWNyby4KCShFU0MpOiBVbmRlZmluZWQuCgkqIG5ldGJvb3QvY29uZmlnLmMgKGV0aF9wcm9iZSk6IENsZWFyIEFSUFRBQkxFIGFmdGVyIGNsZWFyaW5nCglORVRXT1JLX1JFQURZLgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoYm9vdHBfZnVuYyk6IENhbGwKCXByaW50X25ldHdvcmtfY29uZmlndXJhdGlvbiBpZiBib290cCBzdWNjZWVkcy4KCShyYXJwX2Z1bmMpOiBDYWxsIHByaW50X25ldHdvcmtfY29uZmlndXJhdGlvbiBpZiByYXJwIHN1Y2NlZWRzLgoJCjIwMDAtMDItMTEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJRnJvbSBQZXIgTHVuZGJlcmcgPHBsdW5kaXNAYnlnZ2Rvay5zZT46CgkqIGRvY3MvbXVsdGlib290LnRleGk6IEFkZGVkIGdyYXBoaWNzIHN1cHBvcnQuCgkKMjAwMC0wMi0xMCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGRvY3MvbXVsdGlib290LnRleGkgKFRvcCk6IERvd25ncmFkZSB0aGUgdmVyc2lvbiB0byAwLjYuOTAsCglzaW5jZSB3ZSBuZWVkIG1vcmUgd29yayB0byByZWxlYXNlIGl0IGFzIDAuNy4KCQoyMDAwLTAyLTEwICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL01ha2VmaWxlLmFtIFtORVRCT09UX1NVUFBPUlRdIChTVEFHRTJfQ09NUElMRSk6IEFkZGVkCgktSSQodG9wX3NyY2RpcikvbmV0Ym9vdCBhbmQgLURTVVBQT1JUX05FVEJPT1Q9MS4KCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGJvb3RwX2Z1bmMpOiBOZXcgZnVuY3Rpb24uCgkoZGhjcF9mdW5jKTogTGlrZXdpc2UuCgkocmFycF9mdW5jKTogTGlrZXdpc2UuCgkoYnVpbHRpbl9ib290cCk6IE5ldyB2YXJpYWJsZS4KCShidWlsdGluX2RoY3ApOiBMaWtld2lzZS4KCShidWlsdGluX3JhcnApOiBMaWtld2lzZS4KCShidWlsdGluX3RhYmxlKTogQWRkZWQgcG9pbnRlcnMgdG8gQlVJTFRJTl9CT09UUCwgQlVJTFRJTl9ESENQCglhbmQgQlVJTFRJTl9SQVJQLgoJKiBkb2NzL3VzZXItcmVmLnRleGkgKEdlbmVyYWwgQ29tbWFuZHMpOiBBZGRlZCBkZXNjcmlwdGlvbnMKCWFib3V0ICJib290cCIsICJkaGNwIiBhbmQgInJhcnAiLgoJCgkqIG5ldGJvb3QvbWFpbi5jIChib290cCkgWyFOT19ESENQX1NVUFBPUlRdOiBBZGRlZCBjYXN0cyB0bwoJc3VwcHJlc3MgZ2NjIHdhcm5pbmdzLgoJKGRlY29kZV9yZmMxNTMzKSBbIU5PX0RIQ1BfU1VQUE9SVF06IExpa2V3aXNlLgoJKiBuZXRib290LzNjOTB4LmM6IEluY2x1ZGUgdGhlIGxvY2FsICJwY2kuaCIgaW5zdGVhZCBvZgoJPGxpbnV4L3BjaS5oPiBldmVuIGlmIF9fRnJlZUJTRF9fIGlzIHVuZGVmaW5lZC4KCQoyMDAwLTAyLTA5ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCUZyb20gSm9jaGVuIEhvZW5pY2tlOgoJKiBzdGFnZTIvZnN5c19mYXQuYyAoZmF0X2NyZWF0ZV9ibG9ja2xpc3QpOiBUaGUgcHJldmlvdXMgY2hhbmdlCglpcyByZXZlcnNlZC4gU2V0IEZJUlNUX0ZBVF9FTlRSWSB0byBhIHVuc2lnbmVkIGxvbmcgdmFsdWUgaW4KCUZBVF9CVUYgKyAoTkVXX01BUEJMT0NLIC0gTUFQQkxPQ0spIGluc3RlYWQgb2YgYSB1bnNpZ25lZCBzaG9ydAoJdmFsdWUuIE1hc2sgRklSU1RfRkFUX0VOVFJZIHdpdGggMHhGRkYgaWYgRkFUX1NJWkUgaXMgZXF1YWwgdG8KCTMsIHdoZXRoZXIgdGhlIGJpdCAwIG9mIExBU1RfRkFUX0VOVFJZIGlzIHNldCBvciBub3QuCgoJKiBuZXRib290L2NvbmZpZy5jIChldGhfcHJvYmUpOiBJZiBQUk9CRUQgaXMgc2V0IHRvIG5vbi16ZXJvLAoJcmV0dXJuIDEgd2l0aG91dCBwcm9iaW5nIGV0aGVybmV0IGNhcmRzLiBDbGVhciBORVRXT1JLX1JFQURZLiBJZgoJKlQtPkVUSF9QUk9CRSByZXR1cm4gc3VjZXNzZnVsbHksIHNldCBQUk9CRUQgdG8gMS4KCSogbmV0Ym9vdC9tYWluLmMgKHJhcnApOiBDYWxsIGV0aF9wcm9iZSBhbmQgcmV0dXJuIHplcm8gaWYKCWZhaWxzLiBDbGVhciBORVRXT1JLX1JFQURZIGF0IGZpcnN0LCBhbmQgc2V0IE5FVFdPUktfUkVBRFkgdG8gMQoJaWYgUkVUUlkgaXMgbGVzcyB0aGFuIE1BWF9BUlBfUkVUUklFUy4gSWYgSVBfQUJPUlQgaXMgbm9uLXplcm8sCglyZXR1cm4gemVybyBpbnN0ZWFkIG9mIG9uZS4KCShib290cCk6IENhbGwgZXRoX3Byb2JlIGFuZCByZXR1cm4gemVybyBpZiBmYWlscy4gQ2xlYXIKCU5FVFdPUktfUkVBRFkgYXQgZmlyc3QsIGFuZCBzZXQgTkVUV09SS19SRUFEWSB0byAxIGlmCglhd2FpdF9yZXBseSByZXR1cm5zIHN1Y2Nlc3NmdWxseS4KCShib290cCkgW1Q1MDlIQUNLXTogSWYgRkxBRyBpcyBub24temVybywgc2tpcCBjYWxsaW5nCglhd2FpdF9yZXBseS4gRG9uJ3QgY2FsbCBhd2FpdF9yZXBseSBoZXJlIGFueSBtb3JlLgoJKGJvb3RwKSBbIU5PX0RIQ1BfU1VQUE9SVF06IElmIGFueSBhY2sgcGFja2V0IGlzIG5vdCByZWFjaGVkCgl3aXRoaW4gTUFYX0JPT1RQX1JFVFJJRVMgdGltZXMsIHJldHVybiB6ZXJvLiBJZiBESENQX1JFUExZIGlzbid0CglESENQT0ZGRVIsIHNldCBORVRXT1JLX1JFQURZIHRvIG9uZSBhbmQgcmV0dXJuIG9uZS4KCSogbmV0Ym9vdC9ldGhlcmJvb3QuaCAoTk9fREhDUF9TVVBQT1JUKTogVW5kZWZpbmVkLgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKHByaW50X3Jvb3RfZGV2aWNlKTogVXNlIHRoZSBtYWNybwoJTkVUV09SS19EUklWRSBpbnN0ZWFkIG9mIDB4MjAuCgkqIHN0YWdlMi9kaXNrX2lvLmMgWyFTVEFHRTFfNV0gKHNhbmVfcGFydGl0aW9uKTogTGlrZXdpc2UuCgkocmVhbF9vcGVuX3BhcnRpdGlvbikgWyFTVEFHRTFfNV06IExpa2V3aXNlLgoJKHNldF9kZXZpY2UpIFshU1RBR0UxXzVdOiBMaWtld2lzZS4KCQoyMDAwLTAyLTA4ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogZ3J1Yi9hc21zdHViLmMgKGJpb3NkaXNrKSBbX19saW51eF9fXTogVXNlIF9sbHNlZWsgd2hlbgoJX19HTElCQ19NSU5PUl9fIGlzIGxlc3MgdGhhbiAxIGV2ZW4gaWYgX19HTElCQ19fIGlzIDIuIFJlcG9ydGVkCglieSBHb3JhbiBLb3J1Z2EgPGdvcmFuLmtvcnVnYUBoZXJtZXMuc2k+LgoKCSogY29uZmlndXJlLmluICgtLWRpc2FibGUtbGJhLXN1cHBvcnQtYml0bWFwLWNoZWNrKTogTmV3IG9wdGlvbi4KCURvbid0IGRlZmluZSBDSEVDS19MQkFfU1VQUE9SVF9CSVRNQVAgaWYgc3BlY2lmaWVkLgoJKiBzdGFnZTEvc3RhZ2UxLlMgKHJlYWxfc3RhcnQpOiBDaGVjayBpZiBBSD0weDQyIGlzIHN1cHBvcnRlZCBpZgoJQ0hFQ0tfTEJBX1NVUFBPUlRfQklUTUFQIGluc3RlYWQgb2YgTk9fQlVHR1lfQklPU19JTl9USEVfV09STEQKCWlzIGRlZmluZWQuCgkqIHN0YWdlMi9iaW9zLmMgKGdldF9kaXNraW5mbyk6IENoZWNrIGlmIExCQSByZWFkL3dyaXRlCglmdW5jdGlvbnMgYXJlIHN1cHBvcnRlZCBpZmYgQ0hFQ0tfTEJBX1NVUFBPUlRfQklUTUFQIGlzIGRlZmluZWQsCglpbnN0ZWFkIG9mIE5PX0JVR0dZX0JJT1NfSU5fVEhFX1dPUkxELgoJCjIwMDAtMDItMDcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJVGhlIG5ldGJvb3Qgc3VwcG9ydCBpcyBoZWF2aWx5IHJld3JpdHRlbiwgYmFzZWQgb24KCUV0aGVyYm9vdC00LjQuMi4gVGhlIGN1cnJlbnQgb25lIGRvZXNuJ3Qgd29yayB5ZXQsIHNvIGNoZWNrIG91dAoJR1JVQiB3aXRoIHRoZSB0YWcgImRyZXNkZW5fbmV0Ym9vdF9jb2RlIiBpZiB5b3UgbmVlZCB3b3JraW5nCglvbmUuCgkKCSogY29uZmlndXJlLmluICgtLWVuYWJsZS10ZnRwKTogRGVsZXRlZC4KCShGU1lTX0NGTEFHUyk6IGBBQ19TVUJTVCdlZCByaWdodCBiZWZvcmUgQUNfT1VUUFVULgoJKE5FVEJPT1RfRFJJVkVSUyk6IE5ldyB2YXJpYWJsZS4gQUNfU1VCU1QgdGhpcyBhZnRlciBleGFtaW5pbmcKCXRoZSBkcml2ZXIgb3B0aW9ucy4KCSgtLWVuYWJsZS1wYWNrZXQtcmV0cmFuc21pc3Npb24pOiBOZXcgb3B0aW9uLgoJKC0tZW5hYmxlLXBjaS1kaXJlY3QpOiBMaWtld2lzZS4KCSgtLWVuYWJsZS0zYzUwOSk6IExpa2V3aXNlLgoJKC0tZW5hYmxlLTNjNTI5KTogTGlrZXdpc2UuCgkoLS1lbmFibGUtM2M5MHgpOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1jczg5eDApOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1lcGljMTAwKTogTGlrZXdpc2UuCgkoLS1lbmFibGUtM2M1MDcpOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1leG9zMjA1KTogTGlrZXdpc2UuCgkoLS1lbmFibGUtbmk1MjEwKTogTGlrZXdpc2UuCgkoLS1lbmFibGUtbGFuY2VwY2kpOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1uZTIxMDApOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1uaTY1MTApOiBMaWtld2lzZS4KCSgtLWVuYWJsZS0zYzUwMyk6IExpa2V3aXNlLgoJKC0tZW5hYmxlLW50dWxpcCk6IExpa2V3aXNlLgoJKC0tZW5hYmxlLXJ0bDgxMzkpOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1zay1nMTYpOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1zbWM5MDAwKTogTGlrZXdpc2UuCgkoLS1lbmFibGUtdGlhcmEpOiBMaWtld2lzZS4KCSgtLWVuYWJsZS10dWxpcCk6IExpa2V3aXNlLgoJKC0tZW5hYmxlLXZpYS1yaGluZSk6IExpa2V3aXNlLgoJKC0tZW5hYmxlLTNjNTAzLXNobWVtKTogTGlrZXdpc2UuCgkoLS1lbmFibGUtM2M1MDMtYXVpKTogTGlrZXdpc2UuCgkoLS1lbmFibGUtM2M1MDktaGFjayk6IExpa2V3aXNlLgoJKC0tZW5hYmxlLWNvbXBleC1ybDIwMDAtZml4KTogTGlrZXdpc2UuCgkoLS1lbmFibGUtc21jOTAwMC1zY2FuKTogTGlrZXdpc2UuCgkoLS1lbmFibGUtdDUwMyk6IERlbGV0ZWQuCgkoLS1lbmFibGUtbGFuY2UpOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1jcyk6IExpa2V3aXNlLgoKCSogbmV0Ym9vdC9tYWluLmM6IE5ldyBmaWxlLiBDb3BpZWQgYW5kIG1vZGlmaWVkLgoJKiBuZXRib290L2xpbnV4LWFzbS1pby5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9ldGhlcmJvb3QuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvbWlzYy5jOiBMaWtld2lzZS4KCSogbmV0Ym9vdC92aWEtcmhpbmUuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvM2M5MHguYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvM2M5MHgudHh0OiBMaWtld2lzZS4KCSogbmV0Ym9vdC9lcGljMTAwLmM6IExpa2V3aXNlLgoJKiBuZXRib290L2VwaWMxMDAuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvaTgyNTg2LmM6IExpa2V3aXNlLgoJKiBuZXRib290L2xpbnV4LWFzbS1zdHJpbmcuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvbnR1bGlwLmM6IExpa2V3aXNlLgoJKiBuZXRib290L250dWxpcC50eHQ6IExpa2V3aXNlLgoJKiBuZXRib290L29zZGVwLmg6IExpa2V3aXNlLgoJKiBuZXRib290L3J0bDgxMzkuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3Qvc2tfZzE2LmM6IExpa2V3aXNlLgoJKiBuZXRib290L3NrX2cxNi5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9zbWM5MDAwLmM6IExpa2V3aXNlLgoJKiBuZXRib290L3NtYzkwMDAuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvdGlhcmEuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvdHVsaXAuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvdHVsaXAuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvUkVBRE1FLm5ldGJvb3Q6IE5ldyBmaWxlLiBNb3N0IGluZm9ybWF0aW9uIGlzIHN0b2xlbgoJZnJvbSBNYWtlZmlsZSBhbmQgQ29uZmlnLjMyIGluIEV0aGVyYm9vdC4KCSogbmV0Ym9vdC8zYzUwOS5jOiBDb3BpZWQgZnJvbSBFdGhlcmJvb3QuIFRoZSBvcmlnaW5hbCBpcwoJcmVtb3ZlZC4KCSogbmV0Ym9vdC8zYzUwOS5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9jczg5eDAuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvZWVwcm8xMDAuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvbGFuY2UuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvbnM4MzkwLmM6IExpa2V3aXNlLgoJKiBuZXRib290L25zODM5MC5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9wY2kuYzogTGlrZXdpc2UuCgkKCSogbmV0Ym9vdC8zYzU5eC5jOiBJbmNsdWRlIGV0aGVyYm9vdC5oIGluc3RlYWQgbmV0Ym9vdC5oLgoJKiBuZXRib290L2NvbmZpZy5jOiBDb3BpZWQgZnJvbSBFdGhlcmJvb3QgYW5kIGFkZGVkIHRoZSAzYzU5eAoJZW50cmllcy4KCSogbmV0Ym9vdC9wY2kuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvZnN5c190ZnRwLmM6IEVudGlyZWx5IHJld3JpdHRlbiBiYXNlZCBvbiBtYWluLmMgaW4KCUV0aGVyYm9vdC4KCgkqIG5ldGJvb3QvaW8uaDogUmVtb3ZlZC4KCSogbmV0Ym9vdC9pcC5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9pcC5jOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9uZXRib290Lmg6IExpa2V3aXNlLgoJCgkqIG5ldGJvb3QvTWFrZWZpbGUuYW0gKElOQ0xVREVTKTogQWRkZWQgLUkkKHRvcF9zcmNkaXIpL3N0YWdlMi4KCShEUklWRVJTKTogUmVtb3ZlZC4KCShsaWJkcml2ZXJzX2FfU09VUkNFUyk6IEFkZGVkIGV0aGVyYm9vdC5oLCBsaW51eC1hc20taW8uaCwKCWxpbnV4LWFzbS1zdHJpbmcuaCwgbWFpbi5jLCBtaXNjLmMgYW5kIG9zZGVwLmguIERlbGV0ZWQgaW8uaCwKCWlwLmgsIGlwLmMsIG5ldGJvb3QuaCBhbmQgJChEUklWRVJTKS4KCShFWFRSQV9saWJkcml2ZXJzX2FfU09VUkNFUyk6IE5ldyB2YXJpYWJsZS4KCShsaWJkcml2ZXJzX2FfTElCQUREKTogU2V0IHRvIEBORVRCT09UX0RSSVZFUlNALgoJKGxpYmRyaXZlcnNfYV9ERVBFTkRFTkNJRVMpOiBOZXcgdmFyaWFibGUuCgkoRVhUUkFfRElTVCk6IExpa2V3aXNlLgoJKDNjNTA5X2RyaXZlcnMpOiBOZXcgdmFyaWFibGUuIERlZmluZSBhIG5ldyBydWxlIGZvciB0aGUgdmFsdWUuCgkoM2M1OXhfZHJpdmVycyk6IExpa2V3aXNlLgoJKDNjOTB4X2RyaXZlcnMpOiBMaWtld2lzZS4KCShjczg5eDBfZHJpdmVycyk6IExpa2V3aXNlLgoJKGVlcHJvMTAwX2RyaXZlcnMpOiBMaWtld2lzZS4KCShlcGljMTAwX2RyaXZlcnMpOiBMaWtld2lzZS4KCShpODI1ODZfZHJpdmVycyk6IExpa2V3aXNlLgoJKGxhbmNlX2RyaXZlcnMpOiBMaWtld2lzZS4KCShuczgzOTBfZHJpdmVycyk6IExpa2V3aXNlLgoJKG50dWxpcF9kcml2ZXJzKTogTGlrZXdpc2UuCgkocnRsODEzOV9kcml2ZXJzKTogTGlrZXdpc2UuCgkoc2tfZzE2X2RyaXZlcnMpOiBMaWtld2lzZS4KCShzbWM5MDAwX2RyaXZlcnMpOiBMaWtld2lzZS4KCSh0aWFyYV9kcml2ZXJzKTogTGlrZXdpc2UuCgkodHVsaXBfZHJpdmVycyk6IExpa2V3aXNlLgoJKHZpYV9yaGluZV9kcml2ZXJzKTogTGlrZXdpc2UuCgkodDUwM19vX0NGTEFHUyk6IFJlbW92ZWQuCgkobmVwY2lfb19DRkxBR1MpOiBTZXQgdG8gLURJTkNMVURFX05FUENJPTEuCgkobmVfb19DRkxBR1MpOiBTZXQgdG8gLURJTkNMVURFX05FPTEuCgkod2Rfb19DRkxBR1MpOiBTZXQgdG8gLURJTkNMVURFX1dEPTEuCgkoM2M1MDlfb19DRkxBR1MpOiBMaWtld2lzZS4KCSgzYzUyOV9vX0NGTEFHUyk6IExpa2V3aXNlLgoJKDNjNTl4X29fQ0ZMQUdTKTogTGlrZXdpc2UuCgkoM2M5MHhfb19DRkxBR1MpOiBMaWtld2lzZS4KCShjczg5eDBfb19DRkxBR1MpOiBMaWtld2lzZS4KCShlZXBybzEwMF9vX0NGTEFHUyk6IExpa2V3aXNlLgoJKGVwaWMxMDBfb19DRkxBR1MpOiBMaWtld2lzZS4KCSgzYzUwN19vX0NGTEFHUyk6IExpa2V3aXNlLgoJKGV4b3MyMDVfb19DRkxBR1MpOiBMaWtld2lzZS4KCShuaTUyMTBfb19DRkxBR1MpOiBMaWtld2lzZS4KCShsYW5jZXBjaV9vX0NGTEFHUyk6IExpa2V3aXNlLgoJKG5lMjEwMF9vX0NGTEFHUyk6IExpa2V3aXNlLgoJKG5pNjUxMF9vX0NGTEFHUyk6IExpa2V3aXNlLgoJKDNjNTAzX29fQ0ZMQUdTKTogTGlrZXdpc2UuCgkobnR1bGlwX29fQ0ZMQUdTKTogTGlrZXdpc2UuCgkocnRsODEzOV9vX0NGTEFHUyk6IExpa2V3aXNlLgoJKHNrX2cxNl9vX0NGTEFHUyk6IExpa2V3aXNlLgoJKHNtYzkwMDBfb19DRkxBR1MpOiBMaWtld2lzZS4KCSh0aWFyYV9vX0NGTEFHUyk6IExpa2V3aXNlLgoJKHR1bGlwX29fQ0ZMQUdTKTogTGlrZXdpc2UuCgkodmlhX3JoaW5lX29fQ0ZMQUdTKTogTGlrZXdpc2UuCgoJKiBzdGFnZTIvY2hhcl9pby5jIChudWxfdGVybWluYXRlKTogQ2hhbmdlZCB0aGUgdHlwZSBvZiB0aGUKCXJldHVybiB2YWx1ZSB0byBpbnQuIFJldHVybiB0aGUgb3JpZ2luYWwgY2hhcmFjdGVyIGNoYW5nZWQgdG8KCU5VTC4KCSogc3RhZ2UyL3NoYXJlZC5oIChORVRXT1JLX0RSSVZFKTogTmV3IG1hY3JvLgoJKG51bF90ZXJtaW5hdGUpOiBBZGp1c3RlZCB0byB0aGUgZGVmaW5pdGlvbi4KCSogc3RhZ2UyL2d1bnppcC5jIChndW56aXBfdGVzdF9oZWFkZXIpOiBSZW1vdmVkIHRoZSBURlRQIGNoZWNrCgllbnRpcmVseS4gSXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBiZWNhdXNlIHdlIG5vdyBjYW4gb2J0YWluCgl0aGUgY29ycmVjdCBzaXplIG9mIGEgZmlsZSBldmVuIGZvciBURlRQLgoJCjIwMDAtMDItMDcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvYXNtLlM6IFVuZG8gdGhlIHByZXZpb3VzIGNoYW5nZXMuIElzCgliaW51dGlscy0yLjkuNS4wLjI1IHRvbyBzdHJpY3QgdG8gcmV0YWluIHRoZSBjb21wYXRpYmlsaXR5PwoJUmVwb3J0ZWQgYnkgS2FsbGUgT2xhdmkgTmllbWl0YWxvIDx0b3NpQGVlczIub3VsdS5maT4uCgkKMjAwMC0wMi0wMyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9jbWRsaW5lLmMgKGVudGVyX2NtZGxpbmUpOiBTZXQgQlVGX0RSSVZFIHRvIC0xIGJlZm9yZQoJcnVubmluZyBhIGNvbW1hbmQgdG8gaW52YWxpZGF0ZSB0aGUgY2FjaGUuCgkocnVuX3NjcmlwdCk6IExpa2V3aXNlLgoJKiBzdGFnZTIvY2hhcl9pby5jIChnZXRfY21kbGluZSk6IFNldCBCVUZfRFJJVkUgdG8gLTEgYmVmb3JlIHRoZQoJY29tcGxldGlvbiB0byBpbnZhbGlkYXRlIHRoZSBjYWNoZS4KCVJlcG9ydGVkIGJ5IEplZmYgU2hlaW5iZXJnIDxqZWZmc2hAZXJvbHMuY29tPi4KCgkqIGNvbmZpZ3VyZS5pbjogVXNlIEFDX1BBVEhfVE9PTCBpbnN0ZWFkIG9mIEFDX1BBVEhfUFJPRy4KCSogc3RhZ2UyL2FzbS5TIChjaGFpbl9zdGFnZTEpOiBQcmVwZW5kIGAqJyB0byB0aGUgYXJndW1lbnQgZm9yCglsam1wLgoJKGNoYWluX3N0YWdlMik6IExpa2V3aXNlLgoJKGJpZ19saW51eF9ib290KTogTGlrZXdpc2UuCgkKMjAwMC0wMS0xOSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHV0aWwvZ3J1Yi1pbnN0YWxsLmluICgtLXJvb3QpOiBSZW5hbWVkIHRvIC4uLgoJKC0tcm9vdC1kaXJlY3RvcnkpOiAuLi4gdGhpcywgc2luY2UgInJvb3QiIGlzIHZhZ3VlLgoJKiBkb2NzL3VzZXItcmVmLnRleGkgKEludm9raW5nIGdydWItaW5zdGFsbCk6IEFkanVzdGVkIHRvIHRoZQoJY2hhbmdlIGFib3ZlLCBhbmQgYWRkZWQgYW4gZXhhbXBsZSBob3cgdG8gdXNlIC0tcm9vdC1kaXJlY3RvcnkuCgkqIGRvY3MvZ3J1Yi1pbnN0YWxsLjg6IFJlZ2VuZXJhdGVkLgoKCSogZG9jcy9hcHBlbmRpY2VzLnRleGkgKEZBUSk6IEFkZGVkIGFuIGl0ZW0gYWJvdXQgdGhlIHN1Y2tlZAoJU0NTSSBwcm9ibGVtLgoJCjIwMDAtMDEtMTUgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoY2hhaW5sb2FkZXJfZnVuYyk6IElmIC0tZm9yY2UgaXMgc3BlY2lmaWVkCglpbiBBUkcsIGRvbid0IGNoZWNrIGZvciB0aGUgc2lnbmF0dXJlLgoJKiBkb2NzL3R1dG9yaWFsLnRleGkgKENoYWluLWxvYWRpbmcpOiBBZGRlZCBhIGNhdXRpb24gYWJvdXQgc29tZQoJZGVmZWN0aXZlIGJvb3QgbG9hZGVycyBhbmQgLS1mb3JjZS4KCSogZG9jcy91c2VyLXJlZi50ZXhpIChDb21tYW5kLWxpbmUtc3BlY2lmaWMgY29tbWFuZHMpOiBBZGRlZCBhCglkZXNjcmlwdGlvbiBhYm91dCAtLWZvcmNlLgoJCjIwMDAtMDEtMTEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBkb2NzL3Byb2ctcmVmLnRleGkgKExCQSBtb2RlIGRpc2sgSS9PKTogQWRkZWQgYSBmb290bm90ZSBhYm91dAoJYSBidWdneSBCSU9TLgoJCjIwMDAtMDEtMTEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTEvc3RhZ2UxLlMgWyFOT19CVUdHWV9CSU9TX0lOX1RIRV9XT1JMRF06IERvbid0IGNoZWNrIGlmCglMQkEgcmVhZCBpcyBzdXBwb3J0ZWQuIEFueXdheSwgZmFsbGJhY2sgdG8gdGhlIENIUyBtb2RlIGlmCglmYWlscy4KCQoyMDAwLTAxLTEwICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2Jpb3MuYyAoTk9fSU5UMTNfRkFMTEJBQ0spOiBVbmRlZmluZWQuCgkoZ2V0X2Rpc2tpbmZvKSBbIU5PX0JVR0dZX0JJT1NfSU5fVEhFX1dPUkxEXTogRG8gbm90IGNoZWNrIGlmCgliaXQgMCBpbiBEUlAuRkxBR1MgaXMgc2V0LCBiZWNhdXNlIGF0IGxlYXN0IG9uZSBCSU9TIGRvZXMgbm90CglzZXQgaXQgY29ycmVjdGx5LiBSZXBvcnRlZCBieSAiRm9yZXZlciBzaGFsbCBJIGJlLiIKCTx6aW54QGxpbnV4ZnJlYWsuY29tPi4KCgkqIHV0aWwvZ3J1Yi1pbnN0YWxsLmluOiBIYW5kbGUgdGhlIG5ldyBvcHRpb25zIGAtLXJvb3QnIGFuZAoJYC0tZ3J1Yi1zaGVsbCcuCgkocm9vdGRpcik6IE5ldyB2YXJpYWJsZS4KCSh1c2FnZSk6IFByaW50IHRoZSBoZWxwIG1lc3NhZ2VzIGFib3V0IHRoZSBvcHRpb25zIC0tcm9vdCBhbmQKCS0tZ3J1Yi1zaGVsbC4KCShib290ZGlyKTogSW5pdGlhbGl6ZWQgYWZ0ZXIgdGhlIG9wdGlvbiBhbmFseXNpcy4KCShncnViZGlyKTogTGlrZXdpc2UuCgkoZGV2aWNlX21hcCk6IExpa2V3aXNlLgoJKHJvb3RfZGV2aWNlKTogU2V0IHRvIHRoZSByZXN1bHQgZm9yIHRoZSBkaXJlY3RvcnkgUk9PVERJUgoJaW5zdGVhZCBvZiAiLyIuCgkqIGRvY3MvdXNlci1yZWYudGV4aSAoSW52b2tpbmcgZ3J1Yi1pbnN0YWxsKTogQWRkZWQgdGhlCglkZXNjcmlwdGlvbnMgYWJvdXQgLS1yb290IGFuZCAtLWdydWItc2hlbGwuCgkqIGRvY3MvZ3J1Yi1pbnN0YWxsLjg6IFJlZ2VuZXJhdGVkLgoJCjIwMDAtMDEtMDggIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiB1dGlsL2dydWItaW5zdGFsbC5pbiAoZ3J1YmRpcl9kZXZpY2UpOiBOZXcgdmFyaWFibGUuCglJZiBHUlVCRElSX0RFVklDRSBpcyBub3QgZXF1YWwgdG8gUk9PVF9ERVZJQ0UsIHByaW50IGFuIGVycm9yCgltZXNzYWdlIGFuZCBleGl0LgoJKiBSRUFETUU6IEFkZGVkIGEgY2F1dGlvbiBhYm91dCBBdXRvbWFrZS4KCSogVE9ETzogVXBkYXRlZC4gT25seSB0aGUgdGhpbmdzIHRoYXQgc2hvdWxkIGJlIGRvbmUgdW50aWwgMC42CgloYXZlIG9uZSBvciBtb3JlIGV4Y2xhbWF0aW9ucy4gVGhpbmdzIHdpdGggemVybyBleGNsYW1hdGlvbgoJd2lsbCBiZSBkb25lIGFmdGVyIDAuNiB1bmxlc3Mgc29tZW9uZSBzZW5kcyBhIHBhdGNoIGZvciBpdC4KCQoyMDAwLTAxLTA1ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogZ3J1Yi9hc21zdHViLmM6IEluY2x1ZGUgdGhlIGhlYWRlciBzaGFyZWQuaCBhZnRlciBpbmNsdWRpbmcKCWFsbCB0aGUgc3lzdGVtIGhlYWRlcnMsIGJ1dCBub3QgYmVmb3JlLgoJKEVYVEVOREVEX01FTVNJWkUpOiBSZWR1Y2VkIHRvIDNNQi4KCShncnViX3NldGptcCk6IE5ldyBmdW5jdGlvbi4KCShncnViX2xvbmdqbXApOiBMaWtld2lzZS4KCSogZ3J1Yi9tYWluLmM6IEluY2x1ZGUgc2V0am1wLmguCgkqIHN0YWdlMi9hc20uUyAoZ3J1Yl9zZXRqbXApOiBOZXcgZnVuY3Rpb24uIFN0b2xlbiBmcm9tIHRoZQoJT1NLaXQgKHdoaWNoIHN0b2xlIGl0IGZyb20gTWFjaCkuCgkoZ3J1Yl9sb25nam1wKTogTGlrZXdpc2UuCgkqIHN0YWdlMi9zaGFyZWQuaCBbR1JVQl9VVElMXSAoZ3J1Yl9qbXBfYnVmKTogTmV3IHR5cGUuCglbIUdSVUJfVVRJTF0gKGdydWJfam1wX2J1Zik6IE5ldyBtYWNyby4gRGVmaW5lZCBhcyBqbXBfYnVmLgoJKGdydWJfc2V0am1wKTogRGVjbGFyZWQuCgkoZ3J1Yl9sb25nam1wKTogTGlrZXdpc2UuCgkocmVzdGFydF9lbnYpOiBMaWtld2lzZS4KCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGNvbmZpZ2ZpbGVfZnVuYyk6IFVzZSBncnViX2xvbmdqbXAgaW5zdGVhZAoJb2YgaW52b2tpbmcgY21haW4gYWdhaW4uCgkqIHN0YWdlMi9zdGFnZTIuYyAocmVzdGFydF9lbnYpOiBOZXcgdmFyaWFibGUuCgkoY21haW4pOiBDYWxsIGdydWJfc2V0am1wIGZpcnN0IHRvIGluaXRpYWxpemUgUkVTVEFSVF9FTlYuCgkKMjAwMC0wMS0wMyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGRvY3MvbXVsdGlib290LnRleGkgKEJvb3QgaW5mb3JtYXRpb24gZm9ybWF0KTogQWRkZWQgdGhlCglkZXNjcmlwdGlvbnMgYWJvdXQgdGhlIGZpZWxkcyAiY29uZmlnX3RhYmxlIiBhbmQKCSJib290X2xvYWRlcl9uYW1lIi4KCQoxOTk5LTEyLTMxICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBnbnUub3JnPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKHNldHVwX2Z1bmMpIFshTk9fQlVHR1lfQklPU19JTl9USEVfV09STERdOgoJU3BlY2lmeSB0aGUgb3B0aW9uIGBkJywgd2hldGhlciBJTlNUQUxMX0RSSVZFIGlzIGlkZW50aWNhbCB3aXRoCglJTUFHRV9EUklWRSBvciBub3QuCgkqIGRvY3MvdXNlci1yZWYudGV4aSAoQ29tbWFuZC1saW5lLXNwZWNpZmljIGNvbW1hbmRzKTogQWRkZWQgYQoJY2F1dGlvbiBhYm91dCBidWdneSBCSU9TZXMgd2hpY2ggZG9uJ3QgcGFzcyBhIGJvb3RpbmcgZHJpdmUKCXByb3Blcmx5LgoKCSogZG9jcy9zcmMydGV4aTogQWRkZWQgYW4gZXh0cmEgc3BhY2UgaW50byB0aGUgZmlyc3QgbGluZSwgZm9yCgl0aGUgcG9ydGFiaWxpdHkgaXNzdWUuCgoJKiBkb2NzL2FwcGVuZGljZXMudGV4aSAoT2J0YWluaW5nIGFuZCBCdWlsZGluZyBHUlVCKTogVXBkYXRlIHRoZQoJaW5mb3JtYXRpb24gb24gdGhlIGZ0cCBzaXRlIGFuZCB0aGUgQ1ZTIHJlcG9zaXRvcnkuCgkKMTk5OS0xMi0zMCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChibG9ja2xpc3RfZnVuYyk6IE5ldyBmdW5jdGlvbi4KCShidWlsdGluX2Jsb2NrbGlzdCk6IE5ldyB2YXJpYWJsZS4KCShidWlsdGluX3RhYmxlKTogQWRkZWQgYSBwb2ludGVyIHRvIEJVSUxUSU5fQkxPQ0tMSVNULgoJKiBkb2NzL3VzZXItcmVmLnRleGkgKENvbW1hbmQtbGluZS1zcGVjaWZpYyBjb21tYW5kcyk6IEFkZGVkIGEKCWRlc2NyaXB0aW9uIGFib3V0IHRoZSBjb21tYW5kICJibG9ja2xpc3QiLgoJCjE5OTktMTItMzAgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGdudS5vcmc+CgoJKiBzdGFnZTIvZGlza19pby5jIChncnViX3NlZWspOiBOZXcgZnVuY3Rpb24uCgkqIHN0YWdlMi9zaGFyZWQuaCAoZ3J1Yl9zZWVrKTogRGVjbGFyZWQuCgkqIHN0YWdlMi9ib290LmMgKGxvYWRfaW1hZ2UpOiBVc2UgZ3J1Yl9zZWVrIGluc3RlYWQgb2Ygc2V0dGluZwoJRklMRVBPUyB0byBhIG5ldyB2YWx1ZSBkaXJlY3RseS4KCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGluc3RhbGxfZnVuYyk6IExpa2V3aXNlLgoJKHRlc3Rsb2FkX2Z1bmMpOiBMaWtld2lzZS4KCgkqIGRvY3MvZ3J1Yi50ZXhpOiBVc2UgYSBzaW5nbGUgZGlyZW50cnkgY29tbWFuZCBmb3IgYWxsIHRoZQoJZW50cmllcyBpbnN0ZWFkIG9mIG9uZSBwZXIgZW50cnkuCgkKMTk5OS0xMi0yOSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAZ251Lm9yZz4KCgkqIGdydWIvYXNtc3R1Yi5jIChjaGVja19kZXZpY2UpIFtfX2xpbnV4X19dOiBDaGVjayBpZiBERVZJQ0UgaXMKCWEgQ0QtUk9NIGRyaXZlIGJ5IHRoZSBIRElPX0dFVEdFTyBpb2N0bC4gSWYgc28sIHRoZW4gcmV0dXJuCgl6ZXJvLiBSZXBvcnRlZCBieSBQYXZlbCBSb3NraW4uCgoJKiBzdGFnZTIvTWFrZWZpbGUuYW0gKG5vZGlzdF9ub2luc3RfREFUQSk6IFJlbmFtZWQgdG8gLi4uCgkobm9pbnN0X0RBVEEpOiAuLi4gdGhpcy4gVGhlIHByaW1hcnkgREFUQSBpcyBgbm9kaXN0JyBieQoJZGVmYXVsdCwgYXQgbGVhc3QgdGhlb3JldGljYWxseS4gUmVwb3J0ZWQgYnkgS2xhdXMgUmVpY2hsLgoKCSogc3RhZ2UyL2Jpb3MuYyAoZ2V0X2Rpc2tpbmZvKTogU2V0IHRoZSBMQkEgZmxhZyBpbiBHRU9NRVRSWQoJb25seSBpZiBiaXQgMCBpbiBEUlAuRkxBR1MgaXMgc2V0LiBSZXBvcnRlZCBieSBaYWNrIFdlaW5iZXJnCgk8emFja0ByYWJpLmNvbHVtYmlhLmVkdT4uCgoJRnJvbSBQYXZlbCBSb3NraW46CgkqIGdydWIvYXNtc3R1Yi5jIChpbml0X2RldmljZV9tYXApOiBJbmNyZWFzZSB0aGUgbnVtYmVyIG9mCglkZXZpY2VzIHRvIGJlIHByb2JlZCB0byA4IGZvciBJREUgZGlza3MgYW5kIDE2IGZvciBTQ1NJCglkaXNrcy4gUmVwb3J0ZWQgYnkgQW50b24gQW5pc2ltb3YgPGFhQGJlc3RsaW51eC5uZXQ+LgoJCjE5OTktMTItMDYgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBmaWcub3JnPgoKCSogUkVBRE1FIChERVZFTE9QRVJTKTogQ2hhbmdlIENWUyBsb2NhdGlvbiB0byBzdWJ2ZXJzaW9ucy4KCjE5OTktMTEtMzAgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvZGlza19pby5jIChyZWFsX29wZW5fcGFydGl0aW9uKTogSWYgU0xJQ0VfTk8gaXMgZ3JlYXRlcgoJdGhhbiBvciBlcXVhbCB0byBQQ19TTElDRV9NQVgsIHNraXAgYW55IGV4dGVuZGVkIHBhcnRpdGlvbiwgd2hlbgoJc2VhcmNoaW5nIGZvciB0aGUgcmlnaHQgcGFydGl0aW9uLiBSZXBvcnRlZCBieSBXZWlsLCBTdGVmYW4gMzczMgoJRVBFLTI0IDxTdGVmYW4uV2VpbEBkZS5oZWlkZWxiZXJnLmNvbT4uCgoxOTk5LTExLTE5ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZmlnLm9yZz4KCgkqIGdydWIvYXNtc3R1Yi5jIChnZXRrZXkpOiBTdG9wIGltbWVkaWF0ZWx5IGlmIHdlIGdldCBhbiBFT0YuCgoJKiBzdGFnZTIvc3RhZ2UyLmMgKGNtYWluKTogVGVsbCBlbnRlcl9jbWRsaW5lIHRvIHJ1biBmb3JldmVyLgoJKHJ1bl9tZW51KTogVGVsbCBwcmludF9jbWRsaW5lX21lc3NhZ2UgYW5kIGVudGVyX2NtZGxpbmUgdGhhdCB3ZQoJd29uJ3QgcnVuIGZvcmV2ZXIuCgkqIHN0YWdlMi9jbWRsaW5lLmMgKGVudGVyX2NtZGxpbmUpOiBOZXcgYXJndW1lbnQsIEZPUkVWRVIsIGZvcgoJd2hlbiBFU0Mgc2hvdWxkbid0IGFsbG93IGFuIGV4aXQuICBQYXNzIGl0IHRvCglwcmludF9jbWRsaW5lX21lc3NhZ2UuCgkocHJpbnRfY21kbGluZV9tZXNzYWdlKTogVXNlIG5ldyBhcmd1bWVudCwgRk9SRVZFUiwgdG8gZGVjaWRlCgl3aGV0aGVyIHRvIHRlbGwgdGhlIHVzZXIgdGhhdCBFU0MgZXhpdHMuCgoxOTk5LTExLTE4ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZmlnLm9yZz4KCgkqIGRlYmlhbi9ydWxlcyAoYmluYXJ5LWFyY2gpOiBEb24ndCBzdHJpcCBvciBnZW5lcmF0ZSBzaGFyZWQKCWxpYnJhcnkgZGVwZW5kZW5jaWVzIGZvciAvdXNyL3NiaW4vZ3J1Yi1pbnN0YWxsLCBzaW5jZSBpdCdzIGEKCXNjcmlwdC4KCgkqIHV0aWwvZ3J1Yi1pbnN0YWxsLmluOiBDcmVhdGUgc2FmZSB0ZW1wb3JhcnkgbG9nIGZpbGVzIHVzaW5nCgkvYmluL3RlbXBmaWxlIGlmIGl0IGlzIGV4ZWN1dGFibGUuCgoxOTk5LTExLTE3ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZmlnLm9yZz4KCgkqIHN0YWdlMS9NYWtlZmlsZS5hbSAoTERGTEFHUyk6IENvbnNvbGlkYXRlIG11bHRpcGxlIC1XbCBmbGFncy4KCSogc3RhZ2UyL01ha2VmaWxlLmFtIChQUkVfU1RBR0UyX0xJTkspOiBMaWtld2lzZS4KCShTVEFSVF9MSU5LKTogTGlrZXdpc2UuCgkoU1RBR0UxXzVfTElOSyk6IExpa2V3aXNlLgoKMTk5OS0xMS0xOSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHV0aWwvZ3J1Yi1pbnN0YWxsLmluIChkZWJ1Zyk6IE5ldyB2YXJpYWJsZS4KCShjb252ZXJ0KTogSWYgdGhlIGRldmljZSBmaWxlIGRvZXMgbm90IGV4aXN0LCB0aGVuIGVtaXQgYW4KCWVycm9yLiBHZXQgdGhlIEdSVUIgZHJpdmUgaW5zdGVhZCBvZiB0aGUgT1MgZGV2aWNlLgoJSWYgLS1kZWJ1ZyBpcyBzcGVjaWZpZWQsIHRoZW4gc2V0ICRkZWJ1ZyB0byB5ZXMuCglJZiAkZGVidWcgaXMgeWVzLCBydW4gInNldCAteCIuCglNYWtlIHN1cmUgdGhhdCBzdGFnZTEgYW5kIHN0YWdlMiBleGlzdC4KCVdoZW4gY2hlY2tpbmcgZm9yIElOU1RBTExfREVWSUNFLCB1c2UgImNhc2UiIGluc3RlYWQgb2YgImVsaWYicy4KCU1ha2Ugc3VyZSB0aGF0ICRpbnN0YWxsX2RyaXZlIGlzIG5vdCBlbXB0eS4KCUxpa2V3aXNlLCBtYWtlIHN1cmUgdGhhdCAkcm9vdF9kcml2ZSBpcyBub3QgZW1wdHkuCglBbnkgZXJyb3IgbWVzc2FnZSBpcyByZWRpcmVjdGVkIHRvIHRoZSBzdGFuZGFyZCBlcnJvci4KCjE5OTktMTEtMTkgIFBhdmVsIFJvc2tpbiAgPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKCSogc3RhZ2UyL01ha2VmaWxlLmFtIChub2luc3RfREFUQSk6IFJlbmFtZWQgdG8gLi4uCgkobm9kaXN0X25vaW5zdF9EQVRBKTogLi4uIHRoaXMuCgkqIHV0aWwvTWFrZWZpbGUuYW06IHNiaW5fU0NSSVBTIC0+IHNiaW5fU0NSSVBUUy4KCSogdXRpbC9ncnViLWluc3RhbGwuaW46IGdydWJfZGlyIC0+IGdydWJkaXIuCglDaGVjayBpZiAkZ3J1Yl9zaGVsbCBleGlzdHMgYmVmb3JlIHJ1bm5pbmcgaXQuCgkoY29udmVydCk6IEFkZGVkIGEgbWlzc2luZyAidGVzdCIgYWZ0ZXIgImlmIi4KCjE5OTktMTEtMTggIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBjb25maWd1cmUuaW46IE91dHB1dCBncnViLWluc3RhbGwuCgkqIHV0aWwvTWFrZWZpbGUuYW0gKHNiaW5fU0NSSVBUUyk6IE5ldyB2YXJpYWJsZS4KCSogdXRpbC9ncnViLWluc3RhbGwuaW46IE5ldyBmaWxlLgoJKiBkb2NzL01ha2VmaWxlLmFtIChtYW5fTUFOUyk6IEFkZGVkIGdydWItaW5zdGFsbC44LgoJW01BSU5UQUlORVJfTU9ERV0gKCQoc3JjZGlyKS9ncnViLWluc3RhbGwuOCk6IE5ldyB0YXJnZXQuCgkqIGRvY3MvZ3J1Yi1pbnN0YWxsLjg6IE5ldyBmaWxlLiBHZW5lcmF0ZWQgYnkgaGVscDJtYW4uCgkqIGRvY3MvdXNlci1yZWYudGV4aSAoSW52b2tpbmcgZ3J1Yi1pbnN0YWxsKTogTmV3IGNoYXB0ZXIuCgoxOTk5LTExLTE2ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCUZyb20gUGF2ZWwgUm9za2luOgoJKiBzdGFnZTEvc3RhZ2UxLlM6IENoZWNrIGZvciB0aGUgQVBJIHN1YnNldCBzdXBwb3J0IGJpdG1hcAoJcmV0dXJuZWQgYnkgSU5UIDEzIEFIPTQ4aCwgYW5kIGp1bXAgdG8gY2hzX21vZGUgaWYgQUg9NDJoIGlzIG5vdAoJc3VwcG9ydGVkLgoKMTk5OS0xMS0xMyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChpbnN0YWxsX2Z1bmMpOiBXaGVuIHVzaW5nIGEgU3RhZ2UgMS41LCBzZXQKCUNVUlJFTlRfRFJJVkUgdG8gU0FWRURfRFJJVkUgYW5kIENVUlJFTlRfUEFSVElUSU9OIHRvCglTQVZFRF9QQVJUSVRJT04gaWYgc2V0X2RldmljZSBmYWlscy4gSWYgQ1VSUkVOVF9EUklWRSBpcyBlcXVhbAoJdG8gU1JDX0RSSVZFLCB0aGVuIHNldCBDVVJSRU5UX0RSSVZFIHRvIDB4RkYuIFdlIGRvbid0IHdhbnQgdG8KCWVtYmVkIGFueSBkcml2ZSBudW1iZXIgd2hlbmV2ZXIgcG9zc2libGUuCgkqIHN0YWdlMi9kaXNrX2lvLmMgKHNldF9kZXZpY2UpIFtTVEFHRTFfNV06IEFsd2F5cyBzZXQKCUNVUlJFTlRfUEFSVElUSU9OIHRvIFBBUlRJVElPTi4KCjE5OTktMTEtMTMgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJRnJvbSBQYXZlbCBSb3NraW46CgkqIHN0YWdlMS9zdGFnZTEuUyAobGJhX21vZGUpOiBKdW1wIHRvIGNoc19tb2RlIGlmIElOVCAxMyBBSD00MmgKCWZhaWxzLgoKMTk5OS0xMS0xMiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCglEbyBub3QgdXNlIHRoZSBkZXZpY2UgbWFwIGZpbGUgdW5sZXNzIC0tZGV2aWNlLW1hcCBpcyBzcGVjaWZpZWQuCgoJKiBncnViL21haW4uYyAoZGV2aWNlX21hcF9maWxlKTogU2V0IHRvIDAuCgkoZGVmYXVsdF9kZXZpY2VfbWFwX2ZpbGUpOiBSZW1vdmVkLgoJKHVzYWdlKTogRG8gbm90IHByaW50IERFRkFVTFRfREVWSUNFX01BUF9GSUxFLgoJKiBncnViL2FzbXN0dWIuYyAoaW5pdF9kZXZpY2VfbWFwKTogSWYgREVWSUNFX01BUF9GSUxFIGlzIE5VTEwsCglkbyBub3QgdHJ5IHRvIG9wZW4gdGhlIGRldmljZSBtYXAgZmlsZS4KCVNldCBGUCB0byBOVUxMIGJ5IGRlZmF1bHQuCgkqIGRvY3MvZ3J1Yi44OiBSZWdlbmVyYXRlZC4KCjE5OTktMTEtMTEgIE1pY2hhZWwgSG9obXV0aCAgPGhvaG11dGhAaW5ub2NlbnQuY29tPgoKCSogc3RhZ2UyL2Jvb3QuYyAobG9hZF9pbWFnZSk6IGdydWJfY2xvc2Ugd2FzIGNhbGxlZCBhZnRlcgoJcmV0dXJuLCBzbyBleGNoYW5nZSB0aGUgb3JkZXIuCgkqIHN0YWdlMi9zdGFnZTFfNS5jIChjbWFpbik6IENhbGwgZ3J1Yl9jbG9zZSBhZnRlciBncnViX3JlYWQuCglTZXQgUkVUIHRvIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBncnViX3JlYWQsIGFuZCBpZiBSRVQgaXMKCW5vbi16ZXJvLCBjYWxsIGNoYWluX3N0YWdlMi4KCSogc3RhZ2UxL01ha2VmaWxlLmFtIChCVUlMVF9TT1VSQ0VTKTogUmVtb3ZlZC4KCShDTEVBTkZJTEVTKTogU2V0IHRvICQobm9kaXN0X3BrZ2RhdGFfREFUQSkuCgoxOTk5LTExLTExICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCVN1Z2dlc3RlZCBieSBLbGF1cyBSZWljaGw6CgkqIHN0YWdlMi9idWlsdGlucy5jIChwcmludF9yb290X2RldmljZSk6IE5ldyBmdW5jdGlvbi4KCShyb290X2Z1bmMpOiBJZiBubyBhcmd1bWVudCBpcyBzcGVjaWZpZWQsIGNhbGwgdGhlIGZ1bmN0aW9uCglwcmludF9yb290X2RldmljZSBhbmQgcmV0dXJuLgoJKHJvb3Rub3ZlcmlmeV9mdW5jKTogTGlrZXdpc2UuCgkqIHN0YWdlMi9kaXNrX2lvLmMgWyFTVEFHRTFfNV0gKHByaW50X2NvbXBsZXRpb25zKTogQ2FsbAoJcHJpbnRfZXJyb3IgZXZlbiBpZiBJU19GSUxFTkFNRSBpcyB6ZXJvLgoJSWYgRVJSTlVNIGlzIG5vbi16ZXJvLCB0aGVuIHJldHVybiAtMS4KCSogc3RhZ2UyL2NoYXJfaW8uYyBbIVNUQUdFMV81XSAoZ2V0X2NtZGxpbmUpOiBDbGVhciBFUlJOVU0gYWZ0ZXIKCWNhbGxpbmcgcHJpbnRfY29tcGxldGlvbnMgdG8gcHJpbnQgdGhlIGxpc3QgYXMgd2VsbC4KCgkqIHN0YWdlMi9hc20uUyBbIVNUQUdFMV81XSAoY3VycnRpY2tzKTogU2V0ICVlYXggdG8gJWN4OiVkeAoJY29ycmVjdGx5LiBSZXBvcnRlZCBieSBNaWNoYWVsIEhvaG11dGguCgoxOTk5LTExLTA2ICBLbGF1cyBSZWljaGwgIDxLbGF1cy5SZWljaGxAYWxjYXRlbC5hdD4KCgkqIGdydWIvYXNtc3R1Yi5jIChnZXRfZGlza2luZm8pIFtfX2xpbnV4X19dOiBBZnRlciBvcGVuaW5nIHRoZQoJZHJpdmUsIGZsdXNoIHRoZSBjYWNoZSwgb3RoZXIgcHJvZ3MgbWF5IGhhdmUgbGVmdCBvdmVyIHNvbWV0aGluZwoJaW4gdGhlIGNhY2hlLgoKMTk5OS0xMS0wMyAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGZpZy5vcmc+CgoJKiBkZWJpYW4vcnVsZXM6IEFkZCB2YXJpYWJsZXMgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLgoKCSogZGViaWFuL2NvbnRyb2wgKFN0YW5kYXJkcy1WZXJzaW9uKTogVXBkYXRlIHRvIHZlcnNpb24gMy4xLjAuCgkqIGRlYmlhbi9ydWxlcyAoYnVpbGQpOiBJbnN0YWxsIG1hbnBhZ2VzIGludG8gL3Vzci9zaGFyZS9tYW4sIGFuZAoJaW5mbyBpbnRvIC91c3Ivc2hhcmUvaW5mbyBpbiBhY2NvcmRhbmNlIHdpdGggRkhTLgoJKGJpbmFyeS1hcmNoKTogTGlrZXdpc2UsIGFuZCBwdXQgZG9jcyBpbnRvIC91c3Ivc2hhcmUvZG9jLgoJKiBkZWJpYW4vcG9zdGluc3Q6IFVzZSAvdXNyL3NoYXJlL2luZm8sIGFuZCBtYW5hZ2UgY29tcGF0aWJpbGl0eQoJL3Vzci9kb2MvZ3J1YiAtPiAvdXNyL3NoYXJlL2RvYy9ncnViIHN5bWxpbmsuCgkqIGRlYmlhbi9wcmVybTogTGlrZXdpc2UuCgoJKiBzdGFnZTIvTWFrZWZpbGUuYW0gKENMRUFORklMRVMpOiBDaGFuZ2UgdG8KCSQobm9kaXN0X3BrZ2RhdGFfREFUQSkgc28gdGhhdCB0aGUgcmF3IGJpbmFyeSBmaWxlcyBhcmUgZGVsZXRlZC4KCSogc3RhZ2UxL01ha2VmaWxlLmFtIChDTEVBTkZJTEVTKTogTGlrZXdpc2UuCgoxOTk5LTExLTA2ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogZ3J1Yi9hc21zdHViLmMgKGdydWJfcHV0Y2hhcikgW0hBVkVfTElCQ1VSU0VTXTogRG8gbm90IGNhbGwKCXdyZWZyZXNoLiBUaGlzIHdhcyBqdXN0IGFuIGFjY2lkZW50LiBTb3JyeS4KCglSZXBvcnRlZCBieSBBbGFuIE1jTGVhbiA8YW1jbEBmbGFzaC5uZXQ+OgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoZW1iZWRfZnVuYyk6IFRoZSBzZWN0b3IgYXJndW1lbnQgZm9yIHRoZQoJZnVuY3Rpb24gYmlvc2Rpc2sgaXMgY2hhbmdlZCBmcm9tIFNFQ1RPUiArIEkgKiBTRUNUT1JfU0laRSB0bwoJU0VDVE9SICsgSS4KCShmaW5kX2Z1bmMpOiBDbGVhciBFUlJOVU0gYmVmb3JlIGVhY2ggb2YgdGhlIGF0dGVtcHRzLgoKMTk5OS0xMS0wNSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIGRvY3MvbXVsdGlib290LnRleGkgKEJvb3QgaW5mb3JtYXRpb24gZm9ybWF0KTogQWRkIHRoZSBtZW1iZXJzCglgZHJpdmVzX2FkZHInIGFuZCBgZHJpdmVzX2NvdW50JyBpbnRvIHRoZSBNdWx0aWJvb3QgaW5mb3JtYXRpb24KCXN0cnVjdHVyZSwgYW5kIGFkZGVkIHRoZSBkZXNjcmlwdGlvbnMuCgoxOTk5LTExLTAzICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZmlnLm9yZz4KCgkqIHV0aWwvbWJjaGsuYyAobWFpbik6IE1vdmUgdGhlIHZlcnNpb24gbnVtYmVyIGluc2lkZSB0aGUKCXBhcmVudGhlc2VzIHNpbmNlIGl0IGlzIHRoZSBHUlVCIHBhY2thZ2UgdmVyc2lvbiwgbm90IGp1c3QgYW4KCW1iY2hrLXNwZWNpZmljIHZlcnNpb24uCgoxOTk5LTEwLTMwICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZmlnLm9yZz4KCgkqIGRlYmlhbi9ydWxlcyAoYmluYXJ5LWFyY2gpOiBDb21wcmVzcyBtYW4gcGFnZXMuCglTdHJpcCB0aGUgZ3J1YiBzaGVsbC4KCUluc3RhbGwgZXhhbXBsZXMuCgoxOTk5LTExLTAzICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogZG9jcy90dXRvcmlhbC50ZXhpOiBGaXggdHlwb3MgYnkgaXNwZWxsLgoJKiBkb2NzL3VzZXItcmVmLnRleGk6IExpa2V3aXNlLgoJKiBkb2NzL3Byb2ctcmVmLnRleGk6IExpa2V3aXNlLgoJKiBkb2NzL2FwcGVuZGljZXMudGV4aTogTGlrZXdpc2UuCgoxOTk5LTExLTAzICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc3RhZ2UyL2ZzeXNfZXh0MmZzLmMgKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSk6IENoYW5nZWQgdGhlIHR5cGUKCW9mIGBuYW1lX2xlbicgdG8gX191OCBhbmQgYWRkZWQgdGhlIG5ldyBtZW1iZXIgYGZpbGVfdHlwZScgYWZ0ZXIKCWl0LiBUaGlzIGlzIHN0b2xlbiBmcm9tIGxpbnV4L2V4dDJfZnMuaCBpbiBMaW51eCAyLjIuMTMuCglSZXBvcnRlZCBieSBCZW4gSGFycmlzIDxiamgyMUBjYW0uYWMudWs+LgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGRldmljZV9mdW5jKSBbR1JVQl9VVElMXTogQ2FsbAoJbnVsX3Rlcm1pbmF0ZSBiZWZvcmUgY2FsbGluZyBjaGVja19kZXZpY2UuCgoxOTk5LTExLTAyICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc3RhZ2UyL2Rpc2tfaW8uYyAocmVhbF9vcGVuX3BhcnRpdGlvbik6IENoZWNrIGZvciB0aGUgcmlnaHQKCXBhcnRpdGlvbiBmb3IgYW55IGV4dGVuZGVkIHBhcnRpdGlvbiBhcyB3ZWxsLiBTZXQgRVhUIHRvIEkgYWZ0ZXIKCXRoZSBjaGVjayBpcyBkb25lLiBSZXBvcnRlZCBieSBKZWZmIFNjaGVpbmJlcmcKCTxqZWZmc2hAZXJvbHMuY29tPi4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChjb2xvcl9mdW5jKTogVXNlIHRoZSBmdW5jdGlvbgoJbnVsX3Rlcm1pbmF0ZS4KCShkZXZpY2VfZnVuYykgW0dSVUJfVVRJTF06IExpa2V3aXNlLgoJKGhlbHBfZnVuYyk6IExpa2V3aXNlLgoJKGluc3RhbGxfZnVuYyk6IFNhdmUgQ1VSUkVOVF9EUklWRSwgQ1VSUkVOVF9QQVJUSVRJT04gYW5kCglCVUdfR0VPTSBpbiBTUkNfRFJJVkUsIFNSQ19QQVJUSVRJT04gYW5kIFNSQ19HRU9NIHJlc3BlY3RpdmVseSwKCWFuZCB1c2UgdGhlbSB3aGVuIHBhdGNoaW5nIHRoZSBTdGFnZSAyLgoJTlVMLXRlcm1pbmF0ZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlbmFtZSBDT05GSUdfRklMRU5BTUUuCglJZiBJU19TVEFHRTFfNSBpcyB0cnVlLCB0aGVuIGNoZWNrIGlmIHRoZSAicmVhbCBjb25maWcgZmlsZSIKCW9wdGlvbiBpcyBwcmVzZW50LCBhbmQsIGlmIHNvLCBwYXRjaCB0aGUgU3RhZ2UgMiBDT05GSUdfRklMRU5BTUUKCXdpdGggdGhlIGNvbmZpZ3VyYXRpb24gZmlsZW5hbWUgUkVBTF9DT05GSUdfRklMRU5BTUUuCgkoc2V0a2V5X2Z1bmMpOiBVc2UgbnVsX3Rlcm1pbmF0ZSBpbnN0ZWFkIG9mIHRoZSBsb2NhbCBmdW5jdGlvbgoJbnVsbF90ZXJtaW5hdGUuCgkqIHN0YWdlMi9jaGFyX2lvLmMgWyFTVEFHRTFfNV0gKG51bF90ZXJtaW5hdGUpOiBOZXcgZnVuY3Rpb24uCgkqIHN0YWdlMi9zaGFyZWQuaCAobnVsX3Rlcm1pbmF0ZSk6IERlY2xhcmVkLgoKMTk5OS0xMS0wMSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIGRvY3MvZ3J1Yi50ZXhpOiBBZGQgIkkvTyBwb3J0cyBkZXRlY3Rpb24iIGludG8gdGhlIG1lbnUuCgkqIGRvY3MvdXNlci1yZWYudGV4aTogQWRkZWQgYSBkZXNjcmlwdGlvbiBhYm91dCB0aGUgY29tbWFuZAoJImlvcHJvYmUiLgoJKiBkb2NzL3Byb2ctcmVmLnRleGkgKEkvTyBwb3J0cyBkZXRlY3Rpb24pOiBOZXcgY2hhcHRlci4KCjE5OTktMTEtMDEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJRnJvbSBQYXZlbCBSb3NraW46CgkqIHN0YWdlMi9hc20uUyAoaW50MV9oYW5kbGVyKTogVXNlIEVYVF9DKGlvX21hcCkgaW5zdGVhZCBvZgoJaW9fbWFwLgoJKGludDFfaGFuZGxlcik6IFVzZSBFWFRfQyhiaW9zX2tleV9tYXApIGluc3RlYWQgb2YgYmlvc19rZXlfbWFwLgoJKiBncnViL2FzbXN0dWIuYyBbX19PcGVuQlNEX19dOiBJbmNsdWRlIDxzeXMvaW9jdGwuaD4gYW5kCgk8c3lzL2Rpc2tsYWJlbC5oPi4KCVtfX09wZW5CU0RfX10gKGdldF9mbG9wcHlfZGlza19uYW1lKTogQWRkZWQgc3VwcG9ydCBmb3IgT3BlbkJTRC4KCVtfX09wZW5CU0RfX10gKGdldF9pZGVfZGlza19uYW1lKTogTGlrZXdpc2UuCglbX19PcGVuQlNEX19dIChnZXRfc2NzaV9kaXNrX25hbWUpOiBMaWtld2lzZS4KCShnZXRfZHJpdmVfZ2VvbWV0cnkpIFtfX09wZW5CU0RfX106IFVzZSBmb3IgT3BlbkJTRCB0aGUgc2FtZQoJaW9jdGwgYXMgZm9yIE5ldEJTRCBhbmQgRnJlZUJTRC4KCjE5OTktMTAtMzEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBncnViL2FzbXN0dWIuYyAoaW5pdF9kZXZpY2VfbWFwKTogQWRkIGEgZmxvcHB5IGRldmljZSBuYW1lCglpbnRvIHRoZSBkZXZpY2UgbWFwIGZpbGUgZXZlbiBpZiBjaGVja19kZXZpY2UgZmFpbHMuCgkqIHN0YWdlMi9jaGFyX2lvLmMgWyFTVEFHRTFfNV0gKGdldF9jbWRsaW5lKTogQ2xlYXIgRVJSTlVNIGFmdGVyCgljYWxsaW5nIHByaW50X2NvbXBsZXRpb25zLgoKMTk5OS0xMC0yOSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9hc20uUyAodHJhY2tfaW50MTMpOiBEZWZpbmVkIHVuY29uZGl0aW9uYWxseS4gRG8gbm90Cgl1c2UgaW50MyBhbnkgbW9yZSwgYnV0IHJlcGxhY2UgdGhlIGludDEzIGhhbmRsZXIgd2l0aAoJc2V0X3RmX2ludDEzX2hhbmRsZXIuCgkoaW50MV9oYW5kbGVyKTogRGVmaW5lZCB1bmNvbmRpdGlvbmFsbHkuIERvIG5vdCBjaGVjayBmb3IgMHgwRi4KCUFkZCBtaXNzaW5nIGAkJ3MuIElmIHRoZSBjb2RlIGlzIDB4RUMtMHhFRiwgdXNlICVkeCBpbnN0ZWFkIG9mCglpbW1lZGlhdGUuIElmIHRoZSBjb2RlIGlzIDB4RTQtMHhFNywgdXNlIGltbWVkaWF0ZSBpbnN0ZWFkIG9mCgklZHguIFNldCAlZHMgdG8gemVybyBiZWZvcmUgc2Nhbm5pbmcgSU9fTUFQLiBDaGVjayBmb3IgdGhlCglidWZmZXIgb3ZlcnJ1biBvZiBJT19NQVAgYmVmb3JlIGFkZGluZyBhIHBvcnQuCglbIURFRklORV9UUkFDS19JTlQxM10gKGludDEzX2ZpcnN0X2luc3RydWN0aW9uKTogUmVtb3ZlZC4KCVshREVGSU5FX1RSQUNLX0lOVDEzXSAoaW50M19oYW5kbGVyKTogTGlrZXdpc2UuCgkoc2V0X3RmX2ludDEzX2hhbmRsZXIpOiBOZXcgaW50ZXJydXB0IGhhbmRsZXIuCgkoc2V0X3RmX2ludDEzX29mZnNldCk6IE5ldyB2YXJpYWJsZS4KCShzZXRfdGZfaW50MTNfc2VnbWVudCk6IExpa2V3aXNlLgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoaW9wcm9iZV9mdW5jKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWx0aW5faW9wcm9iZSk6IE5ldyB2YXJpYWJsZS4KCShidWlsdGluX3RhYmxlKTogQWRkZWQgYSBwb2ludGVyIHRvIEJVSUxUSU5fSU9QUk9CRS4KCSogc3RhZ2UyL3NoYXJlZC5oIChJT19NQVBfU0laRSk6IE5ldyBtYWNyby4KCSh0cmFja19pbnQxMyk6IERlY2xhcmVkLgoJKGlvX21hcCk6IExpa2V3aXNlLgoKMTk5OS0xMC0yOSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9jaGFyX2lvLmMgKHByaW50X2Vycm9yKSBbIVNUQUdFMV81XTogUHJpbnQgIkVycm9yOiIKCWJlZm9yZSBwcmludCB0aGUgZXJyb3IgbWVzc2FnZS4KCShwcmludF9lcnJvcik6IERvIG5vdCBjbGVhciBFUlJOVU0uCgkqIHN0YWdlMi9jbWRsaW5lLmMgKHJ1bl9zY3JpcHQpOiBJZiBFUlJOVU0gaXMgbm9uLXplcm8sIHNldAoJRVJSTlVNIHRvIEVSUl9OT05FLgoJKGVudGVyX2NtZGxpbmUpOiBDbGVhciBFUlJOVU0gYWZ0ZXIgcHJpbnRfZXJyb3IuCgoxOTk5LTEwLTI4ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCUZyb20gUGF2ZWwgUm9za2luOgoJKiBzdGFnZTIvc3RhZ2UyLmMgKHJ1bl9tZW51KSBbR1JVQl9VVElMXTogRG8gbm90IHVzZSBJQk0gc3BlY2lhbAoJY2hhcmFjdGVycyBpbiB0aGUgbWVzc2FnZSwgYnV0IHVzZSBhc2NpaSBuYW1lcyBpbnN0ZWFkLgoJKHJ1bl9tZW51KSBbIUdSVUJfVVRJTF06IFVzZSBESVNQX1VQIGFuZCBESVNQX0RPV04gaW5zdGVhZCBvZgoJdGhlIGFzY2lpIGNvZGVzLgoJKiBzdGFnZTIvc2hhcmVkLmggWyFBQ1NfVUxDT1JORVJdIChBQ1NfVUxDT1JORVIpOiBOZXcgbWFjcm8uCglbIUFDU19VTENPUk5FUl0gKEFDU19VUkNPUk5FUik6IExpa2V3aXNlLgoJWyFBQ1NfVUxDT1JORVJdIChBQ1NfTExDT1JORVIpOiBMaWtld2lzZS4KCVshQUNTX1VMQ09STkVSXSAoQUNTX0xSQ09STkVSKTogTGlrZXdpc2UuCglbIUFDU19VTENPUk5FUl0gKEFDU19ITElORSk6IExpa2V3aXNlLgoJWyFBQ1NfVUxDT1JORVJdIChBQ1NfVkxJTkUpOiBMaWtld2lzZS4KCVshQUNTX1VMQ09STkVSXSAoQUNTX0xBUlJPVyk6IExpa2V3aXNlLgoJWyFBQ1NfVUxDT1JORVJdIChBQ1NfUkFSUk9XKTogTGlrZXdpc2UuCglbIUFDU19VTENPUk5FUl0gKEFDU19VQVJST1cpOiBMaWtld2lzZS4KCVshQUNTX1VMQ09STkVSXSAoQUNTX0RBUlJPVyk6IExpa2V3aXNlLgoJW0dSVUJfVVRJTF0gKERJU1BfVUwpOiBTZXQgdG8gQUNTX1VMQ09STkVSLgoJW0dSVUJfVVRJTF0gKERJU1BfVVIpOiBTZXQgdG8gQUNTX1VSQ09STkVSLgoJW0dSVUJfVVRJTF0gKERJU1BfTEwpOiBTZXQgdG8gQUNTX0xMQ09STkVSLgoJW0dSVUJfVVRJTF0gKERJU1BfTFIpOiBTZXQgdG8gQUNTX0xSQ09STkVSLgoJW0dSVUJfVVRJTF0gKERJU1BfSE9SSVopOiBTZXQgdG8gQUNTX0hMSU5FLgoJW0dSVUJfVVRJTF0gKERJU1BfVkVSVCk6IFNldCB0byBBQ1NfVkxJTkUuCglbR1JVQl9VVElMXSAoRElTUF9MRUZUKTogU2V0IHRvIEFDU19MQVJST1cuCglbR1JVQl9VVElMXSAoRElTUF9SSUdIVCk6IFNldCB0byBBQ1NfUkFSUk9XLgoJW0dSVUJfVVRJTF0gKERJU1BfVVApOiBTZXQgdG8gQUNTX1VBUlJPVy4KCVtHUlVCX1VUSUxdIChESVNQX0RPV04pOiBTZXQgdG8gQUNTX0RBUlJPVy4KCjE5OTktMTAtMjggIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoa2V5Y29kZV9mdW5jKTogUmVtb3ZlZC4KCShidWlsdGluX2tleWNvZGUpOiBMaWtld2lzZS4KCShzdHJ1Y3Qga2V5c3ltKTogTmV3IHN0cnVjdHVyZS4KCShrZXlzeW1fdGFibGUpOiBOZXcgdmFyaWFibGUuCgkoc2V0a2V5X2Z1bmMpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbHRpbl9zZXRrZXkpOiBOZXcgdmFyaWFibGUuCgkoYnVpbHRpbl90YWJsZSk6IFJlbW92ZWQgdGhlIHBvaW50ZXIgdG8gQlVJTFRJTl9LRVlDT0RFLCBhbmQKCWFkZGVkIGEgcG9pbnRlciB0byBCVUlMVElOX1NFVEtFWS4KCSogc3RhZ2UyL2NvbW1vbi5jIFshU1RBR0UxXzVdIChlcnJfbGlzdCk6IEFkZGVkCglFUlJfQkFEX0FSR1VNRU5ULgoJKiBzdGFnZTIvc2hhcmVkLmggKGdydWJfZXJyb3JfdCk6IEFkZGVkIEVSUl9CQURfQVJHVU1FTlQuCgkoS0VZX01BUF9TSVpFKTogU2V0IHRvIDEyOC4KCShhc2NpaV9rZXlfbWFwKTogRGVjbGFyZWQuCgkqIHN0YWdlMi9hc20uUyBbIVNUQUdFMV81XSAocmVtYXBfYXNjaWlfY2hhcik6IE5ldyBmdW5jdGlvbi4KCVshU1RBR0UxXzVdIChhc2NpaV9rZXlfbWFwKTogTmV3IHZhcmlhYmxlLgoJWyFTVEFHRTFfNV0gKGdldGtleSk6IENhbGwgcmVtYXBfYXNjaWlfY2hhciBhZnRlciBpbnQxNi4KCVshU1RBR0UxXzVdIChjaGVja2tleSk6IExpa2V3aXNlLgoJKiBncnViL2FzbXN0dWIuYyAoYXNjaWlfa2V5X21hcCk6IE5ldyB2YXJpYWJsZS4KCSogZG9jcy91c2VyLXJlZi50ZXhpIChHZW5lcmFsIGNvbW1hbmRzKTogQWRkZWQgYSBkZXNjcmlwdGlvbgoJYWJvdXQgdGhlIGNvbW1hbmQgInNldGtleSIuCgkoU3RhZ2UyIGVycm9ycyk6IEFkZGVkIGEgZGVzY3JpcHRpb24gYWJvdXQgRVJSX0JBRF9BUkdVTUVOVC4KCjE5OTktMTAtMjcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvZGlza19pby5jIChzZXRfZGV2aWNlKSBbIVNUQUdFMV81XTogUmVtb3ZlIHRoZQoJcHJlbGltaW5hcnkgTWFjaC1zdHlsZSBkZXZpY2UgbmFtZSBzdXBwb3J0LiBJJ3ZlIGRlY2lkZWQgdGhhdAoJdGhlIHN1cHBvcnQgaXMgbm90IG5lY2Vzc2FyeS4KCShzZXR1cF9wYXJ0KSBbIVNUQUdFMV81XTogRG8gbm90IHN0cmlwIHRoZSBsZWFkaW5nICIvZGV2LyIuCgkqIGRvY3MvaGVscDJtYW46IFVwZ3JhZGVkIHRvIDEuMDE2LgoJKiBkb2NzL21iY2hrLjE6IFJlZ2VuZXJhdGVkLgoJKiBkb2NzL2dydWIuODogTGlrZXdpc2UuCgkqIGdydWIvYXNtc3R1Yi5jOiBSZW5hbWUgS0VZX01BUCB0byBCSU9TX0tFWV9NQVAuCgoJKiBzdGFnZTIvYXNtLlMgWyFTVEFHRTFfNV0gKHNldF9pbnQxNV9oYW5kbGVyKTogVXNlIDAgaW5zdGVhZCBvZgoJdGhlIG1heGltdW0gbnVtYmVyIGZvciB0aGUgc2VnbWVudC4KCVshU1RBR0UxXzVdICh1bnNldF9pbnQxNV9oYW5kbGVyKTogTGlrZXdpc2UuCglbIVNUQUdFMV81XSAoaW50MTVfaGFuZGxlcik6IEFsbW9zdCByZXdyaXR0ZW4uIElmIG5vbi1jYXJyaWVyLAoJaWdub3JlIHRoZSBzY2FuY29kZS4gSWYgdGhlIHNjYW5jb2RlIGlzIEUxIG9yIEUwLCB0aGVuIHNldAoJSU5UMTVfU0tJUF9GTEFHIHRvIDB4NzQsIGFuZCBpZiB0aGUgcHJldmlvdXMgc2NhbmNvZGUgaXMgRTEgb3IKCUUwLCBzZXQgSU5UMTVfU0tJUF9GTEFHIHRvIDB4ZWEuIENsZWFyIGJpdCA3IGluICVkbC4gU2F2ZSBiaXQgNwoJb2YgJWFsIGluICVibC4gRG8gbm90IGxjYWxsLiBVc2UgbGptcCBpbnN0ZWFkLgoJWyFTVEFHRTFfNV0gKGtleV9tYXApOiBSZW5hbWVkIHRvIC4uLgoJWyFTVEFHRTFfNV0gKGJpb3Nfa2V5X21hcCk6IC4uLiB0aGlzLgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoa2V5Y29kZV9mdW5jKTogQ2hlY2sgaWYgRlJPTSBpcyBncmVhdGVyCgl0aGFuIDB4ZmYgaW5zdGVhZCBvZiBkb3VibGUtY2hlY2tpbmcgZm9yIFRPLiBVc2UgQklPU19LRVlfTUFQCglpbnN0ZWFkIG9mIEtFWV9NQVAuCgkqIHN0YWdlMi9zaGFyZWQuaCAoS0VZX01BUF9TSVpFKTogU2V0IHRvIDMyLgoJKGtleV9tYXApOiBSZW1vdmVkLgoJKGJpb3Nfa2V5X21hcCk6IERlY2xhcmVkLgoKMTk5OS0xMC0yNiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCglOb3cgdGhlIEJJT1MgZHJpdmUgcmVtYXBwaW5nIGlzIGZ1bmN0aW9uYWwuCgoJKiBzdGFnZTIvYXNtLlMgW0RFRklORV9UUkFDS19JTlQxM10gKHRyYWNrX2ludDEzKTogVXNlICVlZGkKCWluc3RlYWQgb2YgZGlyZWN0IGFkZHJlc3Nlcy4KCVByZWZpeCBEQVRBMzIgdG8gdGhlIGNhbGxzIGZvciByZWFsX3RvX3Byb3QgYW5kIHByb3RfdG9fcmVhbC4KCUZpeCB0aGUgYWRkcmVzcyBvZiBEUklWRTogNCglZWJwKSAtPiA4KCVlYnApLgoJKHNldF9pbnQxNV9oYW5kbGVyKTogVXNlICVlZGkgaW5zdGVhZCBvZiBkaXJlY3QgYWRkcmVzc2VzLgoJKHVuc2V0X2ludDE1X2hhbmRsZXIpOiBMaWtld2lzZS4KCShzZXRfaW50MTNfaGFuZGxlcik6IENvcHkgRFJJVkVfTUFQX1NJWkUgKiAyIGJ5dGVzIGluc3RlYWQgb2YKCURSSVZFX01BUF9TSVpFIGJ5dGVzIG9mIE1BUC4KCUZpeCB0aGUgYWRkcmVzcyBvZiBNQVA6IDQoJWVicCkgLT4gOCglZWJwKS4KCVVzZSAlZWRpIGluc3RlYWQgb2YgZGlyZWN0IGFkZHJlc3Nlcy4KCShpbnQxM19oYW5kbGVyKTogRG8gbm90IHNldCAlZHMgdG8gJWNzLiBVc2UgdGhlIHNlZ21lbnQgb3ZlcnJpZGUKCXByZWZpeCBvZiAlY3MgaW5zdGVhZC4KCVB1c2ggdGhlIGZsYWdzIHB1c2hlZCBieSB0aGUgY2FsbGVlIGluc3RlYWQgb2YgdGhlIGN1cnJlbnQuCglTZXQgdGhlIGZsYWdzIGluIHRoZSBzdGFjayB0byB0aGUgZmxhZ3MgcmV0dXJuZWQgYnkgdGhlIG9yaWdpbmFsCglpbnQxMyBjYWxsLgoJKGRyaXZlX21hcCk6IDRieXRlcy1hbGlnbmVkLgoJKiBzdGFnZTIvZGlza19pby5jIChncnViX2Nsb3NlKTogRG8gbm90IHNldCBFUlJOVU0gZXZlbiBpZgoJRlNZU19UWVBFIGlzIE5VTV9GU1lTLgoKMTk5OS0xMC0yNSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMS9zdGFnZTEuUzogTG9uZyBqdW1wIHRvIHJlYWxfc3RhcnQsIGJlY2F1c2Ugc29tZSBib2d1cwoJQklPU2VzIGp1bXAgdG8gMDdDMDowMDAwIGluc3RlYWQgb2YgMDAwMDo3QzAwLgoJKHJlYWxfc3RhcnQpOiBOZXcgbGFiZWwuCgkqIGRvY3MvTWFrZWZpbGUuYW0gKGdydWIuaW5mbyk6IFJlbW92ZWQuIFVzZSB0aGUgZGVmYXVsdCBydWxlCglpbnN0ZWFkLgoKMTk5OS0xMC0yNSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9hc20uUyBbREVGSU5FX1RSQUNLX0lOVDEzXSAoaW50M19oYW5kbGVyKTogU2F2ZSB0aGUKCW1vZGlmaWVkIEZMQUdTIGluIDYoJWJwKSBpbnN0ZWFkIG9mIDQoJWJwKS4KCURlY3JlYXNlICVieCBiZWZvcmUgcmVzdG9yaW5nIHRoZSBmaXJzdCBpbnN0cnVjdGlvbi4KCVtERUZJTkVfVFJBQ0tfSU5UMTNdICh0cmFja19pbnQxMyk6IEdvIHRvIHRoZSByZWFsIG1vZGUgYmVmb3JlCglzZXR0aW5nIHVwIHRoZSByZWdpc3RlcnMgZm9yIHRoZSBpbnQxMyBjYWxsLgoKMTk5OS0xMC0yNCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCglBZGQgdGhlIHByb3RvdHlwZSBvZiBhIGZ1bmN0aW9uIHRvIHByb2JlIEkvTyBwb3J0cyB1c2VkIGZvciBhCglCSU9TIGRyaXZlLgoKCSogc3RhZ2UyL2FzbS5TIFtERUZJTkVfVFJBQ0tfSU5UMTNdICh0cmFja19pbnQxMyk6IE5ldyBmdW5jdGlvbi4KCVtERUZJTkVfVFJBQ0tfSU5UMTNdIChpbnQxX2hhbmRsZXIpOiBOZXcgaW50ZXJydXB0IGhhbmRsZXIgZm9yCgl0aGUgcmVhbCBtb2RlLgoJW0RFRklORV9UUkFDS19JTlQxM10gKGludDNfaGFuZGxlcik6IExpa2V3aXNlLgoJW0RFRklORV9UUkFDS19JTlQxM10gKGlvX21hcCk6IE5ldyB2YXJpYWJsZS4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChxdWl0X2Z1bmMpIFshR1JVQl9VVElMXTogRml4IGEgdHlwby4KCjE5OTktMTAtMjQgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJVGhlIG5ldyBHUlVCIG1hbnVhbCBiZWNvbWVzIG9mZmljaWFsLgoKCSogZG9jcy9ncnViLnRleGk6IFJlcGxhY2VkIHdpdGggbmV3LWdydWIudGV4aS4KCSogZG9jcy9uZXctZ3J1Yi50ZXhpOiBSZW1vdmVkLgoJKiBkb2NzL01ha2VmaWxlLmFtIChncnViX1RFWElORk9TKTogTmV3IHZhcmlhYmxlLgoJKFVORklOSVNIRURfTUFOVUFMUyk6IFJlbW92ZWQuCgkoRVhUUkFfRElTVCk6IERlbGV0ZWQgJChVTkZJTklTSEVEX01BTlVBTFMpLgoKMTk5OS0xMC0yNCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChkZXZpY2VfZnVuYykgWyFHUlVCX1VUSUxdOiBTZXQgRVJSTlVNIHRvCglFUlJfVU5SRUNPR0lOSVpFRCBhbmQgcmV0dXJuIDEuCgkoaW1wc3Byb2JlX2Z1bmMpIFtHUlVCX1VUSUxdOiBMaWtld2lzZS4KCShxdWl0X2Z1bmMpIFshR1JVQl9VVElMXTogTGlrZXdpc2UuCgkqIGRvY3MvdHV0b3JpYWwudGV4aTogUmVuYW1lICJEZXZpY2UgU3ludGF4IiB0byAiRmlsZW5hbWUiLgoJQWRkZWQgbWFueSBjcm9zcy1yZWZlcmVuY2VzLgoJKiBkb2NzL25ldy1ncnViLnRleGk6ICJEZXZpY2UgU3ludGF4IiAtPiAiRmlsZW5hbWUiLgoJKiBkb2NzL3VzZXItcmVmLnRleGk6IEZpeCB0eXBvcyBhbmQgYWRkZWQgc29tZSBjcm9zcy1yZWZlcmVuY2VzLgoJKiBkb2NzL3Byb2ctcmVmLnRleGk6IExpa2V3aXNlLgoJKiBkb2NzL2FwcGVuZGljZXMudGV4aTogTGlrZXdpc2UuCgoxOTk5LTEwLTIzICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKG1hcF9mdW5jKTogSWYgQklPU19EUklWRV9NQVAgYWxyZWFkeQoJY29udGFpbnMgRlJPTSwgb3ZlcnJpZGUgdGhlIGV4aXN0c2luZyBlbnRyeS4KCUlmIFRPIGlzIGVxdWFsIHRvIEZST00sIGRlbGV0ZSB0aGUgZXhpc3RpbmcgZW50cnkgaWYgYW55LgoJKGtleWNvZGVfZnVuYyk6IExpa2V3aXNlLgoJKiBkb2NzL3VzZXItcmVmLnRleGkgKENvbW1hbmQpOiBVc2UgdGhlIGxpc3Qgb2YgYEBkZWZmbidzCglpbnN0ZWFkIG9mIEB0YWJsZS4KCShCYXNpYyB1c2FnZSk6IFVzZSBAb3B0aW9uIGluc3RlYWQgb2YgQGNvZGUuCgkoSW52b2tpbmcgbWJjaGspOiBMaWtld2lzZS4KCjE5OTktMTAtMjMgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvYXNtLlMgWyFTVEFHRTFfNV0gKHNldF9pbnQxNV9oYW5kbGVyKTogTmV3IGZ1bmN0aW9uLgoJWyFTVEFHRTFfNV0gKHVuc2V0X2ludDE1X2hhbmRsZXIpOiBMaWtld2lzZS4KCVshU1RBR0UxXzVdIChpbnQxNV9oYW5kbGVyKTogTmV3IGludGVycnVwdCBoYW5kbGVyIGZvciB0aGUgcmVhbAoJbW9kZS4KCVshU1RBR0UxXzVdIChpbnQxNV9vZmZzZXQpOiBOZXcgdmFyaWFibGUuCglbIVNUQUdFMV81XSAoaW50MTVfc2VnbWVudCk6IExpa2V3aXNlLgoJWyFTVEFHRTFfNV0gKGtleV9tYXApOiBMaWtld2lzZS4KCVshU1RBR0UxXzVdIChzZXRfaW50MTNfaGFuZGxlcik6IFVzZSB0aGUgbWFjcm8gQUJTIGZvcgoJSU5UMTNfT0ZGU0VUIGFuZCBJTlQxM19TRUdNRU5ULgoJKiBzdGFnZTIvc2hhcmVkLmggKEtFWV9NQVBfU0laRSk6IE5ldyBtYWNyby4KCShzZXRfaW50MTVfaGFuZGxlcik6IERlY2xhcmVkLgoJKHVuc2V0X2ludDE1X2hhbmRsZXIpOiBMaWtld2lzZS4KCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGJvb3RfZnVuYyk6IERvIG5vdCBhbGxvdyBJIHRvIGJlIGVxdWFsIHRvCglEUklWRV9NQVBfU0laRS4KCUNhbGwgdW5zZXRfaW50MTVfaGFuZGxlciB1bmxlc3MgS0VSTkVMX1RZUEUgaXMgS0VSTkVMX1RZUEVfTk9ORS4KCShtYXBfZnVuYyk6IFNlYXJjaCBmb3IgYW4gZW1wdHkgc2xvdCB0aWxsIEkgaXMgbGVzcyB0aGFuCglEUklWRV9NQVBfU0laRS4KCUNoZWNrIGlmIEkgaXMgZXF1YWwgdG8gRFJJVkVfTUFQX1NJWkUgaW5zdGVhZCBvZiBpZiBJIGlzIGdyZWF0ZXIKCXRoYW4gRFJJVkVfTUFQX1NJWkUuCgkoa2V5Y29kZV9mdW5jKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWx0aW5fa2V5Y29kZSk6IE5ldyB2YXJpYWJsZS4KCShidWlsdGluX3RhYmxlKTogQWRkZWQgYSBwb2ludGVyIHRvIEJVSUxUSU5fS0VZQ09ERS4KCSogZ3J1Yi9hc21zdHViLmMgKHNldF9pbnQxNV9oYW5kbGVyKTogTmV3IGZ1bmN0aW9uLgoJKHVuc2V0X2ludDE1X2hhbmRsZXIpOiBMaWtld2lzZS4KCShrZXlfbWFwKTogTmV3IHZhcmlhYmxlLgoKMTk5OS0xMC0yMyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCglGcm9tIE1pY2hhZWwgSG9obXV0aCA8aG9obXV0aEBpbm5vY2VudC5jb20+OgoJKiBhY2NvbmZpZy5oIChIQVZFX1VTQ09SRV9VU0NPUkVfQlNTX1NUQVJUX1NZTUJPTCk6IEFkZGVkIHRoZQoJYHVuZGVmJyBlbnRyeS4KCShIQVZFX0VEQVRBX1NZTUJPTCk6IExpa2V3aXNlLgoJKEhBVkVfVVNDT1JFX0VEQVRBX1NZTUJPTCk6IExpa2V3aXNlLgoJKiBhY2luY2x1ZGUubTQgKGdydWJfQ0hFQ0tfVVNDT1JFX1VTQ09SRV9CU1NfU1RBUlRfU1lNQk9MKTogTmV3CglmdW5jdGlvbi4KCShncnViX0NIRUNLX0VEQVRBX1NZTUJPTCk6IExpa2V3aXNlLgoJKGdydWJfQ0hFQ0tfVVNDT1JFX0VEQVRBX1NZTUJPTCk6IExpa2V3aXNlLgoJKiBjb25maWd1cmUuaW46IENoZWNrIGZvciBfX2JzcywgZWRhdGEgYW5kIF9lZGF0YS4KCSogbmV0Ym9vdC9NYWtlZmlsZS5hbSAoRFJJVkVSUyk6IERlbGV0ZWQgbnM4MzkwLmMgYW5kIG5zODM5MC5oLgoJKGxpYmRyaXZlcnNfYV9MSUJBREQpOiBOZXcgdmFyaWFibGUuCgkoJChsaWJkcml2ZXJzX2FfTElCQUREKSk6IE5ldyB0YXJnZXQuCgkobmVwY2lfb19DRkxBR1MpOiBOZXcgdmFyaWFibGUuCgkobmVfb19DRkxBR1MpOiBMaWtld2lzZS4KCSh3ZF9vX0NGTEFHUyk6IExpa2V3aXNlLgoJKHQ1MDNfb19DRkxBR1MpOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9mc3lzX3RmdHAuYyAodGZ0cF9jbG9zZSk6IE5ldyBmdW5jdGlvbi4KCSogc3RhZ2UyL2Jvb3QuYyAobG9hZF9pbWFnZSk6IENhbGwgZ3J1Yl9jbG9zZSBiZWZvcmUgcmV0dXJuLgoJKGxvYWRfaW5pdHJkKTogTGlrZXdpc2UuCgkobG9hZF9tb2R1bGUpOiBMaWtld2lzZS4KCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGNhdF9mdW5jKTogTGlrZXdpc2UuCgkoY2hhaW5sb2FkZXJfZnVuYyk6IExpa2V3aXNlLgoJKGNvbmZpZ2ZpbGVfZnVuYyk6IExpa2V3aXNlLgoJKGVtYmVkX2Z1bmMpOiBMaWtld2lzZS4KCShmaW5kX2Z1bmMpOiBMaWtld2lzZS4KCShpbnN0YWxsX2Z1bmMpOiBTZXQgSVNfT1BFTiB0byB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgZ3J1Yl9vcGVuLgoJSWYgSVNfT1BFTiBpcyBub24temVybywgY2FsbCBncnViX2Nsb3NlIGJlZm9yZSByZXR1cm4uCgkoc2V0dXBfZnVuYyk6IENhbGwgZ3J1Yl9jbG9zZSBhZnRlciBncnViX29wZW4uCgkodGVzdGxvYWQpOiBDYWxsIGdydWJfY2xvc2UgYmVmb3JlIHJldHVybi4KCSogc3RhZ2UyL2Rpc2tfaW8uYyAoZnN5c190YWJsZSk6IEFkZCB0aGUgYGNsb3NlJyBtZW1iZXIgaW50bwoJZWFjaCBvZiB0aGUgZW50cmllcy4gRm9yIFRGVFAsIHRmdHBfY2xvc2UgaXMgYWRkZWQsIGFuZCBmb3IgdGhlCglyZXN0LCBOVUxMIGlzIGFkZGVkLgoJKGdydWJfcmVhZCk6ICJ8IiAtPiAifHwiLgoJKGdydWJfY2xvc2UpOiBOZXcgZnVuY3Rpb24uCgkqIHN0YWdlMi9maWxlc3lzLmggW0ZTWVNfVEZUUF0gKHRmdHBfY2xvc2UpOiBEZWNsYXJlZC4KCShzdHJ1Y3QgZnN5c19lbnRyeSk6IEFkZGVkIGNsb3NlX2Z1bmMuCgkqIHN0YWdlMi9zaGFyZWQuaCAoZ3J1Yl9jbG9zZSk6IERlY2xhcmVkLgoJKiBzdGFnZTIvc3RhZ2UxXzUuYyAoY21haW4pOiBDYWxsIGdydWJfY2xvc2UgYWZ0ZXIgZ3J1Yl9vcGVuLgoJKiBzdGFnZTIvc3RhZ2UyLmMgKGNtYWluKTogQ2xlYXIgRVJSTlVNIGFmdGVyIGNhbGxpbmcKCWZpbmRfY29tbWFuZCB0byBqdXN0IGlnbm9yZSB0aGUgZXJyb3IgY29kZS4KCUNhbGwgZ3J1Yl9jbG9zZSBhZnRlciBsb2FkaW5nIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuCgoJKiBzdGFnZTIvYXNtLlMgKG1haW4pOiBDbGVhbiBvdXQgdGhlIGJzcy4KCjE5OTktMTAtMjMgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBkb2NzL25ldy1ncnViLnRleGk6IFVwZGF0ZWQuCgkqIGRvY3MvdXNlci1yZWYudGV4aTogTGlrZXdpc2UuCgkqIGRvY3MvdHV0b3JpYWwudGV4aTogTGlrZXdpc2UuCgkqIGRvY3MvcHJvZy1yZWYudGV4aTogTGlrZXdpc2UuCgkqIGRvY3MvYXBwZW5kaWNlcy50ZXhpOiBMaWtld2lzZS4KCjE5OTktMTAtMjIgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBkb2NzL3Byb2ctcmVmLnRleGk6IE5ldyBmaWxlLgoJKiBkb2NzL2FwcGVuZGljZXMudGV4aTogTGlrZXdpc2UuCgkqIGRvY3MvTWFrZWZpbGUuYW0gKFVORklOSVNIRURfTUFOVUFMUyk6IEFkZGVkIHByb2ctcmVmLnRleGkgYW5kCglhcHBlbmRpY2VzLnRleGkuCgoxOTk5LTEwLTIyICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogZG9jcy91c2VyLXJlZi50ZXhpOiBOZXcgZmlsZS4KCSogZG9jcy9NYWtlZmlsZS5hbSAoVU5GSU5JU0hFRF9NQU5VQUxTKTogQWRkZWQgdXNlci1yZWQudGV4aS4KCjE5OTktMTAtMjEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJQWRkIEJJT1MgZHJpdmUgcmVtYXBwaW5nIHN1cHBvcnQgZm9yIGNoYWluLWxvYWRpbmcgc29tZSBmb29saXNoCglvcGVyYXRpbmcgc3lzdGVtcy4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChiaW9zX2RyaXZlX21hcCk6IE5ldyB2YXJpYWJsZS4KCShib290X2Z1bmMpOiBJZiBLRVJORUxfVFlQRSBpcyBLRVJORUxfVFlQRV9DSEFJTkxPQURFUiwgY2hlY2sKCWlmIEJJT1NfRFJJVkVfTUFQIGNvbnRhaW5zIG1lYW5pbmdmdWwgdmFsdWVzLiBJZiBzbywgc2VhcmNoIGZvcgoJU0FWRURfRFJJVkUgaW4gQklPU19EUklWRV9NQVAgYW5kIGV4Y2hhbmdlIFNBVkVEX0RSSVZFIHdpdGggdGhlCgltYXBwZWQgZHJpdmUgaWYgZm91bmQuIEFuZCB0aGVuIGNhbGwgc2V0X2ludDEzX2hhbmRsZXIuCgkobWFwX2Z1bmMpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbHRpbl9tYXApOiBOZXcgdmFyaWFibGUuCgkoYnVpbHRpbl90YWJsZSk6IEFkZGVkIGEgcG9pbnRlciB0byBCVUlMVElOX01BUC4KCSogc3RhZ2UyL2FzbS5TIChBQlMpOiBOZXcgbWFjcm8uCglbIVNUQUdFMV81XSAoc2V0X2ludDEzX2hhbmRsZXIpOiBOZXcgZnVuY3Rpb24uCglbIVNUQUdFMV81XSAoaW50MTNfaGFuZGxlcik6IE5ldyBpbnRlcnJ1cHQgaGFuZGxlciBmb3IgdGhlIHJlYWwKCW1vZGUuCglbIVNUQUdFMV81XSAoZHJpdmVfbWFwKTogTmV3IHZhcmlhYmxlLgoJWyFTVEFHRTFfNV0gKGludDEzX2hhbmRsZXJfZW5kKTogTmV3IGxhYmVsIHVzZWQgZm9yIGp1c3QKCWNvbXB1dGluZyB0aGUgZW5kIGFkZHJlc3Mgb2YgaW50MTNfaGFuZGxlci4KCSogc3RhZ2UyL3NoYXJlZC5oIChEUklWRV9NQVBfU0laRSk6IE5ldyBtYWNyby4KCShzZXRfaW50MTNfaGFuZGxlcik6IERlY2xhcmVkLgoJKiBncnViL2FzbXN0dWIuYyAoc2V0X2ludDEzX2hhbmRsZXIpOiBOZXcgZnVuY3Rpb24uIERvIG5vdGhpbmcuCgoxOTk5LTEwLTIwICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGZpbmRfZnVuYyk6IFByaW50IG9ubHkgdGhlIGRldmljZSBuYW1lcy4KCSogZG9jcy90dXRvcmlhbC50ZXhpOiBOZXcgZmlsZS4KCSogZG9jcy9NYWtlZmlsZS5hbSAoVU5GSU5JU0hFRF9NQU5VQUxTKTogQWRkZWQgdHV0b3JpYWwudGV4aS4KCSglLmMudGV4aSk6IFVzZSAkKFNIRUxMKSBpbnN0ZWFkIG9mIC9iaW4vc2guCgkoJS5oLnRleGkpOiBMaWtld2lzZS4KCSglLlMudGV4aSk6IExpa2V3aXNlLgoKMTk5OS0xMC0yMCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9jaGFyX2lvLmMgKG1lbWNoZWNrKTogRml4IHRoZSBjaGVja3M6ICI8PSIgLT4gIjwiLgoJUmVwb3J0ZWQgYnkgTWlrZSBIaWNrcyA8aGljazAwODhAdW1uLmVkdT4uCgoxOTk5LTEwLTE5ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGZpbmRfZnVuYyk6IE5ldyBmdW5jdGlvbi4KCShidWlsdGluX2ZpbmQpOiBOZXcgdmFyaWFibGUuCgkoaGlkZV9mdW5jKTogU2F2ZSBTQVZFRF9EUklWRSBhbmQgU0FWRURfUEFSVElUSU9OIHRvIFRNUF9EUklWRQoJYW5kIFRNUF9QQVJUSVRJT04sIHJlc3BlY3RpdmVseSwgYW5kIHJlc290cmUgdGhlbSBiZWZvcmUgcmV0dXJuLgoJKHVuaGlkZV9mdW5jKTogTGlrZXdpc2UuCgkoc2V0dXBfZnVuYyk6IExpa2V3aXNlLiBBbmQgc2V0IFNBVkVEX0RSSVZFIGFuZCBTQVZFRF9QQVJUSVRJT04KCWluc3RlYWQgb2YgQ1VSUkVOVF9EUklWRSBhbmQgQ1VSUkVOVF9QQVJUSVRJT04gdG8gSU1BR0VfRFJJVkUKCWFuZCBJTUFHRV9QQVJUSVRJT04gYmVmb3JlIHJ1bm5pbmcgaW5zdGFsbF9mdW5jLgoJKGJ1aWx0aW5fdGFibGUpOiBBZGRlZCBhIHBvaW50ZXIgdG8gQlVJTFRJTl9GSU5ELgoKMTk5OS0xMC0xOSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIGRvY3MvTWFrZWZpbGUuYW0gKFVORklOSVNIRURfTUFOVUFMUyk6IE5ldyB2YXJpYWJsZS4KCShFWFRSQV9ESVNUKTogQWRkZWQgJChVTkZJTklTSEVEX01BTlVBTFMpLgoJKiBkb2NzL25ldy1ncnViLnRleGk6IE5ldyBmaWxlLgoKMTk5OS0xMC0xOSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIGRvY3MvTWFrZWZpbGUuYW0gKG1hbl9NQU5TKTogQWRkZWQgbWJjaGsuMS4KCVtNQUlOVEFJTkVSX01PREVdIChtYmNoay4xKTogTmV3IHRhcmdldC4KCSogZG9jcy9tYmNoay4xOiBOZXcgZmlsZS4gR2VuZXJhdGVkIGJ5IGhlbHAybWFuLgoKMTk5OS0xMC0xOCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIE1ha2VmaWxlLmFtIChTVUJESVJTKTogQWRkZWQgdXRpbC4KCSogY29uZmlndXJlLmluOiBPdXRwdXQgdXRpbC9NYWtlZmlsZS4KCSogdXRpbC9NYWtlZmlsZS5hbTogTmV3IGZpbGUuCgkqIHV0aWwvbWJjaGsuYzogTGlrZXdpc2UuCgkqIHV0aWwvTWFrZWZpbGUuaW46IExpa2V3aXNlLiBHZW5lcmF0ZWQgYnkgYXV0b21ha2UuCgoxOTk5LTEwLTE3ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogZG9jcy9NYWtlZmlsZS5hbSAoLnRleGkpOiBDYW5jZWxlZCBiZWNhdXNlIHRoZSBkZXBlbmRlY2llcyBjYW4KCWJlIGNpcmN1bGF0ZWQuCgkqIHN0YWdlMi9idWlsdGlucy5jIChlbWJlZF9mdW5jKTogU2V0IEJVRl9UUkFDSyB0byAtMSBiZWZvcmUKCXdyaXRpbmcJdGhlIFN0YWdlIDEuNSB0byB0aGUgZGlzayB0byBjbGVhciB0aGUgY2FjaGUuCgoxOTk5LTEwLTE3ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc3RhZ2UyL2Jvb3QuYyAobG9hZF9pbml0cmQpOiBDaGFuZ2UgdHlwZXMgb2YgKlJBTURJU0sgYW5kCglNT1ZFVE8gdG8gdW5zaWduZWQgbG9uZy4KCUFwcGx5IHRoZSBtYWNybyBSQVdfQUREUiB0byBNT1ZFVE8uCgoxOTk5LTEwLTE2ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogZG9jcy9tdWx0aWJvb3QudGV4aTogSW5jbHVkZSB0aGUgZXhhbXBsZSBzb3VyY2UgZmlsZXMgb2YgYQoJTXVsdGlib290IGtlcm5lbC4KCSogZG9jcy9zcmMydGV4aTogTmV3IGZpbGUuCgkqIGRvY3MvYm9vdC5TOiBMaWtld2lzZS4KCSogZG9jcy9tdWx0aWJvb3QuaDogTGlrZXdpc2UuCgkqIGRvY3Mva2VybmVsLmM6IExpa2V3aXNlLgoJKiBkb2NzL2Jvb3QuUy50ZXhpOiBMaWtld2lzZS4KCSogZG9jcy9tdWx0aWJvb3QuaC50ZXhpOiBMaWtld2lzZS4KCSogZG9jcy9rZXJuZWwuYy50ZXhpOiBMaWtld2lzZS4KCSogZG9jcy9NYWtlZmlsZS5hbSAoRVhBTVBMRVMpOiBOZXcgdmFyaWxhYmxlLgoJKG11bHRpYm9vdF9URVhJTkZPUyk6IExpa2V3aXNlLgoJKFNSQzJURVhJKTogTGlrZXdpc2UuCgkobm9pbnN0X1NDUklQVFMpOiBBZGRlZCAkKFNSQzJURVhJKS4KCShFWFRSQV9ESVNUKTogQWRkZWQgJChFWEFNUExFUykgYW5kICQobXVsdGlib290X1RFWElORk9TKS4KCSglLmMudGV4aSk6IE5ldyB0YXJnZXQuCgkoJS5oLnRleGkpOiBMaWtld2lzZS4KCSglLlMudGV4aSk6IExpa2V3aXNlLgoKMTk5OS0wOS0yMiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCiAgICAgICAgKiBtdWx0aWJvb3QudGV4aSAoQklPUyBkZXZpY2UgbWFwcGluZyB0ZWNobmlxdWVzKTogTmV3IHNlY3Rpb24uCiAgICAgICAgU3RvbGVuIGZyb20gYmlvc19tYXBwaW5nLnR4dCBpbiBncnViLTAuNS4KICAgICAgICAoRGF0YSBjb21wYXJpc29uIHRlY2huaXF1ZSk6IE5ldyBzdWJzZWN0aW9uLgogICAgICAgIChJL08gcmVzdHJpY3Rpb24gdGVjaG5pcXVlKTogTGlrZXdpc2UuCiAgICAgICAgKEV4YW1wbGUgT1MgY29kZSk6IFJld3JpdGVkIGZyb20gc2NyYXRjaC4KCjE5OTktMDktMjEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgogICAgICAgICogbXVsdGlib290LnRleGk6IFJlbmFtZSBNdWx0aWJvb3QgU3RhbmRhcmQgdG8gTXVsdGlib290CiAgICAgICAgU3BlY2lmaWNhdGlvbiBhbmQgdXBncmFkZSB0aGUgdmVyc2lvbiB0byAwLjcuIE1hbnkgY2xlYW51cHMKICAgICAgICBhcmUgZG9uZS4KCjE5OTktMTAtMTUgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoc2V0dXBfZnVuYyk6IFNhdmUgQ1VSUkVOVF9EUklWRSBhbmQKCUNVUlJFTlRfUEFSVElUSU9OIGludG8gSU1BR0VfRFJJVkUgYW5kIElNQUdFX1BBUlRJVElPTgoJcmVzcGVjdGl2ZWx5LCBhbmQgcmVzdG9yZSB0aGVtIGJlZm9yZSBydW5uaW5nIGluc3RhbGxfZnVuYy4KCVVzZSBERVZJQ0UgaW5zdGVhZCBvZiBCVUZGRVIgdG8gc3RvcmUgdGhlIGRldmljZSBuYW1lLgoJQ2hhbmdlIGVhY2ggdHlwZSBvZiBTVEFHRTEsIFNUQUdFMiBhbmQgQ09ORklHX0ZJTEUgdG8gYW4gYXJyYXkKCW9mIGNoYXIuCglJZiBpbnN0YWxsaW5nIHRoZSBTdGFnZSAxIGludG8gYSBNQlIsIGVtYmVkIHRoZSBTdGFnZSAxLjUgaW4gdGhlCglzZWN0b3JzIHJpZ2h0IGFmdGVyIGl0LgoJUmV0dXJuIHRoZSByZXN1bHQgb2YgaW5zdGFsbF9mdW5jIGluc3RlYWQgb2YgemVyby4KCjE5OTktMTAtMTQgIFBhdmVsIFJvc2tpbiAgPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKCSogY29uZmlndXJlLmluOiBDaGVjayBmb3Igb3BlbmRpc2sgaW4gbGlidXRpbC4KCSogZ3J1Yi9hc21zdHViLmMgW19fRnJlZUJTRF9fIHx8IF9fTmV0QlNEX19dOiBJbmNsdWRlCgk8c3lzL2lvY3RsLmg+LgoJW0hBVkVfT1BFTkRJU0tdOiBJbmNsdWRlIDx1dGlsLmg+LgoJW19fTmV0QlNEX19dIChnZXRfZmxvcHB5X2Rpc2tfbmFtZSk6IEFkZGVkIHN1cHBvcnQgZm9yIE5ldEJTRC4KCVtfX05ldEJTRF9fICYmIEhBVkVfT1BFTkRJU0tdIChnZXRfaWRlX2Rpc2tfbmFtZSk6IExpa2V3aXNlLgoJW19fTmV0QlNEX18gJiYgSEFWRV9PUEVORElTS10gKGdldF9zY3NpX2Rpc2tfbmFtZSk6IExpa2V3aXNlLgoJKGdldF9kcml2ZV9nZW9tZXRyeSkgW19fTmV0QlNEX19dOiBVc2UgZm9yIE5ldEJTRCB0aGUgc2FtZSBpb2N0bAoJYXMgZm9yIEZyZWVCU0QuCgoxOTk5LTEwLTEzICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogZ3J1Yi9hc21zdHViLmMgKGFzc2lnbl9kZXZpY2VfbmFtZSk6IElmIERFVklDRSBpcyBOVUxMLCBzZXQKCURFVklDRV9NQVBbRFJJVkVdIHRvIE5VTEwuCgkoZ2V0X2Rpc2tpbmZvKTogSWYgb3BlbiBvciByZWFkIGZhaWxzLCBjYWxsIGFzc2lnbl9kZXZpY2VfbmFtZQoJdG8gZGlzYWJsZSBhY2Nlc3NpbmcgdGhlIGRyaXZlIERSSVZFLgoJKGdydWJfc3RhZ2UyKTogVGhlIGRldmljZSBtYXBwaW5nIHJvdXRpbmUgaXMgbW92ZWQgdG8gLi4uCgkoaW5pdF9kZXZpY2VfbWFwKTogLi4uIGhlcmUuIFRoaXMgbmV3IGZ1bmN0aW9uIGFsc28gcmVhZHMvd3JpdGVzCglhIGRldmljZSBtYXAgZmlsZS4gSWYgREVWSUNFX01BUF9GSUxFIGFscmVhZHkgZXhpc3RzLCB0aGVuIHVzZQoJdGhlIGRhdGEgaW4gaXQgaW5zdGVhZCBvZiBwcm9iaW5nIGRldmljZXMuIE90aGVyd2lzZSwgZ3Vlc3MgdGhlCgltYXAgYmV0d2VlbiBCSU9TIGRyaXZlcyBhbmQgT1MgZGV2aWNlcywgYW5kIHdyaXRlIGl0IHRvIHRoZSBmaWxlCglERVZJQ0VfTUFQX0ZJTEUgaWYgaXQgY2FuIGJlIG9wZW5lZC4KCSogZ3J1Yi9tYWluLmMgKGRldmljZV9tYXBfZmlsZSk6IE5ldyB2YXJpYWJsZS4KCShkZWZhdWx0X2RldmljZV9tYXBfZmlsZSk6IExpa2V3aXNlLgoJKE9QVF9ERVZJQ0VfTUFQKTogTmV3IG1hY3JvLgoJKGxvbmdvcHRzKTogQWRkZWQgYW4gZW50cnkgZm9yICJkZXZpY2UtbWFwIi4KCSh1c2FnZSk6IFByaW50IHRoZSB1c2FnZSBhYm91dCAtLWRldmljZS1tYXAgYXMgd2VsbC4KCShtYWluKTogU2V0IERFRkFVTFRfREVWSUNFX01BUF9GSUxFIHRvIERFVklDRV9NQVBfRklMRS4gSWYKCU9QVF9ERVZJQ0VfTUFQIGlzIGZvdW5kLCBzZXQgREVWSUNFX01BUF9GSUxFIHRvIGEgZHVwbGljYXRlZAoJc3RyaW5nIG9mIE9QVEFSRy4KCSogc3RhZ2UyL3NoYXJlZC5oIFtHUlVCX1VUSUxdIChkZXZpY2VfbWFwX2ZpbGUpOiBEZWNsYXJlZC4KCSogZG9jcy9ncnViLjg6IFJlZ2VuZXJhdGVkLgoKMTk5OS0xMC0xMyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChjb2xvcl9mdW5jKTogRG8gbm90IHNldCBOT1JNQUxfQ09MT1Igb3IKCUhJR0hMSUdIVF9DT0xPUiBkaXJlY3RseSwgYnV0IHVzZSBORVdfTk9STUFMX0NPTE9SIGFuZAoJTkVXX0hJR0hMSUdIVF9DT0xPUiBhcyB0ZW1wb3Jhcnkgc3RvcmFnZXMgaW5zdGVhZC4KCU5ldyBpbnRlcm5hbCBmdW5jdGlvbiBgY29sb3JfbnVtYmVyJyBpcyB1c2VkIHRvIGNvbnZlcnQgYQoJc3ltYm9saWMgY29sb3IgcmVwcmVzZW50YXRpb24gaW50byBhIGNvbG9yIG51bWJlci4KCVRyeSBjb2xvcl9udW1iZXIgYXQgZmlyc3QsIGFuZCBpZiBmYWlscywgdGhlbiB0cnkKCXNhZmVfcGFyc2VfbWF4aW50IGZvciBlYWNoIG9mIE5PUk1BTCBhbmQgSElHSExJR0hULgoJKGJ1aWx0aW5fY29sb3IpOiBUaGUgbG9uZyBkb2MgZG9lcyBub3QgZGVzY3JpYmUgdGhlIHJhdyBudW1iZXIKCXN5bnRheCBidXQgdGhlIHN5bWJvbGljIGNvbG9yIG5hbWUgc3ludGF4LgoJKiBkb2NzL2dydWIudGV4aSAoQ29tbWFuZHMpOiBBZGp1c3RlZCB0byB0aGUgbG9uZyBkb2Mgb2YKCUJVSUxUSU5fQ09MT1IuCgkqIGRvY3MvbWVudS5sc3Q6IEFkZCBleGFtcGxlcyBvZiAiZmFsbGJhY2siIGFuZCAiY29sb3IiLgoKMTk5OS0xMC0xMyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9jaGFyX2lvLmMgWyFTVEFHRTFfNV0gKGdldF9jbWRsaW5lKTogSWYgQyBpcyBhIG5ld2xpbmUKCW9yIGEgcmV0dXJuLCB0aGVuIHNldCBMUE9TIHRvIExMRU4gYW5kIGNhbGwgdGhlIGZ1bmN0aW9uCgljbF9zZXRjcG9zLgoJWyFTVEFHRTFfNV0gKGdydWJfc3RybmNhdCk6IE5ldyBmdW5jdGlvbi4KCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGVtYmVkX2Z1bmMpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbHRpbl9lbWJlZCk6IE5ldyB2YXJpbGFibGUuCgkoc2V0dXBfZnVuYyk6IE5ldyBmdW5jdGlvbi4KCShidWlsdGluX3NldHVwKTogTmV3IHZhcmlsYWJsZS4KCShidWlsdGluX3RhYmxlKTogQWRkZWQgYSBwb2ludGVyIHRvIEJVSUxUSU5fRU1CRUQgYW5kIGEgcG9pbnRlcgoJdG8gQlVJTFRJTl9TRVRVUC4KCSogc3RhZ2UyL3NoYXJlZC5oIChncnViX3N0cm5jYXQpOiBEZWNsYXJlZC4KCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAoc3RhZ2UyX3NpemUuaCk6IC4uL3N0YWdlMi9zdGFnZTIgLT4KCXByZV9zdGFnZTIuIFJlcG9ydGVkIGJ5IFBhdmVsIFJvc2tpbi4KCjE5OTktMTAtMTIgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJRnJvbSBQYXZlbCBSb3NraW46CgkqIGFjaW5jbHVkZS5tNCAoZ3J1Yl9QUk9HX09CSkNPUFlfQUJTT0xVVEUpOiBtYWluIC0+IGNtYWluLgoJKiBzdGFnZTIvYm9vdC5jIChsb2FkX2ltYWdlKTogT25seSBDVVJfQUREUiwgbm90IEVOVFJZX0FERFIKCXNob3VsZCBiZSAxTS1hbGlnbmVkIGZvciBOZXRCU0QuIERvbid0IGFsaWduIHN5bWJvbCB0YWJsZSBvbiA0awoJYm91bmRhcmllcyBpZiB0aGUga2VybmVsIGRvZXNuJ3QgcmVxdWlyZSBpdC4KCjE5OTktMTAtMTAgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvYXNtLlMgWyFTVEFHRTFfNV0gKHN0YXJ0KTogTmV3IGxhYmVsIHRvIGZvcmNlIGxkIHF1aWV0LgoJWyFTVEFHRTFfNV0gKF9zdGFydCk6IExpa2V3aXNlLgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoaW5zdGFsbF9mdW5jKTogUmV3cml0dGVuIGhlYXZpbHkgYWxtb3N0Cglmcm9tIHNjcmF0Y2guIEFzIHRoZSBibG9ja2xpc3Qgd2FzIG1vdmVkIHRvIHRoZSBmaXJzdCBzZWN0b3Igb2YKCVN0YWdlIDIsIGFsd2F5cyB3cml0ZSBzZWN0b3JzIG9mIFN0YWdlIDIgdG8gdGhlIGRpc2suCgkqIHN0YWdlMS9zdGFnZTEuaCAoU1RBR0UxX1NUQUdFMl9TRUNUT1IpOiAweDQwIC0+IDB4NDEuCgkoU1RBR0UxX1NUQUdFMl9BRERSRVNTKTogMHg0NCAtPiAweDQ1LgoJKFNUQUdFMV9TVEFHRTJfU0VHTUVOVCk6IDB4NDYgLT4gMHg0Ny4KCShTVEFHRTFfQk9PVF9EUklWRSk6IDB4M2YgLT4gMHg0MC4KCjE5OTktMTAtMDkgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJU3RhZ2UxIHN1cHBvcnRzIGJvdGggdGhlIENIUyBtb2RlIGFuZCB0aGUgTEJBIG1vZGUuCgoJKiBzdGFnZTEvTWFrZWZpbGUuYW0gKG5vZGlzdF9wa2dkYXRhX0RBVEEpOiBSZW1vdmVkIHN0YWdlMV9sYmEuCgkoQlVJTFRfU09VUkNFUyk6IERlbGV0ZWQuCgkoQ0xFQU5GSUxFUyk6IExpa2V3aXNlLgoJKG5vaW5zdF9QUk9HUkFNUyk6IFJlbW92ZWQgc3RhZ2UxX2xiYS5leGVjLgoJKHN0YWdlMV9leGVjX1NPVVJDRVMpOiBSZW1vdmVkIHN0YWdlMl9zaXplLmguCgkoc3RhZ2UyX3NpemUuaCk6IERlbGV0ZWQuCgkoc3RhZ2UxX2xiYV9leGVjX1NPVVJDRVMpOiBMaWtld2lzZS4KCSogc3RhZ2UxL3N0YWdlMS5TOiBSZXdyaXR0ZW4gZnJvbSBzY3JhdGNoLgoJKiBzdGFnZTEvc3RhZ2UxX2xiYS5TOiBEZWxldGVkLgoJKiBzdGFnZTEvc3RhZ2UxLmggKENPTVBBVF9WRVJTSU9OX01BSk9SKTogU2V0IHRvIDMuCgkoQ09NUEFUX1ZFUlNJT05fTUlOT1IpOiBTZXQgdG8gMC4KCShTVEFHRTFfVkVSX01BSl9PRkZTKTogU2V0IHRvIDB4M2UuCgkoU1RBR0UxX0ZJUlNUTElTVCk6IERlbGV0ZWQuCgkoU1RBR0UxX0lOU1RBTExTRUcpOiBMaWtld2lzZS4KCShTVEFHRTFfSU5TVEFMTEFERFIpOiBMaWtld2lzZS4KCShTVEFHRTFfTUlOUEFSQU1TSVpFKTogTGlrZXdpc2UuCgkoU1RBR0UxX0xJU1RTSVpFKTogTGlrZXdpc2UuCgkoU1RBR0UxX0lEX09GRlNFVCk6IExpa2V3aXNlLgoJKFNUQUdFMV9JRF9DSFMpOiBMaWtld2lzZS4KCShTVEFHRTFfSURfTEJBKTogTGlrZXdpc2UuCgkoU1RBR0UxX1NUQUdFMl9TRUNUT1IpOiBOZXcgbWFjcm8uCgkoU1RBR0UxX1NUQUdFMl9BRERSRVNTKTogTGlrZXdpc2UuCgkoU1RBR0UxX1NUQUdFMl9TRUdNRU5UKTogTGlrZXdpc2UuCgkoU1RBR0UxX0JPT1RfRFJJVkUpOiBMaWtld2lzZS4KCSogc3RhZ2UyL3N0YXJ0LlM6IE5ldyBmaWxlLgoJKiBzdGFnZTIvTWFrZWZpbGUuYW0gKG5vaW5zdF9EQVRBKTogTmV3IHZhcmlhYmxlLgoJKENMRUFORklMRVMpOiBTZXQgdG8gIiQobm9kaXN0X3BrZ2RhdGFfREFUQSkgJChub2luc3RfREFUQSkKCSQoQlVJTFRfU09VUkNFUykiLgoJKG5vaW5zdF9QUk9HUkFNUyk6IFJlbW92ZWQgc3RhZ2UyLmV4ZWMsIGFuZCBhZGRlZCBzdGFydC5leGVjIGFuZAoJcHJlX3N0YWdlMi5leGVjLgoJKFNUQUdFMl9MSU5LKTogRGVsZXRlZC4KCShQUkVfU1RBR0UyX0xJTkspOiBOZXcgdmFyaWFibGUuCgkoU1RBUlRfTElOSyk6IExpa2V3aXNlLgoJKHN0YWdlMl9leGVjX1NPVVJDRVMpOiBEZWxldGVkLgoJKHN0YWdlMl9leGVjX0NGTEFHUyk6IExpa2V3aXNlLgoJKHN0YWdlMl9leGVjX0xERkxBR1MpOiBMaWtld2lzZS4KCVtORVRCT09UX1NVUFBPUlRdIChzdGFnZTJfZXhlY19MREFERCk6IExpa2V3aXNlLgoJKHByZV9zdGFnZTJfZXhlY19TT1VSQ0VTKTogTmV3IHZhcmlhYmxlLgoJKHByZV9zdGFnZTJfZXhlY19DRkxBR1MpOiBMaWtld2lzZS4KCShwcmVfc3RhZ2UyX2V4ZWNfTERGTEFHUyk6IExpa2V3aXNlLgoJW05FVEJPT1RfU1VQUE9SVF0gKHByZV9zdGFnZTJfZXhlY19MREFERCk6IExpa2V3aXNlLgoJKEJVSUxUX1NPVVJDRVMpOiBMaWtld2lzZS4KCShzdGFydF9leGVjX1NPVVJDRVMpOiBMaWtld2lzZS4KCShzdGFydF9leGVjX0NGTEFHUyk6IExpa2V3aXNlLgoJKHN0YXJ0X2V4ZWNfTERGTEFHUyk6IExpa2V3aXNlLgoJKHN0YXJ0X2V4ZWNfREVQRU5ERU5DSUVTKTogTGlrZXdpc2UuCgkoc3RhZ2UyX3NpemUuaCk6IE5ldyBydWxlLgoJKHN0YWdlMik6IExpa2V3aXNlLgoJKGUyZnNfc3RhZ2UxXzVfZXhlY19TT1VSQ0VTKTogQWRkZWQgc3RhcnQuUy4KCShmYXRfc3RhZ2UxXzVfZXhlY19TT1VSQ0VTKTogTGlrZXdpc2UuCgkoZmZzX3N0YWdlMV81X2V4ZWNfU09VUkNFUyk6IExpa2V3aXNlLgoJKG1pbml4X3N0YWdlMV81X2V4ZWNfU09VUkNFUyk6IExpa2V3aXNlLgoJKiBzdGFnZTIvYXNtLlMgKHN0YXJ0KTogUmVuYW1lZCB0byAuLi4KCShtYWluKTogLi4uIHRoaXMuCglbU1RBR0UxXzVdIChtYWluKTogSnVtcCB0byAoY29kZXN0YXJ0IC0gRVhUX0MobWFpbikgKyAweDIyMDApCglpbnN0ZWFkIG9mIChjb2Rlc3RhcnQgLSBFWFRfQyhzdGFydCkgKyAweDIwMDApLgoJWyFTVEFHRTFfNV0gKG1haW4pOiBKdW1wIHRvIChjb2Rlc3RhcnQgLSBFWFRfQyhtYWluKSArIDB4ODIwMCkKCWluc3RlYWQgb2YgKGNvZGVzdGFydCAtIEVYVF9DKHN0YXJ0KSArIDB4ODAwMCkuCglbU1RBR0UxXzVdIChjaGFpbl9zdGFnZTIpOiBVc2UgbWFpbiBpbnN0ZWFkIG9mIHN0YXJ0LgoJKiBzdGFnZTIvc2hhcmVkLmggKEJPT1RTRUNfTElTVFNJWkUpOiBOZXcgbWFjcm8uCgkqIHN0YWdlMi9zdGFnZTFfNS5jOiBDaGFuZ2UgdGhlIHNlY29uZCBhcmd1bWVudCBmb3IgY2hhaW5fc3RhZ2UyCgl0byAweDgyMDAuCgoxOTk5LTEwLTA4ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogY29uZmlndXJlLmluICgtLXdpdGgtYmludXRpbHMpOiBOZXcgb3B0aW9uIHRvIHNwZWNpZnkgYQoJZGlyZWN0b3J5IHRvIGZpbmQgYmludXRpbHMuCgkoQ0ZMQUdTKTogSWYgV0lUSF9CSU5VVElMUyBpcyBub3QgZW1wdHksIGFkZGVkIHRoZSBvcHRpb24gYC1CJy4KCShMRCk6IERvIG5vdCBjaGVjayBmb3IgdGhpcy4gV2UgZG9uJ3QgdXNlIGxkIGRpcmVjdGx5IGFueXdheS4KCShSQU5MSUIpOiBJZiBXSVRIX0JJTlVUSUxTIGlzIG5vdCBlbXB0eSwgc2VhcmNoIHRoZSBkaXJlY3RvcnkKCVdJVEhfQklOVVRJTFMgZmlyc3QuCgkoT0JKQ09QWSk6IExpa2V3aXNlLgoJKiBhY2luY2x1ZGUubTQgKGdydWJfQVNNX1VTQ09SRSk6IEFkZCBDRkxBR1MgaW50bwoJQUNfVFJZX0NPTU1BTkQuCgkoZ3J1Yl9BU01fQUREUjMyKTogTGlrZXdpc2UuCgkoZ3J1Yl9BU01fUFJFRklYX1JFUVVJUkVNRU5UKTogTGlrZXdpc2UuCgkoZ3J1Yl9QUk9HX09CSkNPUFlfQUJTT0xVVEUpOiBVc2UgQ0MgaW5zdGVhZCBvZiBMRC4KCjE5OTktMTAtMDQgIFBhdmVsIFJvc2tpbiAgPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKCSogc3RhZ2UyL2ZyZWVic2QuaCAoc3RydWN0IGJvb3RpbmZvKTogTmV3IG1lbWJlciwgYmlfYmlvc19kZXYuCgkqIHN0YWdlMi9ib290LmMgKGJzZF9ib290KTogU2V0IEJJLkJJX0JJT1NfREVWIHRvIFNBVkVEX0RSSVZFLgoKMTk5OS0xMC0wNCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCglGcm9tIFBhdmVsIFJvc2tpbjoKCSogZG9jcy9ncnViLnRleGk6IEZpeCB0eXBvcy4KCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGluc3RhbGxfZnVuYyk6IFJlZm9ybWF0IHRoZSB3YXJuaW5nIG1lc3NhZ2UKCWFib3V0IHRoZSBvcHRpb24gYGQnLgoKMTk5OS0xMC0wMyAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGZpZy5vcmc+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoaW5zdGFsbF9mdW5jKTogRml4IGNoZWNrIGZvciB0aGUgU3RhZ2UgMiBpZC4KCUZyb20gUGF2ZWwgUm9za2luLgoKCSogZGViaWFuL01ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogQWRkIHBvc3RpbnN0IGFuZCBwcmVybS4KCjE5OTktMTAtMDMgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoYm9vdF9mdW5jKTogUGFzcyBNQkkuQ01ETElORSBpbnN0ZWFkIG9mIEFSRwoJdG8gYnNkX2Jvb3QuCgoxOTk5LTEwLTAzICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc3RhZ2UyL2d1bnppcC5jIChndW56aXBfdGVzdF9oZWFkZXIpOiBDaGVjayBpZiBDVVJSRU5UX0RSSVZFCglpcyAweDIwIGluc3RlYWQgb2YgaWYgdGhlIGZzIHR5cGUgaXMgVEZUUCwgYmVjYXVzZSBHUlVCIGRvZXMgbm90Cgltb3VudCBDVVJSRU5UX0RSSVZFIHdoZW4gdXNpbmcgYSBibG9jayBmaWxlLiBSZXBvcnRlZCBieSBQYXZlbAoJUm9za2luLgoKMTk5OS0xMC0wMiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChjYXRfZnVuYyk6IERvIG5vdCByZWFkIHRoZSB3aG9sZSBvZiBhIGZpbGUKCWF0IG9uZSB0aW1lLiBJbnN0ZWFkLCByZXBlYXQgcmVhZGluZyBvbmUgYnl0ZSBhbmQgcHJpbnQgaXQgb24KCXRoZSBzY3JlZW4uCgkqIGRvY3MvZ3J1Yi50ZXhpIChDb21tYW5kIGxpbmUpOiBMaXN0IHRoZSBhdmFpbGFibGUga2V5CgliaW5kaW5ncy4KCShDb21tYW5kcyk6IEFkZGVkIGRlc2NyaXB0aW9ucyBhYm91dCAiZ2VvbWV0cnkiLCAiZGV2aWNlIiBhbmQKCSJjYXQiLgoKMTk5OS0xMC0wMiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCglOb3cgaXQgaXMgcG9zc2libGUgdG8gYnVpbGQgdGhlIGdydWIgc2hlbGwgd2l0aCBvbGQgQlNEIGN1cnNlcy4KCgkqIHN0YWdlMi9zaGFyZWQuaCBbIUFfTk9STUFMXSAoQV9OT1JNQUwpOiBTZXQgdG8gemVyby4KCVshQV9SRVZFUlNFICYmIEFfU1RBTkRPVVRdIChBX1JFVkVSU0UpOiBTZXQgdG8gQV9TVEFORE9VVC4KCVshQV9SRVZFUlNFICYmICFBX1NUQU5ET1VUXSAoQV9SRVZFUlNFKTogU2V0IHRvIHplcm8uCgoxOTk5LTA5LTMwICBQYXZlbCBSb3NraW4gIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCgkqIHN0YWdlMi9kaXNrX2lvLmMgKHNldF9ib290ZGV2KTogTWFzayAweDdGIGluc3RlYWQgb2YgMHg3OSBvZgoJdGhlIGRldmljZSBudW1iZXIuCgoxOTk5LTEwLTAxICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogY29uZmlndXJlLmluICgtLXdpdGhvdXQtY3Vyc2VzKTogTmV3IG9wdGlvbi4gSWYgV0lUSF9DVVJTRVMgaXMKCW5vLCBkbyBub3QgY2hlY2sgZm9yIGN1cnNlcy4KCgkqIHN0YWdlMi9kaXNrX2lvLmMgKHNldF9kZXZpY2UpIFtTVEFHRTFfNV06IENoYW5nZSB0aGUgdHlwZSBvZgoJREVWIHRvIHVuc2lnbmVkIGxvbmcuCgkqIHN0YWdlMi9idWlsdGlucy5jIChpbnN0YWxsX2Z1bmMpOiBBbHdheXMgY2hlY2sgZm9yIHRoZSBTdGFnZSAyCglpZCBpbiBGSUxFLgoJUmVwb3J0ZWQgYnkgUGF2ZWwgUm9za2luLgoKMTk5OS0wOS0zMCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGZpZy5vcmc+CgoJKiBkZWJpYW4vcG9zdGluc3Q6IE5ldyBmaWxlIHRvIGNhbGwgaW5zdGFsbC1pbmZvLgoJKiBkZWJpYW4vcHJlcm06IExpa2V3aXNlLgoJKiBkZWJpYW4vcnVsZXMgKGJpbmFyeS1hcmNoKTogQWRkIHBvc3RpbnN0IGFuZCBwcmVybSwgY29tcHJlc3MgdGhlCglpbmZvIGZpbGVzLCBhbmQgY2FsbCBkcGtnLXNobGliZGVwcy4KCgkqIHN0YWdlMi9jbWRsaW5lLmMgKHNraXBfdG8pOiBSZXN0cnVjdHVyZSwgYW5kIGNvdW50IHRhYnMgYXMKCXdoaXRlc3BhY2UuCgkoZmluZF9jb21tYW5kKTogTGlrZXdpc2UuCgoxOTk5LTA5LTMwICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogZ3J1Yi9nZXRvcHQuYzogTW92ZWQgdG8gLi4uCgkqIGxpYi9nZXRvcHQuYzogLi4uIGhlcmUuCgkqIGdydWIvZ2V0b3B0MS5jOiBNb3ZlZCB0byAuLi4KCSogbGliL2dldG9wdDEuYzogLi4uIGhlcmUuCgkqIGdydWIvZ2V0b3B0Lmg6IE1vdmVkIHRvIC4uLgoJKiBsaWIvZ2V0b3B0Lmg6IC4uLiBoZXJlLgoJKiBncnViL01ha2VmaWxlLmFtIChBTV9DRkxBR1MpOiBBZGRlZCAtSSQodG9wX3NyY2RpcikvbGliLgoJKGdydWJfTERBREQpOiBBZGRlZCAuLi9saWIvbGliY29tbW9uLmEuCgkqIGxpYi9NYWtlZmlsZS5hbTogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmFtIChTVUJESVJTKTogQWRkZWQgbGliLgoJKiBjb25maWd1cmUuaW46IGxpYi9NYWtlZmlsZSBpcyBhZGRlZCBpbnRvIHRoZSBhcmd1bWVudHMgZm9yCglBQ19PVVRQVVQuCgoxOTk5LTA5LTMwICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCUZyb20gUGF2ZWwgUm9za2luOgoJKiBzdGFnZTIvZGVmcy5oICh0aW1lX3QpOiBSZW5hbWVkIHRvIC4uLgoJKG1hY2hfdGltZV90KTogLi4uIHRoaXMuCgkoZGFkZHJfdCk6IFJlbmFtZWQgdG8gLi4uCgkobWFjaF9kYWRkcl90KTogLi4uIHRoaXMuCgkodWlkX3QpOiBSZW5hbWVkIHRvIC4uLgoJKG1hY2hfdWlkX3QpOiAuLi4gdGhpcy4KCShnaWRfdCk6IFJlbmFtZWQgdG8gLi4uCgkobWFjaF9naWRfdCk6IC4uLiB0aGlzLgoJKGlub190KTogUmVuYW1lZCB0byAuLi4KCShtYWNoX2lub190KTogLi4uIHRoaXMuCgkqIHN0YWdlMi9kaXNrX2lub2RlLmggKEZGU19NQVhfRkFTVExJTktfU0laRSk6IFVzZSBtYWNoX2RhZGRyX3QKCWluc3RlYWQgb2YgZGFkZHJfdC4KCShzdHJ1Y3QgaWNvbW1vbik6IFVzZSBtYWNoX3VpZF90LCBtYWNoX2dpZF90LCBtYWNoX3RpbWVfdCBhbmQKCW1hY2hfZGFkZHJfdCwgaW5zdGVhZCBvZiB1aWRfdCwgZ2lkX3QsIHRpbWVfdCBhbmQgZGFkZHJfdC4KCSogc3RhZ2UyL2ZzLmggKEJCTE9DSyk6IFVzZSBtYWNoX2RhZGRyX3QgaW5zdGVhZCBvZiBhZGRyX3QuCgkoU0JMT0NLKTogTGlrZXdpc2UuCgkoUk9PVElOTyk6IFVzZSBtYWNoX2lub190IGluc3RlYWQgb2YgaW5vX3QuCgkoc3RydWN0IGZzKTogVXNlIG1hY2hfZGFkZHJfdCBhbmQgbWFjaF90aW1lX3QgaW5zdGVhZCBvZiBkYWRkcl90CglhbmQgdGltZV90LgoJKHN0cnVjdCBjZyk6IFVzZSBtYWNoX3RpbWVfdCBpbnN0ZWFkIG9mIHRpbWVfdC4KCShzdHJ1Y3Qgb2NnKTogTGlrZXdpc2UuCgkoY2diYXNlKTogVXNlIG1hY2hfZGFkZHJfdCBpbnN0ZWFkIG9mIGRhZGRyX3QuCgkoaXRvZCk6IExpa2V3aXNlLgoKMTk5OS0wOS0zMCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIGFjaW5jbHVkZS5tNCAoZ3J1Yl9DSEVDS19TVEFSVF9TWU1CT0wpOiBVc2UgQUNfVFJZX0xJTksKCWluc3RlYWQgb2YgQUNfVFJZX0NPTU1BTkQuCgkoZ3J1Yl9DSEVDS19VU0NPUkVfU1RBUlRfU1lNQk9MKTogTGlrZXdpc2UuCgkoZ3J1Yl9DSEVDS19FTkRfU1lNQk9MKTogTGlrZXdpc2UuCgkoZ3J1Yl9DSEVDS19VU0NPUkVfRU5EX1NZTUJPTCk6IExpa2V3aXNlLgoKCSogc3RhZ2UyL2Rpc2tfaW8uYyAoc2V0X2RldmljZSkgWyFTVEFHRTFfNV06IFVzZSBSRVNVTFQgaW5zdGVhZAoJb2YgUkVUVkFMIHRvIGNoZWNrIGlmIHRoZSBhbmFseXNpcyBzdWNjZWVkcy4KCjE5OTktMDktMjkgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoaW5zdGFsbF9mdW5jKTogSWYgdGhlIFN0YWdlIDIgaWQgaW4gRklMRSBpcwoJbm90IFNUQUdFMl9JRF9TVEFHRTIsIHNldCBJU19TVEFHRTFfNSB0byAxLCBvdGhlcndpc2UgdG8gMC4KCVVzZSBDT05GSUdfRklMRV9MT0NBVElPTiB0byBwb2ludCB0byB0aGUgbG9jYXRpb24gb2YgdGhlIG5hbWUgb2YKCWEgY29uZmlndXJhdGlvbiBmaWxlIGluIFN0YWdlIDIuCglJZiB0aGUgb3B0aW9uIGBwJyBpcyBwcmVzZW50IGFuZCBJU19TVEFHRTFfNSBpcyBub24temVybywgcmVzZXQKCXRoZSBkZXZpY2UgaW5mb3JtYXRpb24gaW4gQ09ORklHX0ZJTEVfTE9DQVRJT04uCgkoY2F0X2Z1bmMpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbHRpbl9jYXQpOiBOZXcgdmFyaWFibGUuCgkoYnVpbHRpbl90YWJsZSk6IEFkZGVkIGEgcG9pbnRlciB0byBCVUlMVElOX0NBVC4KCShnZW9tZXRyeV9mdW5jKTogQ2FsbCByZWFsX29wZW5fcGFydGl0aW9uIHdpdGggdGhlIGFyZ3VtZW50IDEKCWFmdGVyIHByaW50aW5nIG91dCB0aGUgZHJpdmUgaW5mb3JtYXRpb24uCgkqIHN0YWdlMi9kaXNrX2lvLmMgKHJlYWxfb3Blbl9wYXJ0aXRpb24pOiBNYWRlIGdsb2JhbC4KCVshU1RBR0UxXzVdIChwcmludF9jb21wbGV0aW9ucyk6IEluIHRoZSBjb21tYW5kIGNvbXBsZXRpb24gYW5kCgl0aGUgZmlsZW5hbWUgY29tcGxldGlvbiwgcHJpbnQgYSBuZXdsaW5lIGF0IHRoZSBsYXN0IGlmCglJU19DT01QTEVUSU9OIGlzIHplcm8uCgkqIHN0YWdlMi9zaGFyZWQuaCAocmVhbF9vcGVuX3BhcnRpdGlvbik6IERlY2xhcmVkLgoJKiBzdGFnZTIvZnN5c19leHQyZnMuYyAoZXh0MmZzX2Rpcik6IERvIG5vdCBwcmludCBhIG5ld2xpbmUgZXZlbgoJaWYgUFJJTlRfUE9TU0lCSUxJVElFUyBpcyBsZXNzIHRoYW4gemVyby4KCSogc3RhZ2UyL2ZzeXNfZmZzLmMgKGZmc19kaXIpOiBMaWtld2lzZS4KCSogc3RhZ2UyL2ZzeXNfZmF0LmMgKGZhdF9kaXIpOiBMaWtld2lzZS4KCSogc3RhZ2UyL2ZzeXNfbWluaXguYyAobWluaXhfZGlyKTogTGlrZXdpc2UuCgoxOTk5LTA5LTI5ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc3RhZ2UxL3N0YWdlMS5TIFshRkZTX1NUQUdFMV81XSAoYmxvY2tsaXN0X2RlZmF1bHRfbGVuKTogRG8KCW5vdCBkaXZpZGUgdGhlIHNpemUgYnkgNTEyLCBidXQgc2hpZnQgdGhlIHNpemUgdG8gdGhlIHJpZ2h0IGJ5Cgk5IGluc3RlYWQsIGJlY2F1c2Ugb2YgYSBiaW51dGlscy0yLjkuMS4wLnggYnVnLgoJKiBzdGFnZTEvc3RhZ2UxX2xiYS5TIFshRkZTX1NUQUdFMV81XSAoYmxvY2tsaXN0X2RlZmF1bHRfbGVuKToKCUxpa2V3aXNlLgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoaW5zdGFsbF9mdW5jKTogV2hlbiBpbnN0YWxsaW5nIFN0YWdlIDEuNSwKCWlmIHNldF9kZXZpY2UgcmV0dXJucyBOVUxMLCB0aGVuIHNldCBDVVJSRU5UX0RSSVZFIHRvIDB4RkYgYW5kCglDT05GSUdfRklMRSB0byBQVFIuCgoxOTk5LTA5LTI2ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc3RhZ2UyL2NoYXJfaW8uYyBbIVNUQUdFMV81XSAoZ2V0X2NtZGxpbmUpOiBJbiBjbF9pbnNlcnQsIGNhbGwKCWNsX3NldGNwb3MgYmVmb3JlIHByaW50aW5nIEJVRiwgZXZlbiBpZiBMUE9TIGlzIGVxdWFsIHRvIExMRU4uCglJbiB0aGUgY29tcGxldGlvbiwgaWYgUkVUIGlzIHplcm8sIGRvIG5vdCBjYWxsIGNsX2luaXQuCgkqIHN0YWdlMi9kaXNrX2lvLmMgWyFTVEFHRTFfNV0gKHByaW50X2NvbXBsZXRpb25zKTogSW4gdGhlCglmaWxlbmFtZSBjb21wbGV0aW9uLCBpZiBVTklRVUUgaXMgMSwgY2hlY2sgaWYgVU5JUVVFX1NUUklORyBpcyBhCglkaXJlY3Rvcnkgb3Igbm90LiBJZiBzbywgYXBwZW5kICcvJyB0byBCVUYuCglJbiB0aGUgcGFydGl0aW9uIGNvbXBsZXRpb24sIGlmIElTX0NPTVBMRVRJT04gaXMgbm9uLXplcm8gYW5kCgkqVU5JUVVFX1NUUklORyBpcyBub3QgTlVMLCBjb3B5IFVOSVFVRV9TVFJJTkcgdG8gUFRSLiBEbyBub3QKCWFwcGVuZCAnLycuCgkocmVhbF9vcGVuX3BhcnRpdGlvbikgWyFTVEFHRTFfNV06IElmIERPX0NPTVBSRVNTSU9OIGlzIG5vbi16ZXJvLAoJY2FsbCBwcmludF9hX2NvbXBsZXRpb24uCgkoY2hlY2tfQlNEX3BhcnRzKSBbIVNUQUdFMV81XTogTGlrZXdpc2UuCglbIVNUQUdFMV81XSAocHJpbnRfYV9jb21wbGV0aW9uKTogSWdub3JlIE5BTUUgaWYgaXQgaXMgIi4iIG9yCgkiLi4iLgoKMTk5OS0wOS0yNSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIGFjaW5jbHVkZS5tNCAoZ3J1Yl9DSEVDS19VU0NPUkVfRU5EX1NZTUJPTCk6IERvIG5vdCBjYWxsCglBQ19ERUZJTkUgd2l0aGluIEFDX0NBQ0hFX1ZBTC4gQ2FsbCBpdCBhZnRlciBBQ19DQUNIRV9WQUwuCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAoU1RBR0UxXzVfQ09NUElMRSk6IERvIG5vdCBkZWZpbmUKCUNPTkZJR19GSUxFX0FTTS4KCSogc3RhZ2UyL2FzbS5TIChjb25maWdfZmlsZSkgW1NUQUdFMV81XTogU2V0IHRoZSBmaXJzdCA0IGJ5dGVzCgl0byAweGZmZmZmZmZmIGFuZCB0aGUgZm9sbG93aW5nIHRvICIvYm9vdC9ncnViL3N0YWdlMiIuCgkoY29uZmlnX2ZpbGUpIFshU1RBR0UxXzVdOiBTZXQgdG8gIi9ib290L2dydWIvbWVudS5sc3QiLgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoaW5zdGFsbF9mdW5jKTogUmVhZCBhIFN0YWdlIDIgYmVmb3JlCgloYW5kbGluZyB0aGUgYHAnIG9wdGlvbi4KCUlmIHRoZSBgY29uZmlnZmlsZScgb3B0aW9uIGlzIHByZXNlbnQgYW5kIEZJTEUgaXMgYSBTdGFnZSAyLAoJdHJhbnNsYXRlIHRoZSBkZXZpY2UgbmFtZSB0byB0aGUgaW50ZXJuYWwgZGV2aWNlIHJlcHJlc2VudGF0aW9uCglhbmQgY29weSB0aGUgcmVzdWx0IHRvIFNUUi4KCSogc3RhZ2UyL2Rpc2tfaW8uYyBbU1RBR0UxXzVdIChzYW5lX3BhcnRpdGlvbik6IEVsaW1pbmF0ZWQuCglbU1RBR0UxXzVdIChpbmNvbXBsZXRlKTogTGlrZXdpc2UuCglbU1RBR0UxXzVdIChkaXNrX2Nob2ljZSk6IExpa2V3aXNlLgoJW1NUQUdFMV81XSAocGFydF9jaG9pY2UpOiBMaWtld2lzZS4KCShzZXRfZGV2aWNlKSBbU1RBR0UxXzVdOiBBc3N1bWUgdGhhdCB0aGUgZmlyc3QgNCBieXRlcyBvZiBERVZJQ0UKCWlzIGEgZGV2aWNlIG51bWJlci4gU2V0IERSSVZFIHRvIHRoZSBmb3J0aCBieXRlIG9mIERFViBhbmQKCVBBUlRJVElPTiB0byB0aGUgZmlyc3QgMyBieXRlcyBvZiBERVYuIElmIERSSVZFIGlzIDB4RkYsIHNldAoJQ1VSUkVOVF9EUklWRSBhbmQgQ1VSUkVOVF9QQVJUSVRJT04gdG8gU0FWRURfRFJJVkUgYW5kCglTQVZFRF9QQVJUSVRJT04sIHJlc3BlY3RpdmVseS4gT3RoZXJ3aXNlIHNldCB0byBEUklWRSBhbmQKCVBBUlRJVElPTiwgcmVzcGVjdGl2ZWx5LgoJKHNldHVwX3BhcnQpIFtTVEFHRTFfNV06IEFsd2F5cyBjYWxsIHNldF9kZXZpY2UuCgoxOTk5LTA5LTI0ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogYWNpbmNsdWRlLm00IChncnViX0NIRUNLX0VORF9TWU1CT0wpOiBBZGQgYSBtaXNzaW5nCglkb3VibGUtcXVvdGUuIFJlcG9ydGVkIGJ5IEpvaGFubmVzIEtyb2VnZXIKCTxoYW5uZUBzcXVpcnJlbC5vd2wuZGU+LgoKMTk5OS0wOS0xNCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGZpZy5vcmc+CgoJKiBzdGFnZTEvc3RhZ2UxLlMgKGJsb2NrbGlzdF9kZWZhdWx0X3N0YXJ0KTogTmV3IGxhYmVsIGZvciBkZWZhdWx0CglibG9ja2xpc3Qgc3RhcnQgc2VjdG9yLgoJKGJsb2NrbGlzdF9kZWZhdWx0X2xlbik6IE5ldyBsYWJlbCBmb3IgZGVmYXVsdCBibG9ja2xpc3QgbGVuZ3RoLgoJKGJsb2NrbGlzdF9kZWZhdWx0X3NlZyk6IE5ldyBsYWJlbCBmb3IgZGVmYXVsdCBibG9ja2xpc3Qgc2VnbWVudC4KCSogc3RhZ2UxL3N0YWdlMV9sYmEuUyAoYmxvY2tsaXN0X2RlZmF1bHRfc3RhcnQpOiBMaWtld2lzZS4KCShibG9ja2xpc3RfZGVmYXVsdF9sZW4pOiBMaWtld2lzZS4KCShibG9ja2xpc3RfZGVmYXVsdF9zZWcpOiBMaWtld2lzZS4KCjE5OTktMDktMjMgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBhY2luY2x1ZGUubTQgKGdydWJfQVNNX0FERFIzMik6IEZpcnN0LCBjcmVhdGUgYSB0ZW1wbGF0ZQoJc291cmNlIGZpbGUgImNvbmZ0ZXN0LnMuaW4iLCBhbmQgdGhlbiwgcmVwbGFjZSBAQUREUjMyQCB3aXRoCgkiYWRkcjMyIiBpZiBHUlVCX0NWX0FTTV9QUkVGSVhfUkVRVUlSRU1FTlQgaXMgeWVzLCBvdGhlcndpc2UsCglyZXBsYWNlIGl0IHdpdGggImFkZHIzMjsiLiBSZXBvcnRlZCBieSBKb2huIFRvYmV5Cgk8c3BhbUBqb2huLWVkd2luLXRvYmV5Lm9yZz4uCgoxOTk5LTA5LTIzICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGRlYnVnX2ZzX3ByaW50X2Z1bmMpOiBSZW5hbWVkIHRvIC4uLgoJKGRpc2tfcmVhZF9wcmludF9mdW5jKTogLi4uIHRoaXMuCgkoZnN0ZXN0X2Z1bmMpOiBVc2UgRElTS19SRUFEX0hPT0sgaW5zdGVhZCBvZiBERUJVR19GUy4KCShpbnN0YWxsX2Z1bmMpOiBSZW5hbWUgZGVidWdfZnNfc2F2ZXNlY3RfZnVuYyB0bwoJZGlza19yZWFkX3NhdmVzZWN0X2Z1bmMuCglSZW5hbWUgZGVidWdfZnNfYmxvY2tsaXN0X2Z1bmMgdG8gZGlza19yZWFkX2Jsb2NrbGlzdF9mdW5jLgoJVXNlIERJU0tfUkVBRF9IT09LIGluc3RlYWQgb2YgREVCVUdfRlMuCgkodGVzdGxvYWRfZnVuYyk6IFVzZSBESVNLX1JFQURfSE9PSyBpbnN0ZWFkIG9mIERFQlVHX0ZTLgoJKiBzdGFnZTIvZGlza19pby5jIFshU1RBR0UxXzVdIChkZWJ1Z19mcyk6IFJlbmFtZWQgdG8gLi4uCglbIVNUQUdFMV81XSAoZGlza19yZWFkX2hvb2spOiAuLi4gdGhpcy4KCVshU1RBR0UxXzVdIChkZWJ1Z19mc19mdW5jKTogUmVuYW1lZCB0byAuLi4KCVshU1RBR0UxXzVdIChkaXNrX3JlYWRfZnVuYyk6IC4uLiB0aGlzLgoJKHJhd3JlYWQpIFshU1RBR0UxXzVdOiBVc2UgRElTS19SRUFEX0hPT0sgYW5kIERJU0tfUkVBRF9GVU5DCglpbnN0ZWFkCW9mIERFQlVHX0ZTIGFuZCBERUJVR19GU19GVU5DLgoJKGdydWJfcmVhZCkgWyFTVEFHRTFfNV06IExpa2V3aXNlLgoJKGRldnJlYWQpIFshU1RBR0UxXzVdOiBVc2UgRElTS19SRUFEX0hPT0sgaW5zdGVhZCBvZiBERUJVR19GUy4KCSogc3RhZ2UyL2ZzeXNfZXh0MmZzLmMgKGV4dDJmc19yZWFkKSBbIVNUQUdFMV81XTogVXNlCglESVNLX1JFQURfSE9PSyBhbmQgRElTS19SRUFEX0ZVTkMgaW5zdGVhZCBvZiBERUJVR19GUyBhbmQKCURFQlVHX0ZTX0ZVTkMuCgkqIHN0YWdlMi9mc3lzX2Zmcy5jIChmZnNfcmVhZCkgWyFTVEFHRTFfNV06IExpa2V3aXNlLgoJKiBzdGFnZTIvZnN5c19taW5peC5jIChtaW5peF9yZWFkKSBbIVNUQUdFMV81XTogTGlrZXdpc2UuCgkqIHN0YWdlMi9zaGFyZWQuaCBbIVNUQUdFMV81XSAoZGVidWdfZnMpOiBSZW5hbWVkIHRvIC4uLgoJWyFTVEFHRTFfNV0gKGRpc2tfcmVhZF9ob29rKTogLi4uIHRoaXMuCglbIVNUQUdFMV81XSAoZGVidWdfZnNfZnVuYyk6IFJlbmFtZWQgdG8gLi4uCglbIVNUQUdFMV81XSAoZGlza19yZWFkX2Z1bmMpOiAuLi4gdGhpcy4KCSogZG9jcy9ncnViLnRleGk6IExpa2V3aXNlLCByZXBsYWNlIGRlYnVnX2ZzIGFuZCBkZWJ1Z19mc19mdW5jCgl3aXRoIGRpc2tfcmVhZF9ob29rIGFuZCBkaXNrX3JlYWRfZnVuYywgcmVzcGVjdGl2ZWx5LgoKMTk5OS0wOS0yMyAgUGF2ZWwgUm9za2luICA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoaW5zdGFsbF9mdW5jKTogTmV3IGxvY2FsIGZ1bmN0aW9uLAoJZGVidWdfZnNfc2F2ZXNlY3RfZnVuYy4gVXNlIGRlYnVnX2ZzX3NhdmVzZWN0X2Z1bmMgdG8gZGV0ZXJtaW5lCgl0aGUgZmlyc3Qgc2VjdG9yIG9mIFN0YWdlMi4gV3JpdGUgU3RhZ2UgMSBhZnRlciBwYXRjaGluZyBTdGFnZQoJMi4KCjE5OTktMDktMjIgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBhY2luY2x1ZGUubTQgKGdydWJfQVNNX1VTQ09SRSk6IERvIG5vdCBkZWZpbmUgSEFWRV9BU01fVVNDT1JFCgl3aXRoaW4gQUNfQ0FDSEVfVkFMLiBEZWZpbmUgaXQgYWZ0ZXIgQUNfQ0FDSEVfVkFMIGlmCglHUlVCX0NWX0FTTV9VU0NPUkUgaXMgeWVzLgoKMTk5OS0wOS0yMCAgRWRtdW5kIEdSSU1MRVkgRVZBTlMgIDxlZG11bmRvQHJhbm8uZGVtb24uY28udWs+CgoJKiBuZXRib290LzNjNTl4LmM6IElOQ0xVREVfM2M1OXggaXMgcmVwbGFjZWQgYnkgSU5DTFVERV8zQzU5WAogCXRocm91Z2hvdXQuCgkqIG5ldGJvb3QvY29uZmlnLmM6IExpa2V3aXNlLgoJKiBuZXRib290L2lvLmggKF9fSU5TKTogTmV3IG1hY3JvLgoJKF9fT1VUUyk6IExpa2V3aXNlLgoJKG91dGwpOiBMaWtld2lzZS4KCShpbmwpOiBMaWtld2lzZS4KCShvdXRsX3ApOiBMaWtld2lzZS4KCShpbmxfcCk6IExpa2V3aXNlLgoJQ2FsbCBfX0lOUyB3aXRoIHRoZSBhcmd1bWVudCBgYicsIHdpdGggYHcnIGFuZCB3aXRoIGBsJyB0bwoJZGVmaW5lIGluc2IsIGluc3cgYW5kIGluc2wsIHJlc3BlY3RpdmVseS4gTGlrZXdpc2UsIENhbGwgX19PVVRTCgl3aXRoIGBiJywgd2l0aCBgdycgYW5kIHdpdGggYGwnIHRvIGRlZmluZSBvdXRzYiwgb3V0dyBhbmQgb3V0bCwKCXJlc3BlY3RpdmVseS4KCSogbmV0Ym9vdC9wY2kuaCAoUENJX1ZFTkRPUl9JRF9WT1JURVgpOiBOZXcgbWFjcm8uCiAJKFBDSV9ERVZJQ0VfSURfVk9SVEVYXzNjNTk1KTogTGlrZXdpc2UuIERlZmluZWQgYXMgYSByYW5kb20KCXZhbHVlLgoKMTk5OS0wOS0yMCAgRWR3YXJkIEtpbGxpcHMgIDxla2lsbGlwc0B0cml0b24ubmV0PgoKCSogc3RhZ2UyL2Rpc2tfaW8uYyAoc2V0X3BhcnRpdGlvbl9oaWRkZW5fZmxhZyk6IFNldC9jbGVhciB0aGUKCWhpZGRlbiBmbGFnLCB3aGV0aGVyIHRoZSBoaWRkZW4gZmxhZyBpcyBzZXQgb3Igbm90LgoKMTk5OS0wOS0yMSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChpbnN0YWxsX2Z1bmMpOiBEbyBub3Qgc2V0IERFQlVHX0ZTIGF0IHRoZQoJZmlyc3QgcmVhZC4gU2V0IGl0IHRvIERFQlVHX0ZTX0JMT0NLTElTVF9GVU5DIHdoZW4gcmVhZGluZyB0aGUKCXdob2xlIG9mIFN0YWdlIDIuIFNldCBGSUxFUE9TIHRvIHplcm8gYXQgdGhlIHNhbWUgdGltZSB0byByZWFkCglmcm9tIHRoZSBiZWdpbm5pbmcgb2YgU3RhZ2UgMi4gUmVwb3J0ZWQgYnkgUGF2ZWwgUm9za2luLgoKMTk5OS0wOS0yMCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCglUaGUgYXJndW1lbnQgQUREUiBmb3IgdGhlIGNvbW1hbmQgaW5zdGFsbCBpcyBub3cgb3B0aW9uYWwuCgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoaW5zdGFsbF9mdW5jKTogSWYgcGFyc2luZyBBRERSIGZhaWxzLCBzZXQKCUlOU1RBTExBRERSIHRvIHplcm8gYW5kIHNldCBQVFIgdG8gQUREUi4KCUlmIElOU1RBTExBRERSIGlzIHplcm8gYWZ0ZXIgcGFyc2luZyB0aGUgY29tbWFuZC1saW5lLCBjaGVjayBpZgoJdGhlIFN0YWdlIDIgaWQgaXMgU1RBR0UyX0lEX1NUQUdFMi4gSWYgc28sIHNldCBJTlNUQUxMQUREUiB0bwoJMHg4MDAwLCBvdGhlcndpc2Ugc2V0IGl0IHRvIDB4MjAwMC4KCVNldCB0aGUgaW5zdGFsbCBhZGRyZXNzIGluIHRoZSBTdGFnZSAxIGFmdGVyIHRoZSBhdXRvbWF0aWMKCWRldGVybWluYXRpb24gaXMgY29tcGxldGVkLgoJKGJ1aWx0aW5faW5zdGFsbCk6IFNheSB0aGF0IEFERFIgaXMgb3B0aW9uYWwgaW4gdGhlIGhlbHAKCW1lc3NhZ2UuCgkqIGRvY3MvZ3J1Yi50ZXhpOiBTeW5jaHJvbml6ZSB0aGUgZGVzY3JpcHRpb24gYWJvdXQgaW5zdGFsbCB0bwoJYnVpbHRpbnMuYy4gUmVtb3ZlIGV4cGxpY2l0IGFkZHJlc3MgYXJndW1lbnRzIGZyb20gYWxsIHRoZQoJZXhhbXBsZXMuIEFkZCBhIGRlc2NyaXB0aW9uIGFib3V0IGhlbHAuCgkqIGRvY3MvbWVudS5sc3Q6IERvIG5vdCBzcGVjaWZ5IHRoZSBhZGRyZXNzIGFyZ3VtZW50IGZvcgoJaW5zdGFsbC4KCjE5OTktMDktMTkgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJVGhlIGNvbXBsZXRpb24gY29kZSBpcyBoZWF2aWx5IG1vZGlmaWVkLgoKCSogc3RhZ2UyL2NoYXJfaW8uYyBbIVNUQUdFMV81XSAoZ2V0X2NtZGxpbmUpOiBJbiB0aGUgY29tcGxldGlvbgoJY29kZSwgdXNlIENPTVBMRVRJT05fQlVGRkVSIHRvIGdldCB0aGUgY29tcGxldGlvbiBpbnN0ZWFkIG9mCgl3cml0aW5nIHRvIEJVRiBkaXJlY3RseS4KCVNhdmUgdGhlIHBvc2l0aW9uIG9mIGEgcG9zc2libGUgZXF1YWwgY2hhcmFjdGVyIGFmdGVyIGEgY29tbWFuZAoJaW4gRVFVQUxfUE9TIGFuZCByZXBsYWNlIHRoZSBlcXVhbCBjaGFyYWN0ZXIgd2l0aCBhIHNwYWNlCgl0ZW1wb3JhcmlseSBmb3IgdGhlIGNvZGUgc2ltcGxpY2l0eS4KCUF0IGZpcnN0LCBqdXN0IGdldCBjb21wbGV0aW9ucywgYW5kLCBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lCgljb21wbGV0aW9ucywgdGhlbiBwcmludCB0aGUgbGlzdCBvZiB0aGUgY29tcGxldGlvbnMuCgkqIHN0YWdlMi9kaXNrX2lvLmMgWyFTVEFHRTFfNV0gKGRvX2NvbXBsZXRpb24pOiBOZXcgdmFyaWFibGUuCglbIVNUQUdFMV81XSAodW5pcXVlKTogTW92ZWQgdGhlIGRlZmluaXRpb24gbmVhciB0aGUgYmVnaW5uaW5nLgoJWyFTVEFHRTFfNV0gKHVuaXF1ZV9zdHJpbmcpOiBMaWtld2lzZS4gQW5kIGNoYW5nZWQgdGhlIHR5cGUgdG8KCWNoYXIgKi4KCShjaGVja19CU0RfcGFydHMpIFshU1RBR0UxXzVdOiBJZiBET19DT01QTEVUSU9OIGlzIG5vbi16ZXJvLCBkbwoJbm90IHByaW50IGFueXRoaW5nLgoJKHJlYWxfb3Blbl9wYXJ0aXRpb24pIFshU1RBR0UxXzVdOiBMaWtld2lzZS4KCVshU1RBR0UxXzVdIChwcmludF9mc3lzX3R5cGUpOiBMaWtld2lzZS4KCVshU1RBR0UxXzVdIChwcmludF9hX2NvbXBsZXRpb24pOiBUaGUgYXJndW1lbnQgRklMRU5BTUUgaXMKCXJlbmFtZWQJdG8gTkFNRS4KCUlmIERPX0NPTVBMRVRJT04gaXMgbm9uLXplcm8sIGdldCB0aGUgdW5pcXVlIHBhcnQgZnJvbSBOQU1FIGFuZAoJc2V0IFVOSVFVRV9TVFJJTkcgdG8gaXQuCglJZiBET19DT01QTEVUSU9OIGlzIHplcm8sIGp1c3QgcHJpbnQgTkFNRS4KCURvIG5vdCBjYWxsIHByaW50ZiB1bmNvbmRpdGlvbmFsbHkuCglbIVNUQUdFMV81XSAocHJpbnRfY29tcGxldGlvbnMpOiBBY2NlcHQgdHdvIGFyZ3VlbWVudHMKCUlTX0ZJTEVOQU1FIGFuZCBJU19DT01QTEVUSU9OIGluc3RlYWQgb2YgRklMRU5BTUUuCglTZXQgVU5JUVVFX1NUUklORyB0byBVTklRVUVfQlVGLgoJU2V0IERPX0NPTVBMRVRJT04gdG8gSVNfQ09NUExFVElPTiBhbmQgc2V0IGl0IHRvIHplcm8gYmVmb3JlCglyZXR1cm5pbmcuCglJZiBJU19GSUxFTkFNRSBpcyB6ZXJvLCB0aGVuIGNvbXBsZXRlIGJ1aWx0aW4gY29tbWFuZHMgYW5kCglyZXR1cm4gVU5JUVVFIC0gMS4KCVVzZSBCVUYgaW5zdGVhZCBvZiBGSUxFTkFNRS4KCUlmIElTX0NPTVBMRVRJT04gaXMgbm9uLXplcm8sIGRvIG5vdCBwcmludCBhbnl0aGluZy4KCUNvcHkgVU5JUVVFX1NUUklORyB0byBQVFIgb25seSBpZiBJU19DT01QTEVUSU9OIGFuZAoJKlVOSVFVRV9TVFJJTkcgYXJlIG5vbi16ZXJvLgoJKiBzdGFnZTIvc2hhcmVkLmggKENPTVBMRVRJT05fQlVGKTogTmV3IG1hY3JvLgoJKENPTVBMRVRJT05fQlVGTEVOKTogTGlrZXdpc2UuCgkoVU5JUVVFX0JVRik6IExpa2V3aXNlLgoJKFVOSVFVRV9CVUZMRU4pOiBMaWtld2lzZS4KCShNRU5VX0JVRik6IFNldCB0byBVTklRVUVfQlVGICsgVU5JUVVFX0JVRkxFTi4KCShNRU5VX0JVRkxFTik6IFNldCB0byAweDgwMDAgKyBQQVNTV09SRF9CVUYgLSBVTklRVUVfQlVGLgoJKHByaW50X2NvbXBsZXRpb25zKTogQWRqdXN0ZWQgdG8gdGhlIGRlZmluaXRpb24uCgoxOTk5LTA5LTE5ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogYWNpbmNsdWRlLm00IChncnViX0FTTV9QUkVGSVhfUkVRVUlSRU1FTlQpOiBEbyBub3QgY2FsbAoJQUNfREVGSU5FX1VOUVVPVEVzIHdpdGhpbiBBQ19DQUNIRV9WQUwuIERlZmluZSBBRERSMzIgYW5kIERBVEEzMgoJYWZ0ZXIgaXQuCgkoZ3J1Yl9DSEVDS19TVEFSVF9TWU1CT0wpOiBEbyBub3QgY2FsbCBBQ19ERUZJTkUgd2l0aGluCglBQ19DQUNIRV9WQUwuIERlZmluZSBIQVZFX1NUQVJUX1NZTUJPTCBhZnRlciBpdC4KCShncnViX0NIRUNLX1VTQ09SRV9TVEFSVF9TWU1CT0wpOiBEbyBub3QgY2FsbCBBQ19ERUZJTkUgd2l0aGluCglBQ19DQUNIRV9WQUwuIERlZmluZSBIQVZFX1VTQ09SRV9TVEFSVF9TWU1CT0wgYWZ0ZXIgaXQuCgkoZ3J1Yl9DSEVDS19FTkRfU1lNQk9MKTogRG8gbm90IGNhbGwgQUNfREVGSU5FIHdpdGhpbgoJQUNfQ0FDSEVfVkFMLiBEZWZpbmUgSEFWRV9FTkRfU1lNQk9MIGFmdGVyIGl0LgoJKGdydWJfQ0hFQ0tfVVNDT1JFX0VORF9TWU1CT0wpOiBEbyBub3QgY2FsbCBBQ19ERUZJTkUgd2l0aGluCglBQ19DQUNIRV9WQUwuIERlZmluZSBIQVZFX1VTQ09SRV9FTkRfU1lNQk9MIGFmdGVyIGl0LgoKMTk5OS0wOS0xNyAgUGF2ZWwgUm9za2luICA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoJKiBhY2NvbmZpZy5oIChBRERSMzIpOiBSZW1vdmVkLiBUaGlzIGVudHJ5IGlzIGF1dG9tYXRpY2FsbHkKCWNyZWF0ZWQgYnkgYXV0b2hlYWRlci4KCShEQVRBMzIpOiBMaWtld2lzZS4KCSogYWNpbmNsdWRlLm00IChncnViX0FTTV9BREQzMik6IFVzZSBBRERSMzIgaW5zdGVhZCBvZiBhZGRyMzIuCglSZXF1aXJlIGdydWJfQVNNX1BSRUZJWF9SRVFVSVJFTUVOVC4KCShncnViX0FTTV9QUkVGSVhfUkVRVUlSRU1FTlQpOiBEZWZpbmUgQUREUjMyIGFuZCBEQVRBMzIuCgkqIGNvbmZpZ3VyZS5pbjogQ2FsbCBncnViX0FTTV9QUkVGSVhfUkVRVUlSRU1FTlQgYmVmb3JlCglncnViX0FTTV9BRERSMzIuIERvIG5vdCBkZWZpbmUgQUREUjMyIGFuZCBEQVRBMzIuCgkqIHN0YWdlMS9zdGFnZTEuUyAoYWZ0ZXJfQlBCKTogVXNlIEFCUyhmaXJzdGxpc3QpIGluc3RlYWQgb2YKCWZpcnN0bGlzdC4KCShNU0cpOiBVc2UgQUJTKHgpIGluc3RlYWQgb2YgeC4KCShwcm9iZV9sb29wKTogVXNlIHRoZSBtYWNybyBNU0cgZm9yIGZkX3Byb2JlX2Vycm9yX3N0cmluZy4KCSogc3RhZ2UxL3N0YWdlMV9sYmEuUyAoYWZ0ZXJfQlBCKTogVXNlIEFCUyhmaXJzdGxpc3QpIGluc3RlYWQgb2YKCWZpcnN0bGlzdC4KCShNU0cpOiBVc2UgQUJTKHgpIGluc3RlYWQgb2YgeC4KCSogc3RhZ2UyL2FzbS5TIChwdXRjaGFyKTogUmVuYW1lZCB0byAuLi4KCShncnViX3B1dGNoYXIpOiAuLi4gdGhpcy4KCjE5OTktMDktMTggIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvZ3VuemlwLmMgKHJlc2V0X2xpbmFsbG9jKTogVXNlIHRoZSBtYWNybyBSQVdfQUREUgoJYmVmb3JlIHNldHRpbmcgTElOQUxMT0NfVE9QQUREUi4KCSogc3RhZ2UyL3NoYXJlZC5oIFshR1JVQl9VVElMXSAoUkFXX0FERFIpOiBBZGRlZCBwYXJlbnRoZXNpc2VzCgl0byBhdm9pZCBhIGdjYyB3YXJuaW5nLgoJWyFHUlVCX1VUSUxdIChSQVdfU0VHKTogTGlrZXdpc2UuCgoxOTk5LTA5LTE4ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogYWNpbmNsdWRlLm00IChncnViX0NIRUNLX1NUQVJUX1NZTUJPTCk6IE5ldyBmdW5jdGlvbi4KCShncnViX0NIRUNLX1VTQ09SRV9TVEFSVF9TWU1CT0wpOiBMaWtld2lzZS4KCShncnViX0NIRUNLX0VORF9TWU1CT0wpOiBMaWtld2lzZS4KCShncnViX0NIRUNLX1VTQ09SRV9TWU1CT0wpOiBMaWtld2lzZS4KCSogY29uZmlndXJlLmluOiBDYWxsIGdydWJfQ0hFQ0tfU1RBUlRfU1lNQk9MIGFuZAoJZ3J1Yl9DSEVDS19VU0NPUkVfU1RBUlRfU1lNQk9MLCBhbmQgaWYgbmVpdGhlciBzdGFydCBub3IgX3N0YXJ0CglpcyBkZWZpbmVkLCBwcmludCBhbiBlcnJvciBtZXNzYWdlIGFuZCBleGl0LgoJTGlrZXdpc2UsIGNhbGwgZ3J1Yl9DSEVDS19FTkRfU1lNQk9MIGFuZAoJZ3J1Yl9DSEVDS19VU0NPUkVfRU5EX1NZTUJPTCwgYW5kIGlmIG5laXRoZXIgZW5kIG5vciBfZW5kIGlzCglkZWZpbmVkLCBwcmludCBhbiBlcnJvciBtZXNzYWdlIGFuZCBleGl0LgoJKiBhY2NvbmZpZy5oIChIQVZFX1NUQVJUX1NZTUJPTCk6IEFkZGVkIHRoZSAidW5kZWYiIGVudHJ5LgoJKEhBVkVfVVNDT1JFX1NUQVJUX1NZTUJPTCk6IExpa2V3aXNlLgoJKEhBVkVfRU5EX1NZTUJPTCk6IExpa2V3aXNlLgoJKEhBVkVfVVNDT1JFX0VORF9TWU1CT0wpOiBMaWtld2lzZS4KCSogc3RhZ2UyL2NoYXJfaW8uYyAobWVtY2hlY2spOiBSZW5hbWUgdGhlIGFyZ3VtZW50IFNUQVJUIHRvCglBRERSLiBBZGRlZCB0d28gbWlzc2luZyBlcXVhbCBjaGFyYWN0ZXJzLgoJW0dSVUJfVVRJTF06IERlZmluZSBuZXcgbG9jYWwgZnVuY3Rpb25zIHN0YXJ0X2FkZHIgYW5kIGVuZF9hZGRyLgoJW0dSVUJfVVRJTCAmJiBIQVZFX1NUQVJUX1NZTUJPTF06IFRoZSBmdW5jdGlvbiBzdGFydF9hZGRyCglyZXR1cm5zIFNUQVJULgoJW0dSVUJfVVRJTCAmJiBIQVZFX1VTQ09SRV9TVEFSVF9TWU1CT0xdOiBUaGUgZnVuY3Rpb24gc3RhcnRfYWRkcgoJcmV0dXJucyBfU1RBUlQuCglbR1JVQl9VVElMICYmIEhBVkVfRU5EX1NZTUJPTF06IFRoZSBmdW5jdGlvbiBlbmRfYWRkciByZXR1cm5zCglFTkQuCglbR1JVQl9VVElMICYmIEhBVkVfVVNDT1JFX0VORF9TWU1CT0xdOiBUaGUgZnVuY3Rpb24gZW5kX2FkZHIKCXJldHVybnMgX0VORC4KCVtHUlVCX1VUSUxdOiBJZiBBRERSIGlzIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiB0aGUgYWRkcmVzcwoJcmV0dXJuZWQgYnkgc3RhcnRfYWRkciwgYW5kIEFERFIgcGx1cyBMRU4gaXMgbGVzcyB0aGFuIHRoZQoJYWRkcmVzcyByZXR1cm5lZCBieSBlbmRfYWRkciwgcmV0dXJuICEgRVJSTlVNLgoJKiBzdGFnZTIvYXNtLlMgKGdldF9jb2RlX2VuZCkgW0hBVkVfRU5EX1NZTUJPTF06IFVzZSAkZW5kIGFzIHRoZQoJZW5kIG9mIHRoZSBic3MuCglbSEFWRV9VU0NPUkVfRU5EX1NZTUJPTF06IFVzZSAkX2VuZCBhcyB0aGUgZW5kIG9mIHRoZSBic3MuCgkqIHN0YWdlMi9kaXNrX2lvLmMgWyFTVEFHRTFfNV0gKGN1cl9wYXJ0X2Rlc2MpOiBNYWRlIHN0YXRpYy4KCU5lZWQgbm90IHRvIGJlIGdsb2JhbCBhbnkgbG9uZ2VyLgoKMTk5OS0wOS0xNyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9jaGFyX2lvLmMgWyFTVEFHRTFfNV0gKGdldF9jbWRsaW5lKTogVGhlIGFyZ3VtZW50CglDT01QTEVUSU9OIGlzIHJlbmFtZWQgdG8gUkVBRExJTkUuCglEbyBub3QgaW5pdGlhbGl6ZSBLSUxMIGhlcmUuCglUQUIsIEMtYSwgQy1lLCBDLWYsIEMtYiwgQy11LCBDLWssIEMteSwgQy1wIGFuZCBDLW4gYXJlIGhhbmRsZWQKCW9ubHkgaWYgUkVBRExJTkUgaXMgbm9uLXplcm8uCglJZiBFQ0hPX0NIQVIgaXMgbm90IE5VTCwgZG8gbm90IHJlbW92ZSB0aGUgbGVhZGluZyBzcGFjZXMgaW4gQlVGLgoJQWRkIENNRExJTkUgaW50byB0aGUgaGlzdG9yeSBsaXN0IG9ubHkgaWYgUkVBRExJTkUgaXMgbm9uLXplcm8uCgkqIHN0YWdlMi9zdGFnZTIuYyAoY21haW4pOiBJbml0aWFsaXplIHRoZSBraWxsIGJ1ZmZlci4KCjE5OTktMDktMTcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJS2lsbGluZywgeWFua2luZyBhbmQgbWFuaXB1bGF0aW5nIHRoZSBoaXN0b3J5IGFyZSBzdXBwb3J0ZWQuCgoJKiBzdGFnZTIvc2hhcmVkLmggKGN1cl9jbWRsaW5lKTogUmVtb3ZlZC4KCShNQVhfQ01ETElORSk6IE1vdmVkIG5lYXIgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4KCShORVdfSEVBUFNJWkUpOiBMaWtld2lzZS4KCShDTURMSU5FX0JVRkxFTik6IFNldCB0byBNQVhfQ01ETElORS4KCShLSUxMX0JVRik6IE5ldyBtYWNyby4KCShLSUxMX0JVRkxFTik6IExpa2V3aXNlLgoJKEhJU1RPUllfQlVGKTogTGlrZXdpc2UuCgkoSElTVE9SWV9TSVpFKTogTGlrZXdpc2UuCgkoSElTVE9SWV9CVUZMRU4pOiBMaWtld2lzZS4KCShNRU5VX0JVRik6IFNldCB0byBISVNUT1JZX0JVRiArIEhJU1RPUllfQlVGTEVOLgoJKE1FTlVfQlVGTEVOKTogU2V0IHRvIDB4ODAwMCArIFBBU1NXT1JEX0JVRiAtIEhJU1RPUllfQlVGLgoJKHN0cmNweSk6IE5ldyBtYWNyby4KCShncnViX3N0cmNweSk6IERlbGFyZWQuCgkqIHN0YWdlMi9ib290LmMgKGN1cl9jbWRsaW5lKTogUmVtb3ZlZC4KCSogc3RhZ2UyL2NoYXJfaW8uYyBbIVNUQUdFMV81XSAoZ3J1Yl9zdHJjcHkpOiBOZXcgZnVuY3Rpb24uCglbIVNUQUdFMV81XSAoZ2V0X2hpc3RvcnkpOiBMaWtld2lzZS4KCVshU1RBR0UxXzVdIChhZGRfaGlzdG9yeSk6IExpa2V3aXNlLgoJWyFTVEFHRTFfNV0gKGdldF9jbWRsaW5lKTogVXNlIEJVRiBpbnN0ZWFkIG9mIENNRExJTkUgZm9yIHRoZQoJd29ya2luZyBidWZmZXIgZm9yIHRoZSBjb21tYW5kLWxpbmUuCglBIG5ldyBmdW5jdGlvbiBjbF9pbnNlcnQgaXMgdXNlZCB0byBpbnNlcnQgYSBzdHJpbmcgdG8gdGhlCgljb21tYW5kLWxpbmUuCglJbiB0aGUgY2FzZSB3aGVyZSBDLXUgb3IgQy1rIGlzIHByZXNzZWQsIGNvcHkgdGhlIHN0cmluZyBiZWluZwoJZGVsZXRlZCB0byBLSUxMLgoJSWYgQy15IGlzIHByZXNzZWQsIGluc2VydCBLSUxMIHRvIHRoZSBjb21tYW5kLWxpbmUuCglJZiBDLXAgaXMgcHJlc3NlZCwgZmV0Y2ggdGhlIHByZXZpb3VzIGNvbW1hbmQgZnJvbSB0aGUgaGlzdG9yeQoJbGlzdCBISVNUT1JZLCBhbmQgaWYgQy1uIGlzIHByZXNzZWQsIGZldGNoIHRoZSBuZXh0IGNvbW1hbmQgZnJvbQoJaXQuCglJZiBMUE9TIGlzIGxlc3MgdGhhbiBMTEVOLCBhZGQgQ01ETElORSBpbnRvIHRoZSBoaXN0b3J5IGxpc3QuCglJZiBDIGlzIGVxdWFsIHRvIEtFWV9VUCwgc2V0IEMgdG8gMTYsIGFuZCBpZiBDIGlzIGVxdWFsIHRvCglLRVlfRE9XTiwgc2V0IEMgdG8gMTQuCglbIVNUQUdFMV81XSAobnVtX2hpc3RvcnkpOiBOZXcgdmFyaWFibGUuCgoxOTk5LTA5LTE1ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc3RhZ2UyL3NpemVfdGVzdDogRG8gbm90IGNoZWNrIGZvciB0aGUgc2l6ZSBvZiBTdGFnZSAyLgoJKiBzdGFnZTEvTWFrZWZpbGUuYW0gKHN0YWdlMl9zaXplLmgpOiBVc2UgYHNldCcgYW5kIGBlY2hvJwoJaW5zdGVhZCBvZiBhd2ssIHNpbmNlIHdlIGNhbm5vdCBleHBlY3QgYXdrIGlzIHByZXNlbnQuIFJlbW92ZQoJc3RhZ2UyX3NpemUuaCBiZWZvcmUgY3JlYXRpbmcgaXQuCgoxOTk5LTA5LTE1ICBQYXZlbCBSb3NraW4gIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChTVUJESVJTKTogUHV0IHN0YWdlMSBhZnRlciBzdGFnZTIgc28gdGhhdCBzdGFnZTIKCWlzIGJ1aWx0IGJlZm9yZSBzdGFnZTEuCgkqIHN0YWdlMS9NYWtlZmlsZS5hbSAoQlVJTFRfU09VUkNFUyk6IE5ldyB2YXJpbGFibGUuCgkoQ0xFQU5GSUxFUyk6IEFkZGVkIEJVSUxUX1NPVVJDRVMuCgkoc3RhZ2UxX2V4ZWNfU09VUkNFUyk6IEFkZGVkIHN0YWdlMl9zaXplLmguCgkoc3RhZ2UxX2xiYV9leGVjX1NPVVJDRVMpOiBMaWtld2lzZS4KCShzdGFnZTJfc2l6ZS5oKTogTmV3IHJ1bGUuCgkqIHN0YWdlMS9zdGFnZTEuUzogSW5jbHVkZSA8c3RhZ2UyX3NpemUuaD4gYW5kIHVzZSBTVEFHRTJfU0laRQoJdG8gZGV0ZXJtaW5lIGhvdyBtdWNoIG51bWJlciBvZiBzZWN0b3JzIHRvIGJlIHJlYWQgd2hlbiBsb2FkaW5nCglTdGFnZSAyLgoJKiBzdGFnZTEvc3RhZ2UxX2xiYS5TOiBMaWtld2lzZS4KCjE5OTktMDktMTUgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBuZXRib290L2NvbmZpZy5oOiBNb3ZlZCB0byAuLi4KCSogbmV0Ym9vdC9uZXRib290X2NvbmZpZy5oOiAuLi4gaGVyZS4KCSogbmV0Ym9vdC9jb25maWcuYzogSW5jbHVkZSBuZXRib290X2NvbmZpZy5oIGluc3RlYWQgb2YgY29uZmlnLmguCgkqIG5ldGJvb3QvZnN5c190ZnRwLmM6IExpa2V3aXNlLgoJKiBuZXRib290L2lwLmM6IExpa2V3aXNlLgoJKiBuZXRib290L01ha2VmaWxlLmFtIChsaWJkcml2ZXJzX2FfU09VUkNFUyk6IFJlbW92ZWQgY29uZmlnLmgKCWFuZCBhZGRlZCBuZXRib290X2NvbmZpZy5oLgoKMTk5OS0wOS0xNCAgUGF2ZWwgUm9za2luICA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoJKiBncnViL2FzbXN0dWIuYyBbX19saW51eF9fXTogT24gR0xpYmMgMi4wIGFuZCBuZXdlciB1c2UgbHNlZWssCglkb24ndCBpbmNsdWRlIDxsaW51eC9mcy5oPiBhbmQgZGVmaW5lIEJMS0ZMU0JVRiBpZiBuZWVkZWQuCgoxOTk5LTA5LTE0ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCU5vdyB0aGUgZ3J1YiBzaGVsbCB3b3JrcyBmaW5lIG9uIEZyZWVCU0QuIEEgcGF0Y2ggYnkgUGF2ZWwKCVJvc2tpbiBpcyBtb2RpZmllZCBhbmQgYXBwbGllZC4KCgkqIGdydWIvYXNtc3R1Yi5jIChnZXRfZHJpdmVfZ2VvbWV0cnkpOiBOZXcgZnVuY3Rpb24uCgkoZ2V0X2Rpc2tpbmZvKTogVXNlIGdldF9kcml2ZV9nZW9tZXRyeSB0byBzZXQgdGhlIGdlb21ldHJ5IG9mCglEUklWRS4KCjE5OTktMDktMTQgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBjb25maWd1cmUuaW4gKC0tZW5hYmxlLW5lKTogTWFkZSB0aGUgZGVzY3JpcHRpb24gbW9yZSBjbGVhci4KCSgtLWVuYWJsZS1uZXBjaSk6IExpa2V3aXNlLgoJKC0tZW5hYmxlLXdkKTogTGlrZXdpc2UuCgkoLS1lbmFibGUtdDUwMyk6IExpa2V3aXNlLgoJKC0tZW5hYmxlLXQ1MDkpOiBMaWtld2lzZS4KCSgtLWVuYWJsZS0zYzU5eCk6IExpa2V3aXNlLgoJKC0tZW5hYmxlLWxhbmNlKTogTGlrZXdpc2UuCgkoLS1lbmFibGUtY3MpOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1lZXBybzEwMCk6IExpa2V3aXNlLgoJKC0tZW5hYmxlLXdkLWRlZmF1bHRfbWVtKTogUmVuYW1lZCB0byAuLi4KCSgtLWVuYWJsZS13ZC1kZWZhdWx0LW1lbSk6IC4uLiB0aGlzLgoJKC0tZW5hYmxlLWNzLXNjYW4pOiBDb3JyZWN0ZWQgdGhlIGRlc2NyaXB0aW9uLgoJKE5FVEJPT1RfU1VQUE9SVCk6IERlZmluZWQgaWYgTkVUX0NGTEFHUyBpcyBub3QgZW1wdHkuCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAoc3RhZ2UyX2V4ZWNfTERBREQpOiBEZWZpbmVkIG9ubHkgaWYKCU5FVEJPT1RfU1VQUE9SVCBpcyB0cnVlLgoJKiBuZXRib290L01ha2VmaWxlLmFtIChMSUJEUklWRVJTKTogTmV3IHZhcmlhYmxlLiBJZgoJTkVUQk9PVF9TVVBQT1JUIGlzIHRydWUsIHNldCB0byBsaWJkcml2ZXIuYSwgb3RoZXJ3aXNlIHNldCB0byBhbgoJZW1wdHkgc3RyaW5nLgoJKG5vaW5zdF9MSUJSQVJJRVMpOiBTZXQgdG8gTElCRFJJVkVSUy4KCShEUklWRVJTKTogQWRkZWQgM2M1MDkuaCwgY3M4OXgwLmggYW5kIG5zODM5MC5oLgoJKGxpYmRyaXZlcnNfYV9TT1VSQ0VTKTogQWRkZWQgYnl0ZW9yZGVyLmgsIGNvbmZpZy5oLCBpZi5oLCBpby5oLAoJaXAuaCwgbmV0Ym9vdC5oLCBuZXRkZXZpY2UuaCwgbmljLmggYW5kIHBpYy5oLgoJKGxpYmRyaXZlcnNfYV9DRkxBR1MpOiBBZGRlZCAtZm5vLWJ1aWx0aW4gYW5kIC1ub3N0ZGluYyBhbmQKCXJlbW92ZWQgLU8yLgoJKiBzdGFnZTIvY2hhcl9pby5jIChncnViX3NwcmludGYpOiBBZGRlZCBwYXJlbnRoZXNpc2VzIHRvIGF2b2lkCglnY2Mgd2FybmluZ3MuCgkqIHN0YWdlMi9ndW56aXAuYyAoZ3VuemlwX3Rlc3RfaGVhZGVyKTogQ2hlY2sgaWYgRlNZU19UWVBFIGlzCglURlRQLiBJZiBzbywgc2V0IElTX1RGVFAgdG8gbm9uLXplcm8sIG90aGVyd2lzZSB0byB6ZXJvLiBBbmQsCgl1c2UgSVNfVEZUUCB0byBjaGVjayBpZiB3ZSBoYXZlIEdaSVBfQ1JDIGluc3RlYWQgb2YgdGhlIGVxdWF0aW9uCgkiRklMRU1BWCA9PSAxNiAqIDEwMjQgKiAxMDI0Ii4KCjE5OTktMDktMTMgIEVkbXVuZCBHUklNTEVZIEVWQU5TICA8ZWRtdW5kb0ByYW5vLmRlbW9uLmNvLnVrPgoKCVRoZSBuZXRib290IHN1cHBvcnQgaW4gdGhlIERyZXNkZW4gdmVyc2lvbiBvZiBHUlVCIGlzIGludGVncmF0ZWQuCgoJKiBNYWtlZmlsZS5hbSAoU1VCRElSUyk6IEFkZGVkIG5ldGJvb3QuCgkqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtdGZ0cCk6IE5ldyBvcHRpb24uCgkoLS1lbmFibGUtbmUpOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1uZXBjaSk6IExpa2V3aXNlLgoJKC0tZW5hYmxlLXdkKTogTGlrZXdpc2UuCgkoLS1lbmFibGUtdDUwMyk6IExpa2V3aXNlLgoJKC0tZW5hYmxlLXQ1MDkpOiBMaWtld2lzZS4KCSgtLWVuYWJsZS0zYzU5eCk6IExpa2V3aXNlLgoJKC0tZW5hYmxlLWxhbmNlKTogTGlrZXdpc2UuCgkoLS1lbmFibGUtY3MpOiBMaWtld2lzZS4KCSgtLWVuYWJsZS1lZXBybzEwMCk6IExpa2V3aXNlLgoJKC0tZW5hYmxlLW5lLXNjYW4pOiBMaWtld2lzZS4KCSgtLWVuYWJsZS13ZC1kZWZhdWx0X21lbSk6IExpa2V3aXNlLgoJKC0tZW5hYmxlLWNzLXNjYW4pOiBMaWtld2lzZS4KCShORVRfQ0ZMQUdTKTogTmV3IHZhcmlhYmxlLgoJKE5FVF9FWFRSQUZMQUdTKTogTGlrZXdpc2UuCglEbyBBQ19PVVRQVVQgZm9yIG5ldGJvb3QvTWFrZWZpbGUgYXMgd2VsbC4KCSogc3RhZ2UxL3N0YWdlMS5TOiBTZXQgdGhlIG51bWJlciBvZiBzZWN0b3JzIGZvciBTdGFnZSAyIHRvIDEzMC4KCSogc3RhZ2UxL3N0YWdlMV9sYmEuUzogTGlrZXdpc2UuCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAoc3RhZ2UyX2V4ZWNfTERBREQpOiBBZGRlZAoJLi4vbmV0Ym9vdC9saWJkcml2ZXJzLmEuCgkqIHN0YWdlMi9hc20uUyBbIVNUQUdFMV81XSAoY3VycnRpY2tzKTogTmV3IGZ1bmN0aW9uLgoJKiBzdGFnZTIvY2hhcl9pby5jIFshU1RBR0UxXzVdIChncnViX3NwcmludGYpOiBMaWtld2lzZS4KCVshU1RBR0UxXzVdIChncnViX21lbWNtcCk6IExpa2V3aXNlLgoJKiBzdGFnZTIvZGlza19pby5jIChmc3lzX3RhYmxlKSBbRlNZU19URlRQXTogQWRkZWQgYW4gZW50cnkgZm9yCgl0ZnRwLgoJKHNhbmVfcGFydGl0aW9uKSBbIVNUQUdFMV81XTogSWYgQ1VSUkVOVF9EUklWRSBpcyBhIG5ldHdvcmsKCWRyaXZlLCByZXR1cm4gMS4KCShyZWFsX29wZW5fcGFydGl0aW9uKSBbIVNUQUdFMV81XTogTGlrZXdpc2UuCgkoc2V0X2RldmljZSk6IElmIERFVklDRSBjb250YWlucyBhIG5ldHdvcmsgZHJpdmUsIHNldAoJQ1VSUkVOVF9EUklWRSB0byAweDIwLgoJKiBzdGFnZTIvZmlsZXN5cy5oIFtGU1lTX1RGVFBdIChGU1lTX1RGVFBfTlVNKTogRGVmaW5lZCBhcyAxLgoJWyFGU1lTX1RGVFBdIChGU1lTX1RGVFBfTlVNKTogRGVmaW5lZCBhcyAwLgoJKE5VTV9GU1lTKTogQWRkZWQgRlNZU19URlRQX05VTS4KCSogc3RhZ2UyL2d1bnppcC5jIChndW56aXBfdGVzdF9oZWFkZXIpOiBJZiBGSUxFTUFYID49IDE2TUIsIGRvCglub3QgdHJ5IHRvIGV4YW1pbmUgdGhlIGxhc3QgOCBieXRlcyBvZiB0aGUgZmlsZS4gVGhpcyBpcwoJcmVxdWlyZWQgZm9yIGNvbXByZXNzZWQgZmlsZXMgYnkgVEZUUC4KCSogc3RhZ2UyL3NoYXJlZC5oIChzcHJpbnRmKTogTmV3IG1hY3JvLgoJKG1lbWNtcCk6IExpa2V3aXNlLgoJKGN1cnJ0aWNrcyk6IERlY2xhcmVkLgoJKGdydWJfc3ByaW50Zik6IExpa2V3aXNlLgoJKGdydWJfbWVtY21wKTogTGlrZXdpc2UuCgkqIHN0YWdlMi9zaXplX3Rlc3Q6IFNldCB0aGUgbWF4aW11bSBzaXplIG9mIFN0YWdlIDIgdG8gNjY1NjAuCgkqIG5ldGJvb3QvM2M1MDkuYzogTmV3IGZpbGUuCgkqIG5ldGJvb3QvM2M1MDkuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvM2M1OXguYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvTWFrZWZpbGUuYW06IExpa2V3aXNlLgoJKiBuZXRib290L01ha2VmaWxlLmluOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9ieXRlb3JkZXIuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvY29tcGlsZTogTGlrZXdpc2UuCgkqIG5ldGJvb3QvY29uZmlnLmM6IExpa2V3aXNlLgoJKiBuZXRib290L2NvbmZpZy5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9jczg5eDAuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvY3M4OXgwLmg6IExpa2V3aXNlLgoJKiBuZXRib290L2VlcHJvMTAwLmM6IExpa2V3aXNlLgoJKiBuZXRib290L2ZzeXNfdGZ0cC5jOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9pZi5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9pby5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9pcC5jOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9pcC5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9sYW5jZS5jOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9uZXRib290Lmg6IExpa2V3aXNlLgoJKiBuZXRib290L25ldGRldmljZS5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9uaWMuaDogTGlrZXdpc2UuCgkqIG5ldGJvb3QvbnM4MzkwLmM6IExpa2V3aXNlLgoJKiBuZXRib290L25zODM5MC5oOiBMaWtld2lzZS4KCSogbmV0Ym9vdC9wY2kuYzogTGlrZXdpc2UuCgkqIG5ldGJvb3QvcGNpLmg6IExpa2V3aXNlLgoKMTk5OS0wOS0xMyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlKTogRG8gbm90IHVzZSBvdXIgb3duCglydWxlLCBidXQgdXNlIEFNX01BSU5UQUlORVJfTU9ERSBpbnN0ZWFkLiBJZiB0aGUgbWFpbnRhaW5lciBtb2RlCglpcyBlbmFibGVkLCB0aGVuIGNoZWNrIGZvciBwZXJsLCBhbmQgaWYgaXQgaXMgbm90IGZvdW5kLCBwcmludAoJYW4gZXJyb3IgbWVzc2FnZSBhbmQgYWJvcnQuCgkqIGRvY3MvTWFrZWZpbGUuYW0gKGdydWIuOCk6IFJlZ2VuZXJhdGVkIGlmIE1BSU5UQUlORVJfTU9ERSBpcwoJZGVmaW5lZCwgaW5zdGVhZCBvZiBHUlVCX01BSU5ULiBVc2UgdGhlIHZhcmlhYmxlIFBFUkwgcmF0aGVyCgl0aGFuIHJ1bm5pbmcgaGVscDJtYW4gZGlyZWN0bHkuCgoxOTk5LTA5LTEzICBQYXZlbCBSb3NraW4gIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCgkqIHN0YWdlMi9wY19zbGljZS5oIChJU19QQ19TTElDRV9UWVBFX0VYVEVOREVEKTogTmV3IG1hY3JvLgoJKiBzdGFnZTIvZGlza19pby5jIChyZWFsX29wZW5fcGFydGl0aW9uKTogVXNlCglJU19QQ19TTElDRV9UWVBFX0VYVEVOREVEIGluc3RlYWQgb2YgY29tcGFyaW5nIENVUlJFTlRfU0xJQ0UKCXdpdGggdGhlIGV4dGVuZGVkIHBhcnRpdGlvbiB0eXBlcy4KCjE5OTktMDktMTEgIFBhdmVsIFJvc2tpbiAgPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKCSogYWNjb25maWcuaDogTmV3IGZpbGUgZm9yIGF1dG9oZWFkZXIgc3VwcG9ydC4KCSogYWNpbmNsdWRlLm00IChncnViX0FTTV9FWFRfQykgUmVuYW1lZCB0byAuLi4KCShncnViX0FTTV9VU0NPUkUpOiAuLi4gdGhpcy4gRGVmaW5lIEhBVkVfQVNNX1VTQ09SRSBpZiBhIEMKCXN5bWJvbCBnZXRzIGFuIHVuZGVyc2NvcmUgYWZ0ZXIgY29tcGlsaW5nIHRvIGFzc2VtYmxlci4KCSogY29uZmlndXJlLmluOiBBZGRlZCBBTV9DT05GSUdfSEVBREVSLiBBdXRvY29uZiAyLjEzIGlzIG5vdwoJcmVxdWlyZWQuIFRlc3QgZm9yIHdnZXRjaCgpLCBub3QgZ2V0Y2goKSBpbiAtbFtuXWN1cnNlcy4KCSogc3RhZ2UyL3NoYXJlZC5oIChFWFRfQyk6IERlZmluZWQuCglJbmNsdWRlIHRoZSBiZXN0IGV4aXN0aW5nIGhlYWRlciBmb3IgW25dY3Vyc2VzLgoKMTk5OS0wOS0xMiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9ib290LmMgKGxvYWRfaW1hZ2UpOiBVc2UgQ1VSUkVOVF9EUklWRSBhbmQKCUNVUlJFTlRfUEFSVElUSU9OIGluc3RlYWQgb2YgU0FWRURfRFJJVkUgYW5kIFNBVkVEX1BBUlRJVElPTiBmb3IKCXRoZSBib290IGRldmljZSBpbiB0aGUgTXVsdGlib290IGluZm9ybWF0aW9uLiBSZXBvcnRlZCBieQoJU3RlcGhlbiBFYXJseSA8c3RldmVAZ3JlZW5lbmQub3JnLnVrPi4KCjE5OTktMDktMTIgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvZGlza19pby5jIChzYW5lX3BhcnRpdGlvbikgW1NUQUdFMV81XTogRGVmaW5lZC4KCShzZXRfZGV2aWNlKTogVXNlIHNhbmVfcGFydGl0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0IENVUlJFTlRfRFJJVkUKCWhhcyBhIHZhbGlkIHZhbHVlLiBSZXBvcnRlZCBieSBQYXZlbCBSb3NraW4uCgoxOTk5LTA5LTExICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCUZyb20gUGF2ZWwgUm9za2luOgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoZGV2aWNlX2Z1bmMpIFtHUlVCX1VUSUxdOiBVc2UgY2hlY2tfZGV2aWNlCglpbiBvcmRlciB0byBtYWtlIHN1cmUgdGhhdCBERVZJQ0UgZXhpc3RzLgoJKiBncnViL2FzbXN0dWIuYyAoY2hlY2tfZGV2aWNlKTogTmV3IGZ1bmN0aW9uLgoJKGdydWJfc3RhZ2UyKTogVXNlIGNoZWNrX2RldmljZSB0byBwcm9iZSBhIGRldmljZS4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChnZW9tZXRyeV9mdW5jKSBbR1JVQl9VVElMXTogQ29weSB0aGUKCW1vZGlmaWVkIGdlb21ldHJ5IHRvIEdFT00gYW5kIHJlc2V0IEJVRl9EUklWRS4gUmVwb3J0ZWQgYnkgUGF2ZWwKCVJvc2tpbi4KCgkqIGdydWIvbWFpbi5jIChub19mbG9wcHkpOiBOZXcgdmFyaWFibGUuCgkocHJvYmVfc2Vjb25kX2Zsb3BweSk6IExpa2V3aXNlLgoJKE9QVF9OT19GTE9QUFkpOiBOZXcgbWFjcm8uCgkoT1BUX1BST0JFX1NFQ09ORF9GTE9QUFkpOiBMaWtld2lzZS4KCShsb25nb3B0cyk6IEFkZGVkIG5vLWZsb3BweSBhbmQgcHJvYmUtc2Vjb25kLWZsb3BweS4KCSh1c2FnZSk6IEFkZGVkIHRoZSBkZXNjcmlwdGlvbnMgYWJvdXQgLS1uby1mbG9wcHkgYW5kCgktLXByb2JlLXNlY29uZC1mbG9wcHkuCgkobWFpbik6IEhhbmRsZSBPUFRfUFJPQkVfU0VDT05EX0ZMT1BQWSBhbmQgT1BUX05PX0ZMT1BQWS4KCSogZ3J1Yi9hc21zdHViLmMgKGdydWJfc3RhZ2UyKTogUHJpbnQgYSBtZXNzYWdlIGJlZm9yZSB0aGUgcHJvYmUKCXJvdXRpbmUuIElmIE5PX0ZMT1BQWSBpcyBub24temVybywgZG8gbm90IHByb2JlIGFueSBmbG9wcHkgZHJpdmUuCglJZiBQUk9CRV9TRUNPTkRfRkxPUFBZIGlzIHplcm8sIHNraXAgdGhlIHByb2JlIG9mIHRoZSBzZWNvbmQKCWZsb3BweSBkcml2ZS4KCShnZXRfZmxvcHB5X2Rpc2tfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShnZXRfaWRlX2Rpc2tfbmFtZSk6IExpa2V3aXNlLgoJKGdldF9zY3NpX2Rpc2tfbmFtZSk6IExpa2V3aXNlLgoKMTk5OS0wOS0xMCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9idWlsdGlucy5jIChkZXZpY2VfZnVuYyk6IE5ldyBmdW5jdGlvbi4KCShidWlsdGluX2RldmljZSk6IE5ldyB2YXJpYWJsZS4KCShidWlsdGluX3RhYmxlKTogQWRkZWQgdGhlIHBvaW50ZXIgdG8gQlVJTFRJTl9ERVZJQ0UuCgkoYnVpbHRpbl9nZW9tZXRyeSkgW0dSVUJfVVRJTF06IEFjY2VwdCBleHRyYSBhcmd1bWVudHMsCglDWUxJTkRFUiwgSEVBRCwgU0VDVE9SIGFuZCBUT1RBTF9TRUNUT1IsIGFuZCwgaWYgdGhleSBhcmUgZm91bmQsCglzZXQgdGhlIGdlb21ldHJ5IG9mIGEgZHJpdmUgc3BlY2lmaWVkIHRvIHRoZW0uCgkqIGdydWIvYXNtc3R1Yi5jIChkaXNrcyk6IE1hZGUgZ2xvYmFsLgoJKGFzc2lnbl9kZXZpY2VfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCjE5OTktMDktMDkgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBmaWcub3JnPgoKCSogZG9jcy9ncnViLnRleGkgKENvbW1hbmRzKTogU3luY2hyb25pemUgZGVzY3JpcHRpb25zIHdpdGgKCWJ1aWx0aW5zLmMuCgoJKiBzdGFnZTIvYnVpbHRpbnMuYyAoaGlkZV9mdW5jKTogVXNlIHNldF9wYXJ0aXRpb25faGlkZGVuX2ZsYWcuCgkodW5oaWRlX2Z1bmMpOiBMaWtld2lzZS4KCU1hbnkgaGVscCBtZXNzYWdlIGNsZWFudXBzLiAgRnJvbSBQYXZlbCBSb3NraW4uCgoJKiBzdGFnZTIvc2hhcmVkLmggKHNldF9wYXJ0aXRpb25faGlkZGVuX2ZsYWcpOiBEZWNsYXJlLgoKCSogc3RhZ2UyL2Rpc2tfaW8uYyAoc2V0X3BhcnRpdGlvbl9oaWRkZW5fZmxhZyk6IE5ldyBmdW5jdGlvbgoJbWVyZ2VkIGZyb20gaGlkZV9wYXJ0aXRpb24gYW5kIHVuaGlkZV9wYXJ0aXRpb24uICBNYWtlIHN1cmUgd2UgT1IKCXdpdGggdGhlIGludmVyc2Ugb2YgdGhlIGZsYWcgYml0IHJhdGhlciB0aGFuIFhPUmluZyB0byB1bmhpZGUgdGhlCglwYXJ0aXRpb24uCgoxOTk5LTA5LTEwICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogZ3J1Yi9hc21zdHViLmMgKF9GSUxFX09GRlNFVF9CSVRTKTogRGVmaW5lZC4KCShiaW9zZGlzaykgWyFfX2xpbnV4X19dOiBQYXNzIHRoZSBvZmZzZXQgYXJndW1lbnQgYXMgb2ZmX3QKCWluc3RlYWQgb2YgaW50IHRvIGxzZWVrLCBhbmQgY29tcGFyZSB0aGUgcmV0dXJuIHZhbHVlIHdpdGgKCU9GRlNFVC4gUmVwb3J0ZWQgYnkgUGF2ZWwgUm9za2luLgoJKGdydWJfc3RhZ2UyKSBbIV9fbGludXhfXyAmJiAhX19HTlVfX106IFByaW50IGEgd2FybmluZyBtZXNzYWdlLgoKMTk5OS0wOS0wOCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9zdGFnZTIuYyAocnVuX21lbnUpOiBJZiBydW5fc2NyaXB0IGlzIHN1Y2Nlc3NmdWxseQoJZmluaXNoZWQsIGJyZWFrIHRoZSBsb29wLiBSZXBvcnRlZCBieSBQYXZlbCBSb3NraW4uCglEbyBub3Qgd2FpdCBhbiBpbnB1dCBjaGFyYWN0ZXIgd2hlbiBGQUxMQkFDS19FTlRSWSBpcyBsZXNzIHRoYW4KCXplcm8uCgkqIHN0YWdlMi9jbWRsaW5lLmMgKHJ1bl9zY3JpcHQpOiBJZiBFUlJOVU0gaXMgbm9uLXplcm8sIHdhaXQgYW4KCWlucHV0IGNoYXJhY3Rlciwgd2hldGhlciBGQUxMQkFDSyBpcyBsZXNzIHRoYW4gemVybyBvciBub3QuCgoxOTk5LTA5LTA2ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGNvbmZpZ2ZpbGVfZnVuYyk6IE5ldyBmdW5jdGlvbi4KCShidWlsdGluX2NvbmZpZ2ZpbGUpOiBOZXcgdmFyaWFibGUuCgkoYnVpbHRpbl90YWJsZSk6IEFkZGVkIHRoZSBwb2ludGVyIHRvIEJVSUxUSU5fQ09ORklHRklMRS4KCjE5OTktMDktMDYgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJRnJvbSBQYXZlbCBSb3NraW46CgkqIHN0YWdlMi9hc20uUyBbIVNUQUdFMV81XSAoY2hhaW5fc3RhZ2UyKTogRGVsZXRlZC4KCVtTVEFHRTFfNV0gKGdldF9jb2RlX2VuZCk6IExpa2V3aXNlLgoJKiBzdGFnZTIvY2hhcl9pby5jIChncnViX3N0cm5jYXQpOiBMaWtld2lzZS4KCSogc3RhZ2UyL2NvbW1vbi5jIFtTVEFHRTFfNV0gKHNhdmVkX21lbV91cHBlcik6IExpa2V3aXNlLgoJKiBzdGFnZTIvc21wLWltcHMuYyAoaW1wc19yZWxlYXNlX2NwdXMpOiBMaWtld2lzZS4KCShpbXBzX2FueV9uZXdfYXBpY3MpOiBNYWRlIHN0YXRpYy4KCShpbXBzX2VuYWJsZWQpOiBMaWtld2lzZS4KCShpbXBzX251bV9jcHVzKTogTGlrZXdpc2UuCgkoaW1wc19sYXBpY19hZGRyKTogTGlrZXdpc2UuCgkoaW1wc19jcHVfYXBpY19tYXApOiBMaWtld2lzZS4KCShpbXBzX2FwaWNfY3B1X21hcCk6IExpa2V3aXNlLgoKMTk5OS0wOS0wNiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9idWlsdGlucy5jICh0ZXN0bG9hZF9mdW5jKTogRml4IHRoZSB0eXBvczogMHgyMDAwMDAwIC0+CgkweDIwMDAwMCBhbmQgMHgzMDAwMDAwIC0+IDB4MzAwMDAwLgoKMTk5OS0wOS0wNiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCglGcm9tIEhpc2F6dW1pIEtlbmppIDxuZWxAc29yYW5la28uY29tPjoKCSogc3RhZ2UyL2ZzeXNfZmZzLmMgKG1hcGJsb2NrX29mZnNldCk6IE5ldyB2YXJpYWJsZS4KCShtYXBibG9ja19ic2l6ZSk6IExpa2V3aXNlLgoJKE1BUEJVRik6IE5ldyBtYWNyby4KCShNQVBCVUZfTEVOKTogTGlrZXdpc2UuCgkoZmZzX21vdW50KTogU2V0IE1BUEJMT0NLX09GRlNFVCB0byAtMS4KCShibG9ja19tYXApOiBBZGRlZCBwYXJ0aWFsIHJlYWQgc3VwcG9ydC4KCjE5OTktMDktMDYgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvY21kbGluZS5jIChmaW5kX2NvbW1hbmQpOiBJZiBDT01NQU5EIGlzIGxlc3MgdGhhbgoJKCpCVUlMVElOKS0+TkFNRSBpbiBkaWN0aW9uYXJ5IG9yZGVyLCBicmVhayB0aGUgbG9vcC4KCSogc3RhZ2UyL2J1aWx0aW5zLmMgKGJ1aWx0aW5fY2hhaW5sb2FkZXIpOiBDYXBpdGFsaXplIHRoZQoJdmFyaWFibGUgbmFtZSBpbiB0aGUgc2hvcnQgZG9jLgoJKGJ1aWx0aW5fY29sb3IpOiBMaWtld2lzZS4KCShidWlsdGluX2dlb21ldHJ5KTogTGlrZXdpc2UuCgkoYnVpbHRpbl9oZWxwKTogTGlrZXdpc2UuCgkoYnVpbHRpbl9oaWRlKTogTGlrZXdpc2UuCgkoYnVpbHRpbl9pbml0cmQpOiBMaWtld2lzZS4KCShidWlsdGluX2luc3RhbGwpOiBMaWtld2lzZS4KCShidWlsdGluX2tlcm5lbCk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fbW9kdWxlKTogTGlrZXdpc2UuCgkoYnVpbHRpbl9tb2R1bGVub3VuemlwKTogTGlrZXdpc2UuCgkoYnVpbHRpbl9wYXVzZSk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fcmVhZCk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fcm9vdCk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fdGVzdGxvYWQpOiBMaWtld2lzZS4KCShidWlsdGluX3VuaGlkZSk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fdXBwZXJtZW0pOiBMaWtld2lzZS4KCjE5OTktMDktMDUgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJVGhlIGludGVybmFsIG9mIHRoZSBjb21tYW5kIGhhbmRsaW5nIGlzIGhlYXZpbHkgbW9kaWZpZWQsIGFuZAoJYSBuZXcgY29tbWFuZCAiaGVscCIgaXMgYWRkZWQuCgoJKiBzdGFnZTEvc3RhZ2UxLlM6IFNldCB0aGUgbnVtYmVyIG9mIHNlY3RvcnMgZm9yIFN0YWdlIDIgdG8gMTEwLgoJKiBzdGFnZTEvc3RhZ2UxX2xiYS5TOiBMaWtld2lzZS4KCSogc3RhZ2UyL2J1aWx0aW5zLmM6IE5ldyBmaWxlLgoJKiBzdGFnZTIvTWFrZWZpbGUuYW0gKGxpYmdydWJfYV9TT1VSQ0VTKTogQWRkZWQgYnVpbHRpbnMuYy4KCShzdGFnZTJfZXhlY19TT1VSQ0VTKTogTGlrZXdpc2UuCgkqIHN0YWdlMi9ib290LmMgKGxvYWRfaW1hZ2UpOiBSZXR1cm4ga2VybmVsX3QgaW5zdGVhZCBpbnQuCgkoYnNkX2Jvb3QpOiBDaGFuZ2UgdGhlIHR5cGUgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIGtlcm5lbF90LgoJKiBzdGFnZTIvY2hhcl9pby5jIChnZXRfY21kbGluZSk6IERvIG5vdCBhY2NlcHQgdGhlIGFyZ3VtZW50CglDT01NQU5EUyBhbmQgYWNjZXB0IHRoZSBhcmd1bWVudCBDT01QTEVUSU9OLgoJUHJpbnQgY29tcGxldGlvbnMgb25seSBpZiBDT01QTEVUSU9OIGlzIG5vbi16ZXJvLgoJUHJpbnQgdGhlIGxpc3Qgb2Ygc2hvcnQgZG9jcyB3aGVuIHRoZSBjb21tYW5kIGlzIGNvbXBsZXRlZC4KCSogc3RhZ2UyL2NtZGxpbmUuYyBbR1JVQl9VVElMXTogRG8gbm90IGluY2x1ZGUgYXBpYy5oIGFuZAoJc21wLWltcHMuaC4KCShmYWxsYmFjayk6IERlbGV0ZWQuCgkocGFzc3dvcmQpOiBMaWtld2lzZS4KCShkZWJ1Zyk6IExpa2V3aXNlLgoJKG5vcm1hbF9jb2xvcik6IExpa2V3aXNlLgoJKGhpZ2hsaWdodF9jb2xvcik6IExpa2V3aXNlLgoJKHByaW50X2NtZGxpbmVfbWVzc2FnZSk6IE5ldyBmdW5jdGlvbi4KCShjb21tYW5kcyk6IERlbGV0ZWQuCgkoZGVidWdfZnNfcHJpbnRfZnVuYyk6IExpa2V3aXNlLgoJKGluc3RhbGxhZGRyKTogTGlrZXdpc2UuCgkoaW5zdGFsbGxpc3QpOiBMaWtld2lzZS4KCShpbnN0YWxsc2VjdCk6IExpa2V3aXNlLgoJKGRlYnVnX2ZzX2Jsb2NrbGlzdF9mdW5jKTogTGlrZXdpc2UuCgkoZmluZF9jb21tYW5kKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRfY21kbGluZSk6IEluaXRpYWxpemUgdGhlIGRhdGEgZm9yIHRoZSBjb21tYW5kLWxpbmUKCWludGVyZmFjZS4gVGhlIGZ1bmN0aW9uIHRvIHByaW50IHRoZSBtZXNzYWdlIGlzIG1vdmVkIHRvCglwcmludF9jbWRsaW5lX21lc3NhZ2UuCgkoZW50ZXJfY21kbGluZSk6IFJld3JpdHRlbiBmcm9tIHNjcmF0Y2guIE5vdyBkZWFsIHdpdGggb25seSB0aGUKCXB1cmUgY29tbWFuZC1saW5lIGFuZCB0aGUgZnVuY3Rpb24gdG8gZGVhbCB3aXRoIGEgbWVudSBlbnRyeSBpcwoJbW92ZWQgdG8gcnVuX3NjcmlwdC4KCShydW5fc2NyaXB0KTogTmV3IGZ1bmN0aW9uLgoJKiBzdGFnZTIvc2hhcmVkLmggKFBBU1NXT1JEX0JVRik6IE5ldyBtYWNyby4KCShQQVNTV09SRF9CVUZMRU4pOiBMaWtld2lzZS4KCShDTURMSU5FX0JVRik6IExpa2V3aXNlLgoJKENNRExJTkVfQlVGTEVOKTogTGlrZXdpc2UuCgkoTUVOVV9CVUYpOiBMaWtld2lzZS4KCShNRU5VX0JVRkxFTik6IExpa2V3aXNlLgoJKGZhbGxiYWNrKTogRGVsZXRlZC4KCShmYWxsYmFja19lbnRyeSk6IERlY2xhcmVkLgoJKGRlZmF1bHRfZW50cnkpOiBMaWtld2lzZS4KCShCVUlMVElOX0NNRExJTkUpOiBOZXcgbWFjcm8uCgkoQlVJTFRJTl9NRU5VKTogTGlrZXdpc2UuCgkoQlVJTFRJTl9USVRMRSk6IExpa2V3aXNlLgoJKHN0cnVjdCBidWlsdGluKTogTmV3IHRhZy4KCShidWlsdGluX3RhYmxlKTogRGVjbGFyZWQuCgkoY21kbGluZV90KTogRGVsZXRlZC4KCShrZXJuZWxfdCk6IE5ldyB0eXBlLgoJKGtlcm5lbF90eXBlKTogRGVjbGFyZWQuCgkoZ3J1Yl90aW1lb3V0KTogTGlrZXdpc2UuCgkoaW5pdF9idWlsdGlucyk6IExpa2V3aXNlLgoJKGluaXRfY29uZmlnKTogTGlrZXdpc2UuCgkoZmluZF9jb21tYW5kKTogTGlrZXdpc2UuCgkocHJpbnRfY21kbGluZV9tZXNzYWdlKTogTGlrZXdpc2UuCgkocnVuX3NjcmlwdCk6IExpa2V3aXNlLgoJWyFTVEFHRTFfNV0gKGJzZF9ib290KTogRGVsZXRlZC4KCVshU1RBR0UxXzVdIChsb2FkX2ltYWdlKTogTGlrZXdpc2UuCglbIVNUQUdFMV81XSAobG9hZF9tb2R1bGUpOiBMaWtld2lzZS4KCVshU1RBR0UxXzVdIChsb2FkX2luaXRyZCk6IExpa2V3aXNlLgoJKiBzdGFnZTIvc2l6ZV90ZXN0OiBTZXQgdGhlIG1heGltdW0gc2l6ZSBvZiBTdGFnZSAyIHRvIDU2MzIwLgoJKiBzdGFnZTIvc3RhZ2UyLmMgKGdydWJfdGltZW91dCk6IERlbGV0ZWQuCgkobWVudV90KTogTGlrZXdpc2UuCgkocnVuX21lbnUpOiBDaGFuZ2VkIHRoZSByZXR1cm4gdHlwZSB0byB2b2lkLgoJVXNlIEZBTExCQUNLX0VOVFJZIGluc3RlYWQgb2YgRkFMTEJBQ0suCglEbyBub3QgY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBlbnRlcl9jbWRsaW5lLgoJKHJ1bl9tZW51KSBbR1JVQl9VVElMXTogQ2FsbCBzdG9wIGluc3RlYWQgb2YgcmV0dXJuaW5nCglNRU5VX0FCT1JULgoJKGNtYWluKTogU2V0IE1FTlVfRU5UUklFUyB0byBNRU5VX0JVRi4KCUNhbGwgaW5pdF9jb25maWcgaW5zdGVhZCBvZiBjbGVhcmluZyB0aGUgdmFyaWFibGVzIGRpcmVjdGx5LgoJVXNlIENNRExJTkVfQlVGIGZvciB0aGUgY29tbWFuZC1saW5lIGJ1ZmZlciBpbnN0ZWFkIG9mIHRoZQoJc3RhY2suCglBZGFwdGVkIHRoZSBhbmFseXNpcyByb3V0aW5lIGZvciB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHRvIHRoZQoJbmV3IGJ1aWx0aW4gY29tbWFuZHMgaW50ZXJmYWNlLgoJUnVuIGVudGVyX2NtZGxpbmUgZm9yZXZlci4KCUlmIHJ1bl9tZW51IHJldHVybnMsIHJlc3RhcnQgdGhlIGxvb3AuCgoxOTk5LTA5LTA0ICBQYXZlbCBSb3NraW4gIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCgkqIGRvY3MvbWVudS5sc3Q6IE1vcmUgbWVhbmluZ2Z1bCBleGFtcGxlcy4gTm90IHVzaW5nICgweDgwLDApCglub3RhdGlvbiBhbnltb3JlLgoJKiBzdGFnZTIvc3RhZ2UyLmMgKHJ1bl9tZW51KTogRXJhc2UgdGhlIGVudGVyZWQgcGFzc3dvcmQgYmVmb3JlCglnZXRfY21kbGluZSgpLiBIZWxwIG9uIFRBQiBkaXNhYmxlZCB3aGVuIGVudGVyaW5nIHRoZSBwYXNzd29yZC4KCSogc3RhZ2UyL2NoYXJfaW8uYyAoZ2V0X2NtZGxpbmUpOiBSZXN0b3JlIGNvbW1hbmQtbGluZSBldmVuIGlmCgl0aGVyZSBpcyBubyBoZWxwIHN0cmluZy4KCSogY29uZmlndXJlLmluOiAtLWRpc2FibGUtZ3VuemlwIGRpc2FibGVzIGRlY29tcHJlc3Npb24gaW4KCXN0YWdlMi4KCSogc3RhZ2UyL2d1bnppcC5jIFtOT19ERUNPTVBSRVNTSU9OXTogRGlzYWJsZSBhbGwgY29kZSBpZgoJZGVjb21wcmVzc2lvbiBpcyBkaXNhYmxlZC4KCjE5OTktMDktMDMgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvYm9vdC5jIChsb2FkX2ltYWdlKTogVXNlIFBIRFItPlBfUEFERFIgaW5zdGVhZCBvZgoJUEhEUi0+UF9WQUREUi4gUmVwb3J0ZWQgYnkgUmFtb24gdmFuIEhhbmRlbCA8dmhhbmRlbEBjaGVtLnZ1Lm5sPi4KCjE5OTktMDktMDMgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBkb2NzL2hlbHAybWFuOiBVcGdyYWRlZCB0byAxLjAxMy4KCSogZG9jcy9ncnViLjg6IFJlZ2VuZXJhdGVkLgoKMTk5OS0wOS0wMiAgUGF2ZWwgUm9za2luICA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoJKiBzdGFnZTIvY21kbGluZS5jIChlbnRlcl9jbWRsaW5lKSBbR1JVQl9VVElMXTogQWRkIGEgc3BhY2UgaW4KCXRoZSBMQkEgd2FybmluZwltZXNzYWdlLgoKMTk5OS0wOS0wMiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCglUaGUgY2hhcmFjdGVyIGA9JyBhZnRlciBhIGNvbW1hbmQgaXMgbm93IG9wdGlvbmFsLgoKCSogc3RhZ2UyL2NoYXJfaW8uYyAoZ2V0X2NtZGxpbmUpOiBTZWFyY2ggZm9yIGEgc3BhY2Ugb3IgYSBlcXVhbAoJY2hhcmFjdGVyIGFmdGVyIHRoZSBmaXJzdCB3b3JkIGluIENNRExJTkUgd2hlbiBUQUIgbGlzdHMKCWNvbXBsZXRpb25zLCBpbnN0ZWFkIG9mIGp1c3Qgc2VhcmNoaW5nIGZvciBhIGVxYXVsIGNoYXJhY3Rlci4KCSogc3RhZ2UyL2NtZGxpbmUuYyAoc2tpcF90byk6IFRyZWF0IHRoZSBjaGFyYWN0ZXIgYD0nIGFzIGEgc3BhY2UKCWlmIEFGVEVSX0VRVUFMIGlzIG5vbi16ZXJvLgoJKGNvbW1hbmRzKTogRGVsZXRlIGFsbCB0aGUgZXF1YWwgY2hhcmFjdGVycy4KCSogZG9jcy9tZW51LmxzdDogTGlrZXdpc2UuCgkqIGRvY3MvZ3J1Yi50ZXhpOiBMaWtld2lzZS4KCjE5OTktMDktMDEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBncnViL2FzbXN0dWIuYyAoZW52X2Zvcl9leGl0KTogTmV3IHZhcmlhYmxlLgoJKGdydWJfc3RhZ2UyKTogRG8gYSBzZXRqbXAgaW4gZG9pdCwgYW5kIHdoZW4gaXQgcmV0dXJucwoJbm9uLXplcm8sIHNldCBTVEFUVVMgdG8gMSBpZiBFUlJOVU0gaXMgbm9uLXplcm8uCgkoc3RvcCk6IENhbGwgbG9uZ2ptcCBpbnN0ZWFkIG9mIGV4aXQuCgoxOTk5LTA4LTMxICBQYXZlbCBSb3NraW4gIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCgkqIHN0YWdlMi9ib290LmMgW0dSVUJfVVRJTF0gKGJzZF9ib290X2VudHJ5KTogTmV3IGZ1bmN0aW9uLgoJKGJzZF9ib290KSBbR1JVQl9VVElMXTogU2V0IEVOVFJZX0FERFIgdG8gQlNEX0JPT1RfRU5UUlkgdG8gZmFrZQoJdGhlICpCU0QgYm9vdC4KCjE5OTktMDgtMzEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvZnN5c19mYXQuYyAoZmF0X2NyZWF0ZV9ibG9ja2xpc3QpOiBDYXN0IEZBVF9CVUYgdG8KCXVuc2lnbmVkIHNob3J0ICogaW5zdGVhZCBvZiB1bnNpZ25lZCBsb25nICouIFN1Z2dlc3RlZCBieSBQYXZlbAoJUm9za2luLgoKMTk5OS0wOC0zMCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCglGcm9tIEVkd2FyZCBLaWxsaXBzIDxla2lsbGlwc0B0cml0b24ubmV0PjoKCSogc3RhZ2UyL2NtZGxpbmUuYyAoY29tbWFuZHMpOiBBZGRlZCBoaWRlIGFuZCB1bmhpZGUuCgkoZW50ZXJfY21kbGluZSk6IExpa2V3aXNlLgoJKiBzdGFnZTIvZGlza19pby5jICh1bmhpZGVfcGFydGl0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGhpZGVfcGFydGl0aW9uKTogTGlrZXdpc2UuCgkqIHN0YWdlMi9wY19zbGljZS5oIChQQ19TTElDRV9UWVBFX0hJRERFTl9GTEFHKTogTmV3IG1hY3JvLgoKMTk5OS0wOC0yOSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCglGcm9tIFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+OgoJKiBzdGFnZTIvZnN5c19taW5peC5jIChuYW1lbGVuKTogTmV3IHZhcmlhYmxlLgoJKE1JTklYX05BTUVfTEVOKTogRGVsZXRlZC4KCShtaW5peF9tb3VudCk6IFNldCBOQU1FTEVOIHRvIDE0IGlmIFNVUFJUQkxPQ0stPlNfTUFHSUMgaXMKCU1JTklYX1NVUEVSX01BR0lDLCBhbmQgc2V0IE5BTUVMRU4gdG8gMzAgaWYgaXQgaXMKCU1JTklYX1NVUEVSX01BR0lDMi4KCShtaW5peF9kaXIpOiBVc2UgTkFNRUxFTiBpbnN0ZWFkIG9mIE1JTklYX05BTUVfTEVOLgoKMTk5OS0wOC0yOSAgUGF2ZWwgUm9za2luICA8cGF2ZWxfcm9zbGluQGdlb2NpdGllcy5jb20+CgoJKiBncnViL01ha2VmaWxlLmFtLCBzdGFnZTEvTWFrZWZpbGUuYW0sIHN0YWdlMi9NYWtlZmlsZS5hbToKCUF2b2lkIHVzaW5nIHZhcmlhYmxlcyBpbmNsb3NlZCBpbiAnQCcgYmVjYXVzZSB0aGV5IGNhbm5vdCBiZQoJb3ZlcnJpZGRlbiBhdCB0aGUgbWFrZSB0aW1lLgoKMTk5OS0wOC0yOSAgUGF2ZWwgUm9za2luICA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoJKiBzdGFnZTIvZnN5c19mYXQuYyAoZmF0X2NyZWF0ZV9ibG9ja2xpc3QpOiBSZXR1cm4gMSBmb3IgdGhlCglyb290IGRpcmVjdG9yeSBvbiBGQVQxMiBhbmQgRkFUMTYuCgoxOTk5LTA4LTI3ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc3RhZ2UyL2Jvb3QuYyAobG9hZF9pbWFnZSk6IEFjY2VwdCB0d28gYXJndW1lbnRzLCBLRVJORUwgYW5kCglBUkcuIEFuZCB1c2UgdGhlbSBpbnN0ZWFkIG9mIENVUl9DTURMSU5FLgoJKGxvYWRfbW9kdWxlKTogQWNjZXB0IHR3byBhcmd1bWVudHMsIE1PRFVMRSBhbmQgQVJHLiBBbmQgdXNlCgl0aGVtIGluc3RlYWQgb2YgQ1VSX0NNRExJTkUuCgkobG9hZF9pbml0cmQpOiBBY2NlcHQgb25lIGFyZ3VtZW50LCBJTklUUkQuIEFuZCB1c2UgaXQgaW5zdGVhZAoJb2YgQ1VSX0NNRExJTkUuCgkoYnNkX2Jvb3QpOiBBY2NlcHQgb25lIGFkZGl0aW9uYWwgYXJndW1lbnQsIEFSRy4gQW5kIHVzZSBpdAoJaW5zdGVhZCBvZiBDVVJfQ01ETElORS4KCSogc3RhZ2UyL2NtZGxpbmUuYyAoZW50ZXJfY21kbGluZSk6IFVzZSBNQl9DTURMSU5FIGluc3RlYWQgb2YKCUhFQVAgZm9yIHRoZSBNdWx0aWJvb3QgY29tbWFuZC1saW5lIGJ1ZmZlci4KCSogc3RhZ2UyL3NoYXJlZC5oIChNQl9DTURMSU5FX0JVRik6IE5ldyBtYWNyby4KCShNQl9DTURMSU5FX0JVRkxFTik6IExpa2V3aXNlLgoKMTk5OS0wOC0yNiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIGRvY3MvTWFrZWZpbGUuYW0gW0dSVUJfTUFJTlRdIChncnViLjgpOiBUaGUgYXJndW1lbnQgZm9yIHRoZQoJb3B0aW9uIC0tbmFtZSBpcyBjaGFuZ2VkIHRvICJ0aGUgZ3J1YiBzaGVsbCIuCgkqIGRvY3MvZ3J1Yi44OiBSZWdlbmVyYXRlZC4KCSogZG9jcy9ncnViLnRleGk6IERvIG5vdCB1c2UgdGhlIG5hbWUgInRoZSBTdGFnZSAyIGVtdWxhdG9yIiBhbnkKCW1vcmUuIFVzZSB0aGUgbmFtZSAidGhlIGdydWIgc2hlbGwiIGluc3RlYWQuCgoxOTk5LTA4LTI2ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCUZyb20gS2xhdXMgUmVpY2hsIDxrbGF1cy5yZWljaGxAYWxjYXRlbC5hdD46CgkqIHN0YWdlMi9mc3lzX21pbml4LmM6IE5ldyBmaWxlLgoJKiBzdGFnZTIvc2l6ZV90ZXN0OiBBZGRlZCBhIGNoZWNrIGZvciB0aGUgc2l6ZSBvZiBtaW5peF9zdGFnZTFfNS4KCSogc3RhZ2UyL01ha2VmaWxlLmFtIChsaWJncnViX2FfU09VUkNFUyk6IEFkZGVkIGZzeXNfbWluaXguYy4KCShsaWJncnViX2FfQ0ZMQUdTKTogQWRkZWQgLURGU1lTX01JTklYPTEuCgkobm9kaXN0X3BrZ2RhdGFfREFUQSk6IEFkZGVkIG1pbml4X3N0YWdlMV81LgoJKG5vaW5zdF9QUk9HUkFNUyk6IEFkZGVkIG1pbml4X3N0YWdlMV81LmV4ZWMuCgkoc3RhZ2UyX2V4ZWNfU09VUkNFUyk6IEFkZGVkIGZzeXNfbWluaXguYy4KCShtaW5peF9zdGFnZTFfNV9leGVjX1NPVVJDRVMpOiBOZXcgdmFyaWFibGUuCgkobWluaXhfc3RhZ2UxXzVfZXhlY19DRkxBR1MpOiBMaWtld2lzZS4KCShtaW5peF9zdGFnZTFfNV9leGVjX0xERkxBR1MpOiBMaWtld2lzZS4KCSogc3RhZ2UyL3BjX3NsaWNlLmggKFBDX1NMSUNFX1RZUEVfTUlOSVgpOiBOZXcgbWFjcm8uCgkqIHN0YWdlMi9kaXNrX2lvLmMgKGZzeXNfdGFibGUpIFtGU1lTX01JTklYXTogQWRkZWQgbWluaXggZW50cnkuCgkqIHN0YWdlMi9maWxlc3lzLmggW0ZTWVNfTUlOSVhdIChGU1lTX01JTklYX05VTSk6IFNldCB0byAxLgoJWyFGU1lTX01JTklYXSAoRlNZU19NSU5JWF9OVU0pOiBTZXQgdG8gMC4KCVshTlVNX0ZTWVNdIChOVU1fRlNZUyk6IEFkZGVkIEZTWVNfTUlOSVhfTlVNLgoJKiBzdGFnZTIvc2hhcmVkLmggKFNUQUdFMl9JRF9NSU5JWF9TVEFHRTFfNSk6IE5ldyBtYWNyby4KCVtTVEFHRTFfNSAmJiBGU1lTX01JTklYXSAoU1RBR0UyX0lEKTogU2V0IHRvCglTVEFHRTJfSURfTUlOSVhfU1RBR0UxXzUuCgkqIGdydWIvTWFrZWZpbGUuYW0gKEFNX0NGTEFHUyk6IEFkZGVkIC1ERlNZU19NSU5JWD0xLgoJKiBjb25maWd1cmUuaW4gKC0tZGlzYWJsZS1taW5peCk6IE5ldyBvcHRpb24uCgoxOTk5LTA4LTI1ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCUZyb20gSm9jaGVuIEhvZW5pY2tlIDxqb2NoZW5AZ251Lm9yZz46CgkqIHN0YWdlMi9mYXQuaCAoRkFUX0JQQl9GQVRfU0VDVE9SU18xNik6IE5ldyBtYWNyby4KCShGQVRfQlBCX0ZBVF9TRUNUT1JTXzMyKTogTGlrZXdpc2UuCgkoRkFUX0JQQl9JU19GQVQzMik6IExpa2V3aXNlLgoJKEZBVF9CUEJfUk9PVF9ESVJfQ0xVU1RFUik6IExpa2V3aXNlLgoJKEZBVF9CUEJfRkFUX1NFQ1RPUlMpOiBJZiBGQVRfQlBCX0ZBVF9TRUNUT1JTXzE2IHJldHVybnMKCWEgbm9uLXplcm8gdmFsdWUsIHJldHVybiBpdC4gT3RoZXJ3aXNlIHJldHVybgoJRkFUX0JQQl9GQVRfU0VDVE9SU18zMi4KCShGQVRfRElSRU5UUllfRklSU1RfQ0xVU1RFUik6IENvcnJlY3RlZC4KCSogc3RhZ2UyL2ZzeXNfZmF0LmMgKHJvb3RfZGlyKTogTmV3IHZhcmlhYmxlLgoJKGZhdF9tb3VudCk6IFVzZSB0aGUgbWFjcm8gSVNfUENfU0xJQ0VfVFlQRV9GQVQgaW5zdGVhZCBvZgoJY2hlY2tpbmcgZm9yIGVhY2ggZnMgdHlwZXMgZGlyZWN0bHkuCglPbWl0IHRoZSA+NjQgc2VjdG9ycyBjaGVjay4KCUlmIHRoZSBjdXJyZW50IGZzIHR5cGUgaXMgRkFUMzIsIHRoZW4gc2V0IEZBVF9TSVpFIHRvIDggYW5kCglnZXQgdGhlIHJvb3QgZnJvbSBCUEIuCgkoZmF0X2NyZWF0ZV9ibG9ja2xpc3QpOiBVc2UgdGhlIG1hY3JvIFNFQ1RPUl9TSVpFIGluc3RlYWQgb2YgYQoJbWFnaWMgbnVtYmVyLgoJKGZhdF9kaXIpOiBTZXQgTUFQIHRvIFJPT1RfRElSIGluc3RlYWQgb2YgLTEuCgkqIHN0YWdlMi9wY19zbGljZS5oIChQQ19TTElDRV9UWVBFX0ZBVDMyKTogTmV3IG1hY3JvLgoJKFBDX1NMSUNFX1RZUEVfRkFUMzJfTEJBKTogTGlrZXdpc2UuCgkoUENfU0xJQ0VfVFlQRV9GQVQxNl9MQkEpOiBMaWtld2lzZS4KCShJU19QQ19TTElDRV9UWVBFX0ZBVCk6IExpa2V3aXNlLgoKMTk5OS0wOC0yNSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9mc3lzX2Zmcy5jIChmZnNfbW91bnQpOiBEbyBub3Qgc2hpZnQgdGhlIGZzIHR5cGUKCUZTX0JTREZGUy4gUmVwb3J0ZWQgYnkgVGFrZWhpcm8gU3V6dWtpCgk8dGFrZWhpcm9AY29yYWwub2NuLm5lLmpwPi4KCSogc3RhZ2UyL2ZzeXNfZmF0LmMgKGZhdF9tb3VudCk6IERvIG5vdCBzaGlmdCB0aGUgZnMgdHlwZQoJRlNfTVNET1MuCgoxOTk5LTA4LTEzICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCVBhdmVsIFJvc2tpbidzIHBhdGNoIHRoYXQgYWRkcyBuZXcgb3B0aW9ucyB0byBkaXNhYmxlIGFyYml0cmFyeQoJZmlsZXN5c3RlbXMgaXMgaGVhdmlseSBtb2RpZmllZCBhbmQgYXBwbGllZC4KCgkqIGNvbmZpZ3VyZS5pbiAoLS1kaXNhYmxlLWV4dDJmcyk6IE5ldyBvcHRpb24uCgkoLS1kaXNhYmxlLWZhdCk6IExpa2V3aXNlLgoJKC0tZGlzYWJsZS1mZnMpOiBMaWtld2lzZS4KCShGU1lTX0NGTEFHUyk6IE5ldyB2YXJpYWJsZS4gU2V0IHRvIGZpbGVzeXN0ZW1zIHRoZSB1c2VyIGNob29zZS4KCSogZ3J1Yi9NYWtlZmlsZS5hbSAoQU1fQ0ZMQUdTKTogQWRkZWQgLURGU1lTX0VYVDJGUz0xLAoJLURGU1lTX0ZBVD0xIGFuZCAtREZTWVNfRkZTPTEuCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAobGliZ3J1Yl9hX0NGTEFHUyk6IExpa2V3aXNlLgoJKHN0YWdlMl9leGVjX0NGTEFHUyk6IEFkZGVkIEBGU1lTX0NGTEFHU0AuCgkqIHN0YWdlMi9maWxlc3lzLmgKCVshKEZTWVNfRkZTIHx8IEZTWVNfRkFUIHx8IEZTWVNfRVhUMkZTKV0gKEZTWVNfRkZTKTogRGVsZXRlZC4KCVshKEZTWVNfRkZTIHx8IEZTWVNfRkFUIHx8IEZTWVNfRVhUMkZTKV0gKEZTWVNfRkFUKTogTGlrZXdpc2UuCglbIShGU1lTX0ZGUyB8fCBGU1lTX0ZBVCB8fCBGU1lTX0VYVDJGUyldIChGU1lTX0VYVDJGUyk6IExpa2V3aXNlLgoJKiBzdGFnZTIvZnN5c19leHQyZnMuYyBbIUZTWVNfRVhUMkZTXTogRG8gbm90IGRlZmluZSBhbnl0aGluZy4KCSogc3RhZ2UyL2ZzeXNfZmF0LmMgWyFGU1lTX0ZBVF06IExpa2V3aXNlLgoJKiBzdGFnZTIvZnN5c19mZnMuYyBbIUZTWVNfRkZTXTogTGlrZXdpc2UuCgoxOTk5LTA4LTEyICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc3RhZ2UxL3N0YWdlMV9sYmEuUzogVXNlIFNUQUdFMV9EUlBfQUREUiBmb3IgdGhlIGFkZHJlc3Mgb2YKCWRyaXZlIHBhcmFtZXRlcnMgaW5zdGVhZCBvZiBEUklWRV9QQVJBTUVURVIuCgkoZHJpdmVfcGFyYW1ldGVyKTogRGVsZXRlZC4KCSogc3RhZ2UxL3N0YWdlMS5oIChTVEFHRTFfRFJQX0FERFIpOiBOZXcgbWFjcm8uCgkoU1RBR0UxX0RSUF9TSVpFKTogTGlrZXdpc2UuCgoxOTk5LTA4LTExICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc3RhZ2UyL2Jpb3MuYyAoZ2V0X2Rpc2tpbmZvKTogSW4gTEJBIG1vZGUsIHNldCBUT1RBTF9TRUNUT1JTCgl0byB0aGUgbG93IDMyYml0cyBvZiBEUlAuVE9UQUxfU0VDVE9SUyBpbnN0ZWFkIG9mIHRoZSBtdWx0aXBsZQoJb2YgQ0hTLgoJKiBzdGFnZTIvY21kbGluZS5jIChlbnRlcl9jbWRsaW5lKSBbR1JVQl9VVElMXTogSW4gdGhlIGNvbW1hbmQKCSJnZW9tZXRyeSIsIHByaW50IHRoZSBkZXZpY2UgZmlsZSBuYW1lIGluc3RlYWQgb2YgQ0hTL0xCQQoJaW5mb3JtYXRpb24uCgkqIHN0YWdlMi9zaGFyZWQuaCAoZGV2aWNlX21hcCk6IERlY2xhcmVkLgoJKiBncnViL2FzbXN0dWIuYyAoZGV2aWNlX21hcCk6IERlZmluZWQgYXMgYSBnbG9iYWwgdmFyaWFibGUKCWluc3RlYWQgb2YgYSBsb2NhbCB2YXJpYWJsZS4KCjE5OTktMDgtMTAgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJU3VwcG9ydCB0aGUgTmV0QlNEIGFuZCBPcGVuQlNEIHBhcnRpdGlvbiBzbGljZXMuCgoJKiBzdGFnZTIvcGNfc2xpY2UuaCAoUENfU0xJQ0VfVFlQRV9CU0QpOiBEZWxldGVkLgoJKFBDX1NMSUNFX1RZUEVfRlJFRUJTRCk6IE5ldyBtYWNyby4KCShQQ19TTElDRV9UWVBFX09QRU5CU0QpOiBMaWtld2lzZS4KCShQQ19TTElDRV9UWVBFX05FVEJTRCk6IExpa2V3aXNlLgoJKElTX1BDX1NMSUNFX1RZUEVfQlNEX1dJVEhfRlMpOiBMaWtld2lzZS4KCShJU19QQ19TTElDRV9UWVBFX0JTRCk6IExpa2V3aXNlLgoJKiBzdGFnZTIvZnN5c19mZnMuYyAoZmZzX21vdW50KTogVXNlIHRoZSBtYWNybwoJSVNfUENfU0xJQ0VfVFlQRV9CU0RfV0lUSF9GUyBpbnN0ZWFkIG9mIGNoZWNraW5nIGlmCglDVVJSRUNUX1NMSUNFIGlzIGVxdWFsIHRvIHRoZSBCU0QgcGFydGl0aW9uIHR5cGUgZGlyZWN0bHkuCgkqIHN0YWdlMi9mc3lzX2V4dDJmcy5jIChleHQyZnNfbW91bnQpOiBMaWtld2lzZS4KCSogc3RhZ2UyL2ZzeXNfZmF0LmMgKGZhdF9tb3VudCk6IExpa2V3aXNlLgoJKiBzdGFnZTIvZGlza19pby5jIChjaGVja19CU0RfcGFydHMpOiBTZXQgdGhlIGxvdyBiaXRzIG9mCglDVVJSRU5UX1NMSUNFIHRvIFBDX1NMSUNFX1RZUEVfRlJFRUJTRCBpbnN0ZWFkIG9mCglQQ19TTElDRV9UWVBFX0JTRC4KCShyZWFsX29wZW5fcGFydGl0aW9uKTogVXNlIHRoZSBtYWNybyBJU19QQ19TTElDRV9UWVBFX0JTRCBpbnN0ZWFkCglvZiBjaGVja2luZyBpZiBDVVJSRU5UX1NMSUNFIGlzCWVxdWFsIHRvIHRoZSBCU0QgcGFydGl0aW9uIHR5cGUKCWRpcmVjdGx5LgoKMTk5OS0wOC0wOSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9jbWRsaW5lLmMgKGNvbW1hbmRzKTogQWRkZWQgZ2VvbWV0cnkuCgkoZW50ZXJfY21kbGluZSk6IElmIENVUl9IRUFQIGhhcyB0aGUgc3RyaW5nICJnZW9tZXRyeSIsIHByaW50CglvdXQgdGhlIGluZm9ybWF0aW9uIGFib3V0IGEgZHJpdmUgdGhhdCB0aGUgYXJndW1lbnQgcmVwcmVzZW50cy4KCjE5OTktMDgtMDkgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvc3RhZ2UyLmMgKHJ1bl9tZW51KTogVGVybWluYXRlIHRoZSBzdHJpbmcgUEFTU1dPUkQKCWJlZm9yZSBjaGVja2luZyBpZiBFTlRFUkVEIGlzIGlkZW50aWNhbCB0byBQQVNTV09SRC4gUmVwb3J0ZWQKCWJ5IE1hcmsgTHVuZGViZXJnIDxhYTAyNkBwZ2ZuLmJjLmNhPi4KCjE5OTktMDgtMDggIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvc3RhZ2UyLmMgKHNldF9saW5lX25vcm1hbCk6IE5ldyBmdW5jdGlvbi4KCShzZXRfbGluZV9oaWdobGlnaHQpOiBMaWtld2lzZS4KCShydW5fbWVudSk6IERvIG5vdCBjYWxsIHRoZSBmdW5jdGlvbiBzZXRfbGluZSBkaXJlY3RseSBhbnkKCWxvbmdlciwgY2FsbCBzZXRfbGluZV9ub3JtYWwgYW5kIHNldF9saW5lX2hpZ2hsaWdodCBpbnN0ZWFkLgoKCUZyb20gUGF2ZWwgUm9za2luOgoJKiBzdGFnZTIvc3RhZ2UyLmMgKHJ1bl9tZW51KSBbR1JVQl9VVElMXTogUXVpdCB3aGVuIHB1c2hpbmcgdGhlCglrZXkgYHEnLgoKMTk5OS0wOC0wNSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIGFjaW5jbHVkZS5tNCAoZ3J1Yl9BU01fUFJFRklYX1JFUVVJUkVNRU5UKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWd1cmUuaW46IENhbGwgZ3J1Yl9BU01fUFJFRklYX1JFUVVJUkVNRU5ULCBhbmQgZGVmaW5lCglBRERSMzIgYW5kIERBVEEzMiBiYXNlZCBvbiB0aGUgcmVzdWx0LgoJKiBzdGFnZTIvYXNtLlM6IFJlcGxhY2UgYWRkcjMyIGFuZCBkYXRhMzIgcHJlZml4ZXMgd2l0aAlBRERSMzIKCWFuZCBEQVRBMzIgcmVzcGVjdGl2ZWx5LgoKMTk5OS0wOC0wNSAgUGF2ZWwgUm9za2luICA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoJKiBzdGFnZTIvYm9vdC5jIChsb2FkX2ltYWdlKTogVXNlIFJBV19BRERSIG1hY3JvIHdoZW4gbG9hZGluZwoJYW4gYS5vdXQga2VybmVsLgoKMTk5OS0wOC0wNCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9hc20uUzogTWFrZSBlYWNoIG9mIHRoZSBhZGRyMzIgYW5kIGRhdGEzMiBwcmVmaXhlcwoJYXBwZWFyIGluIHRoZSBzYW1lIGxpbmUgYXMgaXQgbW9kaWZpZXMsIGFzIHRoZSBnYXMgbWFudWFsIGluCgliaW51dGlscy0yLjkuNS4wLjQgc2F5cyAiaXQgbXVzdCBiZSBpbiB0aGUgc2FtZSBsaW5lIi4KCjE5OTktMDgtMDQgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBib290LmMgKGxvYWRfaW1hZ2UpOiBGaXggYSBzdHJjbXAgdGVzdC4gUmVwb3J0ZWQgYnkgUGF2ZWwKCVJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+LgoKMTk5OS0wOC0wMyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCglGcm9tICJEYW4gSi4gV2FsdGVycyIgPGRqd0Bjcy51dGV4YXMuZWR1PjoKCSogc3RhZ2UyL2kzODYtZWxmLmggKEVJX0JSQU5EKTogTmV3IG1hY3JvLgoJKiBzdGFnZTIvYm9vdC5jIChsb2FkX2ltYWdlKTogSWYgdGhlIGtlcm5lbCBpcyBFTEYsIGNoZWNrIGlmIGl0CglpcyBhIEZyZWVCU0Qga2VybmVsIGFzIHdlbGwgYXMgYSBNdWx0aWJvb3Qga2VybmVsLCBhbmQgaWYgaXQgaXMKCWEgRnJlZUJTRCBrZXJuZWwsIHRoZW4gbWFzayBFTlRSWV9BRERSIHNpbmNlIEZyZWVCU0QgcmVxdWlyZXMKCXRoYXQuIExpa2V3aXNlLCBtYXNrIE1FTUFERFIuCgkoYnNkX2Jvb3QpOiBTZXQgdGhlIGJpX3N5bXRhYiBhbmQgdGhlIGJpX2VzeW10YWIgbWVtYmVycyBvZiBCSQoJb25seSBpZiBNQkkuRkxBR1MgaGFzIHRoZSBmbGFnIE1CX0lORk9fQU9VVF9TWU1TLiBPdGhlcndpc2UsCgljbGVhciB0aGVtLgoKMTk5OS0wNy0zMCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCglGcm9tIFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+OgoJKiBncnViL2dldG9wdC5jOiBOZXcgZmlsZS4gQ29waWVkIGZyb20gdGV4aW5mby0zLjEybi4KCSogZ3J1Yi9nZXRvcHQxLmM6IExpa2V3aXNlLgoJKiBncnViL2dldG9wdC5oOiBMaWtld2lzZS4KCSogZ3J1Yi9NYWtlZmlsZS5hbSAoZ3J1Yl9TT1VSQ0VTKTogQWRkZWQgZ2V0b3B0LmMsIGdldG9wdDEuYyBhbmQKCWdldG9wdC5oLgoJKiBjb25maWd1cmUuaW46IENoZWNrIGZvciBzdHJpbmcuaCBhbmQgc3RyaW5ncy5oLgoJKiBncnViL2FzbXN0dWIuYyAoZ3J1Yl9zdGFnZTIpOiBGaXggYSBtaXNvcmRlcmluZyBpbiB0aGUgb3V0cHV0Cglmb3JtYXQgb2YgdGhlIGlubGluZSBhc3NlbWJseS4KCjE5OTktMDctMzAgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJRnJvbSBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPjoKCSogc3RhZ2UyL2FzbS5TIChnZXRfZGlza2luZm9fc3RhbmRhcmQpOiBJZiB0aGUgbnVtYmVyIG9mIHNlY3RvcnMKCXJldHVybmVkIGlzIHplcm8sIHRoZW4gcmV0dXJuIGFuIGVycm9yIGNvZGUsIGV2ZW4gaWYgbm9uLWNhcnJpZXIuCgoxOTk5LTA3LTE1ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAemVuLmZpZy5vcmc+CgoJKiBkb2NzL01ha2VmaWxlLmFtIChncnViLmluZm8pOiBVc2UgYW4gdWdseSBoYWNrIHRvIGRvd25ncmFkZQogCWdydWIudGV4aSBzbyB0aGF0IGl0IHdvcmtzIHdpdGggRGViaWFuJ3MgdmVyc2lvbiBvZiB0ZXhpbmZvLgoKMTk5OS0wNy0yNiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9iaW9zLmMgKGdldF9kaXNraW5mbyk6IFdoZW4gRFJJVkUgaXMgYSBmbG9wcHkgZHJpdmUsCgl0cnkgc3RhbmRhcmQgcHJvYmUgcm91dGluZSBhdCBmaXJzdC4gUmVwb3J0ZWQgYnkgUGV0ZXIgQXN0cmFuZAoJPGFsdGljQGx5c2F0b3IubGl1LnNlPi4KCgkqIGdydWIvbWFpbi5jIChtYWluKTogQ2FsbCBwcmludGYgaW5zdGVhZCBvZiBncnViX3ByaW50Zi4KCVJlcG9ydGVkIGJ5IEtsYXVzIFJlaWNobCA8YTg3MDkxODJAdW5ldC51bml2aWUuYWMuYXQ+LgoKMTk5OS0wNy0xNSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMi9jbWRsaW5lLmMgKHNraXBfdG8pOiBEb24ndCBpbmNyZWFzZSBDTURMSU5FIGlmIHRoZQoJY2hhcmFjdGVyIHRvIHdoaWNoIENNRExJTkUgcG9pbnRzIGlzIE5VTC4KCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IFJlbW92ZWQgc21wLWltcHMuYy4KCShzdGFnZTJfZXhlY19TT1VSQ0VTKTogQWRkZWQgc21wLWltcHMuYy4KCSogc3RhZ2UyL2NtZGxpbmUuYyBbIUdSVUJfVVRJTF0gKElNUFNfREVCVUcpIChLRVJORUxfUFJJTlQpCgkoQ01PU19XUklURV9CWVRFKSAoQ01PU19SRUFEX0JZVEUpIChQSFlTX1RPX1ZJUlRVQUwpCgkoVklSVFVBTF9UT19QSFlTKSAoaW5iKSAob3V0YikgKGNtb3Nfd3JpdGVfYnl0ZSkKCShjbW9zX3JlYWRfYnl0ZSk6IFRoZXNlIGFyZSBub3cgZGVmaW5lZCBpbiAuLi4KCSogc3RhZ2UyL3NtcC1pbXBzLmMgKElNUFNfREVCVUcpIChLRVJORUxfUFJJTlQpCgkoQ01PU19XUklURV9CWVRFKSAoQ01PU19SRUFEX0JZVEUpIChQSFlTX1RPX1ZJUlRVQUwpCgkoVklSVFVBTF9UT19QSFlTKSAoaW5iKSAob3V0YikgKGNtb3Nfd3JpdGVfYnl0ZSkKCShjbW9zX3JlYWRfYnl0ZSk6IC4uLiBoZXJlLgoJKiBzdGFnZTIvY21kbGluZS5jIFshR1JVQl9VVElMXTogSW5jbHVkZSBhcGljLmggYW5kIHNtcC1pbXBzLmguCgoxOTk5LTA3LTE0ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCVRoZSBmdW5jdGlvbiB1bmdldGNoIGlzIHNpbXVsYXRlZCBzbyB0aGF0IHRoZSB1c2VyIGNhbiB1c2UgYQoJYnVnZ3kgY3Vyc2VzLgoKCSogZ3J1Yi9hc21zdHViLmMgW0hBVkVfTElCQ1VSU0VTXSAoc2F2ZV9jaGFyKTogTmV3IHZhcmlhYmxlLgoJKGdldGtleSkgW0hBVkVfTElCQ1VSU0VTXTogSWYgU0FWRV9DSEFSIGlzIG5vdCBFUlIsIHJldHVybgoJU0FWRV9DSEFSIGFuZCBjbGVhciBpdC4KCShjaGVja2tleSkgW0hBVkVfTElCQ1VSU0VTXTogSWYgU0FWRV9DSEFSIGlzIG5vdCBFUlIsIHJldHVybgoJU0FWRV9DSEFSLiBJZiBDIGlzIG5vdCBFUlIsIHNldCBTQVZFX0NIQVIgdG8gQy4KCjE5OTktMDctMTQgIFBhdmVsIFJvc2tpbiAgPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKCSogc3RhZ2UyL2NoYXJfaW8uYyAoZ2V0X2NtZGxpbmUpIFtHUlVCX1VUSUxdOiBSZWNvZ25pemUKCWJhY2tzcGFjZSB3aGVuIG5jdXJzZXMgZmFpbHMgdG8gZG8gdGhpcy4KCgkqIGdydWIvYXNtc3R1Yi5jIChncnViX3N0YWdlMikgW0hBVkVfTElCQ1VSU0VTXTogQ2FsbCB3dGltZW91dAoJaW5zdGVhZCBvZiBub2RlbGF5LgoJKGdldGtleSkgW0hBVkVfTElCQ1VSU0VTXTogTGlrZXdpc2UuCgoxOTk5LTA3LTE0ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc3RhZ2UxL3N0YWdlMV9sYmEuUyAocHJvYmVfdmFsdWVzKTogTmV3IHZhcmlhYmxlLiBUaGlzIGlzIG5vdAoJdXNlZCBhY3R1YWxseSwgYnV0IHByZXZlbnRzIGBpbnN0YWxsJyBjb21tYW5kIGZyb20gZmFpbGluZwoJYm9ndXNseS4KCjE5OTktMDctMTQgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJQWxsIGNvbnN0YW50cyBpbiBzdGFnZTFzIGFyZSBtb3ZlZCB0byBzdGFnZTEuaCBhbmQgcmVuYW1lZAoJYXBwcm9wcmlhdGVseSwgYW5kIGluY2x1ZGUgc3RhZ2UxLmggaW5zdGVhZC4KCgkqIGdydWIvTWFrZWZpbGUuYW0gKEFNX0NGTEFHUyk6IEFkZGVkIHRoZSBpbmNsdWRlIHBhdGggdG8gc3RhZ2UxLgoJKiBzdGFnZTIvTWFrZWZpbGUuYW0gKElOQ0xVREVTKTogTmV3IHZhcmlhYmxlLgoJKiBzdGFnZTEvTWFrZWZpbGUuYW0gKHN0YWdlMV9leGVjX1NPVVJDRVMpOiBBZGRlZCBzdGFnZTEuaAoJKHN0YWdlMV9sYmFfZXhlY19TT1VSQ0VTKTogTGlrZXdpc2UuCgkqIHN0YWdlMS9zdGFnZTEuaDogTmV3IGZpbGUuCgkqIHN0YWdlMS9zdGFnZTEuUyAoU0lHTkFUVVJFKTogUmVuYW1lZCB0byAuLi4KCSogc3RhZ2UxL3N0YWdlMS5oIChTVEFHRTFfU0lHTkFUVVJFKTogLi4uIHRoaXMuCgkqIHN0YWdlMS9zdGFnZTEuUyAoQlBCRU5EKTogUmVuYW1lZCB0byAuLi4KCSogc3RhZ2UxL3N0YWdlMS5oIChTVEFHRTFfQlBCRU5EKTogLi4uIHRoaXMuCgkqIHN0YWdlMS9zdGFnZTEuUyAoUEFSVFNUQVJUKTogUmVuYW1lZCB0byAuLi4KCSogc3RhZ2UxL3N0YWdlMS5oIChTVEFHRTFfUEFSVFNUQVJUKTogLi4uIHRoaXMuCgkqIHN0YWdlMS9zdGFnZTEuUyAoTUlOUEFSTVNJWik6IFJlbmFtZWQgdG8gLi4uCgkqIHN0YWdlMS9zdGFnZTEuaCAoU1RBR0UxX01JTlBBUk1TSVpFKTogLi4uIHRoaXMuCgkqIHN0YWdlMS9zdGFnZTEuUyAoTElTVFNJWik6IFJlbmFtZWQgdG8gLi4uCgkqIHN0YWdlMS9zdGFnZTEuaCAoU1RBR0UxX0xJU1RTSVpFKTogLi4uIHRoaXMuCgkqIHN0YWdlMS9zdGFnZTEuUyAoUkVBTFNUQUNLKTogUmVuYW1lZCB0byAuLi4KCSogc3RhZ2UxL3N0YWdlMS5oIChTVEFHRTFfU1RBQ0tTRUcpOiAuLi4gdGhpcy4KCSogc3RhZ2UxL3N0YWdlMS5TIChCVUZGRVJTRUcpOiBSZW5hbWVkIHRvIC4uLgoJKiBzdGFnZTEvc3RhZ2UxLmggKFNUQUdFMV9CVUZGRVJTRUcpOiAuLi4gdGhpcy4KCSogc3RhZ2UxL3N0YWdlMS5TIChCSU9TX0hEX0ZMQUcpOiBSZW5hbWVkIHRvIC4uLgoJKiBzdGFnZTEvc3RhZ2UxLmggKFNUQUdFMV9CSU9TX0hEX0ZMQUcpOiAuLi4gdGhpcy4KCSogc3RhZ2UxL3N0YWdlMV9sYmEuUyAoU0lHTkFUVVJFKTogUmVtb3ZlZC4KCSogc3RhZ2UxL3N0YWdlMV9sYmEuUyAoQlBCRU5EKTogTGlrZXdpc2UuCgkqIHN0YWdlMS9zdGFnZTFfbGJhLlMgKFBBUlRTVEFSVCk6IExpa2V3aXNlLgoJKiBzdGFnZTEvc3RhZ2UxX2xiYS5TIChNSU5QQVJNU0laKTogTGlrZXdpc2UuCgkqIHN0YWdlMS9zdGFnZTFfbGJhLlMgKExJU1RTSVopOiBMaWtld2lzZS4KCSogc3RhZ2UxL3N0YWdlMV9sYmEuUyAoUkVBTFNUQUNLKTogTGlrZXdpc2UuCgkqIHN0YWdlMS9zdGFnZTFfbGJhLlMgKEJVRkZFUlNFRyk6IExpa2V3aXNlLgoJKiBzdGFnZTEvc3RhZ2UxX2xiYS5TIChCSU9TX0hEX0ZMQUcpOiBMaWtld2lzZS4KCgkqIHN0YWdlMS9zdGFnZTEuUyAoc3RhZ2UxX2lkKTogTmV3IHZhcmlhYmxlLgoJKiBzdGFnZTEvc3RhZ2UxX2xiYS5TIChzdGFnZTFfaWQpOiBMaWtld2lzZS4KCSogc3RhZ2UxL3N0YWdlMS5oIChDT01QQVRfVkVSU0lPTl9NSU5PUik6IFNldCB0byAyLgoJKFNUQUdFMV9JRF9PRkZTRVQpOiBOZXcgbWFjcm8uCgkoU1RBR0UxX0lEX0NIUyk6IExpa2V3aXNlLgoJKFNUQUdFMV9JRF9MQkEpOiBMaWtld2lzZS4KCSogc3RhZ2UyL2NtZGxpbmUuYyAoZW50ZXJfY21kbGluZSkgWyFHUlVCX1VUSUxdOiBXaGVuIHJ1bm5pbmcKCXRoZSBjb21tYW5kIGBpbnN0YWxsJyBhbmQgU1RBR0UxX0ZJTEUgaXMgc3RhZ2UxX2xiYSwgY2hlY2sgaWYKCUxCQSBpcyBzdXBwb3J0ZWQuCgkoZW50ZXJfY21kbGluZSkgW0dSVUJfVVRJTF06IEluIHRoZSBzYW1lIGNhc2UgYWJvdmUsIGNoZWNrIG9ubHkKCWlmIENVUlJFTlRfRFJJVkUgaXMgYSBoYXJkIGRpc2sgYW5kLCBpZiBzbywgcHJpbnQgYSB3YXJuaW5nCgltZXNzYWdlLCBiZWNhdXNlIC9zYmluL2dydWIgY2Fubm90IGRldGVjdCBpZiBMQkEgaXMgc3VwcG9ydGVkIG9yCglub3QuCgoJKiBzdGFnZTEvc3RhZ2UxX2xiYS5TOiBGaXggYSBidWcgdGhhdCBpbmNvcnJlY3RseSBhc3NpZ25zIHRoZQoJc2VnbWVudCBvZiBidWZmZXIgYWRkcmVzcy4KCjE5OTktMDctMTMgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvYm9vdC5jIChsb2FkX2ltYWdlKTogV2hlbiByZW1vdmluZyAidmdhPS4uLiIsIG1lbW1vdmUKCXRoZSBsZW5ndGggb2YgVkdBX0VORCBwbHVzIG9uZS4KCjE5OTktMDctMTIgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvYmlvcy5jIChnZXRfZGlza2luZm8pOiBJbiBMQkEgbW9kZSwgY29tcHV0ZQoJVE9UQUxfU0VDVE9SUyBmcm9tIERSUCBpbnN0ZWFkIG9mIEdFT01FVFJZLgoJQ2xlYXIgR0VPTUVUUlktPkZMQUdTIGZpcnN0LgoKCSogc3RhZ2UyL2Jvb3QuYyAobG9hZF9pbWFnZSk6IEZpeCBpbnZlcnRlZCBsaW5lcy4KCjE5OTktMDctMTIgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJU3VwcG9ydCBMaW51eCB2aWRlbyBtb2RlIHNlbGVjdGlvbi4KCgkqIHN0YWdlMi9zaGFyZWQuaCAoTElOVVhfVklEX01PREVfT0ZGU0VUKTogTmV3IG1hY3JvLgoJKExJTlVYX1ZJRF9NT0RFX05PUk1BTCk6IExpa2V3aXNlLgoJKExJTlVYX1ZJRF9NT0RFX0VYVEVOREVEKTogTGlrZXdpc2UuCgkoTElOVVhfVklEX01PREVfQVNLKTogTGlrZXdpc2UuCglbIVdJVEhPVVRfTElCQ19TVFVCU10gKHN0cmxlbik6IExpa2V3aXNlLgoJKGdydWJfc3RybGVuKTogRGVjbGFyZWQuCgkqIHN0YWdlMi9ib290LmMgKGxvYWRfaW1hZ2UpOiBBZGRlZCBMaW51eCB2aWRlbyBtb2RlIHNlbGVjdGlvbi4KCSogc3RhZ2UyL2NoYXJfaW8uYyBbIVNUQUdFMV81XSAoZ3J1Yl9zdHJsZW4pOiBOZXcgZnVuY3Rpb24uCgoxOTk5LTA3LTEyICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc3RhZ2UyL2NoYXJfaW8uYyAocHJpbnRfZXJyb3IpOiBQcmludCBFUlJOVU0gaW4gdGhlIGZvcm1hdCBvZgoJJXUgaW5zdGVhZCBvZiAlZC4KCShjb252ZXJ0X3RvX2FzY2lpKSBbU1RBR0UxXzVdOiBFbGltaW5hdGUgdGhlIGB4JyBhbmQgYGQnCgloYW5kbGluZyBjb2RlLgoJKGdydWJfcHJpbnRmKTogRGVjbGFyZSBGT1JNQVQgYXMgYGNvbnN0IGNoYXIgKicuCgkoZ3J1Yl9wcmludGYpIFtTVEFHRTFfNV06IEVsaW1pbmF0ZSB0aGUgYHgnIGFuZCBgZCcgaGFuZGxpbmcKCWNvZGUuCgkoZ2V0X2Jhc2VkX2RpZ2l0KTogUmVtb3ZlZC4KCShzYWZlX3BhcnNlX21heGludCk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBgcmVnaXN0ZXInIHByZWZpeGVzLAoJYmVjYXVzZSBHQ0MgZG9lcyBiZXR0ZXIgb3B0aW1pemF0aW9uLgoJRGVjbGFyZSBESUdJVCBhcyBgdW5zaWduZWQgaW50JyBhbmQgY2FsY3VsYXRlIHRoZSB2YWx1ZSBieSBtb3JlCgljb21wYWN0IGluc3RydWN0aW9ucy4KCVshU1RBR0UxXzVdIChncnViX3N0cm5jYXQpOiBEZWNsYXJlIFMyIGFzIGBjb25zdCBjaGFyIConLgoJWyFTVEFHRTFfNV0gKGdydWJfc3RyY21wKTogRGVjbGFyZSBTMSBhbmQgUzIgYXMgYGNvbnN0IGNoYXIgKicuCglbIVNUQUdFMV81XSAoZ3J1Yl9zdHJzdHIpOiBMaWtld2lzZS4KCShncnViX21lbW1vdmUpOiBEZWNsYXJlIEZST00gYXMgYGNvbnN0IGNoYXIgKicuCglUaGUgY29weSBjb2RlIGlzIHJlcGxhY2VkIHdpdGggaW5saW5lIGFzc2VtYmx5IGNvZGUgc3RvbGVuIGZyb20KCUxpbnV4LTIuMi4yLgoKCSogc3RhZ2UyL3NoYXJlZC5oIChncnViX3ByaW50ZikgOiBDb3JyZWN0ZWQuCgkoZ3J1Yl9zdHJuY2F0KTogTGlrZXdpc2UuCgkoZ3J1Yl9tZW1tb3ZlKTogTGlrZXdpc2UuCgkoZ3J1Yl9zdHJzdHIpOiBMaWtld2lzZS4KCShncnViX3N0cmNtcCk6IExpa2V3aXNlLgoKMTk5OS0wNy0xMSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHN0YWdlMS9zdGFnZTEuUyAoc2VjdG9ycyk6IENoYW5nZSB0aGUgc2l6ZSB0byBsb25nLgoJKGhlYWRzKTogTGlrZXdpc2UuCgkoc2VjdG9yX3N0YXJ0KTogTmV3IHZhcmlhYmxlLgoJKGhlYWRfc3RhcnQpOiBMaWtld2lzZS4KCShjeWxpbmRlcl9zdGFydCk6IExpa2V3aXNlLgoJKGZpbmFsX2luaXQpOiBTZXQgJXNpIHRvIFNFQ1RPUlMgZmlyc3QsIGFuZCB1c2UgJXNpIGZvciBtZW1vcnkKCXJlZmVyZW5jZXMuCglaZXJvICVlYXggc28gdGhhdCB0aGUgaGlnaCAxNiBiaXRzIGFyZSBhbHdheXMgemVyby4KCVNldCAlZGkgdG8gRklSU1RMSVNUIC0gTElTVFNJWiBpbnN0ZWFkIG9mIEZJUlNUTElTVC4KCShib290bG9vcCk6IE9taXQgdGhlIGNvbXBsZXggQ0hTIHJlY29tcHV0YXRpb24sIGFuZCBhbHdheXMKCWNvbXB1dGUgdGhlbSBmcm9tIExCQSBhZGRyZXNzIGluc3RlYWQuCglDYWxsIDMyYml0cyBkaXYgaW5zdHJ1Y3Rpb25zIGluc3RlYWQgb2YgMTZiaXRzIGRpdiBpbnN0cnVjdGlvbnMuCglVcGRhdGUgdGhlIHBvc2l0aW9uIHdoZXJlIHRvIGxvYWQgZGF0YSBmcm9tIGF0IHRoZSBlbmQgb2YgdGhpcwoJbG9vcCwgaW5zdGVhZCBvZiB0aGUgYmVnaW5uaW5nLgoKCSogc3RhZ2UxL3N0YWdlMV9sYmEuUzogTmV3IGZpbGUuCgkqIHN0YWdlMS9NYWtlZmlsZS5hbSAobm9kaXN0X3BrZ2RhdGFfREFUQSk6IEFkZGVkIHN0YWdlMV9sYmEuCgkoTERGTEFHUyk6IE5ldyB2YXJpYWJsZS4KCShub2luc3RfUFJPR1JBTVMpOiBBZGRlZCBzdGFnZTFfbGJhLmV4ZWMuCgkoc3RhZ2UxX2xiYV9leGVjX1NPVVJDRVMpOiBOZXcgdmFyaWFibGUuCgkoJTogJS5leGVjKTogTmV3IHJ1bGUuCgoxOTk5LTA2LTI4ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogZ3J1Yi9tYWluLmMgKG1haW4pOiBUaGUgdGhpcmQgYXJndW1lbnQgZm9yIHN0cnRvdWwgaXMgY2hhbmdlZAoJdG8gMCBpbiB0aGUgY2FzZSB3aGVyZSBhbiBvcHRpb24gaXMgT1BUX0lOU1RBTExfUEFSVElJT04uCglSZXBvcnRlZCBieSBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPi4KCjE5OTktMDYtMjcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvc2hhcmVkLmggKFNUQUdFMl9TVEFHRTJfSUQpOiBOZXcgbWFjcm8uCgkoU1RBR0UyX1ZFUl9TVFJfT0ZGUyk6IFNldCB0byAweGQuCgkoU1RBR0UyX0lEX1NUQUdFMik6IE5ldyBtYWNyby4KCShTVEFHRTJfSURfRkZTX1NUQUdFMV81KTogTGlrZXdpc2UuCgkoU1RBR0UyX0lEX0UyRlNfU1RBR0UxXzUpOiBMaWtld2lzZS4KCShTVEFHRTJfSURfRkFUX1NUQUdFMV81KTogTGlrZXdpc2UuCgkoU1RBR0UyX0lEKSBbIVNUQUdFMV81XTogRGVmaW5lZCBhcyBTVEFHRTJfSURfU1RBR0UyLgoJKFNUQUdFMl9JRCkgW1NUQUdFMV81XSBbRlNZU19GRlNdOiBEZWZpbmVkIGFzCglTVEFHRTJfSURfRkZTX1NUQUdFMV81LgoJKFNUQUdFMl9JRCkgW1NUQUdFMV81XSBbRlNZU19FWFQyRlNdOiBEZWZpbmVkIGFzCglTVEFHRTJfSURfU1RBR0UxXzUuCgkoU1RBR0UyX0lEKSBbU1RBR0UxXzVdIFtGU1lTX0ZBVF06IERlZmluZWQgYXMKCVNUQUdFMl9JRF9GQVRfU1RBR0UxXzUuCgkoQ09NUEFUX1ZFUlNJT05fTUlOT1IpOiBTZXQgdG8gMS4KCSogc3RhZ2UyL2FzbS5TIChzdGFnZTJfaWQpOiBOZXcgdmFyaWFibGUuCgkqIHN0YWdlMS9zdGFnZTEuUzogQ2hhbmdlIHRoZSBtaW5vciB2ZXJzaW9uIHRvIDEuCgoxOTk5LTA2LTI3ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogY29uZmlndXJlLmluIChDRkxBR1MpOiBTZXQgdG8gIi1nIiwgc2luY2Ugb25seSB0aGlzIGZsYWcgaXMKCWFsd2F5cyBzaGFyYWJsZS4KCShTVEFHRTFfQ0ZMQUdTKTogU2V0IHRvICItTzIiLCBhbmQgQUNfU1VCU1QgdGhpcy4KCShHUlVCX0NGTEFHUyk6IExpa2V3aXNlLgoJKHNhdmVkX0NGTEFHUyk6IE5ldyB2YXJpYWJsZSBmb3IgdGVtcG9yYXJpbHkgc2F2aW5nIENGTEFHUy4KCShTVEFHRTJfQ0ZMQUdTKTogU2V0IHRvICItT3MiIGlmIHRoaXMgb3B0aW9uIGlzIGF2YWlsYWJsZSwKCW90aGVyd2lzZSBzZXQgdG8gIi1mbm8tc3RyZW5ndGgtcmVkdWNlIC1mbm8tdW5yb2xsLWxvb3BzIiwKCWFuZCB0aGVuIEFDX1NVQlNUIHRoaXMuCgkqIGdydWIvTWFrZWZpbGUuYW0gKEFNX0NGTEFHUyk6IFByZXBlbmRlZCBAR1JVQl9DRkxBR1NALgoJKiBzdGFnZTEvTWFrZWZpbGUuYW0gKEFNX0NGTEFHUyk6IFByZXBlbmRlZCBAU1RBR0UxX0NGTEFHU0AuCgkqIHN0YWdlMi9NYWtlZmlsZS5hbSAobGliZ3J1Yl9hX0NGTEFHUyk6IFByZXBlbmVkIEBHUlVCX0NGTEFHU0AuCgkoU1RBR0UyX0NPTVBJTEUpOiBQcmVwZW5kZWQgQFNUQUdFMl9DRkxBR1NALgoKCSogc3RhZ2UyL2FzbS5TIChjaGFpbl9zdGFnZTIpOiBQYXNzIENVUlJFTlRfUEFSVElUSU9OIGFuZAoJQ1VSUkVOVF9EUklWRSwgaW5zdGVhZCBvZiBJTlNUQUxMX1BBUlRJVElPTiBhbmQgQk9PVF9EUklWRS4KCjE5OTktMDYtMjcgIFBhdmVsIFJvc2tpbiAgPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKCSogY29uZmlndXJlLmluOiBzZXQgQ0ZMQUdTIHRvICItT3MgLWciIGZvciBjb21waWxlcnMgd2hpY2gKCXVuZGVyc3RhbmQgIi1PcyIgaWYgQ0ZMQUdTIGlzIG5vdCBhbHJlYWR5IHNldC4gVXNlCgkiLU8yIC1mbm8tc3RyZW5ndGgtcmVkdWNlIC1mbm8tdW5yb2xsLWxvb3BzIC1nIiBmb3Igb2xkZXIgZ2NjCgl2ZXJzaW9ucy4KCjE5OTktMDYtMjUgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTIvZGlza19pby5jIChhdHRlbXB0X21vdW50KSBbU1RBR0UxXzVdOiBTZXQgRlNZU19UWVBFIHRvCgkwLCBhbmQgc2V0IGl0IHRvIE5VTV9GU1lTIGlmIG1vdW50IGZhaWxzLgoJKHJlYWxfb3Blbl9wYXJ0aXRpb24pOiBDYWxsIHJhd3JlYWQgaW4gU3RhZ2UgMS41IGFzIHdlbGwuCgoxOTk5LTA2LTI0ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogTWFrZWZpbGUuYW0gKFNVQkRJUlMpOiBDaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSBkaXJlY3RvcmllcyBzbwoJdGhhdCBhIGRpcmVjdG9yeSB3aWxsIGJlIG1hZGUgYWZ0ZXIgdGhlIGRlcGVuZGVudCBkaXJlY3RvcmllcwoJYXJlIG1hZGUuIGBncnViJyBkZXBlbmRzIG9uIGBzdGFnZTInLCBhbmQgYGRvY3MnIGRlcGVuZHMgb24KCWBncnViJy4gRG8gbm90IG1ha2UgaW4gcGFyYWxsZWwuCgkqIGRvY3MvaGVscDJtYW46IENvcGllZCBmcm9tIGhlbHAybWFuLTEuMDEyLCB3aGljaCBjb250YWlucyBteQoJcHJldmlvdXMgY2hhbmdlLgoJKiBkb2NzL2dydWIuODogUmVnZW5lcmF0ZWQuCgoxOTk5LTA2LTI0ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCUJ1aWxkIHByb2Nlc3MgaXMgY2xlYW5lZCB1cC4gU3RhZ2UgMiBhbmQgU3RhZ2UgMS41J3MgYXJlIGFsbAoJYnVpbHQgaW4gdGhlIGRpcmVjdG9yeSBzdGFnZTIuCgoJRnJvbSBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPjoKCSogTWFrZWZpbGUuYW0gKFNVQkRJUlMpOiBlMmZzX3N0YWdlMV81LCBmZnNfc3RhZ2UxXzUsCglmYXRfc3RhZ2UxXzUgYW5kIHNoYXJlZF9zcmMgYXJlIHJlbW92ZWQuCgkoRElTVENMRUFORklMRVMpOiBEZWxldGVkLgoJKiBjb25maWd1cmUuaW46IENhbGwgQUNfUFJPR19SQU5MSUIuCgkoQUNfSU5JVCk6IENoYW5nZSB0aGUgYXJndW1lbnQgdG8gc3RhZ2UyL3N0YWdlMi5jLgoJKExJQlMpOiBSZW5hbWVkIHRvIC4uLgoJKEdSVUJfTElCUyk6IC4uLiB0aGlzLCBhbmQgY2FsbCBBQ19TVUJTVCBmb3IgdGhpcy4KCU91ciBvd24gcnVsZXMgYXJlIHJlbW92ZWQuCgkoQUNfT1VUUFVUKTogZTJmc19zdGFnZTFfNS9NYWtlZmlsZSwgZmZzX3N0YWdlMV81L01ha2VmaWxlLAoJZmF0X3N0YWdlMV81L01ha2VmaWxlIGFuZCBzaGFyZWRfc3JjL01ha2VmaWxlIGFyZSByZW1vdmVkLgoJKiBkb2NzL01ha2VmaWxlLmFtIChIRUxQMk1BTik6IFRoZSBwcmVmaXggJChzcmNkaXIpIGlzIHJlbW92ZWQuCglbR1JVQl9NQUlOVF06IFByZXBlbmQgJChzcmNkaXIpIHRvICQoSEVMUDJNQU4pLgoJKiBlMmZzX3N0YWdlMV81L01ha2VmaWxlLmFtOiBEZWxldGVkLgoJKiBlMmZzX3N0YWdlMV81L01ha2VmaWxlLmluOiBMaWtld2lzZS4KCSogZmF0X3N0YWdlMV81L01ha2VmaWxlLmFtOiBMaWtld2lzZS4KCSogZmF0X3N0YWdlMV81L01ha2VmaWxlLmluOiBMaWtld2lzZS4KCSogZmZzX3N0YWdlMV81L01ha2VmaWxlLmFtOiBMaWtld2lzZS4KCSogZmZzX3N0YWdlMV81L01ha2VmaWxlLmluOiBMaWtld2lzZS4KCSogZ3J1Yi9NYWtlZmlsZS5hbSAoQ0xFQU5GSUxFUyk6IExpa2V3aXNlLgoJKENPTVBJTEUpOiBMaWtld2lzZS4KCShJTkNMVURFUyk6IExpa2V3aXNlLgoJKERFUF9GSUxFUyk6IExpa2V3aXNlLgoJKEBTSEFSRURfU1JDX1JVTEVTQCk6IExpa2V3aXNlLgoJKEFNX0NGTEFHUyk6IE5ldyB2YXJpYWJsZS4KCShncnViX0xEQUREKTogU2V0IHRvIHRoZSBsaWJyYXJ5IGxpYmdydWIuYSBhbmQgQEdSVUJfTElCU0AuCgkqIHNoYXJlZF9zcmMvTWFrZWZpbGUuYW06IERlbGV0ZWQuCgkqIHNoYXJlZF9zcmMvTWFrZWZpbGUuaW46IExpa2V3aXNlLgoJKiBzaGFyZWRfc3JjL2FwaWMuaDogTW92ZWQgdG8gLi4uCgkqIHN0YWdlMi9hcGljLmg6IC4uLiBoZXJlLgoJKiBzaGFyZWRfc3JjL2FzbS5TOiBNb3ZlZCB0byAuLi4KCSogc3RhZ2UyL2FzbS5TOiAuLi4gaGVyZS4KCSogc2hhcmVkX3NyYy9iaW9zLmM6IE1vdmVkIHRvIC4uLgoJKiBzdGFnZTIvYmlvcy5jOiAuLi4gaGVyZS4KCSogc2hhcmVkX3NyYy9ib290LmM6IE1vdmVkIHRvIC4uLgoJKiBzdGFnZTIvYm9vdC5jOiAuLi4gaGVyZS4KCSogc2hhcmVkX3NyYy9jaGFyX2lvLmM6IE1vdmVkIHRvIC4uLgoJKiBzdGFnZTIvY2hhcl9pby5jOiAuLi4gaGVyZS4KCSogc2hhcmVkX3NyYy9jbWRsaW5lLmM6IE1vdmVkIHRvIC4uLgoJKiBzdGFnZTIvY21kbGluZS5jOiAuLi4gaGVyZS4KCSogc2hhcmVkX3NyYy9jb21tb24uYzogTW92ZWQgdG8gLi4uCgkqIHN0YWdlMi9jb21tb24uYzogLi4uIGhlcmUuCgkqIHNoYXJlZF9zcmMvZGVmcy5oOiBNb3ZlZCB0byAuLi4KCSogc3RhZ2UyL2RlZnMuaDogLi4uIGhlcmUuCgkqIHNoYXJlZF9zcmMvZGlyLmg6IE1vdmVkIHRvIC4uLgoJKiBzdGFnZTIvZGlyLmg6IC4uLiBoZXJlLgoJKiBzaGFyZWRfc3JjL2Rpc2tfaW5vZGUuaDogTW92ZWQgdG8gLi4uCgkqIHN0YWdlMi9kaXNrX2lub2RlLmg6IC4uLiBoZXJlLgoJKiBzaGFyZWRfc3JjL2Rpc2tfaW5vZGVfZmZzLmg6IE1vdmVkIHRvIC4uLgoJKiBzdGFnZTIvZGlza19pbm9kZV9mZnMuaDogLi4uIGhlcmUuCgkqIHNoYXJlZF9zcmMvZGlza19pby5jOiBNb3ZlZCB0byAuLi4KCSogc3RhZ2UyL2Rpc2tfaW8uYzogLi4uIGhlcmUuCgkqIHNoYXJlZF9zcmMvZmF0Lmg6IE1vdmVkIHRvIC4uLgoJKiBzdGFnZTIvZmF0Lmg6IC4uLiBoZXJlLgoJKiBzaGFyZWRfc3JjL2ZpbGVzeXMuaDogTW92ZWQgdG8gLi4uCgkqIHN0YWdlMi9maWxlc3lzLmg6IC4uLiBoZXJlLgoJKiBzaGFyZWRfc3JjL2ZyZWVic2QuaDogTW92ZWQgdG8gLi4uCgkqIHN0YWdlMi9mcmVlYnNkLmg6IC4uLiBoZXJlLgoJKiBzaGFyZWRfc3JjL2ZzLmg6IE1vdmVkIHRvIC4uLgoJKiBzdGFnZTIvZnMuaDogLi4uIGhlcmUuCgkqIHNoYXJlZF9zcmMvZnN5c19leHQyZnMuYzogTW92ZWQgdG8gLi4uCgkqIHN0YWdlMi9mc3lzX2V4dDJmcy5jOiAuLi4gaGVyZS4KCSogc2hhcmVkX3NyYy9mc3lzX2ZhdC5jOiBNb3ZlZCB0byAuLi4KCSogc3RhZ2UyL2ZzeXNfZmF0LmM6IC4uLiBoZXJlLgoJKiBzaGFyZWRfc3JjL2ZzeXNfZmZzLmM6IE1vdmVkIHRvIC4uLgoJKiBzdGFnZTIvZnN5c19mZnMuYzogLi4uIGhlcmUuCgkqIHNoYXJlZF9zcmMvZ3VuemlwLmM6IE1vdmVkIHRvIC4uLgoJKiBzdGFnZTIvZ3VuemlwLmM6IC4uLiBoZXJlLgoJKiBzaGFyZWRfc3JjL2kzODYtZWxmLmg6IE1vdmVkIHRvIC4uLgoJKiBzdGFnZTIvaTM4Ni1lbGYuaDogLi4uIGhlcmUuCgkqIHNoYXJlZF9zcmMvaW1nYWN0X2FvdXQuaDogTW92ZWQgdG8gLi4uCgkqIHN0YWdlMi9pbWdhY3RfYW91dC5oOiAuLi4gaGVyZS4KCSogc2hhcmVkX3NyYy9tYl9oZWFkZXIuaDogTW92ZWQgdG8gLi4uCgkqIHN0YWdlMi9tYl9oZWFkZXIuaDogLi4uIGhlcmUuCgkqIHNoYXJlZF9zcmMvbWJfaW5mby5oOiBNb3ZlZCB0byAuLi4KCSogc3RhZ2UyL21iX2luZm8uaDogLi4uIGhlcmUuCgkqIHNoYXJlZF9zcmMvcGNfc2xpY2UuaDogTW92ZWQgdG8gLi4uCgkqIHN0YWdlMi9wY19zbGljZS5oOiAuLi4gaGVyZS4KCSogc2hhcmVkX3NyYy9zaGFyZWQuaDogTW92ZWQgdG8gLi4uCgkqIHN0YWdlMi9zaGFyZWQuaDogLi4uIGhlcmUuCgkqIHNoYXJlZF9zcmMvc21wLWltcHMuYzogTW92ZWQgdG8gLi4uCgkqIHN0YWdlMi9zbXAtaW1wcy5jOiAuLi4gaGVyZS4KCSogc2hhcmVkX3NyYy9zbXAtaW1wcy5oOiBNb3ZlZCB0byAuLi4KCSogc3RhZ2UyL3NtcC1pbXBzLmg6IC4uLiBoZXJlLgoJKiBzaGFyZWRfc3JjL3N0YWdlMV81LmM6IE1vdmVkIHRvIC4uLgoJKiBzdGFnZTIvc3RhZ2UxXzUuYzogLi4uIGhlcmUuCgkqIHNoYXJlZF9zcmMvc3RhZ2UyLmM6IE1vdmVkIHRvIC4uLgoJKiBzdGFnZTIvc3RhZ2UyLmM6IC4uLiBoZXJlLgoJKiBzdGFnZTEvTWFrZWZpbGUuYW0gKHBrZ2RhdGFfREFUQSk6IFJlbmFtZWQgdG8gLi4uCgkobm9kaXN0X3BrZ2RhdGFfREFUQSk6IC4uLiB0aGlzLgoJKENPTVBJTEUpOiBEZWxldGVkLgoJKEFNX0NGTEFHUyk6IE5ldyB2YXJpYWJsZS4KCSogc3RhZ2UyL01ha2VmaWxlLmFtOiBDb21wbGV0ZWx5IHJld3JpdHRlbiBmcm9tIHNjcmF0Y2guCgkoVEVTVFMpOiBOZXcgdmFyaWFibGUuCgkobm9pbnN0X1NDUklQVFMpOiBMaWtld2lzZS4KCShub2luc3RfSEVBREVSUyk6IExpa2V3aXNlLgoJKEVYVFJBX0RJU1QpOiBTZXQgdG8gc21wLWltcHMuYyBhbmQgJChub2luc3RfU0NSSVBUUykuCgkobm9pbnN0X0xJQlJBUklFUyk6IE5ldyB2YXJpYWJsZS4KCShsaWJncnViX2FfU09VUkNFUyk6IExpa2V3aXNlLgoJKGxpYmdydWJfYV9DRkxBR1MpOiBMaWtld2lzZS4KCShwa2dkYXRhX0RBVEEpOiBEZWxldGVkLgoJKG5vZGlzdF9wa2dkYXRhX0RBVEEpOiBOZXcgdmFyaWFibGUuCgkoTU9TVExZQ0xFQU5GSUxFUyk6IFNldCB0byAkKG5vaW5zdF9QUk9HUkFNUykuCgkoQ09NUElMRSk6IERlbGV0ZWQuCgkoSU5DTFVERVMpOiBMaWtld2lzZS4KCShzdGFnZTJfZXhlY19MREFERCk6IExpa2V3aXNlLgoJKERFUF9GSUxFUyk6IExpa2V3aXNlLgoJKHN0YWdlMl9leGVjX1NPVVJDRVMpOiBTZXQgdG8gdGhlIGFjdHVhbCBzb3VyY2UgZmlsZXMgaW5zdGVhZCBvZgoJZHVtbXkuCgkoRElTVEZJTEVTKTogRGVsZXRlZC4KCShzdGFnZTIuZXhlYyk6IExpa2V3aXNlLgoJKHN0YWdlMik6IExpa2V3aXNlLgoJKEBTSEFSRURfU1JDX1JVTEVTQCk6IExpa2V3aXNlLgoJKG5vaW5zdF9QUk9HUkFNUyk6IFNldCB0byBleGVjdXRhYmxlIGZvcm1hdHMgb2YgU3RhZ2UgMiBhbmQKCVN0YWdlIDEuNSdzLgoJKFNUQUdFMl9MSU5LKTogTmV3IHZhcmlhYmxlLgoJKFNUQUdFMl9DT01QSUxFKTogTGlrZXdpc2UuCgkoU1RBR0UxXzVfTElOSyk6IExpa2V3aXNlLgoJKFNUQUdFMV81X0NPTVBJTEUpOiBMaWtld2lzZS4KCShzdGFnZTJfZXhlY19DRkxBR1MpOiBMaWtld2lzZS4KCShzdGFnZTJfZXhlY19MREZMQUdTKTogTGlrZXdpc2UuCgkoZTJmc19zdGFnZTFfNV9leGVjX1NPVVJDRVMpOiBMaWtld2lzZS4KCShlMmZzX3N0YWdlMV81X2V4ZWNfQ0ZMQUdTKTogTGlrZXdpc2UuCgkoZTJmc19zdGFnZTFfNV9leGVjX0xERkxBR1MpOiBMaWtld2lzZS4KCShmYXRfc3RhZ2UxXzVfZXhlY19TT1VSQ0VTKTogTGlrZXdpc2UuCgkoZmF0X3N0YWdlMV81X2V4ZWNfQ0ZMQUdTKTogTGlrZXdpc2UuCgkoZmF0X3N0YWdlMV81X2V4ZWNfTERGTEFHUyk6IExpa2V3aXNlLgoJKGZmc19zdGFnZTFfNV9leGVjX1NPVVJDRVMpOiBMaWtld2lzZS4KCShmZnNfc3RhZ2UxXzVfZXhlY19DRkxBR1MpOiBMaWtld2lzZS4KCShmZnNfc3RhZ2UxXzVfZXhlY19MREZMQUdTKTogTGlrZXdpc2UuCgkoJSA6ICUuZXhlYyk6IE5ldyBydWxlLgoKCSogc3RhZ2UyL3NpemVfdGVzdDogTmV3IGZpbGUsIGZvciBjaGVja2luZyBmb3IgdGhlIHNpemVzIG9mCglTdGFnZSAyIGFuZCBTdGFnZSAxLjUncy4KCjE5OTktMDYtMjQgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzdGFnZTEvc3RhZ2UxLlM6IENhbGwgdGVzdGIgaW5zdGVhZCBvZiBhbmRiIHdoZW4gY2hlY2tpbmcgaWYKCXRoZSBkcml2ZSBpcyBhIGZsb3BweS4KCjE5OTktMDYtMjMgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBncnViL2FzbXN0dWIuYyBbX19saW51eF9fXTogSW5jbHVkZSBsaW51eC9mcy5oIGZvciBCTEtGTFNCVUYuCgkoZ3J1Yl9zdGFnZTIpOiBDYWxsIHN5bmMgYmVmb3JlIGFuZCBhZnRlciBjYWxsaW5nIGRvaXQuCgkoZ3VyYl9zdGFnZTIpIFtfX2xpbnV4X19dOiBJbnZhbGlkYXRlIGJ1ZmZlciBjYWNoZXMgYnkgQkxLRkxTQlVGCglpb2N0bC4KCSogZ3J1Yi9tYWluLmMgKG1haW4pOiBDYWxsIHN5bmMgZmlyc3QuIFN1Z2dlc3RlZCBieSBQYXZlbCBSb3NraW4KCTxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4uCgoJKiBjb25maWd1cmUuaW46IEN1cnNlcyBsaWJyYXJpZXMgYXJlIGFsd2F5cyBjaGVja2VkLgoJKC0tZW5hYmxlLXNiaW4tZ3J1Yik6IERlbGV0ZWQuIE5vdyAvc2Jpbi9ncnViIGlzIGFsd2F5cyBidWlsdC4KCSgtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUpOiBOZXcgb3B0aW9uLgoJKiBncnViL01ha2VmaWxlLmFtIChFWFRSQV9QUk9HUkFNUyk6IERlbGV0ZWQuCgkoc2Jpbl9QUk9HUkFNUyk6IEp1c3Qgc2V0IHRvIGdydWIuCgkqIGRvY3MvTWFrZWZpbGUuYW0gKG1hbl9NQU5TKTogTmV3IHZhcmlhYmxlLgoJKEhFTFAyTUFOKTogTGlrZXdpc2UuCgkobm9pbnN0X1NDUklQVFMpOiBMaWtld2lzZS4KCShFWFRSQV9ESVNUKTogQWRkICQobWFuX01BTlMpIGFuZCAkKG5vaW5zdF9TQ1JJUFRTKS4KCVtHUlVCX01BSU5UXTogRGVmaW5lIHRoZSBydWxlIGZvciB0aGUgL3NiaW4vZ3J1YiBtYW51YWwuCgkqIGRvY3MvaGVscDJtYW46IENvcGllZCBmcm9tIHRleGluZm8tMy4xMmkuCgkoLS1zZWN0aW9uKTogTmV3IG9wdGlvbiB0byBzcGVjaWZ5IHdoaWNoIHNlY3Rpb24gYSBtYW51YWwKCWJlbG9uZ3MJdG8uCgkob3B0X3NlY3Rpb24pOiBOZXcgdmFyaWFibGUuCgkoc2VjdGlvbik6IExpa2V3aXNlLgoJKiBkb2NzL2dydWIuODogUHJvZHVjZWQgYnkgaGVscDJtYW4gYXV0b21hdGljYWxseS4KCjE5OTktMDYtMjIgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzaGFyZWRfc3JjL2NoYXJfaW8uYyAoZ2V0X2NtZGxpbmUpOiBBZGQgdHdvIG1pc3NpbmcgYGJyZWFrJ3MuCgoJKiBzaGFyZWRfc3JjL2NtZGxpbmUuYyAoY29tbWFuZHMpOiBBZGQgcXVpdC4KCShlbnRlcl9jbWRsaW5lKTogQ2hhbmdlIHRoZSByZXR1cm4gdHlwZQl0byBjbWRsaW5lX3QsIGFuZCByZXR1cm4KCUNNRExJTkVfT0sgaWYgc3VjY2Vzc2Z1bCwgb3RoZXJ3aXNlIENNRExJTkVfRVJST1IgaWYgZmFpbC4KCShlbnRlcl9jbWRsaW5lKSBbR1JVQl9VVElMXTogUmV0dXJuIENNRExJTkVfQUJPUlQgaWYgQ1VSX0hFQVAKCWNvbnRhaW5zICJxdWl0Ii4KCVshR1JVQl9VVElMXTogSnVzdCBwcmludCBhbiBhbm5vdGF0aW9uIG1lc3NhZ2UuCgkqIHNoYXJlZF9zcmMvc2hhcmVkLmggKGNtZGxpbmVfdCk6IE5ldyBlbnVtIHR5cGUuCgkoZW50ZXJfY21kbGluZSk6IENoYW5nZSB0aGUgcmV0dXJuIHR5cGUgdG8gY21kbGluZV90LgoJKGNtYWluKTogUmVtb3ZlIGBgbm9yZXR1cm4nJyBhdHRyaWJ1dGUuCgkqIHNoYXJlZF9zcmMvc3RhZ2UyLmMgKG1lbnVfdCk6IE5ldyBlbnVtIHR5cGUuCgkocnVuX21lbnUpOiBDaGFuZ2UgdGhlIHJldHVybiB0eXBlIHRvIG1lbnVfdC4KCUlmIGVudGVyX2NtZGxpbmUgcmV0dXJucyBDTURMSU5FX0FCT1JULCB0aGVuIHJldHVybiBNRU5VX0FCT1JULAoJb3RoZXJ3aXNlIHJldHVybiBNRU5VX09LLgoJKGNtYWluKTogSWYgZW50ZXJfY21kbGluZSBhYm9ydHMsIHRoZW4gYnJlYWsgdGhlIGNvbW1hbmQtbGluZQoJbG9vcCBhbmQgcmV0dXJuLiBJZiBydW5fbWVudSBhYm9ydHMsIHRoZW4gcmV0dXJuLgoKMTk5OS0wNi0yMiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHNoYXJlZF9zcmMvTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBBZGQgYmlvcy5jLiBSZXBvcnRlZCBieQoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4uCgoxOTk5LTA2LTIxICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogZG9jcy9NYWtlZmlsZS5hbSAoaHRtbCk6IERlbGV0ZWQuCgkodHh0KTogTGlrZXdpc2UuCgkoRVhUUkFfRElTVCk6ICQodHh0KSBhbmQgJChodG1sKSBhcmUgcmVtb3ZlZC4KCSogZG9jcy9ib290LXByb3Bvc2FsLmh0bWw6IFJlbW92ZWQuCgkqIGRvY3MvZXJyb3JzLmh0bWw6IExpa2V3aXNlLgoJKiBkb2NzL2ZhcS5odG1sOiBMaWtld2lzZS4KCSogZG9jcy9ncnViLmh0bWw6IExpa2V3aXNlLgoJKiBkb2NzL2luc3RhbGwuaHRtbDogTGlrZXdpc2UuCgkqIGRvY3MvbWVtNjRtYi5odG1sOiBMaWtld2lzZS4KCSogZG9jcy90ZWNobmljYWwuaHRtbDogTGlrZXdpc2UuCgkqIGRvY3MvdXNpbmcuaHRtbDogTGlrZXdpc2UuCgkqIGRvY3MvUENfcGFydGl0aW9uaW5nLnR4dDogTGlrZXdpc2UuCgkqIGRvY3MvYmlvc19tYXBwaW5nLnR4dDogTGlrZXdpc2UuCgkqIGRvY3MvY29tbWFuZHMudHh0OiBMaWtld2lzZS4KCSogZG9jcy9lbWJlZGRlZF9kYXRhLnR4dDogTGlrZXdpc2UuCgkqIGRvY3MvZmlsZXN5c3RlbS50eHQ6IExpa2V3aXNlLgoKMTk5OS0wNi0yMSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCglGcm9tIEFsZXhhbmRlciBLLiBIdWRlayA8YWxleGh1ZGVrQGhvbWUuY29tPjoKCSogc2hhcmVkX3NyYy9kaXNrX2lvLmMgKHJlYWxfb3Blbl9wYXJ0aXRpb24pOiBDaGVjayBpZgoJQ1VSUkVOVF9TTElDRSBpcyBlcXVhbCB0byBQQ19TTElDRV9UWVBFX1dJTjk1X0VYVEVOREVEIGFzIHdlbGwuCgkqIHNoYXJlZF9zcmMvcGNfc2xpY2UuYyAoUENfU0xJQ0VfVFlQRV9XSU45NV9FWFRFTkRFRCk6IE5ldwoJbWFjcm8uCgkqIHNoYXJlZF9zcmMvYmlvcy5jIChiaW9zZGlzayk6IENsZWFyIHRoZSByZXNlcnZlZCBtZW1iZXIgb2YgREFQLgoKMTk5OS0wNi0wOCAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCglDb2xvci1tZW51IHN1cHBvcnQgYmFzZWQgb24gUGV0ZXIgQXN0cmFuZAoJPGFsdGljQGx5c2F0b3IubGl1LnNlPidzIHBhdGNoLgoKCSogc2hhcmVkX3NyYy9hc20uUyAobm9jdXJzb3IpOiBOZXcgZnVuY3Rpb24uCgkqIHNoYXJlZF9zcmMvY21kbGluZS5jIChub3JtYWxfY29sb3IpOiBOZXcgdmFyaWFibGUuCgkoaGlnaGxpZ2h0X2NvbG9yKTogTGlrZXdpc2UuCgkoY29tbWFuZHMpOiBBZGRlZCAiY29sb3IiIGNvbW1hbmQuCgkoZW50ZXJfY21kbGluZSk6IEhhbmRsZSB0aGUgY29sb3IgY29tbWFuZC4KCSogc2hhcmVkX3NyYy9zaGFyZWQuaCAobm9ybWFsX2NvbG9yKTogRGVjbGFyZWQuCgkoaGlnaGxpZ2h0X2NvbG9yKTogTGlrZXdpc2UuCglbIUdSVUJfVVRJTF0gKG5vY3Vyc29yKTogTGlrZXdpc2UuCgkqIHNoYXJlZF9zcmMvc3RhZ2UyLmMgKHByaW50X2JvcmRlcikgWyFHUlVCX1VUSUxdOiBDb2xvciB0aGUKCW1lbnUuCgkocnVuX21lbnUpIFshR1JVQl9VVElMXTogQ2FsbCBub2N1cnNvciwgYW5kIGNhbGwgc2V0X2xpbmUgd2l0aAoJdGhlIHNlY29uZCBhcmd1bWVudCBISUdITElHSFRfQ09MT1Igd2hlbiBoaWdobGlnaHRpbmcgYSBsaW5lLAoJYW5kIE5PUk1BTF9DT0xPUiB3aGVuIGRyYXdpbmcgYSBub3JtYWwgbGluZS4KCShjbWFpbik6IEluaXRpYWxpemUgbm9ybWFsX2NvbG9yIGFuZCBoaWdobGlnaHRfY29sb3IuIEhhbmRsZQoJdGhlIGNvbG9yIGNvbW1hbmQgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBjb21tYW5kLWxpbmUKCWludGVyZmFjZS4KCjE5OTktMDYtMDcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBlMmZzX3N0YWdlMV81L01ha2VmaWxlLmFtIChJTVBPUlRBTlRfU0laRV9MSU1JVCk6IFNldCB0byAzMTc0NC4KCSogZmF0X3N0YWdlMV81L01ha2VmaWxlLmFtIChJTVBPUlRBTlRfU0laRV9MSU1JVCk6IExpa2V3aXNlLgoKMTk5OS0wNi0wNiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCglUaGUgZGVidWcgdmVyc2lvbiBvZiBTdGFnZSAyIGlzIHJlbW92ZWQuCgoJKiBzaGFyZWRfc3JjL2NtZGxpbmUuYzogVGhlIGltcHMgY29kZSBpcyBub3cgZGVmaW5lZCBpZiBHUlVCX1VUSUwKCWlzIG5vdCBkZWZpbmVkLCBidXQgbm90IGlmIERFQlVHLgoJKGRlYnVnKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShjb21tYW5kcyk6IEFsbCBjb21tYW5kcyBhcmUgYWx3YXlzIGVuYWJsZWQsIGFuZCBhZGRlZCAiZGVidWciLgoJKGRlYnVnX2ZzX3ByaW50X2Z1bmMpOiBEZWZpbmVkIHVuY29uZGl0aW9uYWxseS4KCShkZWJ1Z19mc19ibG9ja2xpc3RfZnVuYyk6IElmIERFQlVHIGlzIHRydWUsIHRoZW4gY2FsbCBwcmludGYuCgkoZW50ZXJfY21kbGluZSk6IEhhbmRsZSAidGVzdGxvYWQiLCAicmVhZCIsICJmc3Rlc3QiLAoJImltcHNwcm9iZSIgYW5kICJkaXNwbGF5bWVtIiB1bmNvbmRpdGlvbmFsbHksIGFuZCBhZGRlZCAiZGVidWciCgloYW5kbGluZy4KCVtHUlVCX1VUSUxdOiBJZiBhIGNvbW1hbmQgaXMgaW1wc3Byb2JlLCBqdXN0IGZhaWxzLgoJKiBzaGFyZWRfc3JjL2Rpc2tfaW8uYyAoZGV2cmVhZCkgWyFTVEFHRTFfNV06IElmIERFQlVHX0ZTIGFuZAoJREVCVUcgYXJlIHRydWUsIHRoZW4gY2FsbCBwcmludGYuCgkqIHNoYXJlZF9zcmMvYXNtLlMgKHBhdGNoX2NvZGUpOiBEZWZpbmVkIHVuY29uZGl0aW9uYWxseS4KCShwYXRjaF9jb2RlX2VuZCk6IExpa2V3aXNlLgoJKiBzdGFnZTEvc3RhZ2UxLlMgKGZpcnN0bGlzdCkgWyFGRlNfU1RBR0UxXzVdOiBJbmNyZWFzZSB0aGUKCW51bWJlciBvZiBzZWN0b3JzIHRvIDkwLCBiZWNhdXNlIFN0YWdlIDIgaXMgbGFyZ2VyIHRoYW4gODAKCXNlY3RvcnMuCgkqIGNvbmZpZ3VyZS5pbjogVGhlIG9wdGlvbiAtLWVuYWJsZS1kZWJ1ZyBpcyByZW1vdmVkLCBhbmQgZG8KCW5vdCBvdXRwdXQgInN0YWdlMl9kZWJ1Zy9NYWtlZmlsZSIuCgkqIE1ha2VmaWxlLmFtIChTVUJESVJTKTogc3RhZ2UyX2RlYnVnIGlzIHJlbW92ZWQuCgkqIHN0YWdlMl9kZWJ1Zy9NYWtlZmlsZS5hbTogRGVsZXRlZC4KCSogc3RhZ2UyX2RlYnVnL01ha2VmaWxlLmluOiBMaWtld2lzZS4KCjE5OTktMDYtMDIgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBncnViL21haW4uYyAodmVyYm9zZSk6IE5ldyB2YXJpYWJsZS4KCShyZWFkX29ubHkpOiBMaWtld2lzZS4KCShPUFRfVkVSQk9TRSk6IE5ldyBtYWNyby4KCShPUFRfUkVBRF9PTkxZKTogTGlrZXdpc2UuCgkobG9uZ29wdHMpOiBBZGQgLS1yZWFkLW9ubHkgYW5kIC0tdmVyYm9zZSBvcHRpb25zLgoJKHVzYWdlKTogQWRkIHRoZSBkZXNjcmlwdGlvbnMgYWJvdXQgLS1yZWFkLW9ubHkgYW5kIC0tdmVyYm9zZS4KCShtYWluKTogSGFuZGxlIE9QVF9WRVJCT1NFIGFuZCBPUFRfUkVBRF9PTkxZLgoJSWYgSE9MRCBhbmQgVkVSQk9TRSBhcmUgbm9uLXplcm8sIHRoZW4gZGlzcGxheSB0aGUgbWVzc2FnZQoJYWJvdXQgaG93IHRvIHJlc3RhcnQgL3NiaW4vZ3J1Yi4KCgkqIHNoYXJlZF9zcmMvc2hhcmVkLmggKHZlcmJvc2UpIFtHUlVCX1VUSUxdOiBEZWNsYXJlZC4KCShyZWFkX29ubHkpIFtHUlVCX1VUSUxdOiBMaWtld2lzZS4KCgkqIGdydWIvYXNtc3R1Yi5jIChoZXhfZHVtcCk6IE5ldyBmdW5jdGlvbi4KCShiaW9zZGlzayk6IEluIHRoZSBjYXNlIHdoZXJlIFNVQkZVTkMgaXMKCUJJT1NESVNLX1dSSVRFLCBjaGVjayBmb3IgUkVBRF9PTkxZIGFuZCBjYWxsIG53cml0ZSBpZgoJUkVBRF9PTkxZIGlzIHplcm8uIElmIFZFUkJPU0UgaXMgbm9uLXplcm8sIGRpc3BsYXkgd2hhdCBHUlVCCgl3aWxsIHRyeSB0byBkby4KCShnZXRfZGlza2luZm8pOiBPcGVuIERFVk5BTUUgd2l0aCB0aGUgbW9kZSBPX1JEV1IgaWYgUkVBRF9PTkxZCglpcyB6ZXJvLCBhbmQgYXR0ZW1wdCB0byBvcGVuIERFVk5BTUUgd2l0aCB0aGUgbW9kZSBPX1JET05MWQoJcmVnYXJkbGVzcyBvZiBFUlJOTyBpZiBSRUFEX09OTFkgaXMgbm9uLXplcm8uIElmIFZFUkJPU0UgaXMKCW5vbi16ZXJvLCB0aGVuIGRpc3BsYXkgdGhlIGRyaXZlIERSSVZFIGFuZCB0aGUgZmlsZSBERVZOQU1FLgoKCSogc2hhcmVkX3NyYy9kaXNrX2lvLmMgKHNldF9kZXZpY2UpIFtTVEFHRTFfNV06IEVsaW1pbmF0ZQoJY29tcGxldGlvbiBjb2RlLgoKMTk5OS0wNi0wMSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIGdydWIvYXNtc3R1Yi5jOiBEbyBub3QgdXNlIElfQU1fVkVSWV9CUkFWRSBhbnkgbW9yZS4KCShncnViX3N0YWdlMik6IERlbGV0ZSBmaXJzdF9zY3NpX2Rpc2sgYW5kIGFkZCBhIHZhcmlhYmxlCgludW1faGQsIHdoaWNoIGlzIHVzZWQgZm9yIGNvdW50aW5nIGhvdyBtYW55IGRyaXZlcyBhcmUKCWRldGVjdGVkLgoJSW5pdGlhbGl6ZSB0aGUgZmxhZ3MgbWVtYmVyIG9mIGVhY2ggZWxlbWVudCBvZiBkaXNrcyB0byAtMQoJaW5zdGVhZCBvZiAwLCBhbmQgY2hlY2sgaWYgaXQgaXMgZXF1YWwgdG8gLTEgaW5zdGVhZCBvZiAwIHdoZW4KCWNsb3NlIGl0LgoJKGdldF9kaXNraW5mbyk6IFRyZWF0IC0xIGFzIG5vbi1jYWNoaW5nIHN0YXRlIGluc3RlYWQgb2YgMC4KCjE5OTktMDYtMDEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJUmVwb3J0ZWQgZnJvbSBLbGF1cyBSZWljaGwgPGE4NzA5MTgyQHVuZXQudW5pdmllLmFjLmF0PjoKCSogZG9jcy8uY3ZzaWdub3JlOiBOZXcgZmlsZS4KCSogc2hhcmVkX3NyYy9kaXNrX2lvLmMgKHByaW50X2FfY29tcGxldGlvbik6IE5ldyBmdW5jdGlvbgoJd2hpY2ggc2F2ZXMgd2hhdCBoYXMgYmVlbiBwcmludGVkIHRvIFVOSVFVRV9TVFJJTkcgYW5kIHByaW50ZgoJaXQuCgkodW5pcXVlKSBbIVNUQUdFMV81XTogTmV3IHZhcmlhYmxlLgoJKHVuaXF1ZV9zdHJpbmcpOiBMaWtld2lzZS4KCShwcmludF9jb21wbGV0aW9ucyk6IFVzZSBwcmludF9hX2NvbXBsZXRpb24sIGFuZCBpbXByb3ZlIHRoZQoJY29tcGxldGlvbiBmYWNpbGl0eS4KCSogc2hhcmVkX3NyYy9mc3lzX2V4dDJmcy5jIChleHQyZnNfZGlyKSBbIVNUQUdFMV81XTogVXNlCglwcmludF9hX2NvbXBsZXRpb24gaW5zdGVhZCBvZiBqdXN0IHByaW50Zi4KCSogc2hhcmVkX3NyYy9mc3lzX2Zmcy5jIChmZnNfZGlyKSBbIVNUQUdFMV81XTogTGlrZXdpc2UuCgkqIHNoYXJlZF9zcmMvZnN5c19mYXQuYyAoZmF0X2RpcikgWyFTVEFHRTFfNV06IExpa2V3aXNlLgoJKiBzaGFyZWRfc3JjL3NoYXJlZC5oIChwcmludF9hX2NvbXBsZXRpb24pOiBEZWNsYXJlZC4KCSogc2hhcmVkX3NyYy9jbWRsaW5lLmMgKGVudGVyX2NtZGxpbmUpOiBFeHBsaWNpdGx5IGNhc3QKCWludCB0byBwb2ludGVyIHRvIGNoYXIgZm9yIGdydWJfcmVhZC4KCSogZ3J1Yi9hc21zdHViLmMgKGdydWJfc3RhZ2UyKSBbX19saW51eF9fXTogRG9uJ3QgdXNlIC9kZXYvZmQxLgoJUHJvYmUgNCBJREUgZHJpdmVzIGluc3RlYWQgb2YgMi4KCShiaW9zZGlzaykgW19fbGludXhfX106IEFkZCBhIHByb3RvdHlwZSBmb3IgX2xsc2Vlay4KCSogc2hhcmVkX3NyYy9jaGFyX2lvLmMgKGdldF9jbWRsaW5lKTogVXBkYXRlIExQT1MgYW5kIExMRU5fT0xECgl3aGVuIHRoZSBmdW5jdG9uIHByaW50X2NvbXBsZXRpb24gbW9kaWZpZXMgQ01ETElORS4KCSogc2hhcmVkX3NyYy9zdGFnZTIuYyAoZ2V0X2xpbmVfZnJvbV9jb25maWcpOiBGaXggTElURVJBTAoJaGFuZGxpbmcuCgoxOTk5LTA1LTI1ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogZ3J1Yi9hc21zdHViLmMgKGdydWJfc3RhZ2UyKTogRml4IGEgbWVtb3J5IGxlYWsgdGhhdCBGUCBpcwoJbm90IGNsb3NlZC4KCjE5OTktMDUtMjUgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBncnViL21haW4uYzogUmVwbGFjZSBPUFRfRElTQUJMRV9DT05GSUdfRklMRSBhbmQKCU9QVF9ESVNBQkxFX0NVUlNFUyB3aXRoIE9QVF9OT19DT05GSUdfRklMRSBhbmQgT1BUX05PX0NVUlNFUwoJcmVzcGVjdGl2ZWx5LgoJKGxvbmdvcHRzKTogUmVuYW1lIGZyb20gImRpc2FibGUtY29uZmlnLWZpbGUiIHRvCgkibm8tY29uZmlnLWZpbGUiLCBhbmQgZnJvbSAiZGlzYWJsZS1jdXJzZXMiIHRvICJuby1jdXJzZXMiLgoJKHVzYWdlKTogVXNlICJncnViIiBpbnN0ZWFkIG9mIEFSR1ZbMF0sIHJlYWQgdGhlIHN0YW5kYXJkcy4KCUNoYW5nZSB0aGUgaGVscCBtZXNzYWdlIGFjY29yZGluZyB0byB0aGUgY2hhbmdlcyBhYm92ZS4KCShtYWluKTogSGFuZGxlIE9QVF9OT19DT05GSUdfRklMRSBhbmQgT1BUX05PX0NVUlNFUywgaW5zdGVhZAoJb2YgT1BUX0RJU0FCTEVfQ09ORklHX0ZJTEUgYW5kIE9QVF9ESVNBQkxFX0NVUlNFUy4KCjE5OTktMDUtMjEgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBkb2NzL1RPRE86IE1vdmVkIHRvIC4uLgoJKiBUT0RPOiAuLi4gaGVyZS4KCSogZG9jcy9CVUdTOiBNb3ZlZCB0byAuLi4KCSogQlVHUzogLi4uIGhlcmUuCgkqIGRvY3MvQ09QWUlORzogUmVtb3ZlZC4KCSogZG9jcy9NYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IEdldCByaWQgb2YgQlVHUy4KCSogTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBTZXQgdG8gQlVHUy4KCjE5OTktMDUtMTcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBhY2luY2x1ZGUubTQgKGdydWJfQVNNX0VYVF9DKTogRG8gbm90IG92ZXJydW4gdGhlIGNvbW1hbmQKCXNoaWZ0LiBSZXBvcnRlZCBieSBQYXZlbCBSb3NraW4gPHBhYmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPi4KCjE5OTktMDUtMTQgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBkb2NzL01ha2VmaWxlLmFtIChpbmZvX1RFWElORk9TKTogQWRkZWQgbXVsdGlib290LnRleGkuCgkqIGRvY3MvbXVsdGlib290LnRleGk6IE5ldyBmaWxlLiBGcm9tIEt1bmloaXJvIElzaGlndXJvLgoKMTk5OS0wNS0xMiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIGdydWIvYXNtc3R1Yi5jOiBJbmNsdWRlIDxlcnJuby5oPi4gUmVwb3J0ZWQgYnkgS3VuaWhpcm8KCUlzaGlndXJvIDxrdW5paGlyb0B6ZWJyYS5vcmc+LgoKMTk5OS0wNS0xMSAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCglSZXBvcnRlZCBieSBCcmlhbiBCcnVuc3dpY2sgPGJyaWFuQHNrYXJwc2V5LmRlbW9uLmNvLnVrPjoKCSogc2hhcmVkX3NyYy9hc20uUyAoc3RhcnQpIFtTVEFHRTFfNV06IEp1bXAgdG8gMHgwOjB4MjAwMC4KCSogc2hhcmVkX3NyYy9jbWRsaW5lLmMgKGVudGVyX2NtZGxpbmUpOiBEb2Vzbid0IGNoZWNrIGZvciB0aGUganVtcAoJYWRkcmVzcyBpbiBzdGFnZTIuIFdlIGFyZSBub3QgcGFyYW5vaWQuCglBZGQgYSBtaXNzaW5nIFJBV19BRERSIG1hY3JvLgoJKiBzaGFyZWRfc3JjL2Rpc2tpby5jIChncnViX29wZW4pOiBDYWxsIHNldHVwX3BhcnQgZXZlbiBpbiBzdGFnZTEuNS4KCUFuZCwgaW5jbHVkZSBuZWNlc3NhcnkgZnVuY3Rpb25zIHRoYXQgd2VyZSBlbGltaW5hdGVkIGluY29ycmVjdGx5LgoJKiBzaGFyZWRfc3JjL2NoYXJfaW8uYyBbU1RBR0UxXzVdOiBFbGltaW5hdGUgdW5uZWNlc3NhcnkgZnVuY3Rpb25zCglmb3Igc3RhZ2UxLjUuCgoJKiBncnViL2FzbXN0dWIuYyAobnJlYWQpOiBOZXcgZnVuY3Rpb24uIEhhbmRsZSBFSU5UUi4KCShud3JpdGUpOiBMaWtld2lzZS4KCShiaW9zZGlzaykgW0lfQU1fVkVSWV9CUkFWRV06IFdoZW4gU1VCRlVOQyBpcyBCSU9TRElTS19XUklURSwgY2FsbAoJbndyaXRlLgoKCVJlcG9ydGVkIGJ5IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+OgoJKiBzaGFyZWRfc3JjL2ZzeXNfZXh0MmZzLmMgKG9mZl90KTogUmVuYW1lZCB0byAuLi4KCShsaW51eF9vZmZfdCk6IC4uLiB0aGlzLgoJKiBzaGFyZWRfc3JjL2RlZnMuaCAob2ZmX3QpOiBSZW5hbWVkIHRvIC4uLgoJKG1hY2hfb2ZmX3QpOiAuLi4gdGhpcy4KCSogc2hhcmVkX3NyYy9mcy5oIChCQk9GRik6IFVzZSBtYWNoX29mZl90IGluc3RlYWQgb2Ygb2ZmX3QuCgkoU0JPRkYpOiBMaWtld2lzZS4KCgkqIGUyZnNfc3RhZ2UxXzUvTWFrZWZpbGUuYW0gKElNUE9SVEFOVF9TSVpFX0xJTUlUKTogU2V0IHRvIDgxOTIwLgoJKiBmYXRfc3RhZ2UxXzUvTWFrZWZpbGUuYW0gKElNUE9SVEFOVF9TSVpFX0xJTUlUKTogTGlrZXdpc2UuCgkqIGZmc19zdGFnZTFfNS9NYWtlZmlsZS5hbSAoSU1QT1JUQU5UX1NJWkVfTElNSVQpOiBTZXQgdG8gNzE2OC4KCjE5OTktMDUtMDMgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEB0cmljay5maWcub3JnPgoKCUZyb20gUGF2ZWwgUm9za2luOgoJKiBzaGFyZWRfc3JjL3NoYXJlZC5oOiBSZWRlY2xhcmUuCgoJKiBncnViL21haW4uYyAobWFpbik6IFVzZSBzdHJuY3B5IHJhdGhlciB0aGFuIHBvaW50ZXIgYXNzaWdubWVudAoJdG8gc2V0IHRoZSBjb25maWcgZmlsZSBuYW1lLgoKCSogZ3J1Yi9hc21zdHViLmM6IE1ha2UgY29uZmlnX2ZpbGUgYSBzdGF0aWMgYXJyYXksIG5vdCBhIHBvaW50ZXIuCglDb3JyZWN0IHRoZSB2YWx1ZSBvZiBWRVJTSU9OX1NUUklORy4KCjE5OTktMDQtMTAgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEB0cmljay5maWcub3JnPgoKCSogZGViaWFuL3J1bGVzIChidWlsZCk6IEluc3RhbGwgaW50byAvbGliIGluc3RlYWQgb2YgL3NoYXJlLgoKMTk5OS0wNS0wMyAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCglQcmVsaW1pbmFyeSBub24taW50ZXJhY3RpdmUgdXNlIHN1cHBvcnQuCgoJKiBncnViL21haW4uYyAodXNlX2NvbmZpZ19maWxlKTogTmV3IHZhcmlhYmxlLgoJKHVzZV9jdXJzZXMpOiBMaWtld2lzZS4KCShPUFRfRElTQUJMRV9DT05GSUdfRklMRSk6IE5ldyBjb25zdGFudC4KCShPUFRfRElTQUJMRV9DVVJTRVMpOiBMaWtld2lzZS4KCShPUFRfQkFUQ0gpOiBMaWtld2lzZS4KCShsb25nb3B0cyk6IEFkZCBuZXcgb3B0aW9ucywgLS1kaXNhYmxlLWNvbmZpZy1maWxlLCAtLWRpc2FibGUtY3Vyc2VzLAoJYW5kIC0tYmF0Y2guCgkodXNhZ2UpOiBQcmludCB0aGUgaGVscCBtZXNzYWdlcyBhYm91dCB0aGVzZSBuZXcgb3B0aW9ucy4KCShtYWluKTogSGFuZGxlIHRoZW0uCgoJKiBncnViL2FzbXN0dWIuYyAoZ3J1Yl9zdGFnZTIpIFtIQVZFX0xJQkNVUlNFU106IElmICEgVVNFX0NVUlNFUywKCWZhbGxiYWNrIG5vbi1jdXJzZXMgY29kZS4KCShzdG9wKSBbSEFWRV9MSUJDVVJTRVNdOiBMaWtld2lzZS4KCShjbHMpIFtIQVZFX0xJQkNVUlNFU106IExpa2V3aXNlLgoJKGdldHh5KSBbSEFWRV9MSUJDVVJTRVNdOiBMaWtld2lzZS4KCShnb3RveHkpIFtIQVZFX0xJQkNVUlNFU106IExpa2V3aXNlLgoJKGdydWJfcHV0Y2hhcikgW0hBVkVfTElCQ1VSU0VTXTogTGlrZXdpc2UuCgkoZ2V0a2V5KSBbSEFWRV9MSUJDVVJTRVNdOiBMaWtld2lzZS4KCShjaGVja2tleSkgW0hBVkVfTElCQ1VSU0VTXTogTGlrZXdpc2UuCgkoc2V0X2F0dHJpYikgW0hBVkVfTElCQ1VSU0VTXTogTGlrZXdpc2UuCgoJKiBzaGFyZWRfc3JjL2NtZGxpbmUuYyAoZW50ZXJfY21kbGluZSk6IERvIG5vdCB1c2UgZ2V0YywgYnV0IHVzZQoJZ2V0a2V5LgoKCSogc2hhcmVkX3NyYy9zdGFnZTIuYyAoY21haW4pIFtHUlVCX1VUSUxdOiBDaGVjayBpZiBVU0VfQ09ORklHX0ZJTEUKCWlzIG5vbi16ZXJvIG9yIG5vdC4KCgkqIHNoYXJlZF9zcmMvc2hhcmVkLmggKGdldGMpOiBSZW1vdmVkLgoJKHVzZV9jb25maWdfZmlsZSkgW0dSVUJfVVRJTF06IEFkZCB0aGUgZGVjbGFyYXRpb24uCgkodXNlX2N1cnNlcykgW0dSVUJfVVRJTF06IExpa2V3aXNlLgoKMTk5OS0wNS0wMiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIHNoYXJlZF9zcmMvYXNtLlMgKGJpb3NkaXNrX3N0YW5kYXJkKTogUG9wICVlYnAgY29ycmVjdGx5LCByZXBvcnRlZAoJYnkgUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4uCgoxOTk5LTA0LTI1ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogZG9jcy9tZW51LmxzdDogUmV3cml0dGVuLCBzbyB0aGF0IGl0IGNvbnRhaW5zIHVwLXRvLWRhdGUKCWluZm9ybWF0aW9uIGFuZCBGQVFpc2ggY29uZmlndXJhdGlvbiBleGFtcGxlcy4KCjE5OTktMDQtMDkgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzaGFyZWRfc3JjL2FzbS5TIChnZXRfZGlza2luZm9fZmxvcHB5KTogQ29ycmVjdCB0aGUgbnVtYmVyIG9mIGhlYWRzCglhbmQgdGhlIG9uZSBvZiBjeWxpbmRlcnMuCgoxOTk5LTA0LTA2ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogZ3J1Yi9hc21zdHViLmMgKGdldF9kaXNraW5mbyk6IENvbXB1dGUgdGhlIHRvdGFsIG51bWJlciBvZiBzZWN0b3JzCglmb3IgRFJJVkUuCgoJKiBzaGFyZWRfc3JjL2FzbS5TIChnZXRfZGlza2luZm9fc3RhbmRhcmQpOiBDbGVhciB0aGUgZGF0YSBzZWdtZW50CglhZnRlciBjYWxsaW5nIGludCAweDEzLiBSZXN0b3JlIHRoZSBiYXNlIHBvaW50ZXIgYWZ0ZXIgcmV0dXJuaW5nCgl0byBwcm90ZWN0ZWQgbW9kZS4KCShnZXRfZGlza2luZm9fZmxvcHB5KTogTGlrZXdpc2UuCgoJKiBzaGFyZWRfc3JjL2Jpb3MuYyAoZ2V0X2Rpc2tpbmZvKTogQWx3YXlzIHNldCB0aGUgc2l6ZSBvZiBEUlAgdG8KCXRoZSBtYXggc2l6ZSBvZiBEUlAsIHJlZ2FyZGxlc3Mgb2YgdGhlIG1ham9yIHZlcnNpb24gb2YgZXh0ZW5zaW9ucy4KCjE5OTktMDQtMDMgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBzaGFyZWRfc3JjL3NoYXJlZC5oIChzdHJ1Y3QgZ2VvbWV0cnkpOiBEZWNsYXJlIHRvdGFsX3NlY3RvcnMgYXMKCXVuc2lnbmVkIGxvbmcgaW5zdGVhZCBvZiB1bnNpZ25lZCBsb25nIGxvbmcsIGJlY2F1c2UgR1JVQiByZXByZXNlbnRzCglhIHNlY3RvciBudW1iZXIgYnkgNGJ5dGVzIGludGVnZXIsIHNvIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZS4KCgkqIHNoYXJlZF9zcmMvYmlvcy5jIChiaW9zZGlzaykgWyFOT19JTlQxM19GQUxMQkFDS106IFJlY29tcHV0ZQoJVE9UQUxfU0VDVE9SUyBhY2NvcmRpbmcgdG8gQ0hTIGluZm9ybWF0aW9uLgoJKGdldF9kaXNraW5mbykgW0RFQlVHXTogUHJpbnQgdGhlIGdlb21ldHJ5IG9mIERSSVZFLgoKCSogc2hhcmVkX3NyYy9kaXNrX2lvLmMgKHJlYWxfb3Blbl9wYXJ0aXRpb24pOiBTZXQgUEFSVF9MRU5HVEggdG8KCUJVRl9HRU9NLlRPVEFMX1NFQ1RPUlMuCgoxOTk5LTA0LTAxICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogZG9jcy90ZXhpbmZvLnRleDogQ29waWVkIGZyb20gYXV0b21ha2UtMS40YS4KCgkqIGNvbmZpZ3VyZS5pbiAoU0hBUkVEX1NSQ19SVUxFUyk6IEFkZCBiaW9zIGludG8gc2hhcmVkIHNvdXJjZXMuCgoJKiBlMmZzX3N0YWdlMV81L01ha2VmaWxlLmFtIChlMmZzX3N0YWdlMV81X2V4ZWNfTERBREQpOiBBZGRlZCBiaW9zLm8uCgkqIGZhdF9zdGFnZTFfNS9NYWtlZmlsZS5hbSAoZmF0X3N0YWdlMV81X2V4ZWNfTERBREQpOiBMaWtld2lzZS4KCSogZmZzX3N0YWdlMV81L01ha2VmaWxlLmFtIChmZnNfc3RhZ2UxXzVfZXhlY19MREFERCk6IExpa2V3aXNlLgoJKiBzdGFnZTIvTWFrZWZpbGUuYW0gKHN0YWdlMl9leGVjX0xEQUREKTogTGlrZXdpc2UuCgkqIHN0YWdlMl9kZWJ1Zy9NYWtlZmlsZS5hbSAoc3RhZ2UyX2RlYnVnX2V4ZWNfTERBREQpOiBMaWtld2lzZS4KCgkqIHNoYXJlZF9zcmMvTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBBZGRlZCBiaW9zLmMuCgoJKiBzaGFyZWRfc3JjL2FzbS5TIChiaW9zZGlzayk6IERlbGV0ZWQuIE5vdyBkZWZpbmVkIGluIGJpb3MuYy4KCShnZXRfZGlza2luZm8pOiBMaWtld2lzZS4KCShiaW9zZGlza19pbnQxM19leHRlbnNpb25zKTogTmV3IGZ1bmN0aW9uLgoJKGJpb3NkaXNrX3N0YW5kYXJkKTogTGlrZXdpc2UuCgkoY2hlY2tfaW50MTNfZXh0ZW5zaW9ucyk6IExpa2V3aXNlLgoJKGdldF9kaXNraW5mb19pbnQxM19leHRlbnNpb25zKTogTGlrZXdpc2UuCgkoZ2V0X2Rpc2tpbmZvX3N0YW5kYXJkKTogTGlrZXdpc2UuCgkoZ2V0X2Rpc2tpbmZvX2Zsb3BweSk6IExpa2V3aXNlLgoKCSogc2hhcmVkX3NyYy9iaW9zLmM6IE5ldyBmaWxlLgoKCSogc2hhcmVkX3NyYy9zaGFyZWQuaCAoc3RydWN0IGdlb21ldHJ5KTogQWRkZWQgbmV3IG1lbWJlciwKCXRvdGFsX3NlY3RvcnMuCgoxOTk5LTAzLTI4ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc2hhcmVkX3NyYy9zdGFnZTIuYyAocHJpbnRfZW50cmllcyk6IENvcnJlY3RseSBhc3NpZ24gTUVOVV9FTlRSSUVTCgl0aGUgZW50cmllcyBzdGFydGluZyBmcm9tIEZJUlNULgoKMTk5OS0wMy0yNyAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHRyaWNrLmZpZy5vcmc+CgoJKiBDaGFuZ2UgZXZlcnl0aGluZyB0byB1c2UgbWVtc2V0IGFuZCBtZW1tb3ZlIGluc3RlYWQgb2YgYnplcm8gYW5kCgliY29weS4gIEdOQidzIE5vdCBCU0QuCgoJKiBzaGFyZWRfc3JjL3NoYXJlZC5oIChncnViX21lbXNldCk6IEFkYXB0ZWQgZnJvbSBncnViX2J6ZXJvLgoJKGdydWJfbWVtbW92ZSk6IEFkYXB0ZWQgZnJvbSBncnViX2Jjb3B5LgoKCSogZ3J1Yi9hc21zdHViLmMgKGNoZWNra2V5KTogRml4IHVudGVybWluYXRlZCBjb21tZW50LgoKCSogc2hhcmVkX3NyYy9jaGFyX2lvLmMgKGdydWJfcHJpbnRmKTogUmVuYW1lZCBmcm9tIHByaW50Zi4KCShncnViX3RvbG93ZXIpOiBSZW5hbWVkIGZyb20gdG9sb3dlci4KCShncnViX2lzc3BhY2UpOiBSZW5hbWVkIGZyb20gaXNzcGFjZS4KCShncnViX3N0cm5jYXQpOiBSZW5hbWVkIGZyb20gc3RybmNhdC4KCShncnViX3N0cnN0cik6IFJlbmFtZWQgZnJvbSBzdHJzdHIuCgkoZ3J1Yl9iY29weSk6IFJlbmFtZWQgZnJvbSBiY29weS4KCShncnViX2J6ZXJvKTogUmVuYW1lZCBmcm9tIGJ6ZXJvLgoKCUZyb20gQnJhZGZvcmQgSG92aW5lbjoKCSogc2hhcmVkX3NyYy9jaGFyX2lvLmMgKGdldF9jbWRsaW5lKTogQWRkIG5ldyBhcmd1bWVudCB0byBoaWRlCglwYXNzd29yZCBlbnRyeS4KCShncnViX3N0cmNtcCk6IE5ldyBmdW5jdGlvbi4KCSogc2hhcmVkX3NyYy9zaGFyZWQuaCAoZ2V0X2NtZGxpbmUpOiBGaXggZGVjbGFyYXRpb24uCgkoZ3J1Yl9zdHJjbXApOiBEZWNsYXJlLgoJKiBzaGFyZWRfc3JjL3N0YWdlMi5jIChydW5fbWVudSk6IFVzZSBnZXRfY21kbGluZSB3aXRoIGFuCglFQ0hPX0NIQVIgb2YgYConLiAgVGhpcyBwcm90ZWN0cyBhZ2FpbnN0IGJvdGggYnJ1dGUtZm9yY2UgYW5kCglzaWRlbG9uZy1nbGFuY2UgcGFzc3dvcmQgY3JhY2tpbmcgYXR0ZW1wdHMuCgoJKiBncnViL21haW4uYyAodXNhZ2UpOiBEaXNwbGF5IGRlZmF1bHRzIGZvciBzdGFnZTIgb3B0aW9ucy4KCgkqIGdydWIvYXNtc3R1Yi5jIFtXSVRIT1VUX0xJQkNfU1RVQlNdOiBSZW5hbWVkIGZyb20KCU5PX1JFTUFQUElOR19MSUJDX0ZVTkNUSU9OUy4KCSogZ3J1Yi9tYWluLmM6IExpa2V3aXNlLgoJKiBzaGFyZWRfc3JjL3NoYXJlZC5oOiBMaWtld2lzZS4KCjE5OTktMDMtMjcgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBncnViL2FzbXN0dWIuYyAoc2V0X2F0dHJpYik6IFVzZSBpbmNoIGFuZCBhZGRjaCwgaW5zdGVhZCBvZgoJY2hnYXQsIGJlY2F1c2UgY2hnYXQgZG9lc24ndCB3b3JrIGFzIGV4cGVjdGVkLgoKMTk5OS0wMy0yNiAgT0tVSkkgWW9zaGlub3JpICA8b2t1amlAa3VpY3Iua3lvdG8tdS5hYy5qcD4KCgkqIGdydWIvYXNtc3R1Yi5jIChncnViX3N0YWdlMikgW0hBVkVfTElCQ1VSU0VTXTogQ2FsbCBub2RlbGF5LgoJKGNoZWNra2V5KSBbSEFWRV9MSUJDVVJTRVNdOiBJZiBnZXR0aW5nIGFuIGlucHV0IGNoYXJhY3RlciwgdGhlbgoJdW5nZXRjaCBpdCwgYmVjYXVzZSBjaGVja2tleSBzaG91bGRuJ3QgbW9kaWZ5IHRoZSBpbnB1dCBxdWV1ZS4KCglVc2UgZmlsZSBkZXNjcmlwdG9ycyBpbnN0ZWFkIG9mIGZpbGUgcG9pbnRlcnMgdG8gc3VwcG9ydAoJPjRHQiBkaXNrcyBpbiBMaW51eC4KCgkqIGdydWIvYXNtc3R1Yi5jIChncnViX3N0YWdlMik6IENhbGwgY2xvc2UgaW5zdGVhZCBvZiBmY2xvc2UuCgkoZ2V0X2Rpc2tpbmZvKTogQ2FsbCBvcGVuIGluc3RlYWQgb2YgZm9wZW4uCgkoYmlvc2Rpc2spIFtfX2xpbnV4X19dOiBVc2UgX2xsc2VlayBpbnN0ZWFkIG9mIGxzZWVrLgoJKGJpb3NkaXNrKTogQ2FsbCByZWFkIGluc3RlYWQgb2YgZnJlYWQuCgoJQWRkIG9wdGlvbnMgc28gdGhhdCB0aGUgdXNlciBjYW4gc3BlY2lmeSB0aGUgY29uZmlnIGZpbGUuCgoJKiBncnViL01ha2VmaWxlLmFtIChDUFBGTEFHUyk6IFVzZSAtZndyaXRhYmxlLXN0cmluZ3MsIGJlY2F1c2UKCWdydWIgYXNzdW1lcyB0aGF0IGFsbCBzdHJpbmdzIHJlc2lkZXMgYXQgdGhlIGRhdGEgc2VjdGlvbi4KCgkqIGdydWIvbWFpbi5jOiBEZWZpbmUgTk9fUkVNQVBQSU5HX0xJQkNfRlVOQ1RJT05TIGJlZm9yZSBpbmNsdWRpbmcKCXNoYXJlZC5oLgoJKE9QVF9DT05GSUdfRklMRSk6IE5ldyBtYWNyby4KCShPUFRfSU5TVEFMTF9QQVJUSVRJT04pOiBMaWtld2lzZS4KCShPUFRfQk9PVF9EUklWRSk6IExpa2V3aXNlLgoJKGxvbmdvcHRzKTogQWRkIG5ldyBvcHRpb25zLCBjb25maWctZmlsZSwgaW5zdGFsbC1wYXJ0aXRpb24gYW5kCglib290LWRyaXZlLgoJKHVzYWdlKTogQWRkIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGVtLgoJKG1haW4pOiBBZGQgaGFuZGxpbmcgY29kZSBmb3IgT1BUX0NPTkZJR19GSUxFLCBPUFRfSU5TVEFMTF9QQVJUSVRJT04KCWFuZCBPUFRfQk9PVF9EUklWRS4KCgkqIGdydWIvYXNtc3R1Yi5jOiBEZWZpbmUgTk9fUkVNQVBQSU5HX0xJQkNfRlVOQ1RJT05TIGJlZm9yZSBpbmNsdWRpbmcKCXNoYXJlZC5oLgoJKGNvbmZpZ19maWxlKTogTWFrZSBpdCBjaGFyICogaW5zdGVhZCBvZiBjaGFyIFtdLgoJKGdldHJ0c2Vjcyk6IFJldHVybiBjdXJyZW50IHRpbWUgaW5zdGVhZCBvZiAweGZmLgoKCSogc2hhcmVkX3NyYy9zaGFyZWQuaCBbTk9fUkVNQVBQSU5HX0xJQkNfRlVOQ1RJT05TXTogRG9uJ3QgZGVmaW5lCglsaWJjLUFQSS1jb21wYXRpYmxlIGZ1bmN0aW9uIG5hbWVzLgoJKGNvbmZpZ19maWxlKTogQ2hhbmdlIHRoZSBwcm90b3R5cGUgZnJvbSBjaGFyIFtdIHRvIGNoYXIgKi4KCShncnViX3B1dGNoYXIpOiBSZW5hbWVkIGZyb20gcHV0Y2hhci4KCjE5OTktMDMtMjUgIE9LVUpJIFlvc2hpbm9yaSAgPG9rdWppQGt1aWNyLmt5b3RvLXUuYWMuanA+CgoJKiBjaGFyX2lvLmMgKGdldF9jbWRsaW5lKTogQ2FsbCBjbF9zZXRjcG9zIGV2ZW4gaWYgbHBvcyA9PSBsbGVuLAoJYmVjYXVzZSBuY3Vyc2VzIHdvbid0IHVwZGF0ZSB0aGUgY3Vyc29yIHBvc2l0aW9uLgoKCSogZ3J1Yi9tYWluLmMgKE9QVF9IT0xEKTogTmV3IG1hY3JvLgoJKGxvbmdvcHRzKTogTmV3IG9wdGlvbiAtLWhvbGQuCgkodXNhZ2UpOiBBZGQgdGhlIGRvY3VtZW50YXRpb24gYWJvdXQgLS1ob2xkLgoJKG1haW4pOiBTZXQgaG9sZCBpZiAtLWhvbGQgaXMgc3BlY2lmaWVkLiBXYWl0IHVudGlsIGNsZWFyZWQuCgoxOTk5LTAzLTIyICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAdHJpY2suZmlnLm9yZz4KCgkqIHNoYXJlZF9zcmMvY21kbGluZS5jIChlbnRlcl9jbWRsaW5lKTogQ2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZgoJc2V0X2RldmljZSBpbiB0aGUgYHJvb3QnIGNvbW1hbmQuCgoJKiBzaGFyZWRfc3JjL2NoYXJfaW8uYyAobWVtY2hlY2spOiBTcGVjaWFsLWNhc2UgY3VyX3BhcnRfZGVzYyBhbmQKCXJlZW5hYmxlIG1lbW9yeSBjaGVja2luZy4KCjE5OTktMDMtMjEgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEB0cmljay5maWcub3JnPgoKCSogc2hhcmVkX3NyYy9ib290LmMgKGxvYWRfaW1hZ2UpOiBNYWtlIHN1cmUgd2UgdXNlIHRoZSBtYXBwZWQKCWFkZHJlc3MgYmVmb3JlIGFjdHVhbGx5IHdyaXRpbmcgZGF0YSB0byBtZW1hZGRyLgoKCSogc2hhcmVkX3NyYy9jaGFyX2lvLmMgKGdldF9jbWRsaW5lKTogT25seSB6ZXJvLXRlcm1pbmF0ZSBpZiB0aGVyZQoJd2VyZSBsZWFkaW5nIGJsYW5rcy4gIFRoaXMgcHJldmVudHMgYWNjaWRlbnRhbCB0cnVuY2F0aW9uIG9mCgljb21tYW5kcy4KCgkqIGdydWIvYXNtc3R1Yi5jIChnZXRfZGlza2luZm8pOiBDYWNoZSBkZXZpY2UgZ2VvbWV0cmllcyBhcyB3ZWxsCglhcyBmaWxlIGhhbmRsZXMuCglVc2UgdGhlIExpbnV4IEhESU9fR0VUR0VPIGlvY3RsIHRvIG1ha2UgYSBiZXR0ZXIgZ3Vlc3MgYXQgaGFyZAoJZGlzayBnZW9tZXRyaWVzLgoKMTk5OS0wMy0xNiAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHRyaWNrLmZpZy5vcmc+CgoJKiBzaGFyZWRfc3JjL3NoYXJlZC5oIChnZW9tZXRyeV90KTogRGVsZXRlIHR5cGVkZWYsIHVudGlsIHdlCglhY3R1YWxseSB1c2UgaXQuCgoxOTk5LTAzLTE2ICBPS1VKSSBZb3NoaW5vcmkgIDxva3VqaUBrdWljci5reW90by11LmFjLmpwPgoKCSogc2hhcmVkX3NyYy9hc20uUyAoYmlvc2Rpc2spOiBVc2UgYSBzdHJ1Y3R1cmUgZm9yIGdlb21ldHJ5CglpbnN0ZWFkIG9mIGEgaW50ZWdlci4KCShnZXRfZGlza2luZm8pOiBUYWtlIGEgcG9pbnRlciB0byBhIGdlb21ldHJ5IHN0cnVjdHVyZSBhcyB0aGUKCXNlY29uZCBhcmd1bWVudCwgYW5kIGZpbGwgYSBnZW9tZXRyeSBpbiBpdC4gUmV0dXJuIDEgaWYgYW4gZXJyb3IKCW9jY3Vycywgb3RoZXJ3aXNlIHJldHVybiAwLgoJKiBzaGFyZWRfc3JjL2Jvb3QuYyAoYnNkX2Jvb3QpOiBDb21wdXRlIEJJT1MgZ2VvbWV0cmllcyBmb3IgQlNELgoJKiBzaGFyZWRfc3JjL2NtZGxpbmUuYyAoZW50ZXJfY21kbGluZSk6IERlY2xhcmUgZGVzdF9nZW9tIGFzCglzdHJ1Y3QgZ2VvbWV0cnkuCgkqIHNoYXJlZF9zcmMvZGlza19pby5jIChidWZfZ2VvbSk6IERlY2xhcmUgYXMgc3RydWN0IGdlb21ldHJ5LgoJKiBzaGFyZWRfc3JjL2ZpbGVzeXMuaCAoU0VDVE9SUyk6IERlbGV0ZWQuCgkoSEVBRFMpOiBMaWtld2lzZS4KCShDWUxJTkRFUlMpOiBMaWtld2lzZS4KCSogc2hhcmVkX3NyYy9zaGFyZWQuaCAoQklPU0RJU0tfRkxBR19MQkFfRVhURU5TSU9OKTogTmV3IG1hY3JvLgoJKHN0cnVjdCBnZW9tZXRyeSk6IE5ldyBzdHJ1Y3R1cmUuCgkoYnVmX2dlb20pOiBDb3JyZWN0IHRoZSBwcm90b3R5cGUuCgkoZ2V0X2Rpc2tpbmZvKTogTGlrZXdpc2UuCgkoYmlvc2Rpc2spOiBMaWtld2lzZS4KCjE5OTktMDMtMTUgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEB0cmljay5maWcub3JnPgoKCSogZ3J1Yi9hc21zdHViLmMgKGRvaXQpOiBOZXN0ZWQgZnVuY3Rpb24gdG8gZ2V0IGEgY2xlYW4gc3RhY2sKCWZyYW1lIHdoaWxlIGluIGdydWJfc3RhZ2UyLgoJVXNlIGRpZmZlcmVudCBhc3NlbWJsZXIgbWFnaWMuICBGcm9tIE9LVUpJIFlvc2hpbm9yaS4KCjE5OTktMDMtMTQgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEB0cmljay5maWcub3JnPgoKCSogc2hhcmVkX3NyYy9zdGFnZTIuYyAocnVuX21lbnUpOiBVc2UgQV9SRVZFUlNFIGFuZCBBX05PUk1BTAoJY29uc3RhbnRzIGluc3RlYWQgb2YgbWFnaWMgbnVtYmVycy4KCgkqIHNoYXJlZF9zcmMvc2hhcmVkLmggKEFfUkVWRVJTRSk6IFJlbmFtZWQgZnJvbSBBVFRSX0lOVkVSU0UgZm9yCgljb21wYXRpYmlsaXR5IHdpdGggY3Vyc2VzLgoJKEFfTk9STUFMKTogUmVuYW1lZCBmcm9tIEFUVFJfTk9STUFMLgoKCSogc2hhcmVkX3NyYy9jbWRsaW5lLmMgKGVudGVyX2NtZGxpbmUpOiBDaGFuZ2UgcHJvbXB0IHRvICJncnViPiAiLgoJKGVudGVyX2NtZGxpbmUpOiBPbmx5IGFib3J0IHRoZSBib290IGlmIHdlIGFyZSBpbiBhIHNjcmlwdC4KCgkqIHNoYXJlZF9zcmMvc3RhZ2UyLmMgKHJ1bl9tZW51KTogQ2hhbmdlIHByb21wdHMgdG8gImdydWIgZWRpdD4gIi4KCgkqIHNoYXJlZF9zcmMvY2hhcl9pby5jIChtZW1jaGVjayk6IFVzZSBSQVdfQUREUiB0byBjb21wdXRlIG1lbW9yeQoJbG9jYXRpb25zLgoJKGdldF9jbWRsaW5lKTogQ2hhbmdlIHRoZSBgZ290byBuZXh0IGxpbmUnIGNvZGUgdG8gYWNjb3VudCBmb3IKCW5ld2xpbmVzIGRlbGV0aW5nIHRvIGVuZCBvZiBsaW5lIHVuZGVyIGN1cnNlcy4KCgkqIElubnVtZXJhYmxlIGNsZWFudXBzIHRvIGZpeCB3YXJuaW5ncy4gIFRoZXJlIGFyZSBzdGlsbCB0b28gbWFueQoJdHlwZWNhc3RzIGluIHRoZSB3cm9uZyBwbGFjZXMgKGludCB2YXJpYWJsZXMgdXNlZCB0byBob2xkCglwb2ludGVycywgdGhlbiBjYXN0ZWQgdG8gYSBwb2ludGVyIHR5cGUpLCBidXQgdGhpbmdzIGxvb2sgYmV0dGVyLgoKCSogY29uZmlndXJlLmluIChDUFBGTEFHUyk6IEJ1bXAgdXAgR0NDIHdhcm5pbmdzIHRvIC1XYWxsCgktV21pc3NpbmctcHJvdG90eXBlcyAtV3VudXNlZC4KCgkqIHNoYXJlZF9zcmMvc2hhcmVkLmg6IERlbGV0ZSBzdHVwaWQgZGVjbGFyYXRpb25zLCBhbmQgdG90YWxseQoJcmVhcnJhbmdlIGZvciBjbGFyaXR5LgoJKGluYiwgb3V0Yik6IE1vdmUgdG8gY21kbGluZS5jLCBzaW5jZSBpdCdzIG9ubHkgdXNlZCB0aGVyZS4KCShwcmludF9wb3NzaWJpbGl0aWVzLCBmc21heCwgZnN5c190YWJsZSk6IE1vdmUgZGVmaW5pdGlvbnMgdG8KCWRpc2tfaW8uYy4KCgkqIGdydWIvYXNtc3R1Yi5jOiBGaWxsIGluIG1vcmUgc3R1YnMuCgoxOTk5LTAzLTEzICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAdHJpY2suZmlnLm9yZz4KCgkqIHNoYXJlZF9zcmMvZ3VuemlwLmMgKGJvcmRlcik6IFJlbmFtZSB0byBiaXRvcmRlciwgdG8gcmVzb2x2ZQoJY2xhc2ggd2l0aCBjdXJzZXMuCgkqIHNoYXJlZF9zcmMvc3RhZ2UyLmMgKHRpbWVvdXQpOiBSZW5hbWUgdG8gZ3J1Yl90aW1lb3V0LgoKCSogY29uZmlndXJlLmluOiBDaGVjayBmb3IgY3Vyc2VzIGxpYnJhcmllcyBmb3IgdXNlIHdpdGgKCS9zYmluL2dydWIuCgoJKiBzaGFyZWRfc3JjL3NoYXJlZC5oIChLRVlfREVMRVRFKTogUmVuYW1lIHRvIEtFWV9EQywgZm9yCgljb21wYXRpYmlsaXR5IHdpdGggY3Vyc2VzLgoJKEtFWV9JTlNFUlQpOiBSZW5hbWUgdG8gS0VZX0lDLgoJKEtFWV9QR0ROKTogUmVuYW1lIHRvIEtFWV9OUEFHRS4KCShLRVlfUEdVUCk6IFJlbmFtZSB0byBLRVlfUFBBR0UuCgoJKiBzaGFyZWRfc3JjL2FzbS5TIChhc21fZ2V0a2V5KTogUmVuYW1lZCB0byBnZXRrZXkuCgoJKiBzaGFyZWRfc3JjL2NoYXJfaW8uYyAoZ2V0a2V5KTogRGVsZXRlLCBiZWNhdXNlIGl0J3MgdXNlbGVzcy4KCgkqIHNoYXJlZF9zcmMvc2hhcmVkLmg6IFJlc29sdmUgbmFtZSBjbGFzaGVzIHdpdGggbGliYyBieSByZW5hbWluZwoJb3ZlcmxhcHBpbmcgZnVuY3Rpb25zIHRvIGhhdmUgZ3J1Yl8gcHJlZml4ZXMsIHRoZW4gZGVmaW5pbmcKCW1hY3Jvcy4KCgkqIGdydWIvYXNtc3R1Yi5jIChzdGFydF9zdGFnZTIpOiBNYWtlIHNvbWUgYXNzZXJ0aW9ucyBhYm91dCBvdXIKCXNjcmF0Y2ggbWVtb3J5IGFyZWEuCgoJKiBzaGFyZWRfc3JjL3NoYXJlZC5oIChlbmQpOiBEZWxldGUgZGVjbGFyYXRpb24uCgkoUkFXX0FERFIsIFJBV19TRUcpOiBNYWNyb3MgdG8gcmVkaXJlY3QgL3NiaW4vZ3J1YiBtZW1vcnkgcmVxdWVzdHMKCXRocm91Z2ggZ3J1Yl9zY3JhdGNoX21lbS4KCgkqIGdydWIvYXNtc3R1Yi5jIChnZXRfbWVtX21hcCk6IEltcGxlbWVudCwgc2ltdWxhdGluZyA0TUIKCWNvbnRpZ3VvdXMgbWVtb3J5LgoJKGdldF9jb2RlX2VuZCk6IEltcGxlbWVudCwgc2ltdWxhdGluZyB3aXRoIGEgbWFsbG9jZWQgYXJlYS4KCWdydWIvYXNtc3R1Yi5jIChzdGFydF9zdGFnZTIpOiBJbml0aWFsaXplIGdydWJfc2NyYXRjaF9tZW0uCgoJKiBzaGFyZWRfc3JjL2FzbS5TIChnZXRfbWVtX21hcCk6IFNvbWUgQklPU2VzIGV4cGVjdCB0aGUgaGlnaCB3b3JkCglvZiAlZWF4IHRvIGJlIHplcm8uCgkoZ2V0X2NvZGVfZW5kKTogTW92ZSB0aGlzIGZyb20gY29tbW9uLmMgc28gdGhhdCB3ZSBjYW4gc3R1YiBpdCBvdXQKCWluIHRoZSBzaW11bGF0b3IuCgoJKiBkZWJpYW4vcnVsZXM6IE1ha2Ugc3VyZSBpbmZvIGZpbGVzIGVuZCB1cCBpbiAvdXNyL2luZm8sIG5vdAoJL2luZm8uCgoxOTk5LTAzLTEwICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAdHJpY2suZmlnLm9yZz4KCgkqIHNoYXJlZF9zcmMvYXNtLlMgKGJpb3NkaXNrKTogTWFrZSBMQkEgbW9kZSB3b3JrIGNvcnJlY3RseS4gIEZyb20KCU9LVUpJIFlvc2hpbm9yaS4KCVVuY29uZGl0aW9uYWxseSBkZWZpbmUgTk9fSU5UMTNfRkFMTEJBQ0sgdW50aWwgd2UgcmVsZWFzZSBHUlVCCgkwLjYuICBUaGlzIHdpbGwgaGVscCBkZWJ1ZyBhbnkgcHJvYmxlbXMgd2l0aCB0aGUgTEJBIHN1cHBvcnQgdW50aWwKCXRoZW4uCgoxOTk5LTAzLTA5ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAdHJpY2suZmlnLm9yZz4KCgkqIHNoYXJlZF9zcmMvYXNtLlMgKGJpb3NkaXNrKTogQ29tcHV0ZSBsb2NhdGlvbiBvZgoJZGlza19hZGRyZXNzX3BhY2tldCBjb3JyZWN0bHkuICBGcm9tIE9LVUpJIFlvc2hpbm9yaS4KCjE5OTktMDMtMDggIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEB0cmljay5maWcub3JnPgoKCSogZG9jcy9ncnViLnRleGk6IE5ldyBUZXhpbmZvIGRvY3VtZW50YXRpb24uCgoJKiBzaGFyZWRfc3JjL2Rpc2tfaW8uYyAoc2V0X2RldmljZSk6IEZpcnN0IHN0YWIgYXQgaW50ZXJwcmV0aW5nCglNYWNoLXN0eWxlIHBhcnRpdGlvbiBuYW1pbmcuCgoJKiBzaGFyZWRfc3JjL3N0YWdlMi5jIChydW5fbWVudSk6IERvbid0IHNheSBpdCB3YXMgYSBmYWlsdXJlIGlmCgllbnRlcl9jbWRsaW5lIHJldHVybnMgbm9uemVyby4uLiBqdXN0IHdhaXQgZm9yIGEga2V5LgoKCSogc2hhcmVkX3NyYy9jbWRsaW5lLmMgKGVudGVyX2NtZGxpbmUpOiBSZXR1cm4gbm9uemVybywgYW5kIGF2b2lkCgl0aGUgZmFsbGJhY2sgY29tbWFuZCBpZiB3ZSBkaWQgYW4gaW5zdGFsbC4KCgkqIHNoYXJlZF9zcmMvYXNtLlMgKF9zdGFydCk6IE5ldyBleHBsaWNpdCBzeW1ib2wgdG8gc3VwcmVzcwoJd2FybmluZ3MuCgoJKiBlMmZzX3N0YWdlMV81L01ha2VmaWxlLmFtIChOT19GQU5DWV9TVFVGRik6IFJlbmFtZWQgdG8gU1RBR0UxXzUsCglzaW5jZSB0aGF0IGRlc2NyaWJlcyB0aGlzIGNvbmRpdGlvbmFsIG1vcmUgYWNjdXJhdGVseS4KCSogZmF0X3N0YWdlMV81L01ha2VmaWxlLmFtOiBMaWtld2lzZS4KCSogZmZzX3N0YWdlMV81L01ha2VmaWxlLmFtOiBMaWtld2lzZS4KCSogc2hhcmVkX3NyYy9hc20uUzogTGlrZXdpc2UuCgkqIHNoYXJlZF9zcmMvY2hhcl9pby5jOiBMaWtld2lzZS4KCSogc2hhcmVkX3NyYy9jb21tb24uYzogTGlrZXdpc2UuCgkqIHNoYXJlZF9zcmMvZGlza19pby5jOiBMaWtld2lzZS4KCSogc2hhcmVkX3NyYy9mc3lzX2V4dDJmcy5jOiBMaWtld2lzZS4KCSogc2hhcmVkX3NyYy9mc3lzX2Zmcy5jOiBMaWtld2lzZS4KCSogc2hhcmVkX3NyYy9zaGFyZWQuaDogTGlrZXdpc2UuCgoxOTk5LTAzLTA3ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAdHJpY2suZmlnLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoU0hBUkVEX1NSQ19SVUxFUyk6IEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUKCU1ha2VmaWxlIGRlcGVuZGVuY2llcyBmb3IgZmlsZXMgaW4gc2hhcmVkX3NyYy4KCWUyZnNfc3RhZ2UxXzUvTWFrZWZpbGUuYW06IFVzZSB0aGVtLgoJZmF0X3N0YWdlMV81L01ha2VmaWxlLmFtOiBMaWtld2lzZS4KCWZmc19zdGFnZTFfNS9NYWtlZmlsZS5hbTogTGlrZXdpc2UuCglncnViL01ha2VmaWxlLmFtOiBMaWtld2lzZS4KCXN0YWdlMi9NYWtlZmlsZS5hbTogTGlrZXdpc2UuCglzdGFnZTJfZGVidWcvTWFrZWZpbGUuYW06IExpa2V3aXNlLgoKCSogc2hhcmVkX3NyYy9kaXNrX2lub2RlLmg6IEZpeCB0eXBvOiBpX2ljIHNob3VsZG4ndCBiZSBkZWZpbmVkLgoKCSogc2hhcmVkX3NyYy9mc3lzX2Zmcy5jIChibG9ja19tYXApOiBNYWtlIHN0YXRpYywgc2luY2UgdGhpcwoJZnVuY3Rpb24gaXNuJ3QgdXNlZCBvdXRzaWRlIG9mIGl0cyBkZWZpbmluZyBmaWxlLgoKCSogc2hhcmVkX3NyYy9kaXNrX2lvLmMgW05PX0ZBTkNZX1NUVUZGXTogRWxpbWluYXRlIGEgd2hvbGUgYnVuY2gKCW1vcmUgZnVuY3Rpb25zIGZyb20gdGhlIHN0YWdlMS41LiAgRnJvbSBPS1VKSSBZb3NoaW5vcmkuCgkqIHNoYXJlZF9zcmMvZnN5c19mZnMuYzogTGlrZXdpc2UuCgkqIHNoYXJlZF9zcmMvY2hhcl9pby5jOiBMaWtld2lzZS4KCjE5OTktMDMtMDUgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEB0cmljay5maWcub3JnPgoKCSogc2hhcmVkX3NyYy9jaGFyX2lvLmMgKGdldGtleSk6IERvbid0IHNldCBCVUZfRFJJVkUgdG8gLTEuCglCVUZfRFJJVkUgaGFzIG5vdGhpbmcgYXQgYWxsIHRvIGRvIHdpdGggZ2V0a2V5LgoKCSogc2hhcmVkX3NyYy9jb21tb24uYyAoZXJyX2xpc3QpOiBDaGFuZ2UgZGVzY3JpcHRpb24gb2YgRVJSX0dFT00KCXRvIGJlIG1vcmUgaW5mb3JtYXRpdmUuCgoJKiBNYWtlZmlsZS5hbSAoY29uZmlndXJlKTogRGVwZW5kIG9uIGRlYmlhbi9jaGFuZ2Vsb2cuCgoJKiBjb25maWd1cmUuaW4gKGhvc3RfY3B1KTogTWFrZSBhbGwgZnVsbHkgaTM4Ni1jb21wYXRpYmxlIENQVXMgYmUKCWlkZW50aWZpZWQgYXMgaTM4Ni4KCShBTV9JTklUX0FVVE9NQUtFKTogRmV0Y2ggdmFsdWVzIGZvciBQQUNLQUdFIGFuZCBWRVJTSU9OIGZyb20KCWRlYmlhbi9jaGFuZ2Vsb2csIHNvIHRoYXQgd2Ugb25seSBoYXZlIG9uZSBmaWxlIHRvIHVwZGF0ZS4KCgkqIHNoYXJlZF9zcmMvYXNtLlMgKGdldF9kaXNraW5mbyk6IEZpeCBhIGZldyBiaXQtdHdpZGRsaW5nIGJ1Z3MgaW4KCXRoZSBCSU9TIGV4dGVuc2lvbiBkZXRlY3Rpb24gY29kZS4KCShiaW9zZGlzaykgW0FXQVJEX0lOVDEzX0VYVEVOU0lPTlNdOiBQcmVsaW1pbmFyeSBpbXBsZW1lbnRhdGlvbgoJb2YgQXdhcmQncyBlbmNvZGluZyBvZiBjeWxpbmRlciBiaXRzIDEwIGFuZCAxMS4KCShiaW9zZGlzaykgW05PX0lOVDEzX0ZBTExCQUNLXTogSWYgZGVmaW5lZCwgZG9uJ3QgdXNlIHRoZSBzdGFuZGFyZAoJZGlzayBpbnRlcmZhY2UgaWYgdGhlIGV4dGVuZGVkIGludGVyZmFjZSBmYWlscy4KCgkqIGNvbmZpZ3VyZS5pbjogTWFrZSBzdXJlICQoaG9zdF9jcHUpIGFuZCAkKGhvc3RfdmVuZG9yKSBhcmUKCXN1YnN0aXR1dGVkIGludG8gdGhlIE1ha2VmaWxlLgoKCSogZTJmc19zdGFnZTFfNS9NYWtlZmlsZS5hbSAocGtnZGF0YWRpcik6IEluc3RhbGwgZmlsZXMgaW4KCSQoZGF0YWRpcikvZ3J1Yi8kKGhvc3RfY3B1KS0kKGhvc3RfdmVuZG9yKS4KCSogZmF0X3N0YWdlMV81L01ha2VmaWxlLmFtOiBMaWtld2lzZS4KCSogZmZzX3N0YWdlMV81L01ha2VmaWxlLmFtOiBMaWtld2lzZS4KCSogc3RhZ2UxL01ha2VmaWxlLmFtOiBMaWtld2lzZS4KCSogc3RhZ2UyL01ha2VmaWxlLmFtOiBMaWtld2lzZS4KCSogc3RhZ2UyX2RlYnVnL01ha2VmaWxlLmFtOiBMaWtld2lzZS4KCjE5OTktMDMtMDMgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEB0cmljay5maWcub3JnPgoKCSogc2hhcmVkX3NyYy9hc20uUyAoYmlvc2Rpc2spOiBVc2UgTEJBIG1vZGUgaWYgaGlnaCBuaWJibGUgb2YKCUdFT01FVFJZIGlzIG5vbnplcm8uCgkoZ2V0X2Rpc2tpbmZvKTogU2V0IGhpZ2ggbmliYmxlIG9mIEdFT01FVFJZICgweGYwMDAwMDAwKSB0byAxIGlmCglMQkEgbW9kZSBpcyBkZXRlY3RlZC4KCjE5OTktMDMtMDIgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEB0cmljay5maWcub3JnPgoKCSogc2hhcmVkX3NyYy9kaXNrX2lvLmMgKG1ha2Vfc2F2ZWRfYWN0aXZlKTogVXNlIEJJT1NESVNLX1JFQUQgYW5kCglCSU9TRElTS19XUklURS4KCgkqIHNoYXJlZF9zcmMvY21kbGluZS5jIChlbnRlcl9jbWRsaW5lKTogVXNlIEJJT1NESVNLX1dSSVRFLgoKCSogc2hhcmVkX3NyYy9zaGFyZWQuaCAoQklPU0RJU0tfU1VCRlVOQ19SRUFELAoJQklPU0RJU0tfU1VCRlVOQ19XUklURSk6IERlbGV0ZSBjb25zdGFudHMuCgoJKiBzaGFyZWRfc3JjL2FzbS5TIChiaW9zZGlzayk6IENoYW5nZSBzdWJmdW5jIGFyZ3VtZW50IHRvIGJlCglyZWFkPTAsIHdyaXRlPTEuCgoJKiBjb25maWd1cmUuaW46IERyb3AgcmVkdW5kYW50IEFDX1BST0dfSU5TVEFMTC4gIEZyb20gT0tVSkkKCVlvc2hpbm9yaS4KCjE5OTktMDMtMDEgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEB0cmljay5maWcub3JnPgoKCSogZGViaWFuL3J1bGVzIChiaW5hcnktYXJjaCk6IFByb3Blcmx5IGluc3RhbGwgUkVBRE1FLmRlYmlhbi4KCgkqIGFjaW5jbHVkZS5tNCAoZ3J1Yl9PQkpDT1BZX0FCU09MVVRFKTogRG9uJ3QgZm9yZ2V0IHRvIG1vdmUgdGhlCglvbGQgYmluYXJ5IG91dCBvZiB0aGUgd2F5IGJlZm9yZSByZWVudGVyaW5nIHRoZSBsb29wLgoJKGdydWJfQVNNX0FERFIzMik6IERlbGV0ZSBjb25mdGVzdCBmaWxlcyBhZnRlciBydW5uaW5nIHRoZSB0ZXN0LgoKCSogZGViaWFuL3J1bGVzIChiaW5hcnktYXJjaCk6IFJlbW92ZSBlbXB0eSAvc2JpbiBkaXJlY3RvcnkgdW50aWwKCS9zYmluL2dydWIgaXMgaW5zdGFsbGVkLiAgVXNlICQoREVTVERJUikgaW5zdGVhZCBvZiAkKHByZWZpeCkgdG8KCWluc3RhbGwgZmlsZXMuCgoJKiBzaGFyZWRfc3JjL2FzbS5TICh2ZXJzaW9uX3N0cmluZyk6IFNldCB0aGUgdmVyc2lvbiBzdHJpbmcgZnJvbQoJdGhlIFZFUlNJT04gc3BlY2lmaWVkIGluIGNvbmZpZ3VyZS5pbi4KCgkqIENoYW5nZSBhbGwgTWFrZWZpbGVzIGludG8gTWFrZWZpbGUuYW1zLiAgTWFueSBtYWpvciBidWlsZAoJZW52aXJvbm1lbnQgY2hhbmdlcyB0byBnZXQgQXV0b21ha2UvQXV0b2NvbmYgd29ya2luZyBuaWNlbHkuCgoxOTk5LTAyLTI4ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAdHJpY2suZmlnLm9yZz4KCgkqIE5FV1M6IE1vdmVkIGZyb20gZG9jcy9ORVdTLgoKCSogY29uZmlndXJlLmluLCBhY2luY2x1ZGUubTQ6IE5ldyBmaWxlcyBmb3IgQXV0b2NvbmYuICBGcm9tIE9LVUpJCglZb3NoaW5vcmkuCgoJKiBBVVRIT1JTLCBJTlNUQUxMOiBOZXcgZmlsZXMuCgoxOTk5LTAyLTI0ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAdHJpY2suZmlnLm9yZz4KCgkqIHN0YWdlMS9zdGFnZTEuUyAoYWZ0ZXJfQlBCKTogRG8gYSBoYXJkIGRpc2sgcHJvYmUgZmlyc3QsIHNvIHRoYXQKCXdlIGNhbiB3b3JrIHdpdGggSURFIGZsb3BwaWVzIChsaWtlIHRoZSBMUy0xMjApLgoKCSogUnVuIEdOVSBJbmRlbnQgb24gKi8qLltjaF0uCgoxOTk5LTAyLTIxICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAdHJpY2suZmlnLm9yZz4KCgkqIGRlYmlhbjogQWRkIHRvIHRoZSBkaXN0cmlidXRpb24sIHNpbmNlIHdlIG1haW50YWluIHRoZSBHUlVCCglEZWJpYW4gcGFja2FnZSBvdXJzZWx2ZXMuCgoJKiBncnViL2FzbXN0dWIuYzogTmV3IGZpbGUgdG8gaW1wbGVtZW50IHN0dWJiZWQgYXNzZW1ibHkgZnVuY3Rpb25zCgl1bmRlciBVbml4LgoKCSogc3RhZ2UxL01ha2VmaWxlOiBEZWxldGUgc3B1cmlvdXMgZGVwZW5kZW5jaWVzIG9uIE1ha2VmaWxlLgoJKiBzdGFnZTIvTWFrZWZpbGU6IExpa2V3aXNlLgoJKiBzdGFnZTJfZGVidWcvTWFrZWZpbGU6IExpa2V3aXNlLgoJKiBncnViL01ha2VmaWxlOiBMaWtld2lzZS4KCgkqIHNoYXJlZF9zcmMvZnN5c19leHQyZnMuYyAoZXh0MmZzX2Rpcik6IEZvbGxvdyBzeW1ib2xpYyBsaW5rcwoJcmF0aGVyIHRoYW4gZ2l2aW5nIGFuIGVycm9yLgoKCSogc2hhcmVkX3NyYy9jb21tb24uYyAoZXJyX2xpc3QpOiBVc2UgbGFiZWxlZCBlbGVtZW50cyB0bwoJYXNzb2NpYXRlIG1lc3NhZ2VzIHdpdGggZXJyb3IgY29kZXMuCgkqIHNoYXJlZF9zcmMvc2hhcmVkLmg6IE1ha2UgZXJyb3IgY29kZXMgaW50byBhbiBlbnVtZXJhdGVkIHR5cGUuCgoJKiBzaGFyZWRfc3JjL2NvbW1vbi5jIChlcnJfbGlzdCk6IEFkZCBFUlJfU1lNTElOS19MT09QLgoJKiBzaGFyZWRfc3JjL3NoYXJlZC5oOiBMaWtld2lzZS4KCgkqIHNoYXJlZF9zcmMvY2hhcl9pby5jIChiY29weSk6IERvbid0IG1ha2UgYW55IGFzc3VtcHRpb25zIGFib3V0Cgl0aGUgbGVuZ3RoIG9mIGFuIHVuc2lnbmVkIGxvbmcuCgoJKiBncnViL01ha2VmaWxlOiBUcmVhdCBDRkxBR1MsIENQUEZMQUdTLCBMREZMQUdTIGFjY29yZGluZyB0bwoJR05VIHN0YW5kYXJkcy4KCSogc3RhZ2UyL01ha2VmaWxlOiBMaWtld2lzZS4KCSogZTJmc19zdGFnZTFfNS9NYWtlZmlsZTogTGlrZXdpc2UuCgkqIGZhdF9zdGFnZTFfNS9NYWtlZmlsZTogTGlrZXdpc2UuCgkqIGZmc19zdGFnZTFfNS9NYWtlZmlsZTogTGlrZXdpc2UuCgoxOTk5LTAyLTIwICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAdHJpY2suZmlnLm9yZz4KCgkqIGRvY3MvaW5kZXguaHRtbDogUmVuYW1lIHRvIGdydWIuaHRtbCwgc28gdGhhdCB3ZSBkb24ndCBoaWRlCglmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeSBmcm9tIGEgd2ViIGJyb3dzZXIuCgoxOTk5LTAyLTE1ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAdHJpY2suZmlnLm9yZz4KCgkqIE1ha2VmaWxlLmVuZCAoUFJPR1MpOiBBZGQgZ3J1Yi4KCgkqIGdydWIvbWFpbi5jOiBOZXcgZmlsZS4KCgkqIGdydWIvTWFrZWZpbGU6IE5ldyBkaXJlY3RvcnkgdG8gY29udGFpbiB0aGUgc3RhZ2UyIFVuaXggcHJvZ3JhbS4KCgkqIHNoYXJlZF9zcmMvY21kbGluZS5jOiBVc2Ugc3Vic3RyaW5nLgoJKiBzaGFyZWRfc3JjL2ZzeXNfZXh0MmZzLmM6IExpa2V3aXNlLgoJKiBzaGFyZWRfc3JjL2ZzeXNfZmF0LmM6IExpa2V3aXNlLgoJKiBzaGFyZWRfc3JjL2ZzeXNfZmZzLmM6IExpa2V3aXNlLgoJKiBzaGFyZWRfc3JjL3N0YWdlMi5jOiBMaWtld2lzZS4KCgkqIHNoYXJlZF9zcmMvc2hhcmVkLmg6IERlbGV0ZSBzdHJjbXAsIGRlY2xhcmUgc3Vic3RyaW5nLgoKCSogc2hhcmVkX3NyYy9jaGFyX2lvLmMgKHN0cmNtcCk6IFJlbmFtZSB0byBgc3Vic3RyaW5nJywgYmVjYXVzZQoJdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGJlaGF2ZSB0aGUgc2FtZSBhcyBsaWJjJ3Mgc3RyY21wLgoKMTk5OS0wMi0xNCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHRyaWNrLmZpZy5vcmc+CgoJKiBzaGFyZWRfc3JjL3NoYXJlZC5oOiAoYWRkcjMyLCBkYXRhMzIpOiBEZWxldGUgZGVmaW5pdGlvbnMuCgoJKiBzdGFnZTEvc3RhZ2UxLlM6IE1vZGlmeSB0byB1c2UgR0FTJ3MgbmV3IC5jb2RlMTYgc2VtYW50aWNzLgoJc2hhcmVkX3NyYy9hc20uUzogTGlrZXdpc2UuCgoJKiBjb25maWd1cmU6IFRlc3QgdG8gc2VlIGlmIHRoZSBgYWRkcjMyJyBpbnN0cnVjdGlvbiBpcyBzdXBwb3J0ZWQuCglJYW4gTGFuY2UgVGF5bG9yIHNheXMgdGhhdCBHQVMncyBpbnRlcnByZXRhdGlvbiBvZiBgLmNvZGUxNicgaGFzCgljaGFuZ2VkLiAgT2xkZXIgdmVyc2lvbnMgYWx3YXlzIGdlbmVyYXRlZCAzMi1iaXQgY29kZSwgYnV0CglpbXBsaWNpdGx5IGluc2VydGVkIGFkZHIzMiBhbmQgZGF0YTMyIHdoZW4gLmNvZGUxNiB3YXMgZ2l2ZW4uCglOZXdlciB2ZXJzaW9ucyBnZW5lcmF0ZSAxNi1iaXQgY29kZSwgYW5kIHJlcXVpcmUgbWFudWFsIGFkZHIzMiBhbmQKCWRhdGEzMiBvdmVycmlkZXMuCgoJKiBzaGFyZWRfc3JjL3NoYXJlZC5oOiBBZGQgc29tZSBhc3NlcnRpb25zIHRvIGNoZWNrIHRoYXQgYnVmZmVyCglhZGRyZXNzZXMgYXJlIHByb3Blcmx5IGRlZmluZWQuCgoxOTk5LTAyLTEyICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAdHJpY2suZmlnLm9yZz4KCgkqIHNoYXJlZF9zcmMvc3RhZ2UyLmMgKHJ1bl9tZW51KTogUGF1c2UgaWYgd2UgZmFpbGVkIHRvIGJvb3QgYm90aAoJdGhlIGRlZmF1bHQgYW5kIGZhbGxiYWNrIGVudHJpZXMuCgoJKiBjb25maWd1cmU6IENoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IEdBUyBhY3R1YWxseSBob25vcnMgLmNvZGUxNgoJZGlyZWN0aXZlcy4KCjE5OTktMDItMDIgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEB0cmljay5maWcub3JnPgoKCSogc2hhcmVkX3NyYy9hc20uUzogRml4IHR5cG8gdGhhdCBjYWxsZWQgaW50ZXJydXB0IDB4ZCAoZGVjaW1hbAoJMTMpIGluc3RlYWQgb2YgMHgxMy4KCjE5OTktMDEtMzEgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEB0cmljay5maWcub3JnPgoKCSogZTJmc19zdGFnZTFfNS9NYWtlZmlsZTogQXZvaWQgZ3JhdHVpdG91cyBkZXBlbmRlbmNpZXMgb24KCU1ha2VmaWxlLgoJKiBmYXRfc3RhZ2UxXzUvTWFrZWZpbGU6IExpa2V3aXNlLgoJKiBmZnNfc3RhZ2UxXzUvTWFrZWZpbGU6IExpa2V3aXNlLgoKCSogTWFrZWZpbGUuZW5kIChQUk9HUyk6IEFkZCBlMmZzX3N0YWdlMV81LCBmYXRfc3RhZ2UxXzUsIGFuZAoJZ3J1Ymluc3QuCgkoZGlzdGNsZWFuKTogTmV3IEdOVSBzdGFuZGFyZCBydWxlLgoKMTk5OC0xMC0yMyAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHRyaWNrLmZpZy5vcmc+CgoJKiBjb25maWd1cmU6IEFjY2VwdCBgLS1ob3N0JyBhcyBhIHN5bm9ueW0gZm9yIGAtLXRhcmdldCcsIGFuZAoJYWNjZXB0IGEgbm9uLW9wdGlvbmFsIGFyZ3VtZW50IGFzIHRoZSB0YXJnZXQgbmFtZS4gIEpvaW4gdGhlCglwcmVmaXggdG8gdGhlIHRvb2wgbmFtZSB3aXRoIGEgaHlwaGVuLgoKCSogc2hhcmVkX3NyYy9kaXNrX2lvLmMgKHByaW50X2ZzeXNfdHlwZSk6IEFsd2F5cyBwcmludCB0aGUKCXBhcnRpdGlvbiB0eXBlLgoKCSogc2hhcmVkX3NyYy9zdGFnZTIuYyAocnVuX21lbnUpOiBDaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUKCWZhbGxiYWNrIGVudHJ5IGlzIG5vbm5lZ2F0aXZlLgoJKHJ1bl9tZW51KTogRm9yIGNvbnNpc3RlbmN5LCB1c2UgYGUnIHJhdGhlciB0aGFuIGVudGVyIHRvIGVkaXQgdGhlCgljb21tYW5kIGVudHJ5Lgo=