U3VtbWFyeTogTGlicmFyeSBwcm92aWRpbmcgWE1MIGFuZCBIVE1MIHN1cHBvcnQKTmFtZTogbGlieG1sMgpWZXJzaW9uOiBAVkVSU0lPTkAKUmVsZWFzZTogMQpMaWNlbnNlOiBNSVQKR3JvdXA6IERldmVsb3BtZW50L0xpYnJhcmllcwpTb3VyY2U6IGZ0cDovL3htbHNvZnQub3JnL2xpYnhtbDItJXt2ZXJzaW9ufS50YXIuZ3oKQnVpbGRSb290OiAle190bXBwYXRofS8le25hbWV9LSV7dmVyc2lvbn0tcm9vdApCdWlsZFJlcXVpcmVzOiBweXRob24gcHl0aG9uLWRldmVsClVSTDogaHR0cDovL3htbHNvZnQub3JnLwpQcmVmaXg6ICV7X3ByZWZpeH0KRG9jZGlyOiAle19kb2NkaXJ9CgolZGVzY3JpcHRpb24KVGhpcyBsaWJyYXJ5IGFsbG93cyB0byBtYW5pcHVsYXRlIFhNTCBmaWxlcy4gSXQgaW5jbHVkZXMgc3VwcG9ydCAKdG8gcmVhZCwgbW9kaWZ5IGFuZCB3cml0ZSBYTUwgYW5kIEhUTUwgZmlsZXMuIFRoZXJlIGlzIERURHMgc3VwcG9ydAp0aGlzIGluY2x1ZGVzIHBhcnNpbmcgYW5kIHZhbGlkYXRpb24gZXZlbiB3aXRoIGNvbXBsZXggRHREcywgZWl0aGVyCmF0IHBhcnNlIHRpbWUgb3IgbGF0ZXIgb25jZSB0aGUgZG9jdW1lbnQgaGFzIGJlZW4gbW9kaWZpZWQuIFRoZSBvdXRwdXQKY2FuIGJlIGEgc2ltcGxlIFNBWCBzdHJlYW0gb3IgYW5kIGluLW1lbW9yeSBET00gbGlrZSByZXByZXNlbnRhdGlvbnMuCkluIHRoaXMgY2FzZSBvbmUgY2FuIHVzZSB0aGUgYnVpbHQtaW4gWFBhdGggYW5kIFhQb2ludGVyIGltcGxlbWVudGF0aW9uCnRvIHNlbGVjdCBzdWJub2RlcyBvciByYW5nZXMuIEEgZmxleGlibGUgSW5wdXQvT3V0cHV0IG1lY2hhbmlzbSBpcwphdmFpbGFibGUsIHdpdGggZXhpc3RpbmcgSFRUUCBhbmQgRlRQIG1vZHVsZXMgYW5kIGNvbWJpbmVkIHRvIGFuClVSSSBsaWJyYXJ5LgoKJXBhY2thZ2UgZGV2ZWwKU3VtbWFyeTogTGlicmFyaWVzLCBpbmNsdWRlcywgZXRjLiB0byBkZXZlbG9wIFhNTCBhbmQgSFRNTCBhcHBsaWNhdGlvbnMKR3JvdXA6IERldmVsb3BtZW50L0xpYnJhcmllcwpSZXF1aXJlczogbGlieG1sMiA9ICV7dmVyc2lvbn0KUmVxdWlyZXM6IHpsaWItZGV2ZWwKCiVkZXNjcmlwdGlvbiBkZXZlbApMaWJyYXJpZXMsIGluY2x1ZGUgZmlsZXMsIGV0YyB5b3UgY2FuIHVzZSB0byBkZXZlbG9wIFhNTCBhcHBsaWNhdGlvbnMuClRoaXMgbGlicmFyeSBhbGxvd3MgdG8gbWFuaXB1bGF0ZSBYTUwgZmlsZXMuIEl0IGluY2x1ZGVzIHN1cHBvcnQgCnRvIHJlYWQsIG1vZGlmeSBhbmQgd3JpdGUgWE1MIGFuZCBIVE1MIGZpbGVzLiBUaGVyZSBpcyBEVERzIHN1cHBvcnQKdGhpcyBpbmNsdWRlcyBwYXJzaW5nIGFuZCB2YWxpZGF0aW9uIGV2ZW4gd2l0aCBjb21wbGV4IER0RHMsIGVpdGhlcgphdCBwYXJzZSB0aW1lIG9yIGxhdGVyIG9uY2UgdGhlIGRvY3VtZW50IGhhcyBiZWVuIG1vZGlmaWVkLiBUaGUgb3V0cHV0CmNhbiBiZSBhIHNpbXBsZSBTQVggc3RyZWFtIG9yIGFuZCBpbi1tZW1vcnkgRE9NIGxpa2UgcmVwcmVzZW50YXRpb25zLgpJbiB0aGlzIGNhc2Ugb25lIGNhbiB1c2UgdGhlIGJ1aWx0LWluIFhQYXRoIGFuZCBYUG9pbnRlciBpbXBsZW1lbnRhdGlvbgp0byBzZWxlY3Qgc3Vibm9kZXMgb3IgcmFuZ2VzLiBBIGZsZXhpYmxlIElucHV0L091dHB1dCBtZWNoYW5pc20gaXMKYXZhaWxhYmxlLCB3aXRoIGV4aXN0aW5nIEhUVFAgYW5kIEZUUCBtb2R1bGVzIGFuZCBjb21iaW5lZCB0byBhbgpVUkkgbGlicmFyeS4KCiVwYWNrYWdlIHB5dGhvbgpTdW1tYXJ5OiBQeXRob24gYmluZGluZ3MgZm9yIHRoZSBsaWJ4bWwyIGxpYnJhcnkKR3JvdXA6IERldmVsb3BtZW50L0xpYnJhcmllcwpSZXF1aXJlczogbGlieG1sMiA9ICV7dmVyc2lvbn0KUmVxdWlyZXM6ICV7X2xpYmRpcn0vcHl0aG9uJShlY2hvIGBweXRob24gLWMgImltcG9ydCBzeXM7IHByaW50IHN5cy52ZXJzaW9uWzA6M10iYCkKCiVkZXNjcmlwdGlvbiBweXRob24KVGhlIGxpYnhtbDItcHl0aG9uIHBhY2thZ2UgY29udGFpbnMgYSBtb2R1bGUgdGhhdCBwZXJtaXRzIGFwcGxpY2F0aW9ucwp3cml0dGVuIGluIHRoZSBQeXRob24gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdG8gdXNlIHRoZSBpbnRlcmZhY2UKc3VwcGxpZWQgYnkgdGhlIGxpYnhtbDIgbGlicmFyeSB0byBtYW5pcHVsYXRlIFhNTCBmaWxlcy4KClRoaXMgbGlicmFyeSBhbGxvd3MgdG8gbWFuaXB1bGF0ZSBYTUwgZmlsZXMuIEl0IGluY2x1ZGVzIHN1cHBvcnQgCnRvIHJlYWQsIG1vZGlmeSBhbmQgd3JpdGUgWE1MIGFuZCBIVE1MIGZpbGVzLiBUaGVyZSBpcyBEVERzIHN1cHBvcnQKdGhpcyBpbmNsdWRlcyBwYXJzaW5nIGFuZCB2YWxpZGF0aW9uIGV2ZW4gd2l0aCBjb21wbGV4IERURHMsIGVpdGhlcgphdCBwYXJzZSB0aW1lIG9yIGxhdGVyIG9uY2UgdGhlIGRvY3VtZW50IGhhcyBiZWVuIG1vZGlmaWVkLgoKJXByZXAKJXNldHVwIC1xCgolYnVpbGQKIwojIHRyeSB0byB1c2UgY29tcGlsZXIgcHJvZmlsaW5nLCBiYXNlZCBvbiBBcmphbiB2YW4gZGUgVmVuIDxhcmphbnZAcmVkaGF0LmNvbT4KIyBpbml0aWFsIHRlc3Qgc3BlYy4gVGhpcyByZWFsbHkgZG9lc24ndCB3b3JrIG9rYXkgZm9yIG1vc3QgdGVzdHMgZG9uZS4KIwpHQ0NfVkVSU0lPTj1gZ2NjIC0tdmVyc2lvbiB8IGdyZXAgIl5nY2MiIHwgYXdrICd7IHByaW50ICQzIH0nIHwgc2VkICdzK1woWzAtOV1cKVwuXChbMC05XVwpXC4uKitcMVwyKydgCiNpZiBbICRHQ0NfVkVSU0lPTiAtZXEgMzIgXQojdGhlbgojICAgIFBST0ZfR0VOPSctZnByb2ZpbGUtYXJjcycKIyAgICBQUk9GX1VTRT0nLWZicmFuY2gtcHJvYmFiaWxpdGllcycKI2Vsc2UgaWYgWyAkR0NDX1ZFUlNJT04gLWVxIDMzIF0KI3RoZW4KIyAgICBQUk9GX0dFTj0nLWZwcm9maWxlLWFyY3MnCiMgICAgUFJPRl9VU0U9Jy1mYnJhbmNoLXByb2JhYmlsaXRpZXMgLWZ0cmFjZXInCiNlbHNlCmlmIFsgJEdDQ19WRVJTSU9OIC1nZSAzNCBdCnRoZW4KICAgIFBST0ZfR0VOPSctZnByb2ZpbGUtZ2VuZXJhdGUnCiAgICBQUk9GX1VTRT0nLWZwcm9maWxlLXVzZScKZmkKI2ZpCiNmaQoKaWYgWyAiJFBST0ZfR0VOIiAhPSAiIiBdCnRoZW4KICAgICMgRmlyc3QgZ2VuZXJhdGUgYSBwcm9maWxpbmcgdmVyc2lvbgogICAgQ0ZMQUdTPSIke1JQTV9PUFRfRkxBR1N9ICR7UFJPRl9HRU59IiAgJWNvbmZpZ3VyZQogICAgbWFrZQogICAgIyBSdW4gYSBmZXcgc2FtcGxpbmcKICAgIG1ha2UgZGJhMTAwMDAwLnhtbAogICAgLi94bWxsaW50IC0tbm9vdXQgIGRiYTEwMDAwMC54bWwKICAgIC4veG1sbGludCAtLXN0cmVhbSAgZGJhMTAwMDAwLnhtbAogICAgLi94bWxsaW50IC0tbm9vdXQgLS12YWxpZCB0ZXN0L3ZhbGlkL1JFQy14bWwtMTk5ODAyMTAueG1sCiAgICAuL3htbGxpbnQgLS1zdHJlYW0gLS12YWxpZCB0ZXN0L3ZhbGlkL1JFQy14bWwtMTk5ODAyMTAueG1sCiAgICAjIFRoZW4gZ2VuZXJhdGUgY29kZSBiYXNlZCBvbiBwcm9maWxlCiAgICBDRkxBR1M9IiR7UlBNX09QVF9GTEFHU30gJHtQUk9GX1VTRX0iICAlY29uZmlndXJlCiAgICBtYWtlCmVsc2UKICAgICVjb25maWd1cmUKICAgIG1ha2UKZmkKKGNkIGRvYy9leGFtcGxlcyA7IG1ha2UgY2xlYW4pCmd6aXAgLTkgQ2hhbmdlTG9nCgolaW5zdGFsbApybSAtZnIgJXtidWlsZHJvb3R9CgolbWFrZWluc3RhbGwKCiVjbGVhbgpybSAtZnIgJXtidWlsZHJvb3R9CgolcG9zdAovc2Jpbi9sZGNvbmZpZwoKJXBvc3R1bgovc2Jpbi9sZGNvbmZpZwoKJWZpbGVzCiVkZWZhdHRyKC0sIHJvb3QsIHJvb3QpCgolZG9jIEFVVEhPUlMgQ2hhbmdlTG9nLmd6IE5FV1MgUkVBRE1FIENvcHlyaWdodCBUT0RPCiVkb2MgJXtfbWFuZGlyfS9tYW4xL3htbGxpbnQuMSoKJWRvYyAle19tYW5kaXJ9L21hbjEveG1sY2F0YWxvZy4xKgolZG9jICV7X21hbmRpcn0vbWFuMy9saWJ4bWwuMyoKCiV7X2xpYmRpcn0vbGliKi5zby4qCiV7cHJlZml4fS9iaW4veG1sbGludAole3ByZWZpeH0vYmluL3htbGNhdGFsb2cKCiVmaWxlcyBkZXZlbAolZGVmYXR0cigtLCByb290LCByb290KQoKJWRvYyAle19tYW5kaXJ9L21hbjEveG1sMi1jb25maWcuMSoKJWRvYyBBVVRIT1JTIENoYW5nZUxvZy5neiBORVdTIFJFQURNRSBDb3B5cmlnaHQgVE9ETwolZG9jIGRvYy8qLmh0bWwgZG9jL2h0bWwgZG9jLyouZ2lmIGRvYy8qLnBuZwolZG9jIGRvYy90dXRvcmlhbCBkb2MvbGlieG1sMi1hcGkueG1sCiVkb2MgZG9jL2V4YW1wbGVzCgole19saWJkaXJ9L2xpYiouc28KJXtfbGliZGlyfS8qYQole19saWJkaXJ9Lyouc2gKJXtwcmVmaXh9L2luY2x1ZGUvKgole3ByZWZpeH0vYmluL3htbDItY29uZmlnCiV7cHJlZml4fS9zaGFyZS9hY2xvY2FsL2xpYnhtbC5tNAole19saWJkaXJ9L3BrZ2NvbmZpZy9saWJ4bWwtMi4wLnBjCiVmaWxlcyBweXRob24KJWRlZmF0dHIoLSwgcm9vdCwgcm9vdCkKCiVkb2MgQVVUSE9SUyBDaGFuZ2VMb2cuZ3ogTkVXUyBSRUFETUUgQ29weXJpZ2h0CiV7X2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL2xpYnhtbDIucHkKJXtfbGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMvZHJ2X2xpYnhtbDIucHkKJXtfbGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMvbGlieG1sMm1vZCoKJWRvYyBweXRob24vVE9ETwolZG9jIHB5dGhvbi9saWJ4bWwyY2xhc3MudHh0CiVkb2MgcHl0aG9uL3Rlc3RzLyoucHkKJWRvYyBkb2MvKi5weQolZG9jIGRvYy9weXRob24uaHRtbAoKJWNoYW5nZWxvZwoqIEBSRUxEQVRFQCBEYW5pZWwgVmVpbGxhcmQgPHZlaWxsYXJkQHJlZGhhdC5jb20+Ci0gdXBzdHJlYW0gcmVsZWFzZSBAVkVSU0lPTkAgc2VlIGh0dHA6Ly94bWxzb2Z0Lm9yZy9uZXdzLmh0bWwKCiogVGh1IEphbiAgMiAyMDAzIERhbmllbCBWZWlsbGFyZCA8dmVpbGxhcmRAcmVkaGF0LmNvbT4KLSBpbnRlZ3JhdGVkIGRydl9saWJ4bWwyIHhtbC5zYXggZHJpdmVyIGZyb20gU3TpcGhhbmUgQmlkb3VsCi0gcHJvdmlkZXMgdGhlIG5ldyBYbWxUZXh0UmVhZGVyIGludGVyZmFjZXMgYmFzZWQgb24gQyMgWE1MIEFQSXMKCiogV2VkIE9jdCAyMyAyMDAyIERhbmllbCBWZWlsbGFyZCA8dmVpbGxhcmRAcmVkaGF0LmNvbT4KLSByZXZhbXBlZCB0aGUgc3BlYyBmaWxlLCBjbGVhbmVkIHVwIHNvbWUgcnBtIGJ1aWxkaW5nIHByb2JsZW1zCgoqIEZyaSBPY3QgIDQgMjAwMiBKZXJlbXkgS2F0eiA8a2F0empAcmVkaGF0LmNvbT4KLSBidWlsZCB3aXRoICdtYWtlIExJQlRPT0w9L3Vzci9iaW4vbGlidG9vbCcgdG8gdXNlIHN5c3RlbSBsaWJ0b29sCgoqIFdlZCBTZXAgIDQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPHZlaWxsYXJkQHJlZGhhdC5jb20+CgotIGxpYnJhcnkgcGF0aHMgZml4ZWQgZm9yIHg4Ni02NAoKKiBGcmkgRmViICAxIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDx2ZWlsbGFyZEByZWRoYXQuY29tPgoKLSBBZGRlZCB0aGUgcHl0aG9uIHBhY2thZ2UKCiogU3VuIE5vdiAgNCAyMDAxIERhbmllbCBWZWlsbGFyZCA8dmVpbGxhcmRAcmVkaGF0LmNvbT4KCi0gY2xlYW5lZCB1cCB0aGUgc3BlY2ZpbGUKLSAyLjQuNyBicm9rZSBTR01MIGNhdGFsb2dzIGJhZGx5LiB0aGlzIGZpeGVzIGl0LgoKKiBUaHUgQXByIDI2IDIwMDEgVG9zaGlvIEt1cmF0b21pIDxiYWRnZXJAcHJ0ci0xMy51Y3NjLmVkdT4KClsyLjMuN10KLSBBZGRlZCBsaWJ4bWwubTQgdG8gdGhlIGRpc3RyaWJ1dGlvbiBmaWxlIGxpc3QKLSBNb3ZlZCB0aGUgbWFuIHBhZ2VzIGZyb20gL3Vzci9tYW4gdG8gL3Vzci9zaGFyZS9tYW4gdG8gY29uZm9ybSB0byBGSFMyLjAKLSBNb3ZlZCBwcm9ncmFtbWVyIGRvY3VtZW50YXRpb24gaW50byB0aGUgZGV2ZWwgcGFja2FnZQoKKiBUaHUgU2VwIDIzIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgoKLSBjb3JyZWN0ZWQgdGhlIHNwZWMgZmlsZSBhbHBoYSBzdHVmZgotIHN3aXRjaGVkIHRvIHZlcnNpb24gMS43LjEKLSBBZGRlZCB2YWxpZGF0aW9uLCBYUGF0aCwgbmFub2h0dHAsIHJlbW92ZWQgbWVtb3J5IGxlYWtzCi0gUmVuYW1lZCBDSEFSIHRvIHhtbENoYXIKCiogV2VkIEp1biAgMiAxOTk5IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KCi0gU3dpdGNoZWQgdG8gdmVyc2lvbiAxLjE6IFNBWCBleHRlbnNpb25zLCBiZXR0ZXIgZW50aXRpZXMgc3VwcG9ydCwgbG90cyBvZgogIGJ1ZyBmaXhlcy4KCiogU3VuIE9jdCAgNCAxOTk4IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KCi0gQWRkZWQgeG1sLWNvbmZpZyB0byB0aGUgcGFja2FnZQoKKiBUaHUgU2VwIDI0IDE5OTggTWljaGFlbCBGdWxicmlnaHQgPG1zZkByZWRoYXQuY29tPgoKLSBCdWlsdCByZWxlYXNlIDAuMzAKCg==