[COMMIT] Improve the algorithmic complexity of #'concat, move #'concatenate to C.
"Stephen J. Turnbull" <[email protected]> Sat, 2 Jul 2016 02:59:41 +0900
| Newsgroups | gmane.emacs.xemacs.patches |
|---|---|
| Message-ID | <[email protected]> |
QWlkYW4gS2Vob2Ugd3JpdGVzOgogPiAKID4gQVBQUk9WRSBDT01NSVQKID4gCiA+IE5PVEU6IFRo aXMgcGF0Y2ggaGFzIGJlZW4gY29tbWl0dGVkLgogPiAKID4gIyBIRyBjaGFuZ2VzZXQgcGF0Y2gK ID4gIyBVc2VyIEFpZGFuIEtlaG9lIDxrZWhvZWFAcGFyaGFzYXJkLm5ldD4KID4gIyBEYXRlIDE0 NjcyNDM2OTkgLTM2MDAKID4gIyAgICAgIFRodSBKdW4gMzAgMDA6NDE6MzkgMjAxNiArMDEwMAog PiAjIE5vZGUgSUQgMTdhM2M2YjUyZGZkYzllZDUzYmZhMzE0M2QwZWI1NjVjZGZjNzM3NwogPiAj IFBhcmVudCAgY2JlMTA3MTQxYWZlNWE3ZTA4YWZiYmNiNmNkNTQ1NzkzZTM2YWMwNgogPiBJbXBy b3ZlIHRoZSBhbGdvcml0aG1pYyBjb21wbGV4aXR5IG9mICMnY29uY2F0LCBtb3ZlICMnY29uY2F0 ZW5hdGUKID4gdG8gQy4KClRoaXMgYnJva2UgdGhpbmdzIGJhZGx5IGZvciBtZTsgSSBjYW4ndCBl dmVuIHJlYWQgaW4gbXkgSU5CT1ggaW4gVk0gLS0KWEVtYWNzIGNyYXNoZXMuICBJJ2xsIHRyeSB0 byBnZXQgYmFjayB0byB5b3Ugd2l0aCBtb3JlIGRldGFpbHMKdG9tb3Jyb3csIGJ1dCBpdCdzIGEg Y3Jhc2ggLS0gaWYgeW91IGNhbid0IGZpeCBpbW1lZGlhdGVseSB5b3Ugc2hvdWxkCmJhY2sgaXQg b3V0LgoKU3RldmUKClAuUy4gVW5mb3J0dW5hdGVseSwgSSBjYW4ndCByZXBlYXQgdGhlIGNyYXNo IHVuZGVyIHRoZSBkZWJ1Z2dlci4gIEkKc3VzcGVjdCBpdCdzIGJlY2F1c2UgSSd2ZSB3b3JrZWQg d2l0aCB0aGUgbWFpbCBmb2xkZXIuICBIZXJlJ3MgdGhlCmZpcnN0IGNyYXNoLCBmcm9tIHRoZSB0 ZXJtaW5hbCBzY3JvbGxiYWNrIGJ1ZmZlcjoKCkZhdGFsIGVycm9yOiBhc3NlcnRpb24gZmFpbGVk LCBmaWxlIC9Vc2Vycy9zdGV2ZS9zcmMvWEVtYWNzLzIxLjUvcHJpc3RpbmUvc3JjL2V4dGVudHMu YywgbGluZSAxODU0LCBmcm9tID49IGJ1ZmZlcl9vcl9zdHJpbmdfYWJzb2x1dGVfYmVnaW5fYnl0 ZSAob2JqKSAmJiBmcm9tIDw9IGJ1ZmZlcl9vcl9zdHJpbmdfYWJzb2x1dGVfZW5kX2J5dGUgKG9i aikgJiYgdG8gPj0gYnVmZmVyX29yX3N0cmluZ19hYnNvbHV0ZV9iZWdpbl9ieXRlIChvYmopICYm IHRvIDw9IGJ1ZmZlcl9vcl9zdHJpbmdfYWJzb2x1dGVfZW5kX2J5dGUgKG9iaikKCkZhdGFsIGVy cm9yICg2KS4KCllvdXIgZmlsZXMgaGF2ZSBiZWVuIGF1dG8tc2F2ZWQuClVzZSBgTS14IHJlY292 ZXItc2Vzc2lvbicgdG8gcmVjb3ZlciB0aGVtLgoKWW91ciB2ZXJzaW9uIG9mIFhFbWFjcyB3YXMg ZGlzdHJpYnV0ZWQgd2l0aCBhIFBST0JMRU1TIGZpbGUgdGhhdCBtYXkgZGVzY3JpYmUKeW91ciBj cmFzaCwgYW5kIHdpdGggbHVjayBhIHdvcmthcm91bmQuICBQbGVhc2UgY2hlY2sgaXQgZmlyc3Qs IGJ1dCBkbyByZXBvcnQKdGhlIGNyYXNoIGFueXdheS4KClBsZWFzZSByZXBvcnQgdGhpcyBidWcg YnkgaW52b2tpbmcgTS14IHJlcG9ydC1lbWFjcy1idWcsIG9yIGJ5IHNlbGVjdGluZwpgU2VuZCBC dWcgUmVwb3J0JyBmcm9tIHRoZSBIZWxwIG1lbnUuICBJZiB0aGF0IHdvbid0IHdvcmssIHNlbmQg b3JkaW5hcnkKZW1haWwgdG8gYHhlbWFjcy1iZXRhQHhlbWFjcy5vcmcnLiAgKk1BS0UgU1VSRSog dG8gaW5jbHVkZSB0aGlzIGVudGlyZQpvdXRwdXQgZnJvbSB0aGlzIGNyYXNoLCBlc3BlY2lhbGx5 IGluY2x1ZGluZyB0aGUgTGlzcCBiYWNrdHJhY2UsIGFzIHdlbGwgYXMKdGhlIFhFbWFjcyBjb25m aWd1cmF0aW9uIGZyb20gTS14IGRlc2NyaWJlLWluc3RhbGxhdGlvbiAob3IgZXF1aXZhbGVudGx5 LAp0aGUgZmlsZSBgSW5zdGFsbGF0aW9uJyBpbiB0aGUgdG9wIG9mIHRoZSBidWlsZCB0cmVlKS4K CipQbGVhc2UqIHRyeSAqaGFyZCogdG8gb2J0YWluIGEgQyBzdGFjayBiYWNrdHJhY2U7IHdpdGhv dXQgaXQsIHdlIGFyZSB1bmxpa2VseQp0byBiZSBhYmxlIHRvIGFuYWx5emUgdGhlIHByb2JsZW0u ICBMb2NhdGUgdGhlIGNvcmUgZmlsZSBwcm9kdWNlZCBhcyBhIHJlc3VsdApvZiB0aGlzIGNyYXNo IChvZnRlbiBjYWxsZWQgYGNvcmUnIG9yIGBjb3JlLjxwcm9jZXNzLWlkPicsIGFuZCBsb2NhdGVk IGluCnRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggeW91IHN0YXJ0ZWQgWEVtYWNzIG9yIHlvdXIgaG9t ZSBkaXJlY3RvcnkpLCBhbmQgdHlwZQoKICBnZGIgL1VzZXJzL3N0ZXZlL3NyYy9YRW1hY3MvMjEu NS9wcmlzdGluZS8rZ2NjNS9zcmMveGVtYWNzIGNvcmUKCnRoZW4gdHlwZSBgd2hlcmUnIGF0IHRo ZSBkZWJ1Z2dlciBwcm9tcHQuICBObyBHREIgb24geW91ciBzeXN0ZW0/ICBZb3UgbWF5CmhhdmUg REJYLCBvciBYREIsIG9yIFNEQi4gIChBc2sgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBpZiB5 b3UgbmVlZCBoZWxwLikKSWYgbm8gY29yZSBmaWxlIHdhcyBwcm9kdWNlZCwgZW5hYmxlIHRoZW0g KG9mdGVuIHdpdGggYHVsaW1pdCAtYyB1bmxpbWl0ZWQnKQppbiBjYXNlIG9mIGZ1dHVyZSByZW9j Y3VycmVuY2Ugb2YgdGhlIGNyYXNoLgoKTGlzcCBiYWNrdHJhY2UgZm9sbG93czoKCiAgIyAodW53 aW5kLXByb3RlY3QgLi4uKQogICMgYmluZCAoc3cgd2lkdGggc3RyaW5nKQogIHZtLWxlZnQtanVz dGlmeS1zdHJpbmcoIj8/GyVH2pIbJUA/Pz8/GyVH4ZKkGyVAPz8/GyVH35IbJUA/Pz8/PyIgMTcp CiAgKHZtLXRydW5jYXRlLXN0cmluZyAodm0tbGVmdC1qdXN0aWZ5LXN0cmluZyAodm0tZGVjb2Rl LW1pbWUtZW5jb2RlZC13b3Jkcy1pbi1zdHJpbmcgKHZtLXN1LWludGVyZXN0aW5nLWZ1bGwtbmFt ZSB2bS1zdS1tZXNzYWdlKSkgMTcpIDE3KQogIChmb3JtYXQgIiVzICVzICVzICVzICVzLyVzICIg KHZtLWRlY29kZS1taW1lLWVuY29kZWQtd29yZHMtaW4tc3RyaW5nICh2bS1zdS1hdHRyaWJ1dGUt aW5kaWNhdG9ycyB2bS1zdS1tZXNzYWdlKSkgKHZtLXRydW5jYXRlLXN0cmluZyAodm0tbGVmdC1q dXN0aWZ5LXN0cmluZyAodm0tZGVjb2RlLW1pbWUtZW5jb2RlZC13b3Jkcy1pbi1zdHJpbmcgKHZt LXN1LWludGVyZXN0aW5nLWZ1bGwtbmFtZSB2bS1zdS1tZXNzYWdlKSkgMTcpIDE3KSAodm0tdHJ1 bmNhdGUtc3RyaW5nICh2bS1sZWZ0LWp1c3RpZnktc3RyaW5nICh2bS1kZWNvZGUtbWltZS1lbmNv ZGVkLXdvcmRzLWluLXN0cmluZyAodm0tc3UtbW9udGggdm0tc3UtbWVzc2FnZSkpIDMpIDMpICh2 bS1yaWdodC1qdXN0aWZ5LXN0cmluZyAodm0tZGVjb2RlLW1pbWUtZW5jb2RlZC13b3Jkcy1pbi1z dHJpbmcgKHZtLXN1LW1vbnRoZGF5IHZtLXN1LW1lc3NhZ2UpKSAyKSAodm0tcmlnaHQtanVzdGlm eS1zdHJpbmcgKHZtLWRlY29kZS1taW1lLWVuY29kZWQtd29yZHMtaW4tc3RyaW5nICh2bS1zdS1s aW5lLWNvdW50IHZtLXN1LW1lc3NhZ2UpKSA0KSAodm0tbGVmdC1qdXN0aWZ5LXN0cmluZyAodm0t ZGVjb2RlLW1pbWUtZW5jb2RlZC13b3Jkcy1pbi1zdHJpbmcgKHZtLXN1LWJ5dGUtY291bnQgdm0t c3UtbWVzc2FnZSkpIDUpKQogIChsaXN0IChxdW90ZSBudW1iZXIpICIgIiAocXVvdGUgbWFyaykg KGZvcm1hdCAiJXMgJXMgJXMgJXMgJXMvJXMgIiAodm0tZGVjb2RlLW1pbWUtZW5jb2RlZC13b3Jk cy1pbi1zdHJpbmcgKHZtLXN1LWF0dHJpYnV0ZS1pbmRpY2F0b3JzIHZtLXN1LW1lc3NhZ2UpKSAo dm0tdHJ1bmNhdGUtc3RyaW5nICh2bS1sZWZ0LWp1c3RpZnktc3RyaW5nICh2bS1kZWNvZGUtbWlt ZS1lbmNvZGVkLXdvcmRzLWluLXN0cmluZyAodm0tc3UtaW50ZXJlc3RpbmctZnVsbC1uYW1lIHZt LXN1LW1lc3NhZ2UpKSAxNykgMTcpICh2bS10cnVuY2F0ZS1zdHJpbmcgKHZtLWxlZnQtanVzdGlm eS1zdHJpbmcgKHZtLWRlY29kZS1taW1lLWVuY29kZWQtd29yZHMtaW4tc3RyaW5nICh2bS1zdS1t b250aCB2bS1zdS1tZXNzYWdlKSkgMykgMykgKHZtLXJpZ2h0LWp1c3RpZnktc3RyaW5nICh2bS1k ZWNvZGUtbWltZS1lbmNvZGVkLXdvcmRzLWluLXN0cmluZyAodm0tc3UtbW9udGhkYXkgdm0tc3Ut bWVzc2FnZSkpIDIpICh2bS1yaWdodC1qdXN0aWZ5LXN0cmluZyAodm0tZGVjb2RlLW1pbWUtZW5j b2RlZC13b3Jkcy1pbi1zdHJpbmcgKHZtLXN1LWxpbmUtY291bnQgdm0tc3UtbWVzc2FnZSkpIDQp ICh2bS1sZWZ0LWp1c3RpZnktc3RyaW5nICh2bS1kZWNvZGUtbWltZS1lbmNvZGVkLXdvcmRzLWlu LXN0cmluZyAodm0tc3UtYnl0ZS1jb3VudCB2bS1zdS1tZXNzYWdlKSkgNSkpIChxdW90ZSB0aHJl YWQtaW5kZW50KSAoZm9ybWF0ICJcIiVzXCJcbiIgKHZtLWRlY29kZS1taW1lLWVuY29kZWQtd29y ZHMtaW4tc3RyaW5nICh2bS1zdS1zdW1tYXJ5LXN1YmplY3Qgdm0tc3UtbWVzc2FnZSkpKSkKICBl dmFsKChsaXN0IChxdW90ZSBudW1iZXIpICIgIiAocXVvdGUgbWFyaykgKGZvcm1hdCAiJXMgJXMg JXMgJXMgJXMvJXMgIiAodm0tZGVjb2RlLW1pbWUtZW5jb2RlZC13b3Jkcy1pbi1zdHJpbmcgKHZt LXN1LWF0dHJpYnV0ZS1pbmRpY2F0b3JzIHZtLXN1LW1lc3NhZ2UpKSAodm0tdHJ1bmNhdGUtc3Ry aW5nICh2bS1sZWZ0LWp1c3RpZnktc3RyaW5nICh2bS1kZWNvZGUtbWltZS1lbmNvZGVkLXdvcmRz LWluLXN0cmluZyAodm0tc3UtaW50ZXJlc3RpbmctZnVsbC1uYW1lIHZtLXN1LW1lc3NhZ2UpKSAx NykgMTcpICh2bS10cnVuY2F0ZS1zdHJpbmcgKHZtLWxlZnQtanVzdGlmeS1zdHJpbmcgKHZtLWRl Y29kZS1taW1lLWVuY29kZWQtd29yZHMtaW4tc3RyaW5nICh2bS1zdS1tb250aCB2bS1zdS1tZXNz YWdlKSkgMykgMykgKHZtLXJpZ2h0LWp1c3RpZnktc3RyaW5nICh2bS1kZWNvZGUtbWltZS1lbmNv ZGVkLXdvcmRzLWluLXN0cmluZyAodm0tc3UtbW9udGhkYXkgdm0tc3UtbWVzc2FnZSkpIDIpICh2 bS1yaWdodC1qdXN0aWZ5LXN0cmluZyAodm0tZGVjb2RlLW1pbWUtZW5jb2RlZC13b3Jkcy1pbi1z dHJpbmcgKHZtLXN1LWxpbmUtY291bnQgdm0tc3UtbWVzc2FnZSkpIDQpICh2bS1sZWZ0LWp1c3Rp Znktc3RyaW5nICh2bS1kZWNvZGUtbWltZS1lbmNvZGVkLXdvcmRzLWluLXN0cmluZyAodm0tc3Ut Ynl0ZS1jb3VudCB2bS1zdS1tZXNzYWdlKSkgNSkpIChxdW90ZSB0aHJlYWQtaW5kZW50KSAoZm9y bWF0ICJcIiVzXCJcbiIgKHZtLWRlY29kZS1taW1lLWVuY29kZWQtd29yZHMtaW4tc3RyaW5nICh2 bS1zdS1zdW1tYXJ5LXN1YmplY3Qgdm0tc3UtbWVzc2FnZSkpKSkpCiAgIyBiaW5kICh2bS1zdS1t ZXNzYWdlIHZtLW1pbWUtcXAtZGVjb2Rlci1wcm9ncmFtIHZtLW1pbWUtYmFzZTY0LWRlY29kZXIt cHJvZ3JhbSBtYXRjaCBhbGlzdC12YXIgdG9rZW5pemUgbWVzc2FnZSBmb3JtYXQpCiAgdm0tc3Vt bWFyeS1zcHJpbnRmKCIlbiAlKiVhICUtMTcuMTdGICUtMy4zbSAlMmQgJTRsLyUtNWMgJUlcIiVz XCJcbiIgIzE9W1sjPG1hcmtlciBhdCAxMjYyNjcxOTkgaW4gSU5CT1ggMHgxOWZiZj4gIzxtYXJr ZXIgYXQgMTI2MjY3MjM1IGluIElOQk9YIDB4MTlmYzA+IG5pbCAjPG1hcmtlciBhdCAxMjYyNjk1 NTUgaW4gSU5CT1ggMHgxYTg5OT4gIzxtYXJrZXIgYXQgMTI3MTcyNDczIGluIElOQk9YIDB4MTlm YzE+ICM8bWFya2VyIGF0IDEyNzE3MjQ3NCBpbiBJTkJPWCAweDE5ZmMyPl0gWyIxNTA0IiAiMTUw NCIgbmlsIDEzNzM4MCBuaWwgIzI9Izo8PD4+ICM6PC0tIEZyb21fICIxNTA4IiAjPGJ1ZmZlciAi SU5CT1giPiBuaWwgKCM6PEI5RUJFREUyQTM2NjQ3OUVBRDhFMTE4ODJEMzk1N0M4QE1JTk9XQVBD PikgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCAoIzEjKSAjMiMgbmlsXSBbdCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWxdIFtuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgIj8/GyVH2pIbJUA/ Pz8/GyVH4ZKkGyVAPz8/GyVH35IbJUA/Pz8/PyIgIkxETjAzMTQ0QG5pZnR5LmNvbSIgIjxCOUVC RURFMkEzNjY0NzlFQUQ4RTExODgyRDM5NTdDOEBNSU5PV0FQQz4iIG5pbCAiPz8/Pz8/MTYwNzAz IiBuaWwgbmlsIG5pbCBuaWwgIjIwMTYwNjMwMTU6NDQ6MzciICI/Pz8/Pz8xNjA3MDMiIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmls IG5pbCBuaWxdIFtuaWwgIzo8dj4gbmlsIG5pbCBuaWwgbmlsXV0gdCkKICAjICh1bndpbmQtcHJv dGVjdCAuLi4pCiAgIyBiaW5kIChtKQogIHZtLXN1LXN1bW1hcnkoIzE9W1sjPG1hcmtlciBhdCAx MjYyNjcxOTkgaW4gSU5CT1ggMHgxOWZiZj4gIzxtYXJrZXIgYXQgMTI2MjY3MjM1IGluIElOQk9Y IDB4MTlmYzA+IG5pbCAjPG1hcmtlciBhdCAxMjYyNjk1NTUgaW4gSU5CT1ggMHgxYTg5OT4gIzxt YXJrZXIgYXQgMTI3MTcyNDczIGluIElOQk9YIDB4MTlmYzE+ICM8bWFya2VyIGF0IDEyNzE3MjQ3 NCBpbiBJTkJPWCAweDE5ZmMyPl0gWyIxNTA0IiAiMTUwNCIgbmlsIDEzNzM4MCBuaWwgIzI9Izo8 PD4+ICM6PC0tIEZyb21fICIxNTA4IiAjPGJ1ZmZlciAiSU5CT1giPiBuaWwgKCM6PEI5RUJFREUy QTM2NjQ3OUVBRDhFMTE4ODJEMzk1N0M4QE1JTk9XQVBDPikgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbCAoIzEjKSAjMiMgbmlsXSBbdCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIFtuaWwgbmls IG5pbCBuaWwgbmlsIG5pbCBuaWwgIj8/GyVH2pIbJUA/Pz8/GyVH4ZKkGyVAPz8/GyVH35IbJUA/ Pz8/PyIgIkxETjAzMTQ0QG5pZnR5LmNvbSIgIjxCOUVCRURFMkEzNjY0NzlFQUQ4RTExODgyRDM5 NTdDOEBNSU5PV0FQQz4iIG5pbCAiPz8/Pz8/MTYwNzAzIiBuaWwgbmlsIG5pbCBuaWwgIjIwMTYw NjMwMTU6NDQ6MzciICI/Pz8/Pz8xNjA3MDMiIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIFtuaWwgIzo8dj4gbmls IG5pbCBuaWwgbmlsXV0pCiAgIyBiaW5kIChtcCBtIHJvb3QpCiAgIyAodW53aW5kLXByb3RlY3Qg Li4uKQogICMgYmluZCAobW9kaWZpZWQgYnVmZmVyLXJlYWQtb25seSBkZWJ1ZyB0cmFjaykKICAj ICh1bndpbmQtcHJvdGVjdCAuLi4pCiAgIyBiaW5kIChtLWxpc3QgZG8tbW91c2UtdHJhY2sgbiBt b2R1bHVzIHN0YXJ0LXBvaW50KQogIHZtLWRvLXN1bW1hcnkobmlsKQogIHZtLWRvLW5lZWRlZC1z dW1tYXJ5LXJlYnVpbGQoKQogICMgYmluZCAoYikKICAjPGNvbXBpbGVkLWZ1bmN0aW9uIChmcm9t ICIvdXNyL2xvY2FsL3NoYXJlL3hlbWFjcy94ZW1hY3MtcGFja2FnZXMvbGlzcC92bS92bS1mb2xk ZXIuZWxjIikgKGIpICIuLi4oNTUpIiBbdm0tc3VtbWFyeS1idWZmZXIgdm0tdGhyZWFkLW9iYXJy YXkgdm0tc3VtbWFyeS1zaG93LXRocmVhZHMgdm0tdXNlLXRvb2xiYXIgdm0tYnVmZmVycy1uZWVk aW5nLXVuZG8tYm91bmRhcmllcyBiIGdldC1idWZmZXIgc3ltYm9sLW5hbWUgaW50ZXJuIGJ1ZmZl ci1uYW1lIHZtLWNoZWNrLWZvci1raWxsZWQtc3VtbWFyeSB2bS10b29sYmFyLXN1cHBvcnQtcG9z c2libGUtcCB2bS10b29sYmFyLXVwZGF0ZS10b29sYmFyIHZlY3RvcnAgdm0tYnVpbGQtdGhyZWFk cyBuaWwgdm0tZG8tbmVlZGVkLXJlbnVtYmVyaW5nIHZtLWRvLW5lZWRlZC1zdW1tYXJ5LXJlYnVp bGQgdm0tZG8tbmVlZGVkLW1vZGUtbGluZS11cGRhdGVdIDQgMHgyNTQ1PigjOklOQk9YKQogIG1h cGF0b21zKCM8Y29tcGlsZWQtZnVuY3Rpb24gKGZyb20gIi91c3IvbG9jYWwvc2hhcmUveGVtYWNz L3hlbWFjcy1wYWNrYWdlcy9saXNwL3ZtL3ZtLWZvbGRlci5lbGMiKSAoYikgIi4uLig1NSkiIFt2 bS1zdW1tYXJ5LWJ1ZmZlciB2bS10aHJlYWQtb2JhcnJheSB2bS1zdW1tYXJ5LXNob3ctdGhyZWFk cyB2bS11c2UtdG9vbGJhciB2bS1idWZmZXJzLW5lZWRpbmctdW5kby1ib3VuZGFyaWVzIGIgZ2V0 LWJ1ZmZlciBzeW1ib2wtbmFtZSBpbnRlcm4gYnVmZmVyLW5hbWUgdm0tY2hlY2stZm9yLWtpbGxl ZC1zdW1tYXJ5IHZtLXRvb2xiYXItc3VwcG9ydC1wb3NzaWJsZS1wIHZtLXRvb2xiYXItdXBkYXRl LXRvb2xiYXIgdmVjdG9ycCB2bS1idWlsZC10aHJlYWRzIG5pbCB2bS1kby1uZWVkZWQtcmVudW1i ZXJpbmcgdm0tZG8tbmVlZGVkLXN1bW1hcnktcmVidWlsZCB2bS1kby1uZWVkZWQtbW9kZS1saW5l LXVwZGF0ZV0gNCAweDI1NDU+IFswIDAgMCAwIDAgMCAwIDAgMCAwIDAgIzpJTkJPWCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDBdKQogICMgKHVud2luZC1wcm90ZWN0IC4uLikKICB2 bS11cGRhdGUtc3VtbWFyeS1hbmQtbW9kZS1saW5lKCkKICAjIGJpbmQgKHJhaXNlIGRpc3BsYXkp CiAgdm0tc3VtbWFyaXplKHQgbmlsKQogICMgYmluZCAoZnVsbC1zdGFydHVwIHJldmlzaXRpbmcg c2V0LXZtLW1vZGUgZ29iYmxlLWhlYWRlcnMgcHJlc2VydmUtYXV0by1zYXZlLWZpbGUgZm9sZGVy LWJ1ZmZlciBmb2xkZXItbmFtZSBhY2NvdW50LW5hbWUgcmVtb3RlLXNwZWMgdG90YWxzLWJsdXJi KQogIGJ5dGUtY29kZSgiLi4uIiBbdG90YWxzLWJsdXJiIHNldC12bS1tb2RlIGZ1bGwtc3RhcnR1 cCByZW1vdGUtc3BlYyBhY2Nlc3MtbWV0aG9kIGZvbGRlciBidWZmZXJwIHN0cmluZy1tYXRjaCBp bWFwIHBvcCBleHBhbmQtZmlsZS1uYW1lIG5pbCB2bS1wb3AtZmluZC1uYW1lLWZvci1zcGVjICJQ T1AiIHZtLXBvcC1maW5kLWNhY2hlLWZpbGUtZm9yLXNwZWMgMyB2bS1pbWFwLXBhcnNlLXNwZWMt dG8tbGlzdCAiaW5ib3giIHZtLWltYXAtYWNjb3VudC1uYW1lLWZvci1zcGVjIHZtLWltYXAtbWFr ZS1maWxlbmFtZS1mb3Itc3BlYyB2bS1yZWFkLWZvbGRlciB2bS1tb2RlIHZtLXRodW5kZXJiaXJk LWZvbGRlci1wIGJ1ZmZlci1maWxlLW5hbWUgc2V0LWJ1ZmZlci1tdWx0aWJ5dGUgdm0tc2V0dXAt eGVtYWNzLWZvbGRlci1jb2Rpbmctc3lzdGVtIHZtLXNldHVwLWZzZmVtYWNzLWZvbGRlci1jb2Rp bmctc3lzdGVtIHZtLWNoZWNrLWZvci1raWxsZWQtc3VtbWFyeSB2bS1jaGVjay1mb3Ita2lsbGVk LXByZXNlbnRhdGlvbiBidWZmZXItbW9kaWZpZWQtcCAwIGZpbGUtbmV3ZXItdGhhbi1maWxlLXAg bWFrZS1hdXRvLXNhdmUtZmlsZS1uYW1lIGRlZmF1bHQtdmFsdWUgdm0tZm9sZGVyLXJlYWQtb25s eSBidWZmZXItZGlzYWJsZS11bmRvIGFiYnJldi1tb2RlIGF1dG8tZmlsbC1tb2RlIHZtLWZzZmVt YWNzLW5vbm11bGUtZGlzcGxheS04Yml0LWNoYXJzIHZtLW1vZGUtaW50ZXJuYWwgdm0tcmVhZC1p bmRleC1maWxlLW1heWJlIHZtLXJlZ2lzdGVyLWZvbGRlci1nYXJiYWdlIHZtLWtpbGwtZm9sZGVy LWltYXAtc2Vzc2lvbiB2bS1hc3NpbWlsYXRlLW5ldy1tZXNzYWdlcyA6cmVhZC1hdHRyaWJ1dGVz IHQgOmdvYmJsZS1vcmRlciA6cnVuLWhvb2tzIHZtLXN0dWZmLWZvbGRlci1kYXRhIDppbnRlcmFj dGl2ZSAuLi5dIDExKQogICMgKGNhdGNoIGRvbmUgLi4uKQogICMgYmluZCAoanVzdC12aXNpdCBy ZWxvYWQgYWNjZXNzLW1ldGhvZCBpbnRlcmFjdGl2ZSByZWFkLW9ubHkgIzotLXJlc3QtLTc4MzAy IGZvbGRlcikKICB2bSgpCiAgIyBiaW5kIChhcmcpCiAgY29tbWFuZC1saW5lLWRvLWZ1bmNhbGwo Ii1mIikKICAjIGJpbmQgKGRpciBmaWxlLWNvdW50IGxpbmUgZW5kLW9mLW9wdGlvbnMgZmlsZS1w IGFyZyB0ZW0pCiAgY29tbWFuZC1saW5lLTEoKQogICMgYmluZCAoY29tbWFuZC1saW5lLWFyZ3Mt bGVmdCkKICBjb21tYW5kLWxpbmUoKQogICMgKHVud2luZC1wcm90ZWN0IC4uLikKICBjYWxsLXdp dGgtY29uZGl0aW9uLWhhbmRsZXIoIzxjb21waWxlZC1mdW5jdGlvbiAoZnJvbSAiL1VzZXJzL3N0 ZXZlL3NyYy9YRW1hY3MvMjEuNS9wcmlzdGluZS9saXNwL3N0YXJ0dXAuZWxjIikgKCZvcHRpb25h bCBlcnJvci1kYXRhKSAiLi4uKDUwKSIgW2F1dG8tc2F2ZS1saXN0LWZpbGUtbmFtZSAjOm50bC1i dWZmZXIgd2luZG93LXNldHVwLWhvb2sgdGVybS1zZXR1cC1ob29rIGF1dG8tc2F2ZS1saXN0LWZp bGUtcHJlZml4IGRlZmF1bHQtZGlyZWN0b3J5IGFiYnJldmlhdGUtZmlsZS1uYW1lIGV4cGFuZC1m aWxlLW5hbWUgZm9ybWF0ICIlcyVkLSVzIiBlbWFjcy1waWQgc3lzdGVtLW5hbWUgcnVuLWhvb2tz IGVtYWNzLXN0YXJ0dXAtaG9vayBuaWwgZnJhbWUtbm90aWNlLXVzZXItc2V0dGluZ3NdIDYgMHg2 YTA+IGNvbW1hbmQtbGluZSkKICAjIGJpbmQgKCM6bnRsLWJ1ZmZlcikKICBub3JtYWwtdG9wLWxl dmVsKCkKICAjIChjb25kaXRpb24tY2FzZSAuLi4gLiBlcnJvcikKICAjIChjYXRjaCB0b3AtbGV2 ZWwgLi4uKQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f ClhFbWFjcy1QYXRjaGVzIG1haWxpbmcgbGlzdApYRW1hY3MtUGF0Y2hlc0B4ZW1hY3Mub3JnCmh0 dHA6Ly9saXN0cy54ZW1hY3Mub3JnL21haWxtYW4vbGlzdGluZm8veGVtYWNzLXBhdGNoZXMK