From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Landley Subject: [PATCH 1/3]: Replace kernel/timeconst.pl with kernel/timeconst.sh Date: Fri, 2 Jan 2009 02:13:30 -0600 Message-ID: <200901020213.30658.rob@landley.net> References: <200901020207.30359.rob@landley.net> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <200901020207.30359.rob@landley.net> Content-Disposition: inline Sender: linux-embedded-owner@vger.kernel.org List-ID: Content-Type: text/plain; charset="us-ascii" To: Embedded Linux mailing list Cc: linux-kernel@vger.kernel.org, Andrew Morton , "H. Peter Anvin" , Sam Ravnborg RnJvbTogUm9iIExhbmRsZXkgPHJvYkBsYW5kbGV5Lm5ldD4KClJlcGxhY2Uga2VybmVsL3RpbWVj b25zdC5wbCB3aXRoIGtlcm5lbC90aW1lY29uc3Quc2guICBUaGUgbmV3IHNoZWxsIHNjcmlwdApp cyBtdWNoIHNpbXBsZXIsIGFib3V0IDEvNCB0aGUgc2l6ZSwgYW5kIHJ1bnMgb24gUmVkIEhhdCA5 IGZyb20gMjAwMy4KClBldGVyIEFudmluIGFkZGVkIHRoaXMgcGVybCB0byAyLjYuMjUuICBCZWZv cmUgdGhhdCwgdGhlIGtlcm5lbCBoYWQgbmV2ZXIKcmVxdWlyZWQgcGVybCB0byBidWlsZC4KClNp Z25lZC1vZmYtYnk6IFJvYiBMYW5kbGV5IDxyb2JAbGFuZGxleS5uZXQ+Ci0tLQoKIGtlcm5lbC9N YWtlZmlsZSAgICAgfCAgICA0IAoga2VybmVsL3RpbWVjb25zdC5wbCB8ICAzNzggLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBrZXJuZWwvdGltZWNvbnN0LnNoIHwg ICA5MSArKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDM4MCBk ZWxldGlvbnMoLSkKCmRpZmYgLXIgZDBjNzYxMWRjZmQ2IGtlcm5lbC9NYWtlZmlsZQotLS0gYS9r ZXJuZWwvTWFrZWZpbGUJVHVlIERlYyAzMCAxNzo0ODoyNSAyMDA4IC0wODAwCisrKyBiL2tlcm5l bC9NYWtlZmlsZQlGcmkgSmFuIDAyIDAwOjEwOjQ0IDIwMDkgLTA2MDAKQEAgLTExNSw3ICsxMTUs NyBAQAogJChvYmopL3RpbWUubzogJChvYmopL3RpbWVjb25zdC5oCiAKIHF1aWV0X2NtZF90aW1l Y29uc3QgID0gVElNRUMgICAkQAotICAgICAgY21kX3RpbWVjb25zdCAgPSAkKFBFUkwpICQ8ICQo Q09ORklHX0haKSA+ICRACisgICAgICBjbWRfdGltZWNvbnN0ICA9ICQoQ09ORklHX1NIRUxMKSAk PCAkKENPTkZJR19IWikgPiAkQAogdGFyZ2V0cyArPSB0aW1lY29uc3QuaAotJChvYmopL3RpbWVj b25zdC5oOiAkKHNyYykvdGltZWNvbnN0LnBsIEZPUkNFCiskKG9iaikvdGltZWNvbnN0Lmg6ICQo c3JjKS90aW1lY29uc3Quc2ggRk9SQ0UKIAkkKGNhbGwgaWZfY2hhbmdlZCx0aW1lY29uc3QpCi0t LSAvZGV2L251bGwJMTk2OS0xMi0zMSAwMDowMDowMC4wMDAwMDAwMDAgLTA2MDAKKysrIGhnL2tl cm5lbC90aW1lY29uc3Quc2gJMjAwOS0wMS0wMSAyMzo1MzoxNy4wMDAwMDAwMDAgLTA2MDAKQEAg LTAsMCArMSw5MSBAQAorIyEvYmluL2Jhc2gKKworaWYgWyAkIyAtbmUgMSBdCit0aGVuCisJZWNo byAiVXNhZ2U6IHRpbWVjb25zdC5zaCBIWiIKKwlleGl0IDEKK2ZpCisKK0haPSQxCisKKyMgU2Fu aXR5IHRlc3Q6IGV2ZW4gdGhlIHNoZWxsIGluIFJlZCBIYXQgOSAoY2lyY2EgMjAwMykgc3VwcG9y dGVkIDY0IGJpdCBtYXRoLgorCitbICQoKDE8PDMyKSkgLWx0IDAgXSAmJiBleGl0IDEKKworIyBP dXRwdXQgc3RhcnQgb2YgaGVhZGVyIGZpbGUKKworY2F0IDw8IEVPRgorLyogQXV0b21hdGljYWxs eSBnZW5lcmF0ZWQgYnkga2VybmVsL3RpbWVjb25zdC5zaCAqLworLyogQ29udmVyc2lvbiBjb25z dGFudHMgZm9yIEhaID09ICRIWiAqLworCisjaWZuZGVmIEtFUk5FTF9USU1FQ09OU1RfSAorI2Rl ZmluZSBLRVJORUxfVElNRUNPTlNUX0gKKworI2luY2x1ZGUgPGxpbnV4L3BhcmFtLmg+CisjaW5j bHVkZSA8bGludXgvdHlwZXMuaD4KKworI2lmIEhaICE9ICRIWgorI2Vycm9yICJrZXJuZWwvdGlt ZWNvbnN0LmggaGFzIHRoZSB3cm9uZyBIWiB2YWx1ZSEiCisjZW5kaWYKKworRU9GCisKKyMgRm9y IGJvdGggTWlsaXNlY29uZHMgYW5kIE1pY3Jvc2Vjb25kcworCitmb3IgaSBpbiAiTVNFQyAxMDAw IiAiVVNFQyAxMDAwMDAwIgorZG8KKwlOQU1FPSQoZWNobyAkaSB8IGF3ayAne3ByaW50ICQxfScp CisJUEVSSU9EPSQoZWNobyAkaSB8IGF3ayAne3ByaW50ICQyfScpCisKKwkjIEZpbmQgZ3JlYXRl c3QgY29tbW9uIGRlbm9taW5hdG9yICh1c2luZyBFdWNsaWQncyBhbGdvcml0aG0pCisKKwlBPSRI WgorCUI9JFBFUklPRAorCisJd2hpbGUgWyAkQiAtbmUgMCBdCisJZG8KKwkJQz0kKCgkQSUkQikp CisJCUE9JEIKKwkJQj0kQworCWRvbmUKKworCUdDRD0kQQorCisJIyBEbyB0aGlzIGZvciBlYWNo IGRpcmVjdGlvbiAoSFpfVE9fUEVSSU9EIGFuZCBQRVJJT0RfVE9fSFopCisKKwlmb3IgRElSRUNU SU9OIGluIDAgMQorCWRvCisJCWlmIFsgJERJUkVDVElPTiAtZXEgMCBdCisJCXRoZW4KKwkJCUNP TlZFUlQ9IkhaX1RPXyR7TkFNRX0iCisJCQlGUk9NPSRIWgorCQkJVE89JFBFUklPRAorCQllbHNl CisJCQlDT05WRVJUPSIke05BTUV9X1RPX0haIgorCQkJRlJPTT0kUEVSSU9ECisJCQlUTz0kSFoK KwkJZmkKKworCQkjIEhvdyBtYW55IHNoaWZ0IGJpdHMgZ2l2ZSAzMiBiaXRzIG9mIHNpZ25pZmlj YW50IGRhdGE/CisKKwkJU0hJRlQ9MAorCQl3aGlsZSBbICQoKCAoKCRUTzw8JFNISUZUKSskRlJP TS0xKS8kRlJPTSApKSAtbHQgJCgoMTw8MzEpKSBdCisJCWRvCisJCQlTSElGVD0kKCggJFNISUZU KzEgKSkKKwkJZG9uZQorCisJCU1VTDMyPSQoKCAoKCRUTzw8JFNISUZUKSskRlJPTS0xKS8kRlJP TSApKQorCQlNVUwzMj0kKHByaW50ZiAleCAkTVVMMzIpCisJCWVjaG8gIiNkZWZpbmUgJHtDT05W RVJUfV9NVUwzMglVNjRfQygweCRNVUwzMikiCisJCUFESjMyPSQoKCRGUk9NLyRHQ0QpKQorCQlB REozMj0kKCggKCgkQURKMzItMSk8PCRTSElGVCkvJEFESjMyICkpCisJCUFESjMyPSQocHJpbnRm ICV4ICRBREozMikKKwkJZWNobyAiI2RlZmluZSAke0NPTlZFUlR9X0FESjMyCVU2NF9DKDB4JEFE SjMyKSIKKwkJZWNobyAiI2RlZmluZSAke0NPTlZFUlR9X1NIUjMyCSRTSElGVCIKKwkJZWNobyAi I2RlZmluZSAke0NPTlZFUlR9X05VTQkJVTY0X0MoJCgoJFRPLyRHQ0QpKSkiCisJCWVjaG8gIiNk ZWZpbmUgJHtDT05WRVJUfV9ERU4JCVU2NF9DKCQoKCRGUk9NLyRHQ0QpKSkiCisJZG9uZQorZG9u ZQorCitlY2hvCitlY2hvICIjZW5kaWYgLyogS0VSTkVMX1RJTUVDSE9OU1RfSCAqLyIKLS0tIGhn L2tlcm5lbC90aW1lY29uc3QucGwJMjAwOC0xMS0yMiAxOTowOToxMy4wMDAwMDAwMDAgLTA2MDAK KysrIC9kZXYvbnVsbAkxOTY5LTEyLTMxIDAwOjAwOjAwLjAwMDAwMDAwMCAtMDYwMApAQCAtMSwz NzggKzAsMCBAQAotIyEvdXNyL2Jpbi9wZXJsCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jCi0jICAgQ29w eXJpZ2h0IDIwMDctMjAwOCByUGF0aCwgSW5jLiAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQKLSMKLSMg ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgTGludXgga2VybmVsLCBhbmQgaXMgbWFkZSBhdmFp bGFibGUgdW5kZXIKLSMgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gMiBvciAoYXQgeW91cgotIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb247 IGluY29ycG9yYXRlZCBoZXJlaW4gYnkgcmVmZXJlbmNlLgotIwotIyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot IwotCi0jCi0jIFVzYWdlOiB0aW1lY29uc3QucGwgSFogPiB0aW1lY29uc3QuaAotIwotCi0jIFBy ZWNvbXB1dGVkIHZhbHVlcyBmb3Igc3lzdGVtcyB3aXRob3V0IE1hdGg6OkJpZ0ludAotIyBHZW5l cmF0ZWQgYnk6Ci0jIHRpbWVjb25zdC5wbCAtLWNhbiAyNCAzMiA0OCA2NCAxMDAgMTIyIDEyOCAy MDAgMjUwIDI1NiAzMDAgNTEyIDEwMDAgMTAyNCAxMjAwCi0lY2FubmVkX3ZhbHVlcyA9ICgKLQky NCA9PiBbCi0JCScweGE2YWFhYWFiJywnMHgyYWFhYWFhJywyNiwKLQkJMTI1LDMsCi0JCScweGM0 OWJhNWU0JywnMHgxZmJlNzZjOGI0JywzNywKLQkJMywxMjUsCi0JCScweGEyYzJhYWFiJywnMHhh YWFhJywxNiwKLQkJMTI1MDAwLDMsCi0JCScweGM5NTM5Yjg5JywnMHg3ZmZmYmNlNDIxN2QnLDQ3 LAotCQkzLDEyNTAwMCwKLQldLCAzMiA9PiBbCi0JCScweGZhMDAwMDAwJywnMHg2MDAwMDAwJywy NywKLQkJMTI1LDQsCi0JCScweDgzMTI2ZTk4JywnMHhmZGYzYjY0NWEnLDM2LAotCQk0LDEyNSwK LQkJJzB4ZjQyNDAwMDAnLCcweDAnLDE3LAotCQkzMTI1MCwxLAotCQknMHg4NjM3YmQwNicsJzB4 M2ZmZjc5Yzg0MmZhJyw0NiwKLQkJMSwzMTI1MCwKLQldLCA0OCA9PiBbCi0JCScweGE2YWFhYWFi JywnMHg2YWFhYWFhJywyNywKLQkJMTI1LDYsCi0JCScweGM0OWJhNWU0JywnMHhmZGYzYjY0NWEn LDM2LAotCQk2LDEyNSwKLQkJJzB4YTJjMmFhYWInLCcweDE1NTU1JywxNywKLQkJNjI1MDAsMywK LQkJJzB4Yzk1MzliODknLCcweDNmZmZiY2U0MjE3ZCcsNDYsCi0JCTMsNjI1MDAsCi0JXSwgNjQg PT4gWwotCQknMHhmYTAwMDAwMCcsJzB4ZTAwMDAwMCcsMjgsCi0JCTEyNSw4LAotCQknMHg4MzEy NmU5OCcsJzB4N2VmOWRiMjJkJywzNSwKLQkJOCwxMjUsCi0JCScweGY0MjQwMDAwJywnMHgwJywx OCwKLQkJMTU2MjUsMSwKLQkJJzB4ODYzN2JkMDYnLCcweDFmZmY3OWM4NDJmYScsNDUsCi0JCTEs MTU2MjUsCi0JXSwgMTAwID0+IFsKLQkJJzB4YTAwMDAwMDAnLCcweDAnLDI4LAotCQkxMCwxLAot CQknMHhjY2NjY2NjZCcsJzB4NzMzMzMzMzMzJywzNSwKLQkJMSwxMCwKLQkJJzB4OWM0MDAwMDAn LCcweDAnLDE4LAotCQkxMDAwMCwxLAotCQknMHhkMWI3MTc1OScsJzB4MWZmZjJlNDhlOGE3Jyw0 NSwKLQkJMSwxMDAwMCwKLQldLCAxMjIgPT4gWwotCQknMHg4MzI1YzUzZicsJzB4ZmJjZGEzYScs MjgsCi0JCTUwMCw2MSwKLQkJJzB4ZjlkYjIyZDEnLCcweDdmYmU3NmM4YicsMzUsCi0JCTYxLDUw MCwKLQkJJzB4ODAxMmUyYTAnLCcweDNlZjM2JywxOCwKLQkJNTAwMDAwLDYxLAotCQknMHhmZmRh NDA1MycsJzB4MWZmZmZiY2U0MjE3Jyw0NSwKLQkJNjEsNTAwMDAwLAotCV0sIDEyOCA9PiBbCi0J CScweGZhMDAwMDAwJywnMHgxZTAwMDAwMCcsMjksCi0JCTEyNSwxNiwKLQkJJzB4ODMxMjZlOTgn LCcweDNmN2NlZDkxNicsMzQsCi0JCTE2LDEyNSwKLQkJJzB4ZjQyNDAwMDAnLCcweDQwMDAwJywx OSwKLQkJMTU2MjUsMiwKLQkJJzB4ODYzN2JkMDYnLCcweGZmZmJjZTQyMTdkJyw0NCwKLQkJMiwx NTYyNSwKLQldLCAyMDAgPT4gWwotCQknMHhhMDAwMDAwMCcsJzB4MCcsMjksCi0JCTUsMSwKLQkJ JzB4Y2NjY2NjY2QnLCcweDMzMzMzMzMzMycsMzQsCi0JCTEsNSwKLQkJJzB4OWM0MDAwMDAnLCcw eDAnLDE5LAotCQk1MDAwLDEsCi0JCScweGQxYjcxNzU5JywnMHhmZmYyZTQ4ZThhNycsNDQsCi0J CTEsNTAwMCwKLQldLCAyNTAgPT4gWwotCQknMHg4MDAwMDAwMCcsJzB4MCcsMjksCi0JCTQsMSwK LQkJJzB4ODAwMDAwMDAnLCcweDE4MDAwMDAwMCcsMzMsCi0JCTEsNCwKLQkJJzB4ZmEwMDAwMDAn LCcweDAnLDIwLAotCQk0MDAwLDEsCi0JCScweDgzMTI2ZTk4JywnMHg3ZmY3Y2VkOTE2OCcsNDMs Ci0JCTEsNDAwMCwKLQldLCAyNTYgPT4gWwotCQknMHhmYTAwMDAwMCcsJzB4M2UwMDAwMDAnLDMw LAotCQkxMjUsMzIsCi0JCScweDgzMTI2ZTk4JywnMHgxZmJlNzZjOGInLDMzLAotCQkzMiwxMjUs Ci0JCScweGY0MjQwMDAwJywnMHhjMDAwMCcsMjAsCi0JCTE1NjI1LDQsCi0JCScweDg2MzdiZDA2 JywnMHg3ZmZkZTcyMTBiZScsNDMsCi0JCTQsMTU2MjUsCi0JXSwgMzAwID0+IFsKLQkJJzB4ZDU1 NTU1NTYnLCcweDJhYWFhYWFhJywzMCwKLQkJMTAsMywKLQkJJzB4OTk5OTk5OWEnLCcweDFjY2Nj Y2NjYycsMzMsCi0JCTMsMTAsCi0JCScweGQwNTU1NTU2JywnMHhhYWFhYScsMjAsCi0JCTEwMDAw LDMsCi0JCScweDlkNDk1MTgzJywnMHg3ZmZjYjkyM2EyOScsNDMsCi0JCTMsMTAwMDAsCi0JXSwg NTEyID0+IFsKLQkJJzB4ZmEwMDAwMDAnLCcweDdlMDAwMDAwJywzMSwKLQkJMTI1LDY0LAotCQkn MHg4MzEyNmU5OCcsJzB4ZmRmM2I2NDUnLDMyLAotCQk2NCwxMjUsCi0JCScweGY0MjQwMDAwJywn MHgxYzAwMDAnLDIxLAotCQkxNTYyNSw4LAotCQknMHg4NjM3YmQwNicsJzB4M2ZmZWYzOTA4NWYn LDQyLAotCQk4LDE1NjI1LAotCV0sIDEwMDAgPT4gWwotCQknMHg4MDAwMDAwMCcsJzB4MCcsMzEs Ci0JCTEsMSwKLQkJJzB4ODAwMDAwMDAnLCcweDAnLDMxLAotCQkxLDEsCi0JCScweGZhMDAwMDAw JywnMHgwJywyMiwKLQkJMTAwMCwxLAotCQknMHg4MzEyNmU5OCcsJzB4MWZmN2NlZDkxNjgnLDQx LAotCQkxLDEwMDAsCi0JXSwgMTAyNCA9PiBbCi0JCScweGZhMDAwMDAwJywnMHhmZTAwMDAwMCcs MzIsCi0JCTEyNSwxMjgsCi0JCScweDgzMTI2ZTk4JywnMHg3ZWY5ZGIyMicsMzEsCi0JCTEyOCwx MjUsCi0JCScweGY0MjQwMDAwJywnMHgzYzAwMDAnLDIyLAotCQkxNTYyNSwxNiwKLQkJJzB4ODYz N2JkMDYnLCcweDFmZmY3OWM4NDJmJyw0MSwKLQkJMTYsMTU2MjUsCi0JXSwgMTIwMCA9PiBbCi0J CScweGQ1NTU1NTU2JywnMHhkNTU1NTU1NScsMzIsCi0JCTUsNiwKLQkJJzB4OTk5OTk5OWEnLCcw eDY2NjY2NjY2JywzMSwKLQkJNiw1LAotCQknMHhkMDU1NTU1NicsJzB4MmFhYWFhJywyMiwKLQkJ MjUwMCwzLAotCQknMHg5ZDQ5NTE4MycsJzB4MWZmY2I5MjNhMjknLDQxLAotCQkzLDI1MDAsCi0J XQotKTsKLQotJGhhc19iaWdpbnQgPSBldmFsICd1c2UgTWF0aDo6QmlnSW50IHF3KGJnY2QpOyAx Oyc7Ci0KLXN1YiBiaW50KCQpCi17Ci0JbXkoJHgpID0gQF87Ci0JcmV0dXJuIE1hdGg6OkJpZ0lu dC0+bmV3KCR4KTsKLX0KLQotIwotIyBDb25zdGFudHMgZm9yIGRpdmlzaW9uIGJ5IHJlY2lwcm9j YWwgbXVsdGlwbGljYXRpb24uCi0jIChiaXRzLCBudW1lcmF0b3IsIGRlbm9taW5hdG9yKQotIwot c3ViIGZtdWwoJCQkKQotewotCW15ICgkYiwkbiwkZCkgPSBAXzsKLQotCSRuID0gYmludCgkbik7 Ci0JJGQgPSBiaW50KCRkKTsKLQotCXJldHVybiBzY2FsYXIgKCgkbiA8PCAkYikrJGQtYmludCgx KSkvJGQ7Ci19Ci0KLXN1YiBmYWRqKCQkJCkKLXsKLQlteSgkYiwkbiwkZCkgPSBAXzsKLQotCSRu ID0gYmludCgkbik7Ci0JJGQgPSBiaW50KCRkKTsKLQotCSRkID0gJGQvYmdjZCgkbiwgJGQpOwot CXJldHVybiBzY2FsYXIgKCgkZC1iaW50KDEpKSA8PCAkYikvJGQ7Ci19Ci0KLXN1YiBmbXVscygk JCQpIHsKLQlteSgkYiwkbiwkZCkgPSBAXzsKLQlteSgkcywkbSk7Ci0JbXkoJHRocmVzKSA9IGJp bnQoMSkgPDwgKCRiLTEpOwotCi0JJG4gPSBiaW50KCRuKTsKLQkkZCA9IGJpbnQoJGQpOwotCi0J Zm9yICgkcyA9IDA7IDE7ICRzKyspIHsKLQkJJG0gPSBmbXVsKCRzLCRuLCRkKTsKLQkJcmV0dXJu ICRzIGlmICgkbSA+PSAkdGhyZXMpOwotCX0KLQlyZXR1cm4gMDsKLX0KLQotIyBHZW5lcmF0ZSBh IGhleCB2YWx1ZSBpZiB0aGUgcmVzdWx0IGZpdHMgaW4gNjQgYml0czsKLSMgb3RoZXJ3aXNlIHNr aXAuCi1zdWIgYmlnbnVtX2hleCgkKSB7Ci0JbXkoJHgpID0gQF87Ci0JbXkgJHMgPSAkeC0+YXNf aGV4KCk7Ci0KLQlyZXR1cm4gKGxlbmd0aCgkcykgPiAxOCkgPyB1bmRlZiA6ICRzOwotfQotCi0j IFByb3ZpZGVzIG11bCwgYWRqLCBhbmQgc2hyIGZhY3RvcnMgZm9yIGEgc3BlY2lmaWMKLSMgKGJp dCwgdGltZSwgaHopIGNvbWJpbmF0aW9uCi1zdWIgbXVsYWRqKCQkJCkgewotCW15KCRiLCAkdCwg JGh6KSA9IEBfOwotCW15ICRzID0gZm11bHMoJGIsICR0LCAkaHopOwotCW15ICRtID0gZm11bCgk cywgJHQsICRoeik7Ci0JbXkgJGEgPSBmYWRqKCRzLCAkdCwgJGh6KTsKLQlyZXR1cm4gKGJpZ251 bV9oZXgoJG0pLCBiaWdudW1faGV4KCRhKSwgJHMpOwotfQotCi0jIFByb3ZpZGVzIG51bWVyYXRv ciwgZGVub21pbmF0b3IgdmFsdWVzCi1zdWIgbnVtZGVuKCQkKSB7Ci0JbXkoJG4sICRkKSA9IEBf OwotCW15ICRnID0gYmdjZCgkbiwgJGQpOwotCXJldHVybiAoJG4vJGcsICRkLyRnKTsKLX0KLQot IyBBbGwgdmFsdWVzIGZvciBhIHNwZWNpZmljICh0aW1lLCBoeikgY29tYm8KLXN1YiBjb252ZXJz aW9ucygkJCkgewotCW15ICgkdCwgJGh6KSA9IEBfOwotCW15IEB2YWwgPSAoKTsKLQotCSMgSFpf VE9feHgKLQlwdXNoKEB2YWwsIG11bGFkaigzMiwgJHQsICRoeikpOwotCXB1c2goQHZhbCwgbnVt ZGVuKCR0LCAkaHopKTsKLQotCSMgeHhfVE9fSFoKLQlwdXNoKEB2YWwsIG11bGFkaigzMiwgJGh6 LCAkdCkpOwotCXB1c2goQHZhbCwgbnVtZGVuKCRoeiwgJHQpKTsKLQotCXJldHVybiBAdmFsOwot fQotCi1zdWIgY29tcHV0ZV92YWx1ZXMoJCkgewotCW15KCRoeikgPSBAXzsKLQlteSBAdmFsID0g KCk7Ci0JbXkgJHMsICRtLCAkYSwgJGc7Ci0KLQlpZiAoISRoYXNfYmlnaW50KSB7Ci0JCWRpZSAi JDA6IEhaID09ICRoeiBub3QgY2FubmVkIGFuZCAiLgotCQkgICAgIk1hdGg6OkJpZ0ludCBub3Qg YXZhaWxhYmxlXG4iOwotCX0KLQotCSMgTVNFQyBjb252ZXJzaW9ucwotCXB1c2goQHZhbCwgY29u dmVyc2lvbnMoMTAwMCwgJGh6KSk7Ci0KLQkjIFVTRUMgY29udmVyc2lvbnMKLQlwdXNoKEB2YWws IGNvbnZlcnNpb25zKDEwMDAwMDAsICRoeikpOwotCi0JcmV0dXJuIEB2YWw7Ci19Ci0KLXN1YiBv dXRwdXR2YWwoJCQpCi17Ci0JbXkoJG5hbWUsICR2YWwpID0gQF87Ci0JbXkgJGNzdWY7Ci0KLQlp ZiAoZGVmaW5lZCgkdmFsKSkgewotCSAgICBpZiAoJG5hbWUgIX4gL1NIUi8pIHsKLQkJJHZhbCA9 ICJVNjRfQygkdmFsKSI7Ci0JICAgIH0KLQkgICAgcHJpbnRmICIjZGVmaW5lICUtMjNzICVzXG4i LCAkbmFtZS4kY3N1ZiwgJHZhbC4kY3N1ZjsKLQl9Ci19Ci0KLXN1YiBvdXRwdXQoJEApCi17Ci0J bXkoJGh6LCBAdmFsKSA9IEBfOwotCW15ICRwZngsICRiaXQsICRzdWYsICRzLCAkbSwgJGE7Ci0K LQlwcmludCAiLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkga2VybmVsL3RpbWVjb25zdC5w bCAqL1xuIjsKLQlwcmludCAiLyogQ29udmVyc2lvbiBjb25zdGFudHMgZm9yIEhaID09ICRoeiAq L1xuIjsKLQlwcmludCAiXG4iOwotCXByaW50ICIjaWZuZGVmIEtFUk5FTF9USU1FQ09OU1RfSFxu IjsKLQlwcmludCAiI2RlZmluZSBLRVJORUxfVElNRUNPTlNUX0hcbiI7Ci0JcHJpbnQgIlxuIjsK LQotCXByaW50ICIjaW5jbHVkZSA8bGludXgvcGFyYW0uaD5cbiI7Ci0JcHJpbnQgIiNpbmNsdWRl IDxsaW51eC90eXBlcy5oPlxuIjsKLQotCXByaW50ICJcbiI7Ci0JcHJpbnQgIiNpZiBIWiAhPSAk aHpcbiI7Ci0JcHJpbnQgIiNlcnJvciBcImtlcm5lbC90aW1lY29uc3QuaCBoYXMgdGhlIHdyb25n IEhaIHZhbHVlIVwiXG4iOwotCXByaW50ICIjZW5kaWZcbiI7Ci0JcHJpbnQgIlxuIjsKLQotCWZv cmVhY2ggJHBmeCAoJ0haX1RPX01TRUMnLCdNU0VDX1RPX0haJywKLQkJICAgICAgJ0haX1RPX1VT RUMnLCdVU0VDX1RPX0haJykgewotCQlmb3JlYWNoICRiaXQgKDMyKSB7Ci0JCQlmb3JlYWNoICRz dWYgKCdNVUwnLCAnQURKJywgJ1NIUicpIHsKLQkJCQlvdXRwdXR2YWwoIiR7cGZ4fV8kc3VmJGJp dCIsIHNoaWZ0KEB2YWwpKTsKLQkJCX0KLQkJfQotCQlmb3JlYWNoICRzdWYgKCdOVU0nLCAnREVO JykgewotCQkJb3V0cHV0dmFsKCIke3BmeH1fJHN1ZiIsIHNoaWZ0KEB2YWwpKTsKLQkJfQotCX0K LQotCXByaW50ICJcbiI7Ci0JcHJpbnQgIiNlbmRpZiAvKiBLRVJORUxfVElNRUNPTlNUX0ggKi9c biI7Ci19Ci0KLSMgUHJldHR5LXByaW50IFBlcmwgdmFsdWVzCi1zdWIgcGVybHZhbHMoQCkgewot CW15ICR2OwotCW15IEBsID0gKCk7Ci0KLQlmb3JlYWNoICR2IChAXykgewotCQlpZiAoIWRlZmlu ZWQoJHYpKSB7Ci0JCQlwdXNoKEBsLCAndW5kZWYnKTsKLQkJfSBlbHNpZiAoJHYgPX4gL14weC8p IHsKLQkJCXB1c2goQGwsICJcJyIuJHYuIlwnIik7Ci0JCX0gZWxzZSB7Ci0JCQlwdXNoKEBsLCAk di4nJyk7Ci0JCX0KLQl9Ci0JcmV0dXJuIGpvaW4oJywnLCBAbCk7Ci19Ci0KLSgkaHopID0gQEFS R1Y7Ci0KLSMgVXNlIHRoaXMgdG8gZ2VuZXJhdGUgdGhlICVjYW5uZWRfdmFsdWVzIHN0cnVjdHVy ZQotaWYgKCRoeiBlcSAnLS1jYW4nKSB7Ci0Jc2hpZnQoQEFSR1YpOwotCUBoemxpc3QgPSBzb3J0 IHskYSA8PT4gJGJ9IChAQVJHVik7Ci0KLQlwcmludCAiIyBQcmVjb21wdXRlZCB2YWx1ZXMgZm9y IHN5c3RlbXMgd2l0aG91dCBNYXRoOjpCaWdJbnRcbiI7Ci0JcHJpbnQgIiMgR2VuZXJhdGVkIGJ5 OlxuIjsKLQlwcmludCAiIyB0aW1lY29uc3QucGwgLS1jYW4gIiwgam9pbignICcsIEBoemxpc3Qp LCAiXG4iOwotCXByaW50ICJcJWNhbm5lZF92YWx1ZXMgPSAoXG4iOwotCW15ICRwZiA9ICJcdCI7 Ci0JZm9yZWFjaCAkaHogKEBoemxpc3QpIHsKLQkJbXkgQHZhbHVlcyA9IGNvbXB1dGVfdmFsdWVz KCRoeik7Ci0JCXByaW50ICIkcGYkaHogPT4gW1xuIjsKLQkJd2hpbGUgKHNjYWxhcihAdmFsdWVz KSkgewotCQkJbXkgJGJpdDsKLQkJCWZvcmVhY2ggJGJpdCAoMzIpIHsKLQkJCQlteSAkbSA9IHNo aWZ0KEB2YWx1ZXMpOwotCQkJCW15ICRhID0gc2hpZnQoQHZhbHVlcyk7Ci0JCQkJbXkgJHMgPSBz aGlmdChAdmFsdWVzKTsKLQkJCQlwcmludCAiXHRcdCIsIHBlcmx2YWxzKCRtLCRhLCRzKSwgIixc biI7Ci0JCQl9Ci0JCQlteSAkbiA9IHNoaWZ0KEB2YWx1ZXMpOwotCQkJbXkgJGQgPSBzaGlmdChA dmFsdWVzKTsKLQkJCXByaW50ICJcdFx0IiwgcGVybHZhbHMoJG4sJGQpLCAiLFxuIjsKLQkJfQot CQlwcmludCAiXHRdIjsKLQkJJHBmID0gJywgJzsKLQl9Ci0JcHJpbnQgIlxuKTtcbiI7Ci19IGVs c2UgewotCSRoeiArPSAwOwkJCSMgRm9yY2UgdG8gbnVtYmVyCi0JaWYgKCRoeiA8IDEpIHsKLQkJ ZGllICJVc2FnZTogJDAgSFpcbiI7Ci0JfQotCi0JQHZhbCA9IEB7JGNhbm5lZF92YWx1ZXN7JGh6 fX07Ci0JaWYgKCFkZWZpbmVkKEB2YWwpKSB7Ci0JCUB2YWwgPSBjb21wdXRlX3ZhbHVlcygkaHop OwotCX0KLQlvdXRwdXQoJGh6LCBAdmFsKTsKLX0KLWV4aXQgMDsKAAo=