Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:64194 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 41571 invoked from network); 7 Dec 2012 19:44:32 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 7 Dec 2012 19:44:32 -0000 Authentication-Results: pb1.pair.com smtp.mail=njaguar@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=njaguar@gmail.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.214.170 as permitted sender) X-PHP-List-Original-Sender: njaguar@gmail.com X-Host-Fingerprint: 209.85.214.170 mail-ob0-f170.google.com Received: from [209.85.214.170] ([209.85.214.170:42322] helo=mail-ob0-f170.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 91/47-14797-E1742C05 for ; Fri, 07 Dec 2012 14:44:30 -0500 Received: by mail-ob0-f170.google.com with SMTP id wp18so811227obc.29 for ; Fri, 07 Dec 2012 11:44:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=QzH8tUf/frIO2o0Cv+aP5Sp1XK71F0HkYDRDyG4+rHM=; b=LXwuWKGHgxtVJrxcQtcLNt4Ktb4qcWMVX1C4lOv9CL1PHNj+m37oEmhtlcp9SKzP4e YZQhc0JG4o4u82/l609A+D2yWMrn1W5jbNNoz2MIqA7Q6biB8sGkW//Ux1toDQcrpyB2 mUJi2gMFJId++PP9MbmLLU46gi529LdkF4e1E2NY5rSCCKLJocr+xV7nr0AvpuqBSuGb O71WuRpCBNi2gZlan21K8oiKBtr8uPChKB4eWQ5+jEBV08x22yjrVQT1o3SEhKXbEZ3K 76O8Jac2j8JH9D0cOdZcHK5e7xjwu1J3zRBLH019o2tGcBblGSsy0r58kGK1Up1D0R9B O8Rg== MIME-Version: 1.0 Received: by 10.182.228.69 with SMTP id sg5mr3872179obc.2.1354909467951; Fri, 07 Dec 2012 11:44:27 -0800 (PST) Received: by 10.182.89.66 with HTTP; Fri, 7 Dec 2012 11:44:27 -0800 (PST) Date: Fri, 7 Dec 2012 13:44:27 -0600 Message-ID: To: internals@lists.php.net Content-Type: multipart/mixed; boundary=f46d0444ef138a406c04d04871ff Subject: [PATCH] (v 5.4.11-dev) ext/date/php_date.c cleanup From: njaguar@gmail.com (Paul Taulborg) --f46d0444ef138a406c04d04871ff Content-Type: text/plain; charset=ISO-8859-1 Went through and did some general code cleanup, namely removing tabs/spaces from empty lines, or trailing spaces/tabs. The exceptions to that are: php_date_initialize() -- reorganized timezone setting to do it all at once without the need for temporary variables. This should be slightly faster, and also more readable. date_format() -- changed the naming of the "is set" variable to comply with PHP core coding conventions, and reorganized the switch statement to be more readable and formatted more properly for the options of W and o. (This was previously my patch) Thanks --f46d0444ef138a406c04d04871ff Content-Type: text/plain; charset=UTF-8; name="php_date_c_cleanups_patch.txt" Content-Disposition: attachment; filename="php_date_c_cleanups_patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hafq3x8k0 ZGlmZiAtLWdpdCBhL2V4dC9kYXRlL3BocF9kYXRlLmMgYi9leHQvZGF0ZS9waHBfZGF0ZS5jCmlu ZGV4IGI1ODgyMjcuLjYyNTc4OGQgMTAwNjQ0Ci0tLSBhL2V4dC9kYXRlL3BocF9kYXRlLmMKKysr IGIvZXh0L2RhdGUvcGhwX2RhdGUuYwpAQCAtNTI2LDcgKzUyNiw3IEBAIHN0YXRpYyB6ZW5kX29i amVjdF9oYW5kbGVycyBkYXRlX29iamVjdF9oYW5kbGVyc19wZXJpb2Q7CiAjZGVmaW5lIERBVEVf U0VUX0NPTlRFWFQgXAogCXp2YWwgKm9iamVjdDsgXAogCW9iamVjdCA9IGdldFRoaXMoKTsgXAot ICAgCisKICNkZWZpbmUgREFURV9GRVRDSF9PQkpFQ1QJXAogCXBocF9kYXRlX29iaiAqb2JqOwlc CiAJREFURV9TRVRfQ09OVEVYVDsgXApAQCAtNjg4LDcgKzY4OCw3IEBAIFBIUF9SU0hVVERPV05f RlVOQ1RJT04oZGF0ZSkKICAqIFJGQzI4MjIsIFNlY3Rpb24gMy4zOiBodHRwOi8vd3d3LmlldGYu b3JnL3JmYy9yZmMyODIyLnR4dAogICogIEZXUyAgICAgICAgICAgICA9ICAgICAgIChbKldTUCBD UkxGXSAxKldTUCkgLyAgIDsgRm9sZGluZyB3aGl0ZSBzcGFjZQogICogIENGV1MgICAgICAgICAg ICA9ICAgICAgICooW0ZXU10gY29tbWVudCkgKChbRldTXSBjb21tZW50KSAvIEZXUykKLSAqICAK KyAqCiAgKiAgZGF0ZS10aW1lICAgICAgID0gICAgICAgWyBkYXktb2Ytd2VlayAiLCIgXSBkYXRl IEZXUyB0aW1lIFtDRldTXQogICogIGRheS1vZi13ZWVrICAgICA9ICAgICAgIChbRldTXSBkYXkt bmFtZSkKICAqICBkYXktbmFtZSAgICAgICAgPSAgICAgICAiTW9uIiAvICJUdWUiIC8gIldlZCIg LyAiVGh1IiAvICJGcmkiIC8gIlNhdCIgLyAiU3VuIgpAQCAtNzEwLDE5ICs3MTAsMTkgQEAgUEhQ X1JTSFVURE9XTl9GVU5DVElPTihkYXRlKQogICogIGRhdGUtZnVsbHllYXIgICA9IDRESUdJVAog ICogIGRhdGUtbW9udGggICAgICA9IDJESUdJVCAgOyAwMS0xMgogICogIGRhdGUtbWRheSAgICAg ICA9IDJESUdJVCAgOyAwMS0yOCwgMDEtMjksIDAxLTMwLCAwMS0zMSBiYXNlZCBvbiBtb250aC95 ZWFyCi0gKiAgCisgKgogICogIHRpbWUtaG91ciAgICAgICA9IDJESUdJVCAgOyAwMC0yMwogICog IHRpbWUtbWludXRlICAgICA9IDJESUdJVCAgOyAwMC01OQogICogIHRpbWUtc2Vjb25kICAgICA9 IDJESUdJVCAgOyAwMC01OCwgMDAtNTksIDAwLTYwIGJhc2VkIG9uIGxlYXAgc2Vjb25kIHJ1bGVz Ci0gKiAgCisgKgogICogIHRpbWUtc2VjZnJhYyAgICA9ICIuIiAxKkRJR0lUCiAgKiAgdGltZS1u dW1vZmZzZXQgID0gKCIrIiAvICItIikgdGltZS1ob3VyICI6IiB0aW1lLW1pbnV0ZQogICogIHRp bWUtb2Zmc2V0ICAgICA9ICJaIiAvIHRpbWUtbnVtb2Zmc2V0Ci0gKiAgCisgKgogICogIHBhcnRp YWwtdGltZSAgICA9IHRpbWUtaG91ciAiOiIgdGltZS1taW51dGUgIjoiIHRpbWUtc2Vjb25kIFt0 aW1lLXNlY2ZyYWNdCiAgKiAgZnVsbC1kYXRlICAgICAgID0gZGF0ZS1mdWxseWVhciAiLSIgZGF0 ZS1tb250aCAiLSIgZGF0ZS1tZGF5CiAgKiAgZnVsbC10aW1lICAgICAgID0gcGFydGlhbC10aW1l IHRpbWUtb2Zmc2V0Ci0gKiAgCisgKgogICogIGRhdGUtdGltZSAgICAgICA9IGZ1bGwtZGF0ZSAi VCIgZnVsbC10aW1lCiAgKi8KICNkZWZpbmUgREFURV9GT1JNQVRfUkZDMzMzOSAgIlktbS1kXFxU SDppOnNQIgpAQCAtODA0LDcgKzgwNCw3IEBAIFBIUF9NU0hVVERPV05fRlVOQ1RJT04oZGF0ZSkK IFBIUF9NSU5GT19GVU5DVElPTihkYXRlKQogewogCWNvbnN0IHRpbWVsaWJfdHpkYiAqdHpkYiA9 IERBVEVfVElNRVpPTkVEQjsKLQkKKwogCXBocF9pbmZvX3ByaW50X3RhYmxlX3N0YXJ0KCk7CiAJ cGhwX2luZm9fcHJpbnRfdGFibGVfcm93KDIsICJkYXRlL3RpbWUgc3VwcG9ydCIsICJlbmFibGVk Iik7CiAJcGhwX2luZm9fcHJpbnRfdGFibGVfcm93KDIsICJcIk9sc29uXCIgVGltZXpvbmUgRGF0 YWJhc2UgVmVyc2lvbiIsIHR6ZGItPnZlcnNpb24pOwpAQCAtODU1LDcgKzg1NSw3IEBAIHN0YXRp YyBjaGFyKiBndWVzc190aW1lem9uZShjb25zdCB0aW1lbGliX3R6ZGIgKnR6ZGIgVFNSTUxTX0RD KQogCWlmICghREFURUcoZGVmYXVsdF90aW1lem9uZSkpIHsKIAkJLyogU3BlY2lhbCBjYXNlOiBl eHQvZGF0ZSB3YXNuJ3QgaW5pdGlhbGl6ZWQgeWV0ICovCiAJCXp2YWwgenR6OwotCQkKKwogCQlp ZiAoU1VDQ0VTUyA9PSB6ZW5kX2dldF9jb25maWd1cmF0aW9uX2RpcmVjdGl2ZSgiZGF0ZS50aW1l em9uZSIsIHNpemVvZigiZGF0ZS50aW1lem9uZSIpLCAmenR6KSAmJgogCQkgICAgWl9UWVBFKHp0 eikgPT0gSVNfU1RSSU5HICYmCiAJCSAgICBaX1NUUkxFTih6dHopID4gMCAmJgpAQCAtOTM2LDgg KzkzNiw4IEBAIGNoYXIgKnBocF9kYXRlX3Nob3J0X2RheV9uYW1lKHRpbWVsaWJfc2xsIHksIHRp bWVsaWJfc2xsIG0sIHRpbWVsaWJfc2xsIGQpCiAJdGltZWxpYl9zbGwgZGF5X29mX3dlZWsgPSB0 aW1lbGliX2RheV9vZl93ZWVrKHksIG0sIGQpOwogCWlmIChkYXlfb2Zfd2VlayA8IDApIHsKIAkJ cmV0dXJuICJVbmtub3duIjsKLQl9IAotCXJldHVybiBkYXlfc2hvcnRfbmFtZXNbZGF5X29mX3dl ZWtdOwkKKwl9CisJcmV0dXJuIGRheV9zaG9ydF9uYW1lc1tkYXlfb2Zfd2Vla107CiB9CiAvKiB9 fX0gKi8KIApAQCAtOTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBjaGFyICpkYXRlX2Zvcm1hdChjaGFy ICpmb3JtYXQsIGludCBmb3JtYXRfbGVuLCB0aW1lbGliX3RpbWUgKnQsIGludCBsb2NhCiAJdGlt ZWxpYl90aW1lX29mZnNldCAqb2Zmc2V0ID0gTlVMTDsKIAl0aW1lbGliX3NsbCAgICAgICAgICBp c293ZWVrLCBpc295ZWFyOwogCWludCAgICAgICAgICAgICAgICAgIHJmY19jb2xvbjsKLQlpbnQg ICAgICAgICAgICAgICAgICB3ZWVrWWVhclNldCA9IDA7CisJaW50ICAgICAgICAgICAgICAgICAg d2Vla195ZWFyX3NldCA9IDA7CiAKIAlpZiAoIWZvcm1hdF9sZW4pIHsKIAkJcmV0dXJuIGVzdHJk dXAoIiIpOwpAQCAtOTY5LDcgKzk2OSw3IEBAIHN0YXRpYyBjaGFyICpkYXRlX2Zvcm1hdChjaGFy ICpmb3JtYXQsIGludCBmb3JtYXRfbGVuLCB0aW1lbGliX3RpbWUgKnQsIGludCBsb2NhCiAJCQlv ZmZzZXQtPmxlYXBfc2VjcyA9IDA7CiAJCQlvZmZzZXQtPmlzX2RzdCA9IDA7CiAJCQlvZmZzZXQt PmFiYnIgPSBtYWxsb2MoOSk7IC8qIEdNVO+/vXh4eHhcMCAqLwotCQkJc25wcmludGYob2Zmc2V0 LT5hYmJyLCA5LCAiR01UJWMlMDJkJTAyZCIsIAorCQkJc25wcmludGYob2Zmc2V0LT5hYmJyLCA5 LCAiR01UJWMlMDJkJTAyZCIsCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsdGlt ZSA/ICgob2Zmc2V0LT5vZmZzZXQgPCAwKSA/ICctJyA6ICcrJykgOiAnKycsCiAJCQkgICAgICAg ICAgICAgICAgICAgICAgICAgIGxvY2FsdGltZSA/IGFicyhvZmZzZXQtPm9mZnNldCAvIDM2MDAp IDogMCwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWx0aW1lID8gYWJzKChvZmZz ZXQtPm9mZnNldCAlIDM2MDApIC8gNjApIDogMCApOwpAQCAtOTkzLDExICs5OTMsMTcgQEAgc3Rh dGljIGNoYXIgKmRhdGVfZm9ybWF0KGNoYXIgKmZvcm1hdCwgaW50IGZvcm1hdF9sZW4sIHRpbWVs aWJfdGltZSAqdCwgaW50IGxvY2EKIAogCQkJLyogd2VlayAqLwogCQkJY2FzZSAnVyc6Ci0JCQkJ aWYoIXdlZWtZZWFyU2V0KSB7IHRpbWVsaWJfaXNvd2Vla19mcm9tX2RhdGUodC0+eSwgdC0+bSwg dC0+ZCwgJmlzb3dlZWssICZpc295ZWFyKTsgd2Vla1llYXJTZXQgPSAxOyB9Ci0JCQkJbGVuZ3Ro ID0gc2xwcmludGYoYnVmZmVyLCAzMiwgIiUwMmQiLCAoaW50KSBpc293ZWVrKTsgYnJlYWs7IC8q IGlzbyB3ZWVrbnIgKi8KIAkJCWNhc2UgJ28nOgotCQkJCWlmKCF3ZWVrWWVhclNldCkgeyB0aW1l bGliX2lzb3dlZWtfZnJvbV9kYXRlKHQtPnksIHQtPm0sIHQtPmQsICZpc293ZWVrLCAmaXNveWVh cik7IHdlZWtZZWFyU2V0ID0gMTsgfQotCQkJCWxlbmd0aCA9IHNscHJpbnRmKGJ1ZmZlciwgMzIs ICIlZCIsIChpbnQpIGlzb3llYXIpOyBicmVhazsgLyogaXNvIHllYXIgKi8KKwkJCQlpZiAoIXdl ZWtfeWVhcl9zZXQpIHsKKwkJCQkJdGltZWxpYl9pc293ZWVrX2Zyb21fZGF0ZSh0LT55LCB0LT5t LCB0LT5kLCAmaXNvd2VlaywgJmlzb3llYXIpOworCQkJCQl3ZWVrX3llYXJfc2V0ID0gMTsKKwkJ CQl9CisJCQkJaWYgKGZvcm1hdFtpXT09J1cnKSB7CisJCQkJCWxlbmd0aCA9IHNscHJpbnRmKGJ1 ZmZlciwgMzIsICIlMDJkIiwgKGludCkgaXNvd2Vlayk7IC8qIGlzbyB3ZWVrbnIgKi8KKwkJCQl9 IGVsc2UgaWYgKGZvcm1hdFtpXT09J28nKSB7CisJCQkJCWxlbmd0aCA9IHNscHJpbnRmKGJ1ZmZl ciwgMzIsICIlZCIsIChpbnQpIGlzb3llYXIpOyAvKiBpc28geWVhciAqLworCQkJCX0KKwkJCQli cmVhazsKIAogCQkJLyogbW9udGggKi8KIAkJCWNhc2UgJ0YnOiBsZW5ndGggPSBzbHByaW50Zihi dWZmZXIsIDMyLCAiJXMiLCBtb25fZnVsbF9uYW1lc1t0LT5tIC0gMV0pOyBicmVhazsKQEAgLTEw MTUsNyArMTAyMSw3IEBAIHN0YXRpYyBjaGFyICpkYXRlX2Zvcm1hdChjaGFyICpmb3JtYXQsIGlu dCBmb3JtYXRfbGVuLCB0aW1lbGliX3RpbWUgKnQsIGludCBsb2NhCiAJCQljYXNlICdhJzogbGVu Z3RoID0gc2xwcmludGYoYnVmZmVyLCAzMiwgIiVzIiwgdC0+aCA+PSAxMiA/ICJwbSIgOiAiYW0i KTsgYnJlYWs7CiAJCQljYXNlICdBJzogbGVuZ3RoID0gc2xwcmludGYoYnVmZmVyLCAzMiwgIiVz IiwgdC0+aCA+PSAxMiA/ICJQTSIgOiAiQU0iKTsgYnJlYWs7CiAJCQljYXNlICdCJzogewotCQkJ CWludCByZXR2YWwgPSAoKCgoKGxvbmcpdC0+c3NlKS0oKChsb25nKXQtPnNzZSkgLSAoKCgobG9u Zyl0LT5zc2UpICUgODY0MDApICsgMzYwMCkpKSAqIDEwKSAvIDg2NCk7CQkJCisJCQkJaW50IHJl dHZhbCA9ICgoKCgobG9uZyl0LT5zc2UpLSgoKGxvbmcpdC0+c3NlKSAtICgoKChsb25nKXQtPnNz ZSkgJSA4NjQwMCkgKyAzNjAwKSkpICogMTApIC8gODY0KTsKIAkJCQl3aGlsZSAocmV0dmFsIDwg MCkgewogCQkJCQlyZXR2YWwgKz0gMTAwMDsKIAkJCQl9CkBAIC0xMTE1LDcgKzExMjEsNyBAQCBz dGF0aWMgdm9pZCBwaHBfZGF0ZShJTlRFUk5BTF9GVU5DVElPTl9QQVJBTUVURVJTLCBpbnQgbG9j YWx0aW1lKQogCX0KIAogCXN0cmluZyA9IHBocF9mb3JtYXRfZGF0ZShmb3JtYXQsIGZvcm1hdF9s ZW4sIHRzLCBsb2NhbHRpbWUgVFNSTUxTX0NDKTsKLQkKKwogCVJFVFZBTF9TVFJJTkcoc3RyaW5n LCAwKTsKIH0KIC8qIH19fSAqLwpAQCAtMTEzOSw3ICsxMTQ1LDcgQEAgUEhQQVBJIGNoYXIgKnBo cF9mb3JtYXRfZGF0ZShjaGFyICpmb3JtYXQsIGludCBmb3JtYXRfbGVuLCB0aW1lX3QgdHMsIGlu dCBsb2NhbHQKIAl9CiAKIAlzdHJpbmcgPSBkYXRlX2Zvcm1hdChmb3JtYXQsIGZvcm1hdF9sZW4s IHQsIGxvY2FsdGltZSk7Ci0JCisKIAl0aW1lbGliX3RpbWVfZHRvcih0KTsKIAlyZXR1cm4gc3Ry aW5nOwogfQpAQCAtMTE4MCw3ICsxMTg2LDcgQEAgUEhQQVBJIGludCBwaHBfaWRhdGUoY2hhciBm b3JtYXQsIHRpbWVfdCB0cywgaW50IGxvY2FsdGltZSBUU1JNTFNfREMpCiAJCQlvZmZzZXQtPmxl YXBfc2VjcyA9IDA7CiAJCQlvZmZzZXQtPmlzX2RzdCA9IHQtPmRzdDsKIAkJCW9mZnNldC0+YWJi ciA9IG1hbGxvYyg5KTsgLyogR01U77+9eHh4eFwwICovCi0JCQlzbnByaW50ZihvZmZzZXQtPmFi YnIsIDksICJHTVQlYyUwMmQlMDJkIiwgCisJCQlzbnByaW50ZihvZmZzZXQtPmFiYnIsIDksICJH TVQlYyUwMmQlMDJkIiwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsdGltZSA/ ICgob2Zmc2V0LT5vZmZzZXQgPCAwKSA/ICctJyA6ICcrJykgOiAnKycsCiAJCQkgICAgICAgICAg ICAgICAgICAgICAgICAgICFsb2NhbHRpbWUgPyBhYnMob2Zmc2V0LT5vZmZzZXQgLyAzNjAwKSA6 IDAsCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICFsb2NhbHRpbWUgPyBhYnMoKG9mZnNl dC0+b2Zmc2V0ICUgMzYwMCkgLyA2MCkgOiAwICk7CkBAIC0xMjEyLDcgKzEyMTgsNyBAQCBQSFBB UEkgaW50IHBocF9pZGF0ZShjaGFyIGZvcm1hdCwgdGltZV90IHRzLCBpbnQgbG9jYWx0aW1lIFRT Uk1MU19EQykKIAogCQkvKiBTd2F0Y2ggQmVhdCBhLmsuYS4gSW50ZXJuZXQgVGltZSAqLwogCQlj YXNlICdCJzoKLQkJCXJldHZhbCA9ICgoKCgobG9uZyl0LT5zc2UpLSgoKGxvbmcpdC0+c3NlKSAt ICgoKChsb25nKXQtPnNzZSkgJSA4NjQwMCkgKyAzNjAwKSkpICogMTApIC8gODY0KTsJCQkKKwkJ CXJldHZhbCA9ICgoKCgobG9uZyl0LT5zc2UpLSgoKGxvbmcpdC0+c3NlKSAtICgoKChsb25nKXQt PnNzZSkgJSA4NjQwMCkgKyAzNjAwKSkpICogMTApIC8gODY0KTsKIAkJCXdoaWxlIChyZXR2YWwg PCAwKSB7CiAJCQkJcmV0dmFsICs9IDEwMDA7CiAJCQl9CkBAIC0xMjY0LDcgKzEyNzAsNyBAQCBQ SFBfRlVOQ1RJT04oaWRhdGUpCiAJY2hhciAgICpmb3JtYXQ7CiAJaW50ICAgICBmb3JtYXRfbGVu OwogCWxvbmcgICAgdHMgPSAwOwotCWludCByZXQ7IAorCWludCByZXQ7CiAKIAlpZiAoemVuZF9w YXJzZV9wYXJhbWV0ZXJzKFpFTkRfTlVNX0FSR1MoKSBUU1JNTFNfQ0MsICJzfGwiLCAmZm9ybWF0 LCAmZm9ybWF0X2xlbiwgJnRzKSA9PSBGQUlMVVJFKSB7CiAJCVJFVFVSTl9GQUxTRTsKQEAgLTEy OTIsNyArMTI5OCw3IEBAIFBIUF9GVU5DVElPTihpZGF0ZSkKIFBIUEFQSSB2b2lkIHBocF9kYXRl X3NldF90emRiKHRpbWVsaWJfdHpkYiAqdHpkYikKIHsKIAljb25zdCB0aW1lbGliX3R6ZGIgKmJ1 aWx0aW4gPSB0aW1lbGliX2J1aWx0aW5fZGIoKTsKLQkKKwogCWlmIChwaHBfdmVyc2lvbl9jb21w YXJlKHR6ZGItPnZlcnNpb24sIGJ1aWx0aW4tPnZlcnNpb24pID4gMCkgewogCQlwaHBfZGF0ZV9n bG9iYWxfdGltZXpvbmVfZGIgPSB0emRiOwogCQlwaHBfZGF0ZV9nbG9iYWxfdGltZXpvbmVfZGJf ZW5hYmxlZCA9IDE7CkBAIC0xODA0LDcgKzE4MTAsNyBAQCBzdGF0aWMgdm9pZCBkYXRlX3Blcmlv ZF9pdF9jdXJyZW50X2RhdGEoemVuZF9vYmplY3RfaXRlcmF0b3IgKml0ZXIsIHp2YWwgKioqZGF0 YQogCWlmIChpdF90aW1lLT50el9pbmZvKSB7CiAJCW5ld2RhdGVvYmotPnRpbWUtPnR6X2luZm8g PSBpdF90aW1lLT50el9pbmZvOwogCX0KLQkKKwogCSpkYXRhID0gJml0ZXJhdG9yLT5jdXJyZW50 OwogfQogLyogfX19ICovCkBAIC0xOTY3LDEzICsxOTczLDEzIEBAIHN0YXRpYyBpbmxpbmUgemVu ZF9vYmplY3RfdmFsdWUgZGF0ZV9vYmplY3RfbmV3X2RhdGVfZXgoemVuZF9jbGFzc19lbnRyeSAq Y2xhc3NfCiAJaWYgKHB0cikgewogCQkqcHRyID0gaW50ZXJuOwogCX0KLQkKKwogCXplbmRfb2Jq ZWN0X3N0ZF9pbml0KCZpbnRlcm4tPnN0ZCwgY2xhc3NfdHlwZSBUU1JNTFNfQ0MpOwogCW9iamVj dF9wcm9wZXJ0aWVzX2luaXQoJmludGVybi0+c3RkLCBjbGFzc190eXBlKTsKLQkKKwogCXJldHZh bC5oYW5kbGUgPSB6ZW5kX29iamVjdHNfc3RvcmVfcHV0KGludGVybiwgKHplbmRfb2JqZWN0c19z dG9yZV9kdG9yX3QpemVuZF9vYmplY3RzX2Rlc3Ryb3lfb2JqZWN0LCAoemVuZF9vYmplY3RzX2Zy ZWVfb2JqZWN0X3N0b3JhZ2VfdCkgZGF0ZV9vYmplY3RfZnJlZV9zdG9yYWdlX2RhdGUsIE5VTEwg VFNSTUxTX0NDKTsKIAlyZXR2YWwuaGFuZGxlcnMgPSAmZGF0ZV9vYmplY3RfaGFuZGxlcnNfZGF0 ZTsKLQkKKwogCXJldHVybiByZXR2YWw7CiB9CiAKQEAgLTE5ODcsMTIgKzE5OTMsMTIgQEAgc3Rh dGljIHplbmRfb2JqZWN0X3ZhbHVlIGRhdGVfb2JqZWN0X2Nsb25lX2RhdGUoenZhbCAqdGhpc19w dHIgVFNSTUxTX0RDKQogCXBocF9kYXRlX29iaiAqbmV3X29iaiA9IE5VTEw7CiAJcGhwX2RhdGVf b2JqICpvbGRfb2JqID0gKHBocF9kYXRlX29iaiAqKSB6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2Jq ZWN0KHRoaXNfcHRyIFRTUk1MU19DQyk7CiAJemVuZF9vYmplY3RfdmFsdWUgbmV3X292ID0gZGF0 ZV9vYmplY3RfbmV3X2RhdGVfZXgob2xkX29iai0+c3RkLmNlLCAmbmV3X29iaiBUU1JNTFNfQ0Mp OwotCQorCiAJemVuZF9vYmplY3RzX2Nsb25lX21lbWJlcnMoJm5ld19vYmotPnN0ZCwgbmV3X292 LCAmb2xkX29iai0+c3RkLCBaX09CSl9IQU5ETEVfUCh0aGlzX3B0cikgVFNSTUxTX0NDKTsKIAlp ZiAoIW9sZF9vYmotPnRpbWUpIHsKIAkJcmV0dXJuIG5ld19vdjsKIAl9Ci0JCisKIAkvKiB0aGlz IHNob3VsZCBwcm9iYWJseSBtb3ZlZCB0byBhIG5ldyBgdGltZWxpYl90aW1lICp0aW1lbGltZV90 aW1lX2Nsb25lKHRpbWVsaWJfdGltZSAqKWAgKi8KIAluZXdfb2JqLT50aW1lID0gdGltZWxpYl90 aW1lX2N0b3IoKTsKIAkqbmV3X29iai0+dGltZSA9ICpvbGRfb2JqLT50aW1lOwpAQCAtMjAwMiw3 ICsyMDA4LDcgQEAgc3RhdGljIHplbmRfb2JqZWN0X3ZhbHVlIGRhdGVfb2JqZWN0X2Nsb25lX2Rh dGUoenZhbCAqdGhpc19wdHIgVFNSTUxTX0RDKQogCWlmIChvbGRfb2JqLT50aW1lLT50el9pbmZv KSB7CiAJCW5ld19vYmotPnRpbWUtPnR6X2luZm8gPSBvbGRfb2JqLT50aW1lLT50el9pbmZvOwog CX0KLQkKKwogCXJldHVybiBuZXdfb3Y7CiB9CiAKQEAgLTIwMTMsMTcgKzIwMTksMTcgQEAgc3Rh dGljIGludCBkYXRlX29iamVjdF9jb21wYXJlX2RhdGUoenZhbCAqZDEsIHp2YWwgKmQyIFRTUk1M U19EQykKIAkJaW5zdGFuY2VvZl9mdW5jdGlvbihaX09CSkNFX1AoZDIpLCBkYXRlX2NlX2RhdGUg VFNSTUxTX0NDKSkgewogCQlwaHBfZGF0ZV9vYmogKm8xID0gemVuZF9vYmplY3Rfc3RvcmVfZ2V0 X29iamVjdChkMSBUU1JNTFNfQ0MpOwogCQlwaHBfZGF0ZV9vYmogKm8yID0gemVuZF9vYmplY3Rf c3RvcmVfZ2V0X29iamVjdChkMiBUU1JNTFNfQ0MpOwotCQkKKwogCQlpZiAoIW8xLT50aW1lLT5z c2VfdXB0b2RhdGUpIHsKIAkJCXRpbWVsaWJfdXBkYXRlX3RzKG8xLT50aW1lLCBvMS0+dGltZS0+ dHpfaW5mbyk7CiAJCX0KIAkJaWYgKCFvMi0+dGltZS0+c3NlX3VwdG9kYXRlKSB7CiAJCQl0aW1l bGliX3VwZGF0ZV90cyhvMi0+dGltZSwgbzItPnRpbWUtPnR6X2luZm8pOwogCQl9Ci0JCQorCiAJ CXJldHVybiAobzEtPnRpbWUtPnNzZSA9PSBvMi0+dGltZS0+c3NlKSA/IDAgOiAoKG8xLT50aW1l LT5zc2UgPCBvMi0+dGltZS0+c3NlKSA/IC0xIDogMSk7CiAJfQotCQorCiAJcmV0dXJuIDE7CiB9 CiAKQEAgLTIxMDAsMTAgKzIxMDYsMTAgQEAgc3RhdGljIGlubGluZSB6ZW5kX29iamVjdF92YWx1 ZSBkYXRlX29iamVjdF9uZXdfdGltZXpvbmVfZXgoemVuZF9jbGFzc19lbnRyeSAqY2wKIAogCXpl bmRfb2JqZWN0X3N0ZF9pbml0KCZpbnRlcm4tPnN0ZCwgY2xhc3NfdHlwZSBUU1JNTFNfQ0MpOwog CW9iamVjdF9wcm9wZXJ0aWVzX2luaXQoJmludGVybi0+c3RkLCBjbGFzc190eXBlKTsKLQkKKwog CXJldHZhbC5oYW5kbGUgPSB6ZW5kX29iamVjdHNfc3RvcmVfcHV0KGludGVybiwgKHplbmRfb2Jq ZWN0c19zdG9yZV9kdG9yX3QpemVuZF9vYmplY3RzX2Rlc3Ryb3lfb2JqZWN0LCAoemVuZF9vYmpl Y3RzX2ZyZWVfb2JqZWN0X3N0b3JhZ2VfdCkgZGF0ZV9vYmplY3RfZnJlZV9zdG9yYWdlX3RpbWV6 b25lLCBOVUxMIFRTUk1MU19DQyk7CiAJcmV0dmFsLmhhbmRsZXJzID0gJmRhdGVfb2JqZWN0X2hh bmRsZXJzX3RpbWV6b25lOwotCQorCiAJcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMjExNywxMiAr MjEyMywxMiBAQCBzdGF0aWMgemVuZF9vYmplY3RfdmFsdWUgZGF0ZV9vYmplY3RfY2xvbmVfdGlt ZXpvbmUoenZhbCAqdGhpc19wdHIgVFNSTUxTX0RDKQogCXBocF90aW1lem9uZV9vYmogKm5ld19v YmogPSBOVUxMOwogCXBocF90aW1lem9uZV9vYmogKm9sZF9vYmogPSAocGhwX3RpbWV6b25lX29i aiAqKSB6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KHRoaXNfcHRyIFRTUk1MU19DQyk7CiAJ emVuZF9vYmplY3RfdmFsdWUgbmV3X292ID0gZGF0ZV9vYmplY3RfbmV3X3RpbWV6b25lX2V4KG9s ZF9vYmotPnN0ZC5jZSwgJm5ld19vYmogVFNSTUxTX0NDKTsKLQkKKwogCXplbmRfb2JqZWN0c19j bG9uZV9tZW1iZXJzKCZuZXdfb2JqLT5zdGQsIG5ld19vdiwgJm9sZF9vYmotPnN0ZCwgWl9PQkpf SEFORExFX1AodGhpc19wdHIpIFRTUk1MU19DQyk7CiAJaWYgKCFvbGRfb2JqLT5pbml0aWFsaXpl ZCkgewogCQlyZXR1cm4gbmV3X292OwogCX0KLQkKKwogCW5ld19vYmotPnR5cGUgPSBvbGRfb2Jq LT50eXBlOwogCW5ld19vYmotPmluaXRpYWxpemVkID0gMTsKIAlzd2l0Y2ggKG5ld19vYmotPnR5 cGUpIHsKQEAgLTIxMzgsNyArMjE0NCw3IEBAIHN0YXRpYyB6ZW5kX29iamVjdF92YWx1ZSBkYXRl X29iamVjdF9jbG9uZV90aW1lem9uZSh6dmFsICp0aGlzX3B0ciBUU1JNTFNfREMpCiAJCQluZXdf b2JqLT50emkuei5hYmJyICAgICAgID0gb2xkX29iai0+dHppLnouYWJicjsKIAkJCWJyZWFrOwog CX0KLQkKKwogCXJldHVybiBuZXdfb3Y7CiB9CiAKQEAgLTIxNTUsMTAgKzIxNjEsMTAgQEAgc3Rh dGljIGlubGluZSB6ZW5kX29iamVjdF92YWx1ZSBkYXRlX29iamVjdF9uZXdfaW50ZXJ2YWxfZXgo emVuZF9jbGFzc19lbnRyeSAqY2wKIAogCXplbmRfb2JqZWN0X3N0ZF9pbml0KCZpbnRlcm4tPnN0 ZCwgY2xhc3NfdHlwZSBUU1JNTFNfQ0MpOwogCW9iamVjdF9wcm9wZXJ0aWVzX2luaXQoJmludGVy bi0+c3RkLCBjbGFzc190eXBlKTsKLQkKKwogCXJldHZhbC5oYW5kbGUgPSB6ZW5kX29iamVjdHNf c3RvcmVfcHV0KGludGVybiwgKHplbmRfb2JqZWN0c19zdG9yZV9kdG9yX3QpemVuZF9vYmplY3Rz X2Rlc3Ryb3lfb2JqZWN0LCAoemVuZF9vYmplY3RzX2ZyZWVfb2JqZWN0X3N0b3JhZ2VfdCkgZGF0 ZV9vYmplY3RfZnJlZV9zdG9yYWdlX2ludGVydmFsLCBOVUxMIFRTUk1MU19DQyk7CiAJcmV0dmFs LmhhbmRsZXJzID0gJmRhdGVfb2JqZWN0X2hhbmRsZXJzX2ludGVydmFsOwotCQorCiAJcmV0dXJu IHJldHZhbDsKIH0KIApAQCAtMjE3Miw3ICsyMTc4LDcgQEAgc3RhdGljIHplbmRfb2JqZWN0X3Zh bHVlIGRhdGVfb2JqZWN0X2Nsb25lX2ludGVydmFsKHp2YWwgKnRoaXNfcHRyIFRTUk1MU19EQykK IAlwaHBfaW50ZXJ2YWxfb2JqICpuZXdfb2JqID0gTlVMTDsKIAlwaHBfaW50ZXJ2YWxfb2JqICpv bGRfb2JqID0gKHBocF9pbnRlcnZhbF9vYmogKikgemVuZF9vYmplY3Rfc3RvcmVfZ2V0X29iamVj dCh0aGlzX3B0ciBUU1JNTFNfQ0MpOwogCXplbmRfb2JqZWN0X3ZhbHVlIG5ld19vdiA9IGRhdGVf b2JqZWN0X25ld19pbnRlcnZhbF9leChvbGRfb2JqLT5zdGQuY2UsICZuZXdfb2JqIFRTUk1MU19D Qyk7Ci0JCisKIAl6ZW5kX29iamVjdHNfY2xvbmVfbWVtYmVycygmbmV3X29iai0+c3RkLCBuZXdf b3YsICZvbGRfb2JqLT5zdGQsIFpfT0JKX0hBTkRMRV9QKHRoaXNfcHRyKSBUU1JNTFNfQ0MpOwog CiAJLyoqIEZJWCBNRSBBREQgQ0xPTkUgU1RVRkYgKiovCkBAIC0yMjM4LDEwICsyMjQ0LDEwIEBA IHN0YXRpYyBpbmxpbmUgemVuZF9vYmplY3RfdmFsdWUgZGF0ZV9vYmplY3RfbmV3X3BlcmlvZF9l eCh6ZW5kX2NsYXNzX2VudHJ5ICpjbGFzCiAKIAl6ZW5kX29iamVjdF9zdGRfaW5pdCgmaW50ZXJu LT5zdGQsIGNsYXNzX3R5cGUgVFNSTUxTX0NDKTsKIAlvYmplY3RfcHJvcGVydGllc19pbml0KCZp bnRlcm4tPnN0ZCwgY2xhc3NfdHlwZSk7Ci0JCisKIAlyZXR2YWwuaGFuZGxlID0gemVuZF9vYmpl Y3RzX3N0b3JlX3B1dChpbnRlcm4sICh6ZW5kX29iamVjdHNfc3RvcmVfZHRvcl90KXplbmRfb2Jq ZWN0c19kZXN0cm95X29iamVjdCwgKHplbmRfb2JqZWN0c19mcmVlX29iamVjdF9zdG9yYWdlX3Qp IGRhdGVfb2JqZWN0X2ZyZWVfc3RvcmFnZV9wZXJpb2QsIE5VTEwgVFNSTUxTX0NDKTsKIAlyZXR2 YWwuaGFuZGxlcnMgPSAmZGF0ZV9vYmplY3RfaGFuZGxlcnNfcGVyaW9kOwotCQorCiAJcmV0dXJu IHJldHZhbDsKIH0KIApAQCAtMjI1NSw3ICsyMjYxLDcgQEAgc3RhdGljIHplbmRfb2JqZWN0X3Zh bHVlIGRhdGVfb2JqZWN0X2Nsb25lX3BlcmlvZCh6dmFsICp0aGlzX3B0ciBUU1JNTFNfREMpCiAJ cGhwX3BlcmlvZF9vYmogKm5ld19vYmogPSBOVUxMOwogCXBocF9wZXJpb2Rfb2JqICpvbGRfb2Jq ID0gKHBocF9wZXJpb2Rfb2JqICopIHplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QodGhpc19w dHIgVFNSTUxTX0NDKTsKIAl6ZW5kX29iamVjdF92YWx1ZSBuZXdfb3YgPSBkYXRlX29iamVjdF9u ZXdfcGVyaW9kX2V4KG9sZF9vYmotPnN0ZC5jZSwgJm5ld19vYmogVFNSTUxTX0NDKTsKLQkKKwog CXplbmRfb2JqZWN0c19jbG9uZV9tZW1iZXJzKCZuZXdfb2JqLT5zdGQsIG5ld19vdiwgJm9sZF9v YmotPnN0ZCwgWl9PQkpfSEFORExFX1AodGhpc19wdHIpIFRTUk1MU19DQyk7CiAKIAkvKiogRklY IE1FIEFERCBDTE9ORSBTVFVGRiAqKi8KQEAgLTIzNDEsMTAgKzIzNDcsNyBAQCBQSFBBUEkgaW50 IHBocF9kYXRlX2luaXRpYWxpemUocGhwX2RhdGVfb2JqICpkYXRlb2JqLCAvKmNvbnN0Ki8gY2hh ciAqdGltZV9zdHIsCiAJdGltZWxpYl90aW1lICAgKm5vdzsKIAl0aW1lbGliX3R6aW5mbyAqdHpp ID0gTlVMTDsKIAl0aW1lbGliX2Vycm9yX2NvbnRhaW5lciAqZXJyID0gTlVMTDsKLQlpbnQgdHlw ZSA9IFRJTUVMSUJfWk9ORVRZUEVfSUQsIG5ld19kc3Q7Ci0JY2hhciAqbmV3X2FiYnI7Ci0JdGlt ZWxpYl9zbGwgICAgIG5ld19vZmZzZXQ7Ci0JCisKIAlpZiAoZGF0ZW9iai0+dGltZSkgewogCQl0 aW1lbGliX3RpbWVfZHRvcihkYXRlb2JqLT50aW1lKTsKIAl9CkBAIC0yMzY3LDQ1ICsyMzcwLDM0 IEBAIFBIUEFQSSBpbnQgcGhwX2RhdGVfaW5pdGlhbGl6ZShwaHBfZGF0ZV9vYmogKmRhdGVvYmos IC8qY29uc3QqLyBjaGFyICp0aW1lX3N0ciwKIAkJcmV0dXJuIDA7CiAJfQogCisJbm93ID0gdGlt ZWxpYl90aW1lX2N0b3IoKTsKIAlpZiAodGltZXpvbmVfb2JqZWN0KSB7CiAJCXBocF90aW1lem9u ZV9vYmogKnR6b2JqOwogCiAJCXR6b2JqID0gKHBocF90aW1lem9uZV9vYmogKikgemVuZF9vYmpl Y3Rfc3RvcmVfZ2V0X29iamVjdCh0aW1lem9uZV9vYmplY3QgVFNSTUxTX0NDKTsKIAkJc3dpdGNo ICh0em9iai0+dHlwZSkgewogCQkJY2FzZSBUSU1FTElCX1pPTkVUWVBFX0lEOgotCQkJCXR6aSA9 IHR6b2JqLT50emkudHo7CisJCQkJbm93LT50el9pbmZvID0gdHpvYmotPnR6aS50ejsKIAkJCQli cmVhazsKIAkJCWNhc2UgVElNRUxJQl9aT05FVFlQRV9PRkZTRVQ6Ci0JCQkJbmV3X29mZnNldCA9 IHR6b2JqLT50emkudXRjX29mZnNldDsKKwkJCQlub3ctPnogPSB0em9iai0+dHppLnV0Y19vZmZz ZXQ7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFRJTUVMSUJfWk9ORVRZUEVfQUJCUjoKLQkJCQluZXdf b2Zmc2V0ID0gdHpvYmotPnR6aS56LnV0Y19vZmZzZXQ7Ci0JCQkJbmV3X2RzdCAgICA9IHR6b2Jq LT50emkuei5kc3Q7Ci0JCQkJbmV3X2FiYnIgICA9IHN0cmR1cCh0em9iai0+dHppLnouYWJicik7 CisJCQkJbm93LT56ID0gdHpvYmotPnR6aS56LnV0Y19vZmZzZXQ7CisJCQkJbm93LT5kc3QgPSB0 em9iai0+dHppLnouZHN0OworCQkJCW5vdy0+dHpfYWJiciA9IHN0cmR1cCh0em9iai0+dHppLnou YWJicik7CiAJCQkJYnJlYWs7CiAJCX0KLQkJdHlwZSA9IHR6b2JqLT50eXBlOwotCX0gZWxzZSBp ZiAoZGF0ZW9iai0+dGltZS0+dHpfaW5mbykgewotCQl0emkgPSBkYXRlb2JqLT50aW1lLT50el9p bmZvOworCQlub3ctPnpvbmVfdHlwZSA9IHR6b2JqLT50eXBlOwogCX0gZWxzZSB7Ci0JCXR6aSA9 IGdldF90aW1lem9uZV9pbmZvKFRTUk1MU19DKTsKKwkJbm93LT56b25lX3R5cGUgPSBUSU1FTElC X1pPTkVUWVBFX0lEOworCQlpZiAoZGF0ZW9iai0+dGltZS0+dHpfaW5mbykgeworCQkJbm93LT50 el9pbmZvID0gZGF0ZW9iai0+dGltZS0+dHpfaW5mbzsKKwkJfSBlbHNlIHsKKwkJCW5vdy0+dHpf aW5mbyA9IGdldF90aW1lem9uZV9pbmZvKFRTUk1MU19DKTsKKwkJfQogCX0KIAotCW5vdyA9IHRp bWVsaWJfdGltZV9jdG9yKCk7Ci0Jbm93LT56b25lX3R5cGUgPSB0eXBlOwotCXN3aXRjaCAodHlw ZSkgewotCQljYXNlIFRJTUVMSUJfWk9ORVRZUEVfSUQ6Ci0JCQlub3ctPnR6X2luZm8gPSB0emk7 Ci0JCQlicmVhazsKLQkJY2FzZSBUSU1FTElCX1pPTkVUWVBFX09GRlNFVDoKLQkJCW5vdy0+eiA9 IG5ld19vZmZzZXQ7Ci0JCQlicmVhazsKLQkJY2FzZSBUSU1FTElCX1pPTkVUWVBFX0FCQlI6Ci0J CQlub3ctPnogPSBuZXdfb2Zmc2V0OwotCQkJbm93LT5kc3QgPSBuZXdfZHN0OwotCQkJbm93LT50 el9hYmJyID0gbmV3X2FiYnI7Ci0JCQlicmVhazsKLQl9CiAJdGltZWxpYl91bml4dGltZTJsb2Nh bChub3csICh0aW1lbGliX3NsbCkgdGltZShOVUxMKSk7CiAKIAl0aW1lbGliX2ZpbGxfaG9sZXMo ZGF0ZW9iai0+dGltZSwgbm93LCBUSU1FTElCX05PX0NMT05FKTsKQEAgLTI2MTMsNyArMjYwNSw3 IEBAIHZvaWQgcGhwX2RhdGVfZG9fcmV0dXJuX3BhcnNlZF90aW1lKElOVEVSTkFMX0ZVTkNUSU9O X1BBUkFNRVRFUlMsIHRpbWVsaWJfdGltZSAqCiAJUEhQX0RBVEVfUEFSU0VfREFURV9TRVRfVElN RV9FTEVNRU5UKGhvdXIsICAgICAgaCk7CiAJUEhQX0RBVEVfUEFSU0VfREFURV9TRVRfVElNRV9F TEVNRU5UKG1pbnV0ZSwgICAgaSk7CiAJUEhQX0RBVEVfUEFSU0VfREFURV9TRVRfVElNRV9FTEVN RU5UKHNlY29uZCwgICAgcyk7Ci0JCisKIAlpZiAocGFyc2VkX3RpbWUtPmYgPT0gLTk5OTk5KSB7 CiAJCWFkZF9hc3NvY19ib29sKHJldHVybl92YWx1ZSwgImZyYWN0aW9uIiwgMCk7CiAJfSBlbHNl IHsKQEAgLTI2ODAsNyArMjY3Miw3IEBAIFBIUF9GVU5DVElPTihkYXRlX3BhcnNlKQogCWludCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9sZW47CiAJc3RydWN0IHRpbWVsaWJfZXJy b3JfY29udGFpbmVyICplcnJvcjsKIAl0aW1lbGliX3RpbWUgICAgICAgICAgICAgICAgICAgKnBh cnNlZF90aW1lOwotCQorCiAJaWYgKHplbmRfcGFyc2VfcGFyYW1ldGVycyhaRU5EX05VTV9BUkdT KCkgVFNSTUxTX0NDLCAicyIsICZkYXRlLCAmZGF0ZV9sZW4pID09IEZBSUxVUkUpIHsKIAkJUkVU VVJOX0ZBTFNFOwogCX0KQEAgLTI2OTksNyArMjY5MSw3IEBAIFBIUF9GVU5DVElPTihkYXRlX3Bh cnNlX2Zyb21fZm9ybWF0KQogCWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZV9s ZW4sIGZvcm1hdF9sZW47CiAJc3RydWN0IHRpbWVsaWJfZXJyb3JfY29udGFpbmVyICplcnJvcjsK IAl0aW1lbGliX3RpbWUgICAgICAgICAgICAgICAgICAgKnBhcnNlZF90aW1lOwotCQorCiAJaWYg KHplbmRfcGFyc2VfcGFyYW1ldGVycyhaRU5EX05VTV9BUkdTKCkgVFNSTUxTX0NDLCAic3MiLCAm Zm9ybWF0LCAmZm9ybWF0X2xlbiwgJmRhdGUsICZkYXRlX2xlbikgPT0gRkFJTFVSRSkgewogCQlS RVRVUk5fRkFMU0U7CiAJfQpAQCAtMzA1Miw3ICszMDQ0LDcgQEAgUEhQX0ZVTkNUSU9OKGRhdGVf aXNvZGF0ZV9zZXQpCiAJbWVtc2V0KCZkYXRlb2JqLT50aW1lLT5yZWxhdGl2ZSwgMCwgc2l6ZW9m KGRhdGVvYmotPnRpbWUtPnJlbGF0aXZlKSk7CiAJZGF0ZW9iai0+dGltZS0+cmVsYXRpdmUuZCA9 IHRpbWVsaWJfZGF5bnJfZnJvbV93ZWVrbnIoeSwgdywgZCk7CiAJZGF0ZW9iai0+dGltZS0+aGF2 ZV9yZWxhdGl2ZSA9IDE7Ci0JCisKIAl0aW1lbGliX3VwZGF0ZV90cyhkYXRlb2JqLT50aW1lLCBO VUxMKTsKIAogCVJFVFVSTl9aVkFMKG9iamVjdCwgMSwgMCk7CkBAIC0zMTM5LDE1ICszMTMxLDE1 IEBAIFBIUF9GVU5DVElPTihkYXRlX2RpZmYpCiBzdGF0aWMgaW50IHRpbWV6b25lX2luaXRpYWxp emUodGltZWxpYl90emluZm8gKip0emksIC8qY29uc3QqLyBjaGFyICp0eiBUU1JNTFNfREMpCiB7 CiAJY2hhciAqdHppZDsKLQkKKwogCSp0emkgPSBOVUxMOwotCQorCiAJaWYgKCh0emlkID0gdGlt ZWxpYl90aW1lem9uZV9pZF9mcm9tX2FiYnIodHosIC0xLCAwKSkpIHsKIAkJKnR6aSA9IHBocF9k YXRlX3BhcnNlX3R6ZmlsZSh0emlkLCBEQVRFX1RJTUVaT05FREIgVFNSTUxTX0NDKTsKIAl9IGVs c2UgewogCQkqdHppID0gcGhwX2RhdGVfcGFyc2VfdHpmaWxlKHR6LCBEQVRFX1RJTUVaT05FREIg VFNSTUxTX0NDKTsKIAl9Ci0JCisKIAlpZiAoKnR6aSkgewogCQlyZXR1cm4gU1VDQ0VTUzsKIAl9 IGVsc2UgewpAQCAtMzE4OSw3ICszMTgxLDcgQEAgUEhQX01FVEhPRChEYXRlVGltZVpvbmUsIF9f Y29uc3RydWN0KQogCXRpbWVsaWJfdHppbmZvICp0emkgPSBOVUxMOwogCXBocF90aW1lem9uZV9v YmogKnR6b2JqOwogCXplbmRfZXJyb3JfaGFuZGxpbmcgZXJyb3JfaGFuZGxpbmc7Ci0JCisKIAl6 ZW5kX3JlcGxhY2VfZXJyb3JfaGFuZGxpbmcoRUhfVEhST1csIE5VTEwsICZlcnJvcl9oYW5kbGlu ZyBUU1JNTFNfQ0MpOwogCWlmIChTVUNDRVNTID09IHplbmRfcGFyc2VfcGFyYW1ldGVycyhaRU5E X05VTV9BUkdTKCkgVFNSTUxTX0NDLCAicyIsICZ0eiwgJnR6X2xlbikpIHsKIAkJaWYgKFNVQ0NF U1MgPT0gdGltZXpvbmVfaW5pdGlhbGl6ZSgmdHppLCB0eiBUU1JNTFNfQ0MpKSB7CkBAIC0zNDE2 LDcgKzM0MDgsNyBAQCBzdGF0aWMgaW50IGRhdGVfaW50ZXJ2YWxfaW5pdGlhbGl6ZSh0aW1lbGli X3JlbF90aW1lICoqcnQsIC8qY29uc3QqLyBjaGFyICpmb3JtYQogCXN0cnVjdCB0aW1lbGliX2Vy cm9yX2NvbnRhaW5lciAqZXJyb3JzOwogCiAJdGltZWxpYl9zdHJ0b2ludGVydmFsKGZvcm1hdCwg Zm9ybWF0X2xlbmd0aCwgJmIsICZlLCAmcCwgJnIsICZlcnJvcnMpOwotCQorCiAJaWYgKGVycm9y cy0+ZXJyb3JfY291bnQgPiAwKSB7CiAJCXBocF9lcnJvcl9kb2NyZWYoTlVMTCBUU1JNTFNfQ0Ms IEVfV0FSTklORywgIlVua25vd24gb3IgYmFkIGZvcm1hdCAoJXMpIiwgZm9ybWF0KTsKIAkJcmV0 dmFsID0gRkFJTFVSRTsKQEAgLTM1NzEsNyArMzU2Myw3IEBAIFBIUF9NRVRIT0QoRGF0ZUludGVy dmFsLCBfX2NvbnN0cnVjdCkKIAlwaHBfaW50ZXJ2YWxfb2JqICpkaW9iajsKIAl0aW1lbGliX3Jl bF90aW1lICpyZWx0aW1lOwogCXplbmRfZXJyb3JfaGFuZGxpbmcgZXJyb3JfaGFuZGxpbmc7Ci0J CisKIAl6ZW5kX3JlcGxhY2VfZXJyb3JfaGFuZGxpbmcoRUhfVEhST1csIE5VTEwsICZlcnJvcl9o YW5kbGluZyBUU1JNTFNfQ0MpOwogCWlmICh6ZW5kX3BhcnNlX3BhcmFtZXRlcnMoWkVORF9OVU1f QVJHUygpIFRTUk1MU19DQywgInMiLCAmaW50ZXJ2YWxfc3RyaW5nLCAmaW50ZXJ2YWxfc3RyaW5n X2xlbmd0aCkgPT0gU1VDQ0VTUykgewogCQlpZiAoZGF0ZV9pbnRlcnZhbF9pbml0aWFsaXplKCZy ZWx0aW1lLCBpbnRlcnZhbF9zdHJpbmcsIGludGVydmFsX3N0cmluZ19sZW5ndGggVFNSTUxTX0ND KSA9PSBTVUNDRVNTKSB7CkBAIC0zNzY3LDcgKzM3NTksNyBAQCBzdGF0aWMgaW50IGRhdGVfcGVy aW9kX2luaXRpYWxpemUodGltZWxpYl90aW1lICoqc3QsIHRpbWVsaWJfdGltZSAqKmV0LCB0aW1l bGliXwogCXN0cnVjdCB0aW1lbGliX2Vycm9yX2NvbnRhaW5lciAqZXJyb3JzOwogCiAJdGltZWxp Yl9zdHJ0b2ludGVydmFsKGZvcm1hdCwgZm9ybWF0X2xlbmd0aCwgJmIsICZlLCAmcCwgJnIsICZl cnJvcnMpOwotCQorCiAJaWYgKGVycm9ycy0+ZXJyb3JfY291bnQgPiAwKSB7CiAJCXBocF9lcnJv cl9kb2NyZWYoTlVMTCBUU1JNTFNfQ0MsIEVfV0FSTklORywgIlVua25vd24gb3IgYmFkIGZvcm1h dCAoJXMpIiwgZm9ybWF0KTsKIAkJcmV0dmFsID0gRkFJTFVSRTsKQEAgLTM3OTYsNyArMzc4OCw3 IEBAIFBIUF9NRVRIT0QoRGF0ZVBlcmlvZCwgX19jb25zdHJ1Y3QpCiAJaW50ICAgaXNvc3RyX2xl biA9IDA7CiAJdGltZWxpYl90aW1lICpjbG9uZTsKIAl6ZW5kX2Vycm9yX2hhbmRsaW5nIGVycm9y X2hhbmRsaW5nOwotCQorCiAJemVuZF9yZXBsYWNlX2Vycm9yX2hhbmRsaW5nKEVIX1RIUk9XLCBO VUxMLCAmZXJyb3JfaGFuZGxpbmcgVFNSTUxTX0NDKTsKIAlpZiAoemVuZF9wYXJzZV9wYXJhbWV0 ZXJzX2V4KFpFTkRfUEFSU0VfUEFSQU1TX1FVSUVULCBaRU5EX05VTV9BUkdTKCkgVFNSTUxTX0ND LCAiT09sfGwiLCAmc3RhcnQsIGRhdGVfY2VfZGF0ZSwgJmludGVydmFsLCBkYXRlX2NlX2ludGVy dmFsLCAmcmVjdXJyZW5jZXMsICZvcHRpb25zKSA9PSBGQUlMVVJFKSB7CiAJCWlmICh6ZW5kX3Bh cnNlX3BhcmFtZXRlcnNfZXgoWkVORF9QQVJTRV9QQVJBTVNfUVVJRVQsIFpFTkRfTlVNX0FSR1Mo KSBUU1JNTFNfQ0MsICJPT098bCIsICZzdGFydCwgZGF0ZV9jZV9kYXRlLCAmaW50ZXJ2YWwsIGRh dGVfY2VfaW50ZXJ2YWwsICZlbmQsIGRhdGVfY2VfZGF0ZSwgJm9wdGlvbnMpID09IEZBSUxVUkUp IHsKQEAgLTM5MDksNyArMzkwMSw3IEBAIFBIUF9GVU5DVElPTih0aW1lem9uZV9pZGVudGlmaWVy c19saXN0KQogCXR6ZGIgPSBEQVRFX1RJTUVaT05FREI7CiAJaXRlbV9jb3VudCA9IHR6ZGItPmlu ZGV4X3NpemU7CiAJdGFibGUgPSB0emRiLT5pbmRleDsKLQkKKwogCWFycmF5X2luaXQocmV0dXJu X3ZhbHVlKTsKIAogCWZvciAoaSA9IDA7IGkgPCBpdGVtX2NvdW50OyArK2kpIHsKQEAgLTM5NDMs NyArMzkzNSw3IEBAIFBIUF9GVU5DVElPTih0aW1lem9uZV9hYmJyZXZpYXRpb25zX2xpc3QpCiB7 CiAJY29uc3QgdGltZWxpYl90el9sb29rdXBfdGFibGUgKnRhYmxlLCAqZW50cnk7CiAJenZhbCAg ICAgICAgICAgICAgICAgICAgICAgICAgKmVsZW1lbnQsICoqYWJicl9hcnJheV9wcCwgKmFiYnJf YXJyYXk7Ci0JCisKIAl0YWJsZSA9IHRpbWVsaWJfdGltZXpvbmVfYWJicmV2aWF0aW9uc19saXN0 KCk7CiAJYXJyYXlfaW5pdChyZXR1cm5fdmFsdWUpOwogCWVudHJ5ID0gdGFibGU7CkBAIC00MDE5 LDExICs0MDExLDExIEBAIHN0YXRpYyB2b2lkIHBocF9kb19kYXRlX3N1bnJpc2Vfc3Vuc2V0KElO VEVSTkFMX0ZVTkNUSU9OX1BBUkFNRVRFUlMsIGludCBjYWxjX3N1CiAJdGltZWxpYl90aW1lICAg KnQ7CiAJdGltZWxpYl90emluZm8gKnR6aTsKIAljaGFyICAgICAgICAgICAqcmV0c3RyOwotCQor CiAJaWYgKHplbmRfcGFyc2VfcGFyYW1ldGVycyhaRU5EX05VTV9BUkdTKCkgVFNSTUxTX0NDLCAi bHxsZGRkZCIsICZ0aW1lLCAmcmV0Zm9ybWF0LCAmbGF0aXR1ZGUsICZsb25naXR1ZGUsICZ6ZW5p dGgsICZnbXRfb2Zmc2V0KSA9PSBGQUlMVVJFKSB7CiAJCVJFVFVSTl9GQUxTRTsKIAl9Ci0JCisK IAlzd2l0Y2ggKFpFTkRfTlVNX0FSR1MoKSkgewogCQljYXNlIDE6CiAJCQlyZXRmb3JtYXQgPSBT VU5GVU5DU19SRVRfU1RSSU5HOwpAQCAtNDA2Nyw3ICs0MDU5LDcgQEAgc3RhdGljIHZvaWQgcGhw X2RvX2RhdGVfc3VucmlzZV9zdW5zZXQoSU5URVJOQUxfRlVOQ1RJT05fUEFSQU1FVEVSUywgaW50 IGNhbGNfc3UKIAl0aW1lbGliX3VuaXh0aW1lMmxvY2FsKHQsIHRpbWUpOwogCXJzID0gdGltZWxp Yl9hc3Ryb19yaXNlX3NldF9hbHRpdHVkZSh0LCBsb25naXR1ZGUsIGxhdGl0dWRlLCBhbHRpdHVk ZSwgMSwgJmhfcmlzZSwgJmhfc2V0LCAmcmlzZSwgJnNldCwgJnRyYW5zaXQpOwogCXRpbWVsaWJf dGltZV9kdG9yKHQpOwotCQorCiAJaWYgKHJzICE9IDApIHsKIAkJUkVUVVJOX0ZBTFNFOwogCX0K QEAgLTQxMjEsNyArNDExMyw3IEBAIFBIUF9GVU5DVElPTihkYXRlX3N1bl9pbmZvKQogCXRpbWVs aWJfc2xsICAgICByaXNlLCBzZXQsIHRyYW5zaXQ7CiAJaW50ICAgICAgICAgICAgIGR1bW15Owog CWRvdWJsZSAgICAgICAgICBkZHVtbXk7Ci0JCisKIAlpZiAoemVuZF9wYXJzZV9wYXJhbWV0ZXJz KFpFTkRfTlVNX0FSR1MoKSBUU1JNTFNfQ0MsICJsZGQiLCAmdGltZSwgJmxhdGl0dWRlLCAmbG9u Z2l0dWRlKSA9PSBGQUlMVVJFKSB7CiAJCVJFVFVSTl9GQUxTRTsKIAl9CkBAIC00MTM1LDcgKzQx MjcsNyBAQCBQSFBfRlVOQ1RJT04oZGF0ZV9zdW5faW5mbykKIAkvKiBTZXR1cCAqLwogCXQyID0g dGltZWxpYl90aW1lX2N0b3IoKTsKIAlhcnJheV9pbml0KHJldHVybl92YWx1ZSk7Ci0JCisKIAkv KiBHZXQgc3VuIHVwL2Rvd24gYW5kIHRyYW5zaXQgKi8KIAlycyA9IHRpbWVsaWJfYXN0cm9fcmlz ZV9zZXRfYWx0aXR1ZGUodCwgbG9uZ2l0dWRlLCBsYXRpdHVkZSwgLTM1LjAvNjAsIDEsICZkZHVt bXksICZkZHVtbXksICZyaXNlLCAmc2V0LCAmdHJhbnNpdCk7CiAJc3dpdGNoIChycykgewo= --f46d0444ef138a406c04d04871ff--