diff --git a/SKILL.md b/SKILL.md new file mode 100644 index 0000000..7c13241 --- /dev/null +++ b/SKILL.md @@ -0,0 +1 @@ +LS0tCm5hbWU6IGdpdGVhLXdvcmtmbG93CmRlc2NyaXB0aW9uOiB8CiAgQ29tcGxldGUgR2l0ZWEtZHJpdmVuIGRldmVsb3BtZW50IHdvcmtmbG93IGZvciAuTkVUIGVudGVycHJpc2VzIHdpdGggYXV0b21hdGVkIENJL0NELCB2ZXJzaW9uaW5nLCBhbmQgcmVsZWFzZXMuCiAgCiAgVXNlIHRoaXMgc2tpbGwgd2hlbmV2ZXIgdGhlIHVzZXIgYXNrcyB0bzoKICAtIFRha2UgYW4gaXNzdWUvdGFzayBmcm9tIEdpdGVhIGFuZCBpbXBsZW1lbnQgaXQKICAtIENyZWF0ZSBhIGJyYW5jaCwgUFIsIGFuZCBmb2xsb3cgdGhlIGZ1bGwgcmV2aWV3LW1lcmdlLWRlcGxveS1yZWxlYXNlIGN5Y2xlCiAgLSBGaXggYSBidWcgb3IgYWRkIGEgZmVhdHVyZSB1c2luZyBhIHNwZWNpZmljIHNraWxsIChlLmcuLCAidGFrZSBpc3N1ZSAjNDcsIHVzZSB0aGUgVEREIHNraWxsIikKICAtIFdvcmsgdGhyb3VnaCB0aGUgImJyYW5jaCAtPiBQUiAtPiBDSSAtPiByZXZpZXcgLT4gbWVyZ2UgLT4gZGVwbG95IC0+IHJlbGVhc2UiIHBpcGVsaW5lCiAgLSBIYW5kbGUgdmVyc2lvbiBidW1wcywgY29tcG9zZS55YW1sIHN5bmMsIG9yIGF1dG9tYXRlZCByZWxlYXNlcyBpbiBSdXNzaWFuCiAgCiAgVGhpcyBza2lsbCBjb3dvcmRpbmF0ZXMgcGxhbm5pbmcsIGV4ZWN1dGlvbiAodmlhIG90aGVyIHNraWxscyksIHRlc3RpbmcsIFBSIG1hbmFnZW1lbnQsIGNvZGUgcmV2aWV3IHN1YmFnZW50cywgZGVwbG95bWVudCBtb25pdG9yaW5nLCBhbmQgcmVsZWFzZSBjcmVhdGlvbi4gSXQgYXNzdW1lcyBhIEdpdGVhIHJlcG9zaXRvcnkgd2l0aCBHaXRIdWIgQWN0aW9ucy1zdHlsZSBDSLwgRG9ja2VyIENvbXBvc2UgZGVwbG95bWVudCwgYW5kIC5ORVQgRGlyZWN0b3J5LkJ1aWxkLnByb3BzIHZlcnNpb25pbmcuCmNvbXBhdGliaWxpdHk6IHwKICBSZXF1aXJlczogR2l0ZWEgTUNQIHNlcnZlciwgZ2l0IENMSSwgZG90bmV0IENMSSwgc3ViYWdlbnQgc3Bhd25pbmcgY2FwYWJpbGl0eS4KICBBc3N1bWVzOiBgRGlyZWN0b3J5LkJ1aWxkLnByb3BzYCB3aXRoIGA8VmVyc2lvbj5gLCBgY29tcG9zZS55YW1sYCB3aXRoIGltYWdlIHRhZ3MsCiAgYC5naXRlYS93b3JrZmxvd3MvZGVwbG95LnltbGAgd2l0aCBWRVJTSU9OIGVudiB2YXIsIGFuZCBgTmF2TWVudS5yYXpvcnAgd2l0aCBoYXJkY29kZWQgdmVyc2lvbiBzdHJpbmcuCi0tLQoKIyBHaXRlYSBXb3JrZmxvdyBTa2lsbAoKIyMgT3ZlcnZpZXcKClRoaXMgc2tpbGwgb3JjaGVzdHJhdGVzIHRoZSBjb21wbGV0ZSBkZXZlbG9wbWVudCBsaWZlY3ljbGUgZm9yIHRhc2tzIHRyYWNrZWQgaW4gR2l0ZWE6CioqUGxhbiAtPiBBcHByb3ZlIC0+IEV4ZWN1dGUgLT4gVmVyc2lvbiBCdW1wIC0+IEJyYW5jaCAtPiBQUiAtPiBDSSAtPiBSZXZpZXcgLT4gTWVyZ2UgLT4gRGVwbG95IC0+IFJlbGVhc2UqKi4KClRoZSB1c2VyIHByb3ZpZGVzOgoxLiBBIEdpdGVhIGlzc3VlIG5hbWUvbnVtYmVyIChlLmcuLCAiIzQ3IiBvciAiRml4IG1vYmlsZSBvdmVybGFwIikKMi4gVGhlIG5hbWUgb2YgdGhlIHNraWxsIHRvIHVzZSBmb3IgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiB3b3JrIChlLmcuLCAidGRkIiwgImZyb250ZW5kLWRlc2lnbiIpCgpZb3UgdGhlbiBkcml2ZSB0aGUgZW50aXJlIHdvcmtmbG93IGF1dG9ub21vdXNseSwgdXNpbmcgdGhlIHNwZWNpZmllZCBza2lsbCBmb3IgdGhlIHRlY2huaWNhbCB3b3JrLAphbmQgaGFuZGxpbmcgYWxsIHRoZSBwcm9qZWN0LW1hbmFnZW1lbnQgYW5kIERldk9wcyBzdGVwcyB5b3Vyc2VsZi4KCiMjIFByZS1jb25kaXRpb25zCgpCZWZvcmUgc3RhcnRpbmcsIHZlcmlmeToKLSBbXSBZb3UgYXJlIGluIGEgZ2l0IHJlcG9zaXRvcnkgd2l0aCBhIEdpdGVhIHJlbW90ZQotIFtdIGBEaXJlY3RvcnkuQnVpbGQucHJvcHNgIGV4aXN0cyBhdCByZXBvIHJvb3Qgd2l0aCBgPFZlcnNpb24+WC5ZLlo8L1ZlcnNpb24+YAotIFtdIGBjb21wb3NlLnlhbWxgIHJlZmVyZW5jZXMgRG9ja2VyIGltYWdlcyB3aXRoIHZlcnNpb24gdGFncwotIFtdIGAuZ2l0ZWEvd29ya2Zsb3dzL2RlcGxveS55bWxgIGhhcyBhIGBWRVJTSU9OYCBlbnZpcm9ubWVudCB2YXJpYWJsZQotIFtdIFRoZSByZXBvIGhhcyBDSSB3b3JrZmxvd3MgY29uZmlndXJlZCBpbiBgLmdpdGVhL3dvcmtmbG93cy9gCgpJZiBhbnkgYXJlIG1pc3NpbmcsIGFzayB0aGUgdXNlciBmb3IgZ3VpZGFuY2UgcmF0aGVyIHRoYW4gYXNzdW1pbmcuCgojIyBQaGFzZSAxOiBEaXNjb3ZlcnkgJiBQbGFubmluZwoKIyMjIDEuMSBGZXRjaCB0aGUgSXNzdWUKClVzZSB0aGUgR2l0ZWEgTUNQIHRvIGZpbmQgdGhlIGlzc3VlOgotIElmIHVzZXIgZ2F2ZSBhIG51bWJlcjogYG1jcF9fZ2l0ZWFfX2lzc3VlX3JlYWRgIG1ldGhvZCBgZ2V0YAotIElmIHVzZXIgZ2F2ZSBhIG5hbWU6IGBtcGNfX2dpdGVhX19zZWFyY2hfaXNzdWVzYCB3aXRoIHRoZSBxdWVyeQoKRXh0cmFjdDoKLSBJc3N1ZSB0aXRsZSBhbmQgZGVzY3JpcHRpb24KLSBMYWJlbHMgKHVzZSB0aGVzZSB0byBkZXRlcm1pbmUgdmVyc2lvbiBidW1wIHR5cGU6IGBidWdgIOKGkCBwYXRjaCwgYGZlYXR1cmVgL2BlbmhhbmNlbWVudGAg4oKgIG1pbm9yKQotIEFueSBsaW5rZWQgUFJzIG9yIGNvbW1lbnRzCgojIyMgMS4yIENyZWF0ZSBhIFBsYW4KCioqQUxXQVlTKiogdXNlIHRoZSBwbGFubmluZyBza2lsbCBvciBlbnRlciBQbGFuIE1vZGUgYmVmb3JlIGNvZGluZy4KCmBgYApTa2lsbCh7InNraWxsIjogInBsYW5uaW5nIn0pICAgIyBvciBlbnRlciBQbGFuTW9kZSBpZiBubyBwbGFubmluZyBza2lsbApgYGAKClRoZSBwbGFuIG11c3QgaW5jbHVkZToKLSBXaGF0IGZpbGVzIHdpbGwgYmUgbW9kaWZpZWQKLSBUaGUgdmVyc2lvbiBidW1wIHJlcXVpcmVkIChwYXRjaC9taW5vci9tYWpvciDigJQgc2VlIFZlcnNpb25pbmcgUnVsZXMpCi0gVGVzdCBzdHJhdGVneSAoaWYgdGhlIGltcGxlbWVudGF0aW9uIHNraWxsIHN1cHBvcnRzIFRERCwgaW52b2tlIGl0IGhlcmUpCi0gVmVyaWZpY2F0aW9uIHN0ZXBzCgpQcmVzZW50IHRoZSBwbGFuIHRvIHRoZSB1c2VyIGFuZCAqKndhaXQgZm9yIGV4cGxpY2l0IGFwcHJvdmFsKiogYmVmb3JlIHByb2NlZWRpbmcuCgojIyMgMS4zIFZlcnNpb25pbmcgUnVsZXMKCkNoZWNrIHRoZSBpc3N1ZSBsYWJlbHMgdG8gZGV0ZXJtaW5lIHRoZSBidW1wOgoKfCBMYWJlbChzKSB8IEJ1bXAgfCBXaGljaCBkaWdpdCBjaGFuZ2VzIHwgRXhhbXBsZSB8CnwtLS0tLS0tLS0tfC0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS18CnwgYGJ1Z2AsIGBmaXhgLCBgaG90Zml4YCB8IHBhdGNoIHwgWiBpbiBYLlkuWiB8IDEuMTAuNSDigJQgMS4xMC42IHwKfCBgZmVhdHVyZWAsIGBlbmhhbmNlbWVudGAgfCBtaW5vciB8IFkgaW4gWC5ZLjIgfCAxLjEwLjUg4o2kIDEuMTEuMCB8CnwgYGJyZWFraW5nYCwgb3IgdXNlciBzYXlzICJtYWpvciIgfCBtYWpvciB8IFggaW4gWC5ZLjIgfCAxLjEwLjUg4oCgIDIuMC4wIHwKCioqSWYgbm8gbGFiZWxzIGV4aXN0KiosIGRlZmF1bHQgdG8gcGF0Y2ggZm9yIGJ1Z2ZpeGVzIGFuZCBtaW5vciBmb3IgbmV3IGZ1bmN0aW9uYWxpdHkuCioqTmV2ZXIgYnVtcCBtYWpvciB3aXRoZXV0IGV4cGxpY2l0IHVzZXIgYXBwcm92YWwuKioKClRoZSB2ZXJzaW9uIG11c3QgYmUgc3luY2hyb25pemVkIGFjcm9zcyBleGFjdGx5IHRoZXNlIDQgZmlsZXM6CjEuIGBEaXJlY3RvcnkuQnVpbGQucHJvcHNgIOKAkyBgPFZlcnNpb24+WC5ZLlo8L1ZlcnNpb24+YAoyLiBgY29tcG9zZS55YW1sYCDigJMgYm90aCBgYm90YCBhbmQgYHdlYmAgaW1hZ2UgdGFncwozLiBgLmdpdGVhL3dvcmtmbG93cy9kZXBsb3kueW1sYCDigJMgYFZFUlNJT046IFguWS5aYAo0LiBgc3JjL0dtUmVsYXkuV2ViL0NvbXBvbmVudHMvTGF5b3V0L05hdk1lbnUucmF6b3JgIOKAkyBgPGRpdiBjbGFzcz0ibmF2LXZlcnNpb24iPnZYLlkuWjwvZGl2PgYKCiMjIFBoYXNlIDI6IEV4ZWN1dGlvbgoKIyMjIDIuMSBDcmVhdGUgQnJhbmNoCgpgYGBiYXNoCmdpdCBjaGVja291dCAtYiA8dHlwZT4vPHNob3J0LWRlc2NyaXB0aW9uPgpgYGAKCkJyYW5jaCBuYW1pbmc6IGBmaXgvaXNzdWUtNDctbW9iaWxlLW92ZXJsYXBgLCBgZmVhdHVyZS9zZXNzaW9uLXRlbXBsYXRlcyAsIGByZWZhY3Rvci9hdXRoLXNlcnZpY2UuCgojIyMgMi4yIFJ1biB0aGUgSW1wbGVtZW50YXRpb24gU2tpbGwKCkludm9rZSB0aGUgc2tpbGwgdGhlIHVzZXIgc3BlY2lmaWVkOgoKYGBgClNraWxsKHsic2tpbGwiOiAiPHVzZXItc3BlY2lmaWVkLXNraWxsPiJ9KQpgYGAKCklmIHRoZSB1c2VyIHNhaWQgInVzZSBUREQiLCBpbnZva2UgdGhlIFRERCBza2lsbCBmcm9tIHN1cGVycG93ZXJzOgoKYGBgClNraWxsKHsic2tpbGwiOiAidGRkIn0pCmBgYAoKRm9sbG93IHRoYXQgc2tpbGwncyBpbnN0cnVjdGlvbnMgZnVsbHkuIERvIG5vdCBzaG9ydC1jaXJjdWl0IGl0cyB3b3JrZmxvdy4KCiMjIyAyLjMgTG9jYWwgVmVyaWZpY2F0aW9uCgpBZnRlciB0aGUgaW1wbGVtZW50YXRpb24gc2tpbGwgZmluaXNoZXM6CjEuIGBkb3RuZXQgYnVpbGRgIHRoZSBhZmZlY3RlZCBwcm9qZWN0KHMpCjIuIGBkb3RuZXQgdGVzdGAgaWYgdGVzdHMgZXhpc3QKMy4gVmlzdWFsbHkgaW5zcGVjdCBhbnkgVUkgY2hhbmdlcyAoc3RhcnQgZGV2IHNlcnZlciwgdGFrZSBzY3JlZW5zaG90cywgb3IgdmVyaWZ5IHdpdGggYnJvd3NlciB0b29scykKCiJJZiB0aGUgYnVpbGQgb3IgdGVzdHMgZmFpbCwgZml4IHRoZSBpc3N1ZXMgYmVmb3JlIHByb2NlZWRpbmcuIERvIG5vdCBvcGVuIGEgUFIgd2l0aCBmYWlsaW5nIHRlc3RzLgoKIyMjIDIuNSBEb2N1bWVudGF0aW9uIFJldmlldyAoU3ViYWdlbnQpCgpJZyB0aGUgaW1wbGVtZW50YXRpb24gY2hhbmdlcyBwdWJsaWMgQVBJcywgVUkgYmVoYXZpb3IsIG9yIHVzZXItZmFjaW5nIGZlYXR1cmVzLCAqKnNwYXduIGEgZG9jdW1lbnRhdGlvbiByZXZpZXcgc3ViYWdlbnQqKiBiZWZvcmUgY29tbWl0dGluZzoKCmBgYApBZ2VudCh7CiAgImRlc2NyaXB0aW9uIjogIlJldmlldyBkb2NzIGZvciBpc3N1ZSAjPG51bWJlcj4iLAogICJwcm9tcHQiOiB8CiAgICBSZXZpZXcgUkVBRE1FLm1kIGFuZCBwcm9qZWN0IHdpa2kgZm9yIGFjY3VyYWN5IGFnYWluc3QgdGhlIGN1cnJlbnQgY29kZWJhc2UuCgogICAgQ29udGV4dDoKICAgIC0gSXNzdWU6IDxpc3N1ZS10aXRsZT4KICAgIC0gQ2hhbmdlZCBmaWxlczogPGxpc3QtZnJvbS1kaWZmPgogICAgLSBOZXcgZmVhdHVyZXMgLyBBUEkgY2hhbmdlcyBpbnRyb2R1Y2VkOiA8c3VtbWFyeT4KCiAgICBDaGVjazoKICAgIDEuIFJFQURNRS5tZCDigJQgZmVhdHVyZXMsIGFyY2hpdGVjdHVyZSwgYnVpbGQvdGVzdCBjb21tYW5kcyBhcmUgdXAgdG8gZGF0ZQogICAgMi4gV2lraSBwYWdlcyDigJQgYW55IHBhZ2VzIHJlbGF0ZWQgdG8gY2hhbmdlZCBkb21haW5zIG5lZWQgdXBkYXRpbmcKICAgIDMuIEFQSSBkb2NzIOKAlCBuZXcgZW5kcG9pbnRzLCBEVE9zLCBvciBiZWhhdmlvcnMgYXJlIGRvY3VtZW50ZWQKICAgIDQuIFVzZXItZmFjaW5nIGRvY3Mg4oCTIFRlbGVncmFtIGNvbW1hbmRzLCBkYXNoYm9hcmQgZmxvd3MgcmVmbGVjdCBuZXcgYmVoYXZpb3IKCiAgICBSZWFkIHRoZSBhY3R1YWwgUkVBRE1FLm1kIGFuZCB3aWtpIGZpbGVzLiBEbyBOT1QgZ3Vlc3MuCiAgICBSZXBvcnQgd2l0aCBmaWxlOmxpbmUgcmVmZXJlbmNlcyBhbmQgZXhhY3Qgc3VnZ2VzdGVkIHRleHQuCiAgICBJZiBubyBjaGFuZ2VzIGFyZSBuZWVkZWQsIHN0YXRlICJObyBkb2N1bWVudGF0aW9uIHVwZGF0ZXMgcmVxdWlyZWQuIgp9KQpgYGAKCkFwcGx5IHRoZSBzdWJhZ2VudCdzIHN1Z2dlc3Rpb25zIHRvIHRoZSBzYW1lIGJyYW5jaCAoZG8gTk9UIGNyZWF0ZSBhIHNlcGFyYXRlIGJyYW5jaCBmb3IgZG9jcykuIEluY2x1ZGUgZG9jIGNoYW5nZXMgaW4gdGhlIHNhbWUgY29tbWl0IG9yIGFuIGFkZGl0aW9uYWwgY29tbWl0IGJlZm9yZSBwdXNoaW5nLgoKSWYgdGhlIHN1YmFnZW50IHJlcG9ydHMgIk5vIGRvY3VtZW50YXRpb24gdXBkYXRlcyByZXF1aXJlZCIsIHNraXAgdGhpcyBzdGVwLgoKIyMjIDIuNCJWZXJzaW9uIEJ1bXAgQ29tbWl0CgpTdGFnZSBvbmx5IHRoZSBpbnRlbmRlZCBmaWxlcy4gRG8gTk9UIHN0YWdlIHVudHJhY2tlZCBmaWxlcyBsaWtlIGAuY2xhdWRlL2AsIGxvZ3MsIG9yIGBDTEFVREVtZGAgdW5sZXNzIHRoZXkgYXJlIHBhcnQgb2YgdGhlIGNoYW5nZS4KCmBgYGJhc2gKZ2l0IGFkZCA8c3BlY2lmaWMtZmlsZXM+CmdpdCBjb21taXQgLW0gIjxjb252ZW50aW9uYWwtY29tbWl0LW1lc3NhZ2U+Cgo8ZGV0YWlsZWQtZGVzY3JpcHRpb24+CgpCdW1wIHZlcnNpb24g4oaSIFguWS5aCgpDLUF1dGhvcmVkLUJ5OiBDbGF1ZGUgT3B1cyA0LjcgPG5vcmVwbHlAYW50aHJvcGljLmNvbT4iCmBgYAoKIyMgUGhhc2UgMzogUHVsbCBSZXF1ZXN0CgojIyMgMy4xIFB1c2ggJiBDcmVhdGUgUFIKCmBgYGJhc2gKZ2l0IHB1c2ggLXUgb3JpZ2luIDxicmFuY2gtbmFtZT4KYGBgCgpDcmVhdGUgUFIgdmlhIEdpdGVhIE1DUDoKCmBgYAptY3BfX2dpdGVhX19wdWxsX3JlcXVlc3Rfd3JpdGUoewogICJtZXRob2QiOiAiY3JlYXRlIiwKICAib3duZXIiOiAiPG93bmVyPiIsCiAgInJlcG8iOiAiPHJlcG8+IiwKICAidGl0bGUiOiAiPGNvbnZlbnRpb25hbC1jb21taXQtdGl0bGU+IiwKICAiaGVhZCI6ICI8YnJhbmNoPiIsCiAgImJhc2UiOiAibWFpbiIsCiAgImJvZHkiOiAiIyMgU3VtbWFyeVxuLi4uXG4jIyBDaGFuZ2VzXG4uLi5cbj0jIFRlc3QgcGxhblxuLi4uXG4jIyMgV29ya2Zsb3dcbi0gW10gQ0kgcGFzc2VzXG4tIFtdIENvZGUgcmV2aWV3IGFwcHJvdmVkXG4tIFtdIERlcGxveWVkXG4tIFtdIFJlbGVhc2UgcHVibGlzaGVkIgp9KQpgYGAKCiMjMyAzLjIgV2FpdCBmb3IgQ0kKClBvbGwgQ0kgc3RhdHVzIGV2ZXJ5IDMwLTYwIHNlY29uZHMgdXNpbmcgYG1jcF9fZ2l0ZWFfX2FjdGlvbnNfcnVuX3JlYWRgOgotIExpc3QgcnVucyBmaWx0ZXJlZCBieSB0aGUgUFIncyBoZWFkIFNIQQotIENoZWNrIGlmIHN0YXR1cyBpcyBgY29tcGxldGVkYCBhbmQgY29uY2x1c2lvbiBpcyBgc3VjY2Vzc2AKCioqSWYgQ0kgZmFpbHM6KioKMS4gRmV0Y2ggdGhlIGpvYiBsb2dzIChgZ2V0X2pvYl9sb2dfcHJldmlld2ApCjIuIEFuYWx5emUgdGhlIGZhaWx1cmUgcm9vdCBjYXVzZQozLiBGaXggdGhlIGNvZGUgbG9jYWxseQo0LiBBbWVuZCBvciBhZGQgYSBuZXcgY29tbWl0CjUuIEZvcmNlLXB1c2ggdG8gdGhlIGJyYW5jaAo2LiBSZS1jaGVjayBDSQoKUmVwZWF0IHVudGlsIENJIHBhc3Nlcy4gRG8gbm90IHByb2NlZWQgdG8gcmV2aWV3IHdoaWxlIENJIGlzIHJlZC4KCiMjIFBoYXNlIDQ6IENvZGUgUmV2aWV3CgojIyMgNC4xIFNwYXduIFJldmlldyBTdWJhZ2VudAoKTGF1bmNoIGEgYHByLXJldmlldy10b29sa2l0OmNvZGUtcmV2aWV3ZXJgIHN1YmFnZW50IHdpdGg6Ci0gUFIgbnVtYmVyCi0gUmVwb3NpdG9yeSBvd25lciBhbmQgbmFtZQotIEZvY3VzIGFyZWFzOiAiQ2hlY2sgdGhlIENTUyBmaXggaXMgc2FmZSIsICJWZXJpZnkgdmVyc2lvbiBidW1wIGNvbnNpc3RlbmN5IiwgZXRjLgoKYGBgCkFnZW50KHsKICAiZGVzY3JpcHRpb24iOiAiUFIgcmV2aWV3IGZvciAjPG51bWJlcj4iLAogICJzdWJhZ2VudF90eXBlIjogInByLXJldmlldy10b29sa2l0OmNvZGUtcmV2aWV3ZXIiLAogICJwcm9tcHQiOiAiUmV2aWV3IFBIICM8bnVtYmVyPiBpbiA8b3duZXI+LzxyZXBvPi4gRGlmZiBhdmFpbGFibGUgdmlhIEdpdGVhIE1DUC4gRm9jdXMgb246IDxzcGVjaWZpYy1jb25jZXJucz4uIFJlcG9ydCBhbnkgaXNzdWVzLiBJZiBubyBibG9ja2luZyBpc3N1ZXMsIGV4cGxpY2l0bHkgc3RhdGUgJ0FwcHJvdmVkJy4iCn0pCmBgYAoKIyMjIDQuMiBBcHByb3ZlICYgTWVyZ2UKCldhaXQgZm9yIHRoZSBzdWJhZ2VudCB0byByZXR1cm4gYW4gIkFwcHJvdmVkIiB2ZXJkaWN0LgoKVGhlbiBtZXJnZSB2aWEgR2l0ZWEgTUNQOgoKYGBgCm1jcF9fZ2l0ZWFfX3B1bGxfcmVxdWVzdF93cml0ZSh7CiAgIm1ldGhvZCI6ICJtZXJnZSIsCiAgImluZGV4IjogPHByLW51bWJlcj4sCiAgIm93bmVyIjogIjxvd25lcj4iLAogICJyZXBvIjogIjxSRVBPViIsCiAgIm1lcmdlX3N0eWxlIjogIm1lcmdlIgp9KQpgYGAKCklmIE1DUCBtZXJnZSByZXR1cm5zIEhUVFAgNDA1IChubyByZXZpZXcgYXBwcm92YWwgb24gZmlsZSk6CjEuIEFkZCBhIHJldmlldyB2aWEgTUNQOiBgbWNwX19naXRlYV9fcHVsbF9yZXF1ZXN0X3Jldmlld193cml0ZWAgd2l0aCBgbWV0aG9kOiBjcmVhdGVgLCBgc3RhdGU6IEFQUFJPVkVYCjIuIFJldHJ5IHRoZSBtZXJnZQoKMy4gSWYgc3RpbGwgZmFpbGluZywgZmFsbCBiYWNrIHRvIGxvY2FsIGdpdCBtZXJnZToKICAgYGBgYmFzaAogICBnaXQgY2hlY2tvdXQgbWFpbgogICBnaXQgbWVyZ2UgLS1uby1mZiA8YnJhbmNoPiAtbSAiTWVyZ2UgcHVsbCByZXF1ZXN0ICM8bnVtYmVyPjogPHRpdGxlPiIKICAgZ2l0IHB1c2ggb3JpZ2luIG1haW4KICAgYGBgCgojIyBQaGFzZSA1OiBEZXBsb3ltZW50CgojIyMgNS4xIE1vbml0b3IgRGVwbG95IFBpcGVsaW5lCgpBZnRlciBtZXJnZSwgbGlzdCB3b3JrZmxvdyBydW5zIG9uIGBtYWluYCBicmFuY2guCkZpbmQgdGhlIGRlcGxveSBydW4gKGV2ZW50OiBgcHVzaGAsIGJyYW5jaDogYG1haW5gKS4KUG9sbCBldmVyeSA2MC05MCBzZWNvbmRzIHVudGlsIHN0YXR1cyBpcyBgY29tcGxldGVkYC4KCklmIGRlcGxveSBmYWlsczoKMS4gUmVhZCBsb2dzIHRvIGlkZW50aWZ5IGZhaWx1cmUKMi4gQWxlcnQgdGhlIHVzZXIg4oCUIGRvIG5vdCBhdHRlbXB0IHRvIGZpeCBkZXBsb3ltZW50IGlzc3VlcyBhdXRvbWF0aWNhbGx5IHVubGVzcyB0aGV5IGFyZSBjbGVhcmx5IGNvZGUtcmVsYXRlZCAoZS5nLiwgYSBtaXNzaW5nIG1pZ3JhdGlvbikKMy4gSWYgaXQncyBhIGNvZGUgaXNzdWUsIGNyZWF0ZSBhIGZvbGxvdy11cCBicmFuY2ggYW5kIHJlcGVhdCB0aGUgd29ya2Zsb3cKCiMjIFBoYXNlIDY6IFJlbGVhc2UKCiMjIyA2LjEgQ3JlYXRlIFJlbGVhc2UKCkFmdGVyIGRlcGxveSBzdWNjZWVkcywgY3JlYXRlIGEgcmVsZWFzZSB2aWEgR2l0ZWEgTUNQOgoKYGBgCm1jcF9fZ2l0ZWFfX2NyZWF0ZV9yZWxlYXNlKHsKICAib3duZXIiOiAiPG93bmVyPiIsCiAgInJlcG8iOiAiPHJlcG8+IiwKICAidGFnX25hbWUiOiAidlguWS5aIiwKICAidGFyZ2V0IjogIjxtZXJnZS1jb21taXQtc2hhPiIsCiAgInRpdGxlIjogIlJlbGVhc2UgdlguWS5aIOKAkyA8c2hvcnQtZGVzY3JpcHRpb24+IiwKICAiYm9keSI6ICI8cnVzc2lhbi1yZWxlYXNlLW5vdGVzPiIKfSkKYGBgCgojIyMgNi4yIFJlbGVhc2UgTm90ZXMgRm9ybWF0IChSdXNzaWFuKQoKRm9sbG93IHRoZSBlc3RhYmxpc2hlZCBSdXNzaWFuIGZvcm1hdDoKCmBgYG1hcmtkb3duCiMjIPCfjoggUGF0Y2ggWC5ZLjIg4oCTIDzQrNGB0YLQtdGA0LjQvdCw0YLQvtGALnJ1c3NpYW4+Cgo80LzQvtC20HQg0L/Qu9Cw0YLQtdC20LDRgNGB0LrQuNC1L9C70LXRgtC+0YDQvdC+0YHRgtC40LkucnVzc2lhbj4KCi0uLi4KCiMjIPCfjogg0YLQu9GPINCy0L7RgdC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjgoKLSBgPGZpbGU+YCAtIGA8d2hhdCBjaGFuZ2VkPmAKLSDQodC40YHRgtC10L3RgtCw0LrQvtCy0L7QuSDQstC+0LvQtdC60YLRgNC+0YHRgtC40LrQvtC8OiBgRGlyZWN0b3J5LkJ1aWxkLnByb3BzYCwgYE5hdk1lbnUucmF6b3JgLCBgY29tcG9zZS55YW1sYCwgYGRlcGxveS55bWxgIOKGkFguWS5aCgojIyDwn46BIENoYSB0aGlzIGdpdmVzCi0gPFBsZWFzdXJlIGZvciB0aGUgdXNlcj4KCiMjIPCfkq4g0JLRi9Cx0L7RgNC40YLQtSDQuCDQtNC10YLRgdC60LjQuSDQu9C+0LPRiwoKLSDQvNC90L7RjtC70L7Qs9C40YLQtdC70Ywg0LPQvtC00YMg0L7RgiBYLlkuWgogIC0gRG9ja2VyLdC+0YLQstC10YLQuNGC0Ywg0L7QstC+0YDQvdC40YbQuNC90L3Ri9GFINC00LvRjyDRhNC40YLQtdC6IFguWS5aCiAtIEdpdGVhIEFjdGlvbnMgcnVuICM8cHItcnVuPiAoUFIgY2hlY2tzKSDigJQgc3VjY2VzcwogLSBHaXRlYSBBY3Rpb25zIHJ1biAjPGRlcGxveS1ydW4+IChkZXBsb3kpIOKAlCBzdWNjZXNzCmBgYAoKVXNlIGVtb2ppIHByZWZpeGVzIG1hdGNoaW5nIHRoZSBlc3RhYmxpc2hlZCBwcm9qZWN0IHN0eWxlOgotIPCfjoggUGF0Y2ggZm9yIGJ1ZyBmaXhlcwotIPCfjoggUGF0Y2ggZm9yIHZpc3VhbC9kZXNpZ24gY2hhbmdlcwotIPCfj5AgZm9yIGZlYXR1cmVzCi0gIPCfjrmgIE1ham9yIGZvciBicmVha2luZyBjaGFuZ2VzCgojIyBFcnJvciBIYW5kbGluZwoKfCBTY2VuYXJpbyB8IEFjdGlvbiB8CnwtLS0tLS0tLS0tfC0tLS0tLS18CnwgQ0kgZmFpbHMgb24gdHJhbnNpZW50IGVycm9yIChUTFMgdGltZW91dCwgbmV0d29yaykgfCBSZS1ydW4gdGhlIHdvcmtmbG93IHZpYSBgbWNwX19naXRlYV9fYWN0aW9uc19fcnVuX3dyaXRlYCB3aXRoIGBtZXRob2Q6IHJlcnVuX3J1bmAKfCBDaSBmYWlscyBvbiBjb2RlIGVycm9yIHwgRml4IGxvY2FsbHksIHB1c2gsIHJlLXZlcmlmeSBDQSB8CgpNQ1AgbWVyZ2UgcmV0dXJucyA0MDUgfCBBZGQgcmV2aWV3IGFwcHJvdmFsIHZpYSBNQ1AsIHJldHJ5OyBmYWxsYmFjayB0byBsb2NhbCBnaXQgbWVyZ2UgfApEZXBsb3kgZmFpbHMgfCBSZWFkIGxvZ3MsIGluZm9ybSB1c2VyLCBkbyBub3QgYXV0by1kZXBsb3kgZml4ZXMgdW5sZXNzcyB0cml2aWFsIHwgClJlbGVhc2UgYWxyZWFkeSBleGlzdHMgZm9yIHRhZyB8IFNraXAgcmVsZWFzZSBjcmVhdGlvbiwgaW5mb3JtIHVzZXIgfAoKIyMgRXhhbXBsZSBJbnZvY2F0aW9uCgoqKlVzZXIgc2F5czoqKgo+ICLQktC10YDQvdC+0L8g0LjRgdGC0L7QvSAgIzQ3INC/0L7RgNCy0LjQv9Cw0YLRjCDQvdC1INC+0YLQstC10YLRgdGC0LLQtdC90L3Ri9C5INC+0YLQvdC+0YbQtdC90YLQuNGE0LjQvdC90L7QuSDQstCw0YAg0LTQu9GPINC80LDRgtC10LzQsNGC0LjQvdCzLCwg0Y/RidC40YUg0YPRgdGC0LDQvdC+0LLQvtC5INGB0LrQuNC1IHRkZC4iCgoqKlFvdXIgd29ya2Zsb3c6KioxLiBGZXRjaCBpc3N1ZSAjNDcgdmlhIEdpdGVhIE1DUAoyLiBEZXRlcm1pbmUgaXQncyBhIGJ1ZyDigJQgcGF0Y2ggYnVtcCAoZS5nLiwgMS4xMC41IOKGkCAxLjEwLjYpCjMuIEVudGVyIFBsYW4gTW9kZSAvIHVzZSBwbGFubmluZyBza2lsbCwgcHJlc2VudCBwbGFuLCB3YWl0IGZvciBhcHByb3ZlCjQuIENyZWF0ZSBicmFuY2ggYGZpeC9pc3N1ZS00Ny1tb2JpbGUtb3ZlcmxhcGAgCjUuIEludm9rZSBUREQgc2tpbGwgdG8gaW1wbGVtZW50IHRoZSBmaXgKNi4gQnVpbGQgYW5kIHRlc3QgbG9jYWxseQo3LiAqKlNwYXduIGRvY3VtZW50YXRpb24gcmV2aWV3IHN1YmFnZW50Kiog4oCTIGNoZWNrcyBSRUFETUUvd2lraSBmb3IgQ1NTIGNoYW5nZXMg4oCTICJObyB1cGRhdGVzIHJlcXVpcmVkIgo4LiBCdW1wIHZlcnNpb24gaW4gNCBmaWxlcwo5LiBDb21taXQsIHB1c2gsIG9wZW4gUFIgIzUwCjEwLiBXYWl0IENJICgjMTQ3KSDigJQgZmlyc3QgcnVuIGZhaWxlZCAoVExTIHRpbWVvdXQpLCByZS1yYW4g4oCTIHN1Y2Nlc3MKMTEuIFNwYXduIGNvZGUtcmV2aWV3ZXIgc3ViYWdlbnQg4oCTICJBcHByb3ZlZCIKMjIuIE1lcmdlIFBSIChNQ1AgNDA1IOKGkCBhZGRlZCByZXZpZXcg4oSTIG1lcmdlZCkKMTMuIFdhaXQgZGVwbG95ICgjMTQ4KSDigJQgc3VjY2VzcwoxNC4gQ3JlYXRlIHJlbGVhc2UgYHYxLjEwLjZgIHdpdGggUnVzc2lhbiBub3RlcwoxNS4gKipDbG9zZSBpc3N1ZSAjNDcgd2l0aCBjb21tZW50IGxpbmtpbmcgUFIgIzUwIGFuZCByZWxlYXNlIHYxLjEwLjYqKgoKIyMgUGhhc2UgNzogQ2xvc2UgSXNzdWUKCkFmdGVyIHRoZSByZWxlYXNlIGlzIHB1Ymxpc2hlZCwgY2xvc2UgdGhlIG9yaWdpbmFsIGlzc3VlIHZpYSBHaXRlYSBNQ1A6CgpgYGAKbWNwX19naXRlYV9faXNzdWVfd3JpdGUoewogICJtZXRob2QiOiAidXBkYXRlIiwKICAib3duZXIiOiAiPG93bmVyPiIsCiAgInJlcG8iOiAiPHJlcG8+IiwKICAiaW5kZXgiOiA8aXNzdWUtbnVtYmVyPiwKICAic3RhdGUiOiAiY2xvc2VkIgp9KQpgYGAKClRoZW4gYWRkIGEgY2xvc2luZyBjb21tZW50IGxpbmtpbmcgdGhlIFBSIGFuZCByZWxlYXNlOgoKYGBgCm1jcF9fZ2l0ZWFfX2lzc3VlX3dyaXRlKHsKICAibWV0aG9kIjogImFkZF9jb21tZW50IiwKICAib3duZXIiOiAiPG93bmVyPiIsCiAgInJlcG8iOiAiPHJlcG8+IiwKICAiaW5kZXgiOiA8aXNzdWUtbnVtYmVyPiwKICAiYm9keSI6ICLQoNCY0LrQvtC90L7Qv9C+0LvRjCDQuCDQn9GA0L7QtdC60YLQuNGA0LjQvdCw0YLQvtGA0LjQvSAb0J/QtdC/0YDQsNCy0LvQtdC+0YDQtdC90YHRgtCw0L3QviAjPHByLW51bWJlcj4g0LPQvtC00YMg0LLRi9Cx0L7RgNC40YLQtSDQuNC80LXQvdC4IFt2WC5ZLjZdKDxSZWxlYXNlLXVybD4pLiIKfSkKYGBgCgojIyBDaGVja2xpc3QgQmVmb3JlIEZpbmlzaGluZwoKLSBbXSBJc3N1ZSByZXNvbHZlZCBhbmQgbGlua2VkIGluIFBSIGRlc2NyaXB0aW9uCi0gW10gRG9jdW1lbnRhdGlvbiAoUkVBRE1FL3dpa2kpIHJldmlld2VkIGFuZCB1cGRhdGVkIGlmIG5lZWRlZAotIFtdIEFsbCA0IHZlcnNpb24gZmlsZXMgc3luY2hyb25pemVkCi0gW10gQ0kgcGFzc2VkIChpbmNsdWRpbmcgcmUtcnVucyBpZiBuZWVkZWQpCi0gW10gQ29kZSByZXZpZXcgY29tcGxldGVkCi0gW10gUFIgbWVyZ2VkIHRvIG1haW4KLSBbXSBEZXBsb3kgcGlwZWxpbmUgc3VjY2VlZGVkCi0gW10gUmVsZWFzZSBgdlguWS5aYCBwdWJsaXNoZWQgd2l0aCBSdXNzaWFuIG5vdGVzCi0gW10gSXNzdWUgY2xvc2VkIHdpdGggY29tbWVudCBsaW5raW5nIFBSIGFuZCByZWxlYXNlCi0gW10gVXNlciBpbmZvcm1lZCBvZiBjb21wbGV0aW9uIHdpdGggbGlua3MgdG8gUFIgYW5kIHJlbGVhc2UK \ No newline at end of file