Received: by 2002:ab2:6a05:0:b0:1f8:1780:a4ed with SMTP id w5csp2516523lqo; Tue, 14 May 2024 00:33:20 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWwvpFMxoMutMI+i0gamEMCvpoRhdsUqiUtZrAiTFiNi50qRBPRhlwqfQUrH3Q7WdKIZK2K0zjx2EEmLXXp8sG4lIqT+yFdUeQlupwT5g== X-Google-Smtp-Source: AGHT+IHt9nTQ3n7QvVVovMRXzaH6NzSgHxr8PR4lXroZiGp6cpVr+ydx1EBCQH1HOe8opfJoA3Pm X-Received: by 2002:a05:6e02:1e08:b0:36c:c6c:dc31 with SMTP id e9e14a558f8ab-36cc14e1acdmr159957745ab.29.1715671999955; Tue, 14 May 2024 00:33:19 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1715671999; cv=pass; d=google.com; s=arc-20160816; b=j7jEhP3O7wIb8rAd6TRkneOtwJcN4ByccY8+I7MqtYnUXPVLXUyDqj4jCWn94Uu6le vJKj8zDGNoQSGSJMyMlzKNfbklV7uj+nozZDzsgY86nKx+f6wcXKSfXEm/taFqXxJW7O h7DLlsUNAnVIROd2vsziw/thuz3Z+URr0HlDKoncLCVlttiWrDiEXu0KpHS23aGBPz61 Er3K/qFIrYeizCCa7sWsSAJLHXJfbpyH6VwX1fHRccrFPKV+VMOf43/N5vVZ9IuZEWOd e+g5yeKeGwFK5pIiawtJvFttdlQ43O6Ansp2Gek+lbVQh/L3rMpEzVFl68mOW3aKus2d GKXw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :subject:message-id:reply-to:cc:to:from:date; bh=qQA+RWWHaLj5qOfP34qnwfrqAZ3nENaXwsjTdYMTjP0=; fh=zJK3udwibBhkgs6KWb2vkVS8mOmPpBZ9LLMJWBHYy54=; b=AmVe58T7e1mzL+FrYCwo8NTbvFOL78WLaDYIBdQQTZtZZG+alIQNt6oW9BP1PQ0ecM PCx4xdlfmb4CBlgbYlq8aU+eK1C2cIrKT5xxUvoY2/iLLHZAw7oGbXqfkswWWYq3dNc6 Z36jyXStVq03N43sKF7ZXqt3ocvdNpZeeqQz6sMSiQK1jEDpV610+mlPyBWXzdZy4RdD hRBUZJeQiyPEn+jDKFdt0kiTULN1USm34fok2MDTGxAjoQqudfX7VC+PSmfipBmX0JOT KzEVAvanpjPADVEqHXPuz3EmIVBO0UKdE44Sb3QofzutpoqYTfyV7x0CpGZw+6go6gKq JoQA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=ubisectech.com); spf=pass (google.com: domain of linux-kernel+bounces-178395-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-178395-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id 41be03b00d2f7-638b206a7c1si8121202a12.598.2024.05.14.00.33.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 May 2024 00:33:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-178395-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=ubisectech.com); spf=pass (google.com: domain of linux-kernel+bounces-178395-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-178395-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 59C60B22573 for ; Tue, 14 May 2024 07:29:03 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8000E17BAA; Tue, 14 May 2024 07:27:39 +0000 (UTC) Received: from out28-196.mail.aliyun.com (out28-196.mail.aliyun.com [115.124.28.196]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1389C179B7; Tue, 14 May 2024 07:27:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.28.196 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715671657; cv=none; b=OQOuTVDE2OdWSJJc6ZdF9dNN6u+l2ZKdo49/13GnMwyorjVUtVIVJ/BjRIOUOY3uTO5cOEp2cycJgLx2YmwABWjfSjjdRHxuDRARjUdU8TixG1knFiQqCC8Plq3X5+Y4IPfPaEM2108AM4Vt9HXZhj7/12fhKF9SwKW/C1lAijc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715671657; c=relaxed/simple; bh=qQA+RWWHaLj5qOfP34qnwfrqAZ3nENaXwsjTdYMTjP0=; h=Date:From:To:Cc:Message-ID:Subject:MIME-Version:Content-Type; b=XKfO7XYrwwwFEhKLItgibXIW755kkmE/FotIKSO9xapF+jC85w0OnkbL52SH6zGN3uRYGvl6ODt06TyDGV2CU4bIdzl5bLxqC3HkFe0MmFmXWbXjtlONYDPosuKo0i5N5jco9/+mef49yT+LxUr8Y8RVAiTe1aHFSIeV39lQAX4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ubisectech.com; spf=pass smtp.mailfrom=ubisectech.com; arc=none smtp.client-ip=115.124.28.196 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ubisectech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ubisectech.com X-Alimail-AntiSpam:AC=CONTINUE;BC=0.07700448|-1;CH=green;DM=|CONTINUE|false|;DS=CONTINUE|ham_system_inform|0.0885841-0.000943945-0.910472;FP=0|0|0|0|0|0|0|0;HT=ay29a033018047188;MF=bugreport@ubisectech.com;NM=1;PH=DW;RN=5;RT=5;SR=0;TI=W4_0.2.3_v5ForWebDing_214403D2_1715671582044_o7001c3132; Received: from WS-web (bugreport@ubisectech.com[W4_0.2.3_v5ForWebDing_214403D2_1715671582044_o7001c3132]) at Tue, 14 May 2024 15:27:23 +0800 Date: Tue, 14 May 2024 15:27:23 +0800 From: "Ubisectech Sirius" To: "linux-trace-kernel" , "linux-kernel" Cc: "ast" , "daniel" , "andrii" Reply-To: "Ubisectech Sirius" Message-ID: Subject: =?UTF-8?B?V0FSTklORzoga21hbGxvYyBidWcgaW4gYnBmX3Vwcm9iZV9tdWx0aV9saW5rX2F0dGFjaA==?= X-Mailer: [Alimail-Mailagent][W4_0.2.3][v5ForWebDing][Chrome] Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 x-aliyun-im-through: {"mailThroughImNew":true} x-aliyun-mail-creator: W4_0.2.3_v5ForWebDing_M3LTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyNC4wLjAuMCBTYWZhcmkvNTM3LjM2vN Content-Type: multipart/mixed; boundary="----=ALIBOUNDARY_122941_7f69acf60700_6643125b_87f42" This is a multi-part message in MIME format. ------=ALIBOUNDARY_122941_7f69acf60700_6643125b_87f42 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 SGVsbG8uCldlIGFyZSBVYmlzZWN0ZWNoIFNpcml1cyBUZWFtLCB0aGUgdnVsbmVyYWJpbGl0eSBs YWIgb2YgQ2hpbmEgVmFsaWFudFNlYy4gUmVjZW50bHksIG91ciB0ZWFtIGhhcyBkaXNjb3ZlcmVk IGEgaXNzdWUgaW4gTGludXgga2VybmVsIDYuNy4gIEF0dGFjaGVkIHRvIHRoZSBlbWFpbCB3ZXJl IGEgUG9DIGZpbGUgb2YgdGhlIGlzc3VlLgoKU3RhY2sgZHVtcDoKCmxvb3AzOiBkZXRlY3RlZCBj YXBhY2l0eSBjaGFuZ2UgZnJvbSAwIHRvIDgKTVREOiBBdHRlbXB0IHRvIG1vdW50IG5vbi1NVEQg ZGV2aWNlICIvZGV2L2xvb3AzIgotLS0tLS0tLS0tLS1bIGN1dCBoZXJlIF0tLS0tLS0tLS0tLS0K V0FSTklORzogQ1BVOiAxIFBJRDogMTAwNzUgYXQgbW0vdXRpbC5jOjYzMiBrdm1hbGxvY19ub2Rl KzB4MTk5LzB4MWIwIG1tL3V0aWwuYzo2MzIKTW9kdWxlcyBsaW5rZWQgaW46CkNQVTogMSBQSUQ6 IDEwMDc1IENvbW06IHN5ei1leGVjdXRvci4zIE5vdCB0YWludGVkIDYuNy4wICMyCkhhcmR3YXJl IG5hbWU6IFFFTVUgU3RhbmRhcmQgUEMgKGk0NDBGWCArIFBJSVgsIDE5OTYpLCBCSU9TIDEuMTUu MC0xIDA0LzAxLzIwMTQKUklQOiAwMDEwOmt2bWFsbG9jX25vZGUrMHgxOTkvMHgxYjAgbW0vdXRp bC5jOjYzMgpDb2RlOiAwMiAxZCAwMCBlYiBhYSBlOCBhNyA0OSBjNiBmZiA0MSA4MSBlNSAwMCAy MCAwMCAwMCAzMSBmZiA0NCA4OSBlZSBlOCAzNiA0NSBjNiBmZiA0NSA4NSBlZCAwZiA4NSAxYiBm ZiBmZiBmZiBlOCA4OCA0OSBjNiBmZiA5MCA8MGY+IDBiIDkwIGU5IGRkIGZlIGZmIGZmIDY2IDY2 IDJlIDBmIDFmIDg0IDAwIDAwIDAwIDAwIDAwIDBmIDFmIDQwClJTUDogMDAxODpmZmZmYzkwMDAy MDA3YjYwIEVGTEFHUzogMDAwMTAyMTIKUkFYOiAwMDAwMDAwMDAwMDAyM2U0IFJCWDogMDAwMDAw MDAwMDAwMDQwMCBSQ1g6IGZmZmZjOTAwMDNhYWEwMDAKUkRYOiAwMDAwMDAwMDAwMDQwMDAwIFJT STogZmZmZmZmZmY4MWMzYWNjOCBSREk6IDAwMDAwMDAwMDAwMDAwMDUKUkJQOiAwMDAwMDAzN2Zm ZmZjZWM4IFIwODogMDAwMDAwMDAwMDAwMDAwNSBSMDk6IDAwMDAwMDAwMDAwMDAwMDAKUjEwOiAw MDAwMDAwMDAwMDAwMDAwIFIxMTogMDAwMDAwMDAwMDAwMDAwMCBSMTI6IDAwMDAwMDAwMDAwMDAw MDAKUjEzOiAwMDAwMDAwMDAwMDAwMDAwIFIxNDogMDAwMDAwMDBmZmZmZmZmZiBSMTU6IGZmZmY4 ODgwNWZmNmUxYjgKRlM6ICAwMDAwN2ZjNjIyMDVmNjQwKDAwMDApIEdTOmZmZmY4ODgwN2VjMDAw MDAoMDAwMCkga25sR1M6MDAwMDAwMDAwMDAwMDAwMApDUzogIDAwMTAgRFM6IDAwMDAgRVM6IDAw MDAgQ1IwOiAwMDAwMDAwMDgwMDUwMDMzCkNSMjogMDAwMDAwMWIyZTAyNjAwMCBDUjM6IDAwMDAw MDAwNWYzMzgwMDAgQ1I0OiAwMDAwMDAwMDAwNzUwZWYwCkRSMDogMDAwMDAwMDAwMDAwMDAwMCBE UjE6IDAwMDAwMDAwMDAwMDAwMDAgRFIyOiAwMDAwMDAwMDAwMDAwMDAwCkRSMzogMDAwMDAwMDAw MDAwMDAwMCBEUjY6IDAwMDAwMDAwZmZmZTBmZjAgRFI3OiAwMDAwMDAwMDAwMDAwNDAwClBLUlU6 IDU1NTU1NTU0CkNhbGwgVHJhY2U6CiA8VEFTSz4KIGt2bWFsbG9jIGluY2x1ZGUvbGludXgvc2xh Yi5oOjczOCBbaW5saW5lXQoga3ZtYWxsb2NfYXJyYXkgaW5jbHVkZS9saW51eC9zbGFiLmg6NzU2 IFtpbmxpbmVdCiBrdmNhbGxvYyBpbmNsdWRlL2xpbnV4L3NsYWIuaDo3NjEgW2lubGluZV0KIGJw Zl91cHJvYmVfbXVsdGlfbGlua19hdHRhY2grMHgzZmUvMHhmNjAga2VybmVsL3RyYWNlL2JwZl90 cmFjZS5jOjMyMzkKIGxpbmtfY3JlYXRlIGtlcm5lbC9icGYvc3lzY2FsbC5jOjUwMTIgW2lubGlu ZV0KIF9fc3lzX2JwZisweDJlODUvMHg0ZTAwIGtlcm5lbC9icGYvc3lzY2FsbC5jOjU0NTMKIF9f ZG9fc3lzX2JwZiBrZXJuZWwvYnBmL3N5c2NhbGwuYzo1NDg3IFtpbmxpbmVdCiBfX3NlX3N5c19i cGYga2VybmVsL2JwZi9zeXNjYWxsLmM6NTQ4NSBbaW5saW5lXQogX194NjRfc3lzX2JwZisweDc4 LzB4YzAga2VybmVsL2JwZi9zeXNjYWxsLmM6NTQ4NQogZG9fc3lzY2FsbF94NjQgYXJjaC94ODYv ZW50cnkvY29tbW9uLmM6NTIgW2lubGluZV0KIGRvX3N5c2NhbGxfNjQrMHg0My8weDEyMCBhcmNo L3g4Ni9lbnRyeS9jb21tb24uYzo4MwogZW50cnlfU1lTQ0FMTF82NF9hZnRlcl9od2ZyYW1lKzB4 NmYvMHg3NwpSSVA6IDAwMzM6MHg3ZmM2MjEyOGZkNmQKQ29kZTogYzMgZTggOTcgMmIgMDAgMDAg MGYgMWYgODAgMDAgMDAgMDAgMDAgZjMgMGYgMWUgZmEgNDggODkgZjggNDggODkgZjcgNDggODkg ZDYgNDggODkgY2EgNGQgODkgYzIgNGQgODkgYzggNGMgOGIgNGMgMjQgMDggMGYgMDUgPDQ4PiAz ZCAwMSBmMCBmZiBmZiA3MyAwMSBjMyA0OCBjNyBjMSBiMCBmZiBmZiBmZiBmNyBkOCA2NCA4OSAw MSA0OApSU1A6IDAwMmI6MDAwMDdmYzYyMjA1ZjAyOCBFRkxBR1M6IDAwMDAwMjQ2IE9SSUdfUkFY OiAwMDAwMDAwMDAwMDAwMTQxClJBWDogZmZmZmZmZmZmZmZmZmZkYSBSQlg6IDAwMDA3ZmM2MjEz Y2JmODAgUkNYOiAwMDAwN2ZjNjIxMjhmZDZkClJEWDogMDAwMDAwMDAwMDAwMDA0MCBSU0k6IDAw MDAwMDAwMjAwMDAxYzAgUkRJOiAwMDAwMDAwMDAwMDAwMDFjClJCUDogMDAwMDdmYzYyMTJmMTRj ZCBSMDg6IDAwMDAwMDAwMDAwMDAwMDAgUjA5OiAwMDAwMDAwMDAwMDAwMDAwClIxMDogMDAwMDAw MDAwMDAwMDAwMCBSMTE6IDAwMDAwMDAwMDAwMDAyNDYgUjEyOiAwMDAwMDAwMDAwMDAwMDAwClIx MzogMDAwMDAwMDAwMDAwMDAwYiBSMTQ6IDAwMDA3ZmM2MjEzY2JmODAgUjE1OiAwMDAwN2ZjNjIy MDNmMDAwCiA8L1RBU0s+CgpUaGFuayB5b3UgZm9yIHRha2luZyB0aGUgdGltZSB0byByZWFkIHRo aXMgZW1haWwgYW5kIHdlIGxvb2sgZm9yd2FyZCB0byB3b3JraW5nIHdpdGggeW91IGZ1cnRoZXIu CgoKCg== ------=ALIBOUNDARY_122941_7f69acf60700_6643125b_87f42 Content-Type: application/octet-stream Content-Disposition: attachment; filename="=?UTF-8?B?cG9jLmM=?=" Content-Transfer-Encoding: base64 Ly8gYXV0b2dlbmVyYXRlZCBieSBzeXprYWxsZXIgKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUv c3l6a2FsbGVyKQoKI2RlZmluZSBfR05VX1NPVVJDRQoKI2luY2x1ZGUgPGVuZGlhbi5oPgojaW5j bHVkZSA8ZXJybm8uaD4KI2luY2x1ZGUgPGZjbnRsLmg+CiNpbmNsdWRlIDxzZXRqbXAuaD4KI2lu Y2x1ZGUgPHN0ZGJvb2wuaD4KI2luY2x1ZGUgPHN0ZGRlZi5oPgojaW5jbHVkZSA8c3RkaW50Lmg+ CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzdHJpbmcu aD4KI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgojaW5jbHVkZSA8c3lzL21tYW4uaD4KI2luY2x1ZGUg PHN5cy9tb3VudC5oPgojaW5jbHVkZSA8c3lzL3N0YXQuaD4KI2luY2x1ZGUgPHN5cy9zeXNjYWxs Lmg+CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgoKI2luY2x1ZGUg PGxpbnV4L2xvb3AuaD4KCiNpZm5kZWYgX19OUl9icGYKI2RlZmluZSBfX05SX2JwZiAzMjEKI2Vu ZGlmCiNpZm5kZWYgX19OUl9tZW1mZF9jcmVhdGUKI2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZSAz MTkKI2VuZGlmCgpzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIHByb2NpZDsKCiNkZWZpbmUgQklU TUFTSyhiZl9vZmYsIGJmX2xlbikgKCgoMXVsbCA8PCAoYmZfbGVuKSkgLSAxKSA8PCAoYmZfb2Zm KSkKI2RlZmluZSBTVE9SRV9CWV9CSVRNQVNLKHR5cGUsIGh0b2JlLCBhZGRyLCB2YWwsIGJmX29m ZiwgYmZfbGVuKSAgICAgICAgICAgICAgIFwKICAqKHR5cGUqKShhZGRyKSA9ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAg aHRvYmUoKGh0b2JlKCoodHlwZSopKGFkZHIpKSAmIH5CSVRNQVNLKChiZl9vZmYpLCAoYmZfbGVu KSkpIHwgICAgICAgICAgIFwKICAgICAgICAgICAgKCgodHlwZSkodmFsKSA8PCAoYmZfb2ZmKSkg JiBCSVRNQVNLKChiZl9vZmYpLCAoYmZfbGVuKSkpKQoKLy8lIFRoaXMgY29kZSBpcyBkZXJpdmVk IGZyb20gcHVmZi57YyxofSwgZm91bmQgaW4gdGhlIHpsaWIgZGV2ZWxvcG1lbnQuIFRoZQovLyUg b3JpZ2luYWwgZmlsZXMgY29tZSB3aXRoIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0IG5vdGljZToK Ci8vJSBDb3B5cmlnaHQgKEMpIDIwMDItMjAxMyBNYXJrIEFkbGVyLCBhbGwgcmlnaHRzIHJlc2Vy dmVkCi8vJSB2ZXJzaW9uIDIuMywgMjEgSmFuIDIwMTMKLy8lIFRoaXMgc29mdHdhcmUgaXMgcHJv dmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCi8vJSB3YXJyYW50 eS4gIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvciBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRh bWFnZXMKLy8lIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCi8vJSBQZXJt aXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkg cHVycG9zZSwKLy8lIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFs dGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXQKLy8lIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIHJlc3RyaWN0aW9uczoKLy8lIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBt dXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90Ci8vJSAgICBjbGFpbSB0aGF0 IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2Fy ZQovLyUgICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBk b2N1bWVudGF0aW9uIHdvdWxkIGJlCi8vJSAgICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVp cmVkLgovLyUgMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtl ZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmUKLy8lICAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5n IHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KLy8lIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVt b3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uCi8vJSBNYXJrIEFk bGVyICAgIG1hZGxlckBhbHVtbmkuY2FsdGVjaC5lZHUKCi8vJSBCRUdJTiBDT0RFIERFUklWRUQg RlJPTSBwdWZmLntjLGh9CgojZGVmaW5lIE1BWEJJVFMgMTUKI2RlZmluZSBNQVhMQ09ERVMgMjg2 CiNkZWZpbmUgTUFYRENPREVTIDMwCiNkZWZpbmUgTUFYQ09ERVMgKE1BWExDT0RFUyArIE1BWERD T0RFUykKI2RlZmluZSBGSVhMQ09ERVMgMjg4CgpzdHJ1Y3QgcHVmZl9zdGF0ZSB7CiAgdW5zaWdu ZWQgY2hhciogb3V0OwogIHVuc2lnbmVkIGxvbmcgb3V0bGVuOwogIHVuc2lnbmVkIGxvbmcgb3V0 Y250OwogIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluOwogIHVuc2lnbmVkIGxvbmcgaW5sZW47CiAg dW5zaWduZWQgbG9uZyBpbmNudDsKICBpbnQgYml0YnVmOwogIGludCBiaXRjbnQ7CiAgam1wX2J1 ZiBlbnY7Cn07CnN0YXRpYyBpbnQgcHVmZl9iaXRzKHN0cnVjdCBwdWZmX3N0YXRlKiBzLCBpbnQg bmVlZCkKewogIGxvbmcgdmFsID0gcy0+Yml0YnVmOwogIHdoaWxlIChzLT5iaXRjbnQgPCBuZWVk KSB7CiAgICBpZiAocy0+aW5jbnQgPT0gcy0+aW5sZW4pCiAgICAgIGxvbmdqbXAocy0+ZW52LCAx KTsKICAgIHZhbCB8PSAobG9uZykocy0+aW5bcy0+aW5jbnQrK10pIDw8IHMtPmJpdGNudDsKICAg IHMtPmJpdGNudCArPSA4OwogIH0KICBzLT5iaXRidWYgPSAoaW50KSh2YWwgPj4gbmVlZCk7CiAg cy0+Yml0Y250IC09IG5lZWQ7CiAgcmV0dXJuIChpbnQpKHZhbCAmICgoMUwgPDwgbmVlZCkgLSAx KSk7Cn0Kc3RhdGljIGludCBwdWZmX3N0b3JlZChzdHJ1Y3QgcHVmZl9zdGF0ZSogcykKewogIHMt PmJpdGJ1ZiA9IDA7CiAgcy0+Yml0Y250ID0gMDsKICBpZiAocy0+aW5jbnQgKyA0ID4gcy0+aW5s ZW4pCiAgICByZXR1cm4gMjsKICB1bnNpZ25lZCBsZW4gPSBzLT5pbltzLT5pbmNudCsrXTsKICBs ZW4gfD0gcy0+aW5bcy0+aW5jbnQrK10gPDwgODsKICBpZiAocy0+aW5bcy0+aW5jbnQrK10gIT0g KH5sZW4gJiAweGZmKSB8fAogICAgICBzLT5pbltzLT5pbmNudCsrXSAhPSAoKH5sZW4gPj4gOCkg JiAweGZmKSkKICAgIHJldHVybiAtMjsKICBpZiAocy0+aW5jbnQgKyBsZW4gPiBzLT5pbmxlbikK ICAgIHJldHVybiAyOwogIGlmIChzLT5vdXRjbnQgKyBsZW4gPiBzLT5vdXRsZW4pCiAgICByZXR1 cm4gMTsKICBmb3IgKDsgbGVuLS07IHMtPm91dGNudCsrLCBzLT5pbmNudCsrKSB7CiAgICBpZiAo cy0+aW5bcy0+aW5jbnRdKQogICAgICBzLT5vdXRbcy0+b3V0Y250XSA9IHMtPmluW3MtPmluY250 XTsKICB9CiAgcmV0dXJuIDA7Cn0Kc3RydWN0IHB1ZmZfaHVmZm1hbiB7CiAgc2hvcnQqIGNvdW50 OwogIHNob3J0KiBzeW1ib2w7Cn07CnN0YXRpYyBpbnQgcHVmZl9kZWNvZGUoc3RydWN0IHB1ZmZf c3RhdGUqIHMsIGNvbnN0IHN0cnVjdCBwdWZmX2h1ZmZtYW4qIGgpCnsKICBpbnQgZmlyc3QgPSAw OwogIGludCBpbmRleCA9IDA7CiAgaW50IGJpdGJ1ZiA9IHMtPmJpdGJ1ZjsKICBpbnQgbGVmdCA9 IHMtPmJpdGNudDsKICBpbnQgY29kZSA9IGZpcnN0ID0gaW5kZXggPSAwOwogIGludCBsZW4gPSAx OwogIHNob3J0KiBuZXh0ID0gaC0+Y291bnQgKyAxOwogIHdoaWxlICgxKSB7CiAgICB3aGlsZSAo bGVmdC0tKSB7CiAgICAgIGNvZGUgfD0gYml0YnVmICYgMTsKICAgICAgYml0YnVmID4+PSAxOwog ICAgICBpbnQgY291bnQgPSAqbmV4dCsrOwogICAgICBpZiAoY29kZSAtIGNvdW50IDwgZmlyc3Qp IHsKICAgICAgICBzLT5iaXRidWYgPSBiaXRidWY7CiAgICAgICAgcy0+Yml0Y250ID0gKHMtPmJp dGNudCAtIGxlbikgJiA3OwogICAgICAgIHJldHVybiBoLT5zeW1ib2xbaW5kZXggKyAoY29kZSAt IGZpcnN0KV07CiAgICAgIH0KICAgICAgaW5kZXggKz0gY291bnQ7CiAgICAgIGZpcnN0ICs9IGNv dW50OwogICAgICBmaXJzdCA8PD0gMTsKICAgICAgY29kZSA8PD0gMTsKICAgICAgbGVuKys7CiAg ICB9CiAgICBsZWZ0ID0gKE1BWEJJVFMgKyAxKSAtIGxlbjsKICAgIGlmIChsZWZ0ID09IDApCiAg ICAgIGJyZWFrOwogICAgaWYgKHMtPmluY250ID09IHMtPmlubGVuKQogICAgICBsb25nam1wKHMt PmVudiwgMSk7CiAgICBiaXRidWYgPSBzLT5pbltzLT5pbmNudCsrXTsKICAgIGlmIChsZWZ0ID4g OCkKICAgICAgbGVmdCA9IDg7CiAgfQogIHJldHVybiAtMTA7Cn0Kc3RhdGljIGludCBwdWZmX2Nv bnN0cnVjdChzdHJ1Y3QgcHVmZl9odWZmbWFuKiBoLCBjb25zdCBzaG9ydCogbGVuZ3RoLCBpbnQg bikKewogIGludCBsZW47CiAgZm9yIChsZW4gPSAwOyBsZW4gPD0gTUFYQklUUzsgbGVuKyspCiAg ICBoLT5jb3VudFtsZW5dID0gMDsKICBpbnQgc3ltYm9sOwogIGZvciAoc3ltYm9sID0gMDsgc3lt Ym9sIDwgbjsgc3ltYm9sKyspCiAgICAoaC0+Y291bnRbbGVuZ3RoW3N5bWJvbF1dKSsrOwogIGlm IChoLT5jb3VudFswXSA9PSBuKQogICAgcmV0dXJuIDA7CiAgaW50IGxlZnQgPSAxOwogIGZvciAo bGVuID0gMTsgbGVuIDw9IE1BWEJJVFM7IGxlbisrKSB7CiAgICBsZWZ0IDw8PSAxOwogICAgbGVm dCAtPSBoLT5jb3VudFtsZW5dOwogICAgaWYgKGxlZnQgPCAwKQogICAgICByZXR1cm4gbGVmdDsK ICB9CiAgc2hvcnQgb2Zmc1tNQVhCSVRTICsgMV07CiAgb2Zmc1sxXSA9IDA7CiAgZm9yIChsZW4g PSAxOyBsZW4gPCBNQVhCSVRTOyBsZW4rKykKICAgIG9mZnNbbGVuICsgMV0gPSBvZmZzW2xlbl0g KyBoLT5jb3VudFtsZW5dOwogIGZvciAoc3ltYm9sID0gMDsgc3ltYm9sIDwgbjsgc3ltYm9sKysp CiAgICBpZiAobGVuZ3RoW3N5bWJvbF0gIT0gMCkKICAgICAgaC0+c3ltYm9sW29mZnNbbGVuZ3Ro W3N5bWJvbF1dKytdID0gc3ltYm9sOwogIHJldHVybiBsZWZ0Owp9CnN0YXRpYyBpbnQgcHVmZl9j b2RlcyhzdHJ1Y3QgcHVmZl9zdGF0ZSogcywgY29uc3Qgc3RydWN0IHB1ZmZfaHVmZm1hbiogbGVu Y29kZSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBwdWZmX2h1ZmZtYW4qIGRp c3Rjb2RlKQp7CiAgc3RhdGljIGNvbnN0IHNob3J0IGxlbnNbMjldID0gezMsICA0LCAgNSwgIDYs ICAgNywgICA4LCAgIDksICAgMTAsICAxMSwgMTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDE1LCAxNywgMTksIDIzLCAgMjcsICAzMSwgIDM1LCAgNDMsICA1MSwgNTksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY3LCA4MywgOTksIDExNSwgMTMxLCAxNjMsIDE5 NSwgMjI3LCAyNTh9OwogIHN0YXRpYyBjb25zdCBzaG9ydCBsZXh0WzI5XSA9IHswLCAwLCAwLCAw LCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAyLCAyLCAyLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAyLCAzLCAzLCAzLCAzLCA0LCA0LCA0LCA0LCA1LCA1LCA1LCA1LCAwfTsKICBz dGF0aWMgY29uc3Qgc2hvcnQgZGlzdHNbMzBdID0gewogICAgICAxLCAgICAyLCAgICAzLCAgICA0 LCAgICA1LCAgICA3LCAgICA5LCAgICAxMywgICAgMTcsICAgIDI1LAogICAgICAzMywgICA0OSwg ICA2NSwgICA5NywgICAxMjksICAxOTMsICAyNTcsICAzODUsICAgNTEzLCAgIDc2OSwKICAgICAg MTAyNSwgMTUzNywgMjA0OSwgMzA3MywgNDA5NywgNjE0NSwgODE5MywgMTIyODksIDE2Mzg1LCAy NDU3N307CiAgc3RhdGljIGNvbnN0IHNob3J0IGRleHRbMzBdID0gezAsIDAsIDAsICAwLCAgMSwg IDEsICAyLCAgMiwgIDMsICAzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LCA0 LCA1LCAgNSwgIDYsICA2LCAgNywgIDcsICA4LCAgOCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOSwgOSwgMTAsIDEwLCAxMSwgMTEsIDEyLCAxMiwgMTMsIDEzfTsKICBpbnQgc3lt Ym9sOwogIGRvIHsKICAgIHN5bWJvbCA9IHB1ZmZfZGVjb2RlKHMsIGxlbmNvZGUpOwogICAgaWYg KHN5bWJvbCA8IDApCiAgICAgIHJldHVybiBzeW1ib2w7CiAgICBpZiAoc3ltYm9sIDwgMjU2KSB7 CiAgICAgIGlmIChzLT5vdXRjbnQgPT0gcy0+b3V0bGVuKQogICAgICAgIHJldHVybiAxOwogICAg ICBpZiAoc3ltYm9sKQogICAgICAgIHMtPm91dFtzLT5vdXRjbnRdID0gc3ltYm9sOwogICAgICBz LT5vdXRjbnQrKzsKICAgIH0gZWxzZSBpZiAoc3ltYm9sID4gMjU2KSB7CiAgICAgIHN5bWJvbCAt PSAyNTc7CiAgICAgIGlmIChzeW1ib2wgPj0gMjkpCiAgICAgICAgcmV0dXJuIC0xMDsKICAgICAg aW50IGxlbiA9IGxlbnNbc3ltYm9sXSArIHB1ZmZfYml0cyhzLCBsZXh0W3N5bWJvbF0pOwogICAg ICBzeW1ib2wgPSBwdWZmX2RlY29kZShzLCBkaXN0Y29kZSk7CiAgICAgIGlmIChzeW1ib2wgPCAw KQogICAgICAgIHJldHVybiBzeW1ib2w7CiAgICAgIHVuc2lnbmVkIGRpc3QgPSBkaXN0c1tzeW1i b2xdICsgcHVmZl9iaXRzKHMsIGRleHRbc3ltYm9sXSk7CiAgICAgIGlmIChkaXN0ID4gcy0+b3V0 Y250KQogICAgICAgIHJldHVybiAtMTE7CiAgICAgIGlmIChzLT5vdXRjbnQgKyBsZW4gPiBzLT5v dXRsZW4pCiAgICAgICAgcmV0dXJuIDE7CiAgICAgIHdoaWxlIChsZW4tLSkgewogICAgICAgIGlm IChkaXN0IDw9IHMtPm91dGNudCAmJiBzLT5vdXRbcy0+b3V0Y250IC0gZGlzdF0pCiAgICAgICAg ICBzLT5vdXRbcy0+b3V0Y250XSA9IHMtPm91dFtzLT5vdXRjbnQgLSBkaXN0XTsKICAgICAgICBz LT5vdXRjbnQrKzsKICAgICAgfQogICAgfQogIH0gd2hpbGUgKHN5bWJvbCAhPSAyNTYpOwogIHJl dHVybiAwOwp9CnN0YXRpYyBpbnQgcHVmZl9maXhlZChzdHJ1Y3QgcHVmZl9zdGF0ZSogcykKewog IHN0YXRpYyBpbnQgdmlyZ2luID0gMTsKICBzdGF0aWMgc2hvcnQgbGVuY250W01BWEJJVFMgKyAx XSwgbGVuc3ltW0ZJWExDT0RFU107CiAgc3RhdGljIHNob3J0IGRpc3RjbnRbTUFYQklUUyArIDFd LCBkaXN0c3ltW01BWERDT0RFU107CiAgc3RhdGljIHN0cnVjdCBwdWZmX2h1ZmZtYW4gbGVuY29k ZSwgZGlzdGNvZGU7CiAgaWYgKHZpcmdpbikgewogICAgbGVuY29kZS5jb3VudCA9IGxlbmNudDsK ICAgIGxlbmNvZGUuc3ltYm9sID0gbGVuc3ltOwogICAgZGlzdGNvZGUuY291bnQgPSBkaXN0Y250 OwogICAgZGlzdGNvZGUuc3ltYm9sID0gZGlzdHN5bTsKICAgIHNob3J0IGxlbmd0aHNbRklYTENP REVTXTsKICAgIGludCBzeW1ib2w7CiAgICBmb3IgKHN5bWJvbCA9IDA7IHN5bWJvbCA8IDE0NDsg c3ltYm9sKyspCiAgICAgIGxlbmd0aHNbc3ltYm9sXSA9IDg7CiAgICBmb3IgKDsgc3ltYm9sIDwg MjU2OyBzeW1ib2wrKykKICAgICAgbGVuZ3Roc1tzeW1ib2xdID0gOTsKICAgIGZvciAoOyBzeW1i b2wgPCAyODA7IHN5bWJvbCsrKQogICAgICBsZW5ndGhzW3N5bWJvbF0gPSA3OwogICAgZm9yICg7 IHN5bWJvbCA8IEZJWExDT0RFUzsgc3ltYm9sKyspCiAgICAgIGxlbmd0aHNbc3ltYm9sXSA9IDg7 CiAgICBwdWZmX2NvbnN0cnVjdCgmbGVuY29kZSwgbGVuZ3RocywgRklYTENPREVTKTsKICAgIGZv ciAoc3ltYm9sID0gMDsgc3ltYm9sIDwgTUFYRENPREVTOyBzeW1ib2wrKykKICAgICAgbGVuZ3Ro c1tzeW1ib2xdID0gNTsKICAgIHB1ZmZfY29uc3RydWN0KCZkaXN0Y29kZSwgbGVuZ3RocywgTUFY RENPREVTKTsKICAgIHZpcmdpbiA9IDA7CiAgfQogIHJldHVybiBwdWZmX2NvZGVzKHMsICZsZW5j b2RlLCAmZGlzdGNvZGUpOwp9CnN0YXRpYyBpbnQgcHVmZl9keW5hbWljKHN0cnVjdCBwdWZmX3N0 YXRlKiBzKQp7CiAgc3RhdGljIGNvbnN0IHNob3J0IG9yZGVyWzE5XSA9IHsxNiwgMTcsIDE4LCAw LCA4LCAgNywgOSwgIDYsIDEwLCA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MTEsIDQsICAxMiwgMywgMTMsIDIsIDE0LCAxLCAxNX07CiAgaW50IG5sZW4gPSBwdWZmX2JpdHMo cywgNSkgKyAyNTc7CiAgaW50IG5kaXN0ID0gcHVmZl9iaXRzKHMsIDUpICsgMTsKICBpbnQgbmNv ZGUgPSBwdWZmX2JpdHMocywgNCkgKyA0OwogIGlmIChubGVuID4gTUFYTENPREVTIHx8IG5kaXN0 ID4gTUFYRENPREVTKQogICAgcmV0dXJuIC0zOwogIHNob3J0IGxlbmd0aHNbTUFYQ09ERVNdOwog IGludCBpbmRleDsKICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBuY29kZTsgaW5kZXgrKykKICAg IGxlbmd0aHNbb3JkZXJbaW5kZXhdXSA9IHB1ZmZfYml0cyhzLCAzKTsKICBmb3IgKDsgaW5kZXgg PCAxOTsgaW5kZXgrKykKICAgIGxlbmd0aHNbb3JkZXJbaW5kZXhdXSA9IDA7CiAgc2hvcnQgbGVu Y250W01BWEJJVFMgKyAxXSwgbGVuc3ltW01BWExDT0RFU107CiAgc3RydWN0IHB1ZmZfaHVmZm1h biBsZW5jb2RlID0ge2xlbmNudCwgbGVuc3ltfTsKICBpbnQgZXJyID0gcHVmZl9jb25zdHJ1Y3Qo JmxlbmNvZGUsIGxlbmd0aHMsIDE5KTsKICBpZiAoZXJyICE9IDApCiAgICByZXR1cm4gLTQ7CiAg aW5kZXggPSAwOwogIHdoaWxlIChpbmRleCA8IG5sZW4gKyBuZGlzdCkgewogICAgaW50IHN5bWJv bDsKICAgIGludCBsZW47CiAgICBzeW1ib2wgPSBwdWZmX2RlY29kZShzLCAmbGVuY29kZSk7CiAg ICBpZiAoc3ltYm9sIDwgMCkKICAgICAgcmV0dXJuIHN5bWJvbDsKICAgIGlmIChzeW1ib2wgPCAx NikKICAgICAgbGVuZ3Roc1tpbmRleCsrXSA9IHN5bWJvbDsKICAgIGVsc2UgewogICAgICBsZW4g PSAwOwogICAgICBpZiAoc3ltYm9sID09IDE2KSB7CiAgICAgICAgaWYgKGluZGV4ID09IDApCiAg ICAgICAgICByZXR1cm4gLTU7CiAgICAgICAgbGVuID0gbGVuZ3Roc1tpbmRleCAtIDFdOwogICAg ICAgIHN5bWJvbCA9IDMgKyBwdWZmX2JpdHMocywgMik7CiAgICAgIH0gZWxzZSBpZiAoc3ltYm9s ID09IDE3KQogICAgICAgIHN5bWJvbCA9IDMgKyBwdWZmX2JpdHMocywgMyk7CiAgICAgIGVsc2UK ICAgICAgICBzeW1ib2wgPSAxMSArIHB1ZmZfYml0cyhzLCA3KTsKICAgICAgaWYgKGluZGV4ICsg c3ltYm9sID4gbmxlbiArIG5kaXN0KQogICAgICAgIHJldHVybiAtNjsKICAgICAgd2hpbGUgKHN5 bWJvbC0tKQogICAgICAgIGxlbmd0aHNbaW5kZXgrK10gPSBsZW47CiAgICB9CiAgfQogIGlmIChs ZW5ndGhzWzI1Nl0gPT0gMCkKICAgIHJldHVybiAtOTsKICBlcnIgPSBwdWZmX2NvbnN0cnVjdCgm bGVuY29kZSwgbGVuZ3Rocywgbmxlbik7CiAgaWYgKGVyciAmJiAoZXJyIDwgMCB8fCBubGVuICE9 IGxlbmNvZGUuY291bnRbMF0gKyBsZW5jb2RlLmNvdW50WzFdKSkKICAgIHJldHVybiAtNzsKICBz aG9ydCBkaXN0Y250W01BWEJJVFMgKyAxXSwgZGlzdHN5bVtNQVhEQ09ERVNdOwogIHN0cnVjdCBw dWZmX2h1ZmZtYW4gZGlzdGNvZGUgPSB7ZGlzdGNudCwgZGlzdHN5bX07CiAgZXJyID0gcHVmZl9j b25zdHJ1Y3QoJmRpc3Rjb2RlLCBsZW5ndGhzICsgbmxlbiwgbmRpc3QpOwogIGlmIChlcnIgJiYg KGVyciA8IDAgfHwgbmRpc3QgIT0gZGlzdGNvZGUuY291bnRbMF0gKyBkaXN0Y29kZS5jb3VudFsx XSkpCiAgICByZXR1cm4gLTg7CiAgcmV0dXJuIHB1ZmZfY29kZXMocywgJmxlbmNvZGUsICZkaXN0 Y29kZSk7Cn0Kc3RhdGljIGludCBwdWZmKHVuc2lnbmVkIGNoYXIqIGRlc3QsIHVuc2lnbmVkIGxv bmcqIGRlc3RsZW4sCiAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBzb3VyY2Us IHVuc2lnbmVkIGxvbmcgc291cmNlbGVuKQp7CiAgc3RydWN0IHB1ZmZfc3RhdGUgcyA9IHsKICAg ICAgLm91dCA9IGRlc3QsCiAgICAgIC5vdXRsZW4gPSAqZGVzdGxlbiwKICAgICAgLm91dGNudCA9 IDAsCiAgICAgIC5pbiA9IHNvdXJjZSwKICAgICAgLmlubGVuID0gc291cmNlbGVuLAogICAgICAu aW5jbnQgPSAwLAogICAgICAuYml0YnVmID0gMCwKICAgICAgLmJpdGNudCA9IDAsCiAgfTsKICBp bnQgZXJyOwogIGlmIChzZXRqbXAocy5lbnYpICE9IDApCiAgICBlcnIgPSAyOwogIGVsc2Ugewog ICAgaW50IGxhc3Q7CiAgICBkbyB7CiAgICAgIGxhc3QgPSBwdWZmX2JpdHMoJnMsIDEpOwogICAg ICBpbnQgdHlwZSA9IHB1ZmZfYml0cygmcywgMik7CiAgICAgIGVyciA9IHR5cGUgPT0gMCA/IHB1 ZmZfc3RvcmVkKCZzKQogICAgICAgICAgICAgICAgICAgICAgOiAodHlwZSA9PSAxID8gcHVmZl9m aXhlZCgmcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICh0eXBlID09IDIg PyBwdWZmX2R5bmFtaWMoJnMpIDogLTEpKTsKICAgICAgaWYgKGVyciAhPSAwKQogICAgICAgIGJy ZWFrOwogICAgfSB3aGlsZSAoIWxhc3QpOwogIH0KICAqZGVzdGxlbiA9IHMub3V0Y250OwogIHJl dHVybiBlcnI7Cn0KCi8vJSBFTkQgQ09ERSBERVJJVkVEIEZST00gcHVmZi57YyxofQoKI2RlZmlu ZSBaTElCX0hFQURFUl9XSURUSCAyCgpzdGF0aWMgaW50IHB1ZmZfemxpYl90b19maWxlKGNvbnN0 IHVuc2lnbmVkIGNoYXIqIHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBsb25nIHNvdXJjZWxlbiwgaW50IGRlc3RfZmQpCnsKICBpZiAoc291cmNlbGVuIDwgWkxJ Ql9IRUFERVJfV0lEVEgpCiAgICByZXR1cm4gMDsKICBzb3VyY2UgKz0gWkxJQl9IRUFERVJfV0lE VEg7CiAgc291cmNlbGVuIC09IFpMSUJfSEVBREVSX1dJRFRIOwogIGNvbnN0IHVuc2lnbmVkIGxv bmcgbWF4X2Rlc3RsZW4gPSAxMzIgPDwgMjA7CiAgdm9pZCogcmV0ID0gbW1hcCgwLCBtYXhfZGVz dGxlbiwgUFJPVF9XUklURSB8IFBST1RfUkVBRCwKICAgICAgICAgICAgICAgICAgIE1BUF9QUklW QVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKICBpZiAocmV0ID09IE1BUF9GQUlMRUQpCiAgICByZXR1 cm4gLTE7CiAgdW5zaWduZWQgY2hhciogZGVzdCA9ICh1bnNpZ25lZCBjaGFyKilyZXQ7CiAgdW5z aWduZWQgbG9uZyBkZXN0bGVuID0gbWF4X2Rlc3RsZW47CiAgaW50IGVyciA9IHB1ZmYoZGVzdCwg JmRlc3RsZW4sIHNvdXJjZSwgc291cmNlbGVuKTsKICBpZiAoZXJyKSB7CiAgICBtdW5tYXAoZGVz dCwgbWF4X2Rlc3RsZW4pOwogICAgZXJybm8gPSAtZXJyOwogICAgcmV0dXJuIC0xOwogIH0KICBp ZiAod3JpdGUoZGVzdF9mZCwgZGVzdCwgZGVzdGxlbikgIT0gKHNzaXplX3QpZGVzdGxlbikgewog ICAgbXVubWFwKGRlc3QsIG1heF9kZXN0bGVuKTsKICAgIHJldHVybiAtMTsKICB9CiAgcmV0dXJu IG11bm1hcChkZXN0LCBtYXhfZGVzdGxlbik7Cn0KCnN0YXRpYyBpbnQgc2V0dXBfbG9vcF9kZXZp Y2UodW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxvb3BuYW1lLCBpbnQqIGxvb3BmZF9wKQp7CiAg aW50IGVyciA9IDAsIGxvb3BmZCA9IC0xOwogIGludCBtZW1mZCA9IHN5c2NhbGwoX19OUl9tZW1m ZF9jcmVhdGUsICJzeXprYWxsZXIiLCAwKTsKICBpZiAobWVtZmQgPT0gLTEpIHsKICAgIGVyciA9 IGVycm5vOwogICAgZ290byBlcnJvcjsKICB9CiAgaWYgKHB1ZmZfemxpYl90b19maWxlKGRhdGEs IHNpemUsIG1lbWZkKSkgewogICAgZXJyID0gZXJybm87CiAgICBnb3RvIGVycm9yX2Nsb3NlX21l bWZkOwogIH0KICBsb29wZmQgPSBvcGVuKGxvb3BuYW1lLCBPX1JEV1IpOwogIGlmIChsb29wZmQg PT0gLTEpIHsKICAgIGVyciA9IGVycm5vOwogICAgZ290byBlcnJvcl9jbG9zZV9tZW1mZDsKICB9 CiAgaWYgKGlvY3RsKGxvb3BmZCwgTE9PUF9TRVRfRkQsIG1lbWZkKSkgewogICAgaWYgKGVycm5v ICE9IEVCVVNZKSB7CiAgICAgIGVyciA9IGVycm5vOwogICAgICBnb3RvIGVycm9yX2Nsb3NlX2xv b3A7CiAgICB9CiAgICBpb2N0bChsb29wZmQsIExPT1BfQ0xSX0ZELCAwKTsKICAgIHVzbGVlcCgx MDAwKTsKICAgIGlmIChpb2N0bChsb29wZmQsIExPT1BfU0VUX0ZELCBtZW1mZCkpIHsKICAgICAg ZXJyID0gZXJybm87CiAgICAgIGdvdG8gZXJyb3JfY2xvc2VfbG9vcDsKICAgIH0KICB9CiAgY2xv c2UobWVtZmQpOwogICpsb29wZmRfcCA9IGxvb3BmZDsKICByZXR1cm4gMDsKCmVycm9yX2Nsb3Nl X2xvb3A6CiAgY2xvc2UobG9vcGZkKTsKZXJyb3JfY2xvc2VfbWVtZmQ6CiAgY2xvc2UobWVtZmQp OwplcnJvcjoKICBlcnJubyA9IGVycjsKICByZXR1cm4gLTE7Cn0KCnN0YXRpYyB2b2lkIHJlc2V0 X2xvb3BfZGV2aWNlKGNvbnN0IGNoYXIqIGxvb3BuYW1lKQp7CiAgaW50IGxvb3BmZCA9IG9wZW4o bG9vcG5hbWUsIE9fUkRXUik7CiAgaWYgKGxvb3BmZCA9PSAtMSkgewogICAgcmV0dXJuOwogIH0K ICBpZiAoaW9jdGwobG9vcGZkLCBMT09QX0NMUl9GRCwgMCkpIHsKICB9CiAgY2xvc2UobG9vcGZk KTsKfQoKc3RhdGljIGxvbmcgc3l6X21vdW50X2ltYWdlKHZvbGF0aWxlIGxvbmcgZnNhcmcsIHZv bGF0aWxlIGxvbmcgZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9sYXRpbGUgbG9u ZyBmbGFncywgdm9sYXRpbGUgbG9uZyBvcHRzYXJnLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgdm9sYXRpbGUgbG9uZyBjaGFuZ2VfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg dm9sYXRpbGUgdW5zaWduZWQgbG9uZyBzaXplLCB2b2xhdGlsZSBsb25nIGltYWdlKQp7CiAgdW5z aWduZWQgY2hhciogZGF0YSA9ICh1bnNpZ25lZCBjaGFyKilpbWFnZTsKICBpbnQgcmVzID0gLTEs IGVyciA9IDAsIG5lZWRfbG9vcF9kZXZpY2UgPSAhIXNpemU7CiAgY2hhciogbW91bnRfb3B0cyA9 IChjaGFyKilvcHRzYXJnOwogIGNoYXIqIHRhcmdldCA9IChjaGFyKilkaXI7CiAgY2hhciogZnMg PSAoY2hhciopZnNhcmc7CiAgY2hhciogc291cmNlID0gTlVMTDsKICBjaGFyIGxvb3BuYW1lWzY0 XTsKICBpZiAobmVlZF9sb29wX2RldmljZSkgewogICAgaW50IGxvb3BmZDsKICAgIG1lbXNldChs b29wbmFtZSwgMCwgc2l6ZW9mKGxvb3BuYW1lKSk7CiAgICBzbnByaW50Zihsb29wbmFtZSwgc2l6 ZW9mKGxvb3BuYW1lKSwgIi9kZXYvbG9vcCVsbHUiLCBwcm9jaWQpOwogICAgaWYgKHNldHVwX2xv b3BfZGV2aWNlKGRhdGEsIHNpemUsIGxvb3BuYW1lLCAmbG9vcGZkKSA9PSAtMSkKICAgICAgcmV0 dXJuIC0xOwogICAgY2xvc2UobG9vcGZkKTsKICAgIHNvdXJjZSA9IGxvb3BuYW1lOwogIH0KICBt a2Rpcih0YXJnZXQsIDA3NzcpOwogIGNoYXIgb3B0c1syNTZdOwogIG1lbXNldChvcHRzLCAwLCBz aXplb2Yob3B0cykpOwogIGlmIChzdHJsZW4obW91bnRfb3B0cykgPiAoc2l6ZW9mKG9wdHMpIC0g MzIpKSB7CiAgfQogIHN0cm5jcHkob3B0cywgbW91bnRfb3B0cywgc2l6ZW9mKG9wdHMpIC0gMzIp OwogIGlmIChzdHJjbXAoZnMsICJpc285NjYwIikgPT0gMCkgewogICAgZmxhZ3MgfD0gTVNfUkRP TkxZOwogIH0gZWxzZSBpZiAoc3RybmNtcChmcywgImV4dCIsIDMpID09IDApIHsKICAgIGJvb2wg aGFzX3JlbW91bnRfcm8gPSBmYWxzZTsKICAgIGNoYXIqIHJlbW91bnRfcm9fc3RhcnQgPSBzdHJz dHIob3B0cywgImVycm9ycz1yZW1vdW50LXJvIik7CiAgICBpZiAocmVtb3VudF9yb19zdGFydCAh PSBOVUxMKSB7CiAgICAgIGNoYXIgYWZ0ZXIgPSAqKHJlbW91bnRfcm9fc3RhcnQgKyBzdHJsZW4o ImVycm9ycz1yZW1vdW50LXJvIikpOwogICAgICBjaGFyIGJlZm9yZSA9IHJlbW91bnRfcm9fc3Rh cnQgPT0gb3B0cyA/ICdcMCcgOiAqKHJlbW91bnRfcm9fc3RhcnQgLSAxKTsKICAgICAgaGFzX3Jl bW91bnRfcm8gPSAoKGJlZm9yZSA9PSAnXDAnIHx8IGJlZm9yZSA9PSAnLCcpICYmCiAgICAgICAg ICAgICAgICAgICAgICAgIChhZnRlciA9PSAnXDAnIHx8IGFmdGVyID09ICcsJykpOwogICAgfQog ICAgaWYgKHN0cnN0cihvcHRzLCAiZXJyb3JzPXBhbmljIikgfHwgIWhhc19yZW1vdW50X3JvKQog ICAgICBzdHJjYXQob3B0cywgIixlcnJvcnM9Y29udGludWUiKTsKICB9IGVsc2UgaWYgKHN0cmNt cChmcywgInhmcyIpID09IDApIHsKICAgIHN0cmNhdChvcHRzLCAiLG5vdXVpZCIpOwogIH0KICBy ZXMgPSBtb3VudChzb3VyY2UsIHRhcmdldCwgZnMsIGZsYWdzLCBvcHRzKTsKICBpZiAocmVzID09 IC0xKSB7CiAgICBlcnIgPSBlcnJubzsKICAgIGdvdG8gZXJyb3JfY2xlYXJfbG9vcDsKICB9CiAg cmVzID0gb3Blbih0YXJnZXQsIE9fUkRPTkxZIHwgT19ESVJFQ1RPUlkpOwogIGlmIChyZXMgPT0g LTEpIHsKICAgIGVyciA9IGVycm5vOwogICAgZ290byBlcnJvcl9jbGVhcl9sb29wOwogIH0KICBp ZiAoY2hhbmdlX2RpcikgewogICAgcmVzID0gY2hkaXIodGFyZ2V0KTsKICAgIGlmIChyZXMgPT0g LTEpIHsKICAgICAgZXJyID0gZXJybm87CiAgICB9CiAgfQoKZXJyb3JfY2xlYXJfbG9vcDoKICBp ZiAobmVlZF9sb29wX2RldmljZSkKICAgIHJlc2V0X2xvb3BfZGV2aWNlKGxvb3BuYW1lKTsKICBl cnJubyA9IGVycjsKICByZXR1cm4gcmVzOwp9Cgp1aW50NjRfdCByWzFdID0gezB4ZmZmZmZmZmZm ZmZmZmZmZn07CgppbnQgbWFpbih2b2lkKQp7CiAgc3lzY2FsbChfX05SX21tYXAsIC8qYWRkcj0q LzB4MWZmZmYwMDB1bCwgLypsZW49Ki8weDEwMDB1bCwgLypwcm90PSovMHVsLAogICAgICAgICAg LypmbGFncz1NQVBfRklYRUR8TUFQX0FOT05ZTU9VU3xNQVBfUFJJVkFURSovIDB4MzJ1bCwgLypm ZD0qLy0xLAogICAgICAgICAgLypvZmZzZXQ9Ki8wdWwpOwogIHN5c2NhbGwoX19OUl9tbWFwLCAv KmFkZHI9Ki8weDIwMDAwMDAwdWwsIC8qbGVuPSovMHgxMDAwMDAwdWwsCiAgICAgICAgICAvKnBy b3Q9UFJPVF9XUklURXxQUk9UX1JFQUR8UFJPVF9FWEVDKi8gN3VsLAogICAgICAgICAgLypmbGFn cz1NQVBfRklYRUR8TUFQX0FOT05ZTU9VU3xNQVBfUFJJVkFURSovIDB4MzJ1bCwgLypmZD0qLy0x LAogICAgICAgICAgLypvZmZzZXQ9Ki8wdWwpOwogIHN5c2NhbGwoX19OUl9tbWFwLCAvKmFkZHI9 Ki8weDIxMDAwMDAwdWwsIC8qbGVuPSovMHgxMDAwdWwsIC8qcHJvdD0qLzB1bCwKICAgICAgICAg IC8qZmxhZ3M9TUFQX0ZJWEVEfE1BUF9BTk9OWU1PVVN8TUFQX1BSSVZBVEUqLyAweDMydWwsIC8q ZmQ9Ki8tMSwKICAgICAgICAgIC8qb2Zmc2V0PSovMHVsKTsKICBpbnRwdHJfdCByZXMgPSAwOwog IG1lbWNweSgodm9pZCopMHgyMDAwMDE0MCwgImNyYW1mc1wwMDAiLCA3KTsKICBtZW1jcHkoKHZv aWQqKTB4MjAwMDAxODAsICIuL2ZpbGUwXDAwMCIsIDgpOwogIG1lbWNweSgKICAgICAgKHZvaWQq KTB4MjAwMDA0MDAsCiAgICAgICJceDc4XHg5Y1x4ZWNceGQwXHhiZlx4NmJceDFhXHg2MVx4MWNc eGM3XHhmMVx4ZjdceGEzXHg1Nlx4ZWRceDRmXHgyZFx4YjUiCiAgICAgICJceGQwXHgxNlx4NWFc eDBiXHgxZFx4N2FceDI4XHhlMlx4NzlceDYyXHhiN1x4MGVceDVhXHgyYVx4M2RceGE4XHgzZFx4 NjgiCiAgICAgICJceGI3XHg0ZVx4ODJceDVlXHg2OVx4YzFceDFmXHgyNVx4NDJceGM4XHgxOFx4 MDNceGQ5XHgzMlx4ZTRceDBmXHg3MFx4ODgiCiAgICAgICJceDA5XHg2NFx4MTJceDg3XHg5MFx4 MzFceDQzXHg2Mlx4MjZceDEzXHg4NVx4NjBceGZlXHg4ZFx4MWNceDY0XHgwYlx4NjQiCiAgICAg ICJceDMxXHgzY1x4NzdceDQ3XHhlMlx4OWNceGY5XHg3OVx4MmRceDc3XHhmN1x4ZmRceDdjXHhm OVx4MWNceGNmXHhmM1x4ZjUiCiAgICAgICJceGYzXHg1NFx4MjNceDBlXHg0MVx4M2NceDVmXHhk YVx4Y2RceGZmXHg0Ylx4NzZceGE3XHg2M1x4ZDdceGRmXHhmZlx4YjQiCiAgICAgICJceDJhXHhl NVx4NWZceDdiXHhmYlx4MDdceGNmXHg0OFx4NDJceDA0XHg4OFx4ZmFceGY5XHhmNVx4ZGNceDIz XHhmN1x4MGYiCiAgICAgICJceDhiXHhmMFx4NTdceDNlXHg0M1x4ZTBceDc0XHhhMVx4MGVceDFj XHgzZlx4ZjRceGNiXHg2YVx4ZWRceDg2XHhmY1x4NzYiCiAgICAgICJceDhhXHhhMFx4MDFceGE1 XHhjN1x4ZjBceGU3XHg1Zlx4YzNceGQ2XHhmMVx4NzZceDFmXHhjOVx4NTlceDgyXHg1Ylx4NzIi CiAgICAgICJceGE2XHg3ZFx4ODBceGQxXHg0Ylx4NmZceGNmXHg4MFx4ODBceGQzXHgyNVx4Y2Fc eGMyXHgyY1x4ZWZceGVmXHhiZFx4MDkiCiAgICAgICJceGNkXHgyOVx4YzVceGVlXHhmYVx4ZTZc eDdkXHhmOFx4MjhceGZiXHg5ZVx4N2JceGIzXHg5Y1x4ZjBceDRiXHg3Ylx4ZTkiCiAgICAgICJc eGUxXHhlMFx4ZTRceGM3XHgyNFx4NjBceDY2XHg1Mlx4YmJceDZmXHg4M1x4YWNceDliXHhlOVx4 ZTRceDBiXHgwMVx4MmIiCiAgICAgICJceGZlXHg3Y1x4NmNceDY2XHg1Mlx4ZWZceGVjXHgwZFx4 YTNceGZjXHg1YVx4MmVceGI3XHhmYVx4YjBceDRkXHhjOVx4Y2QiCiAgICAgICJceGNmXHhiM1x4 ZTNceGNjXHg1OVx4NzZceDM4XHg5OFx4NGRceDI3XHg5NVx4ZWZceDU2XHhjNVx4OWFceGU2XHgw ZFx4ZTMiCiAgICAgICJceDUzXHg1ZVx4Y2ZceGU5XHg3YVx4NjFceDY2XHg5ZFx4NGVceGNjXHhj Mlx4ZWFceDI2XHhhMVx4NmZceDRmXHg5Nlx4ZTEiCiAgICAgICJceGI3XHhkN1x4MTdceGY2XHhm Zlx4OThceDBhXHg3M1x4ZTFceGJlXHhhY1x4MDlceGU4XHgwOVx4MThceGI4XHhiOVx4NzMiCiAg ICAgICJceDI0XHg5ZVx4MDJceGEzXHhhZFx4MmJceGFiXHg4OVx4OTBceGM3XHhiZVx4NmNceGM1 XHg0MVx4YjhceDg5XHhiY1x4NWIiCiAgICAgICJceDM3XHg4OVx4NDVceDE2XHg5M1x4NWFceGY1 XHhkNVx4ODNceDlkXHg2YVx4MjJceDFlXHgyMFx4YThceDIxXHg1MFx4MTQiCiAgICAgICJceDQ1 XHg1MVx4MTRceDQ1XHg1MVx4MTRceDQ1XHg1MVx4OTRceDdiXHhiYVx4MDlceDAwXHgwMFx4ZmZc eGZmXHg4Nlx4ZjUiCiAgICAgICJceDY4XHgwNiIsCiAgICAgIDM0NCk7CiAgc3l6X21vdW50X2lt YWdlKC8qZnM9Ki8weDIwMDAwMTQwLCAvKmRpcj0qLzB4MjAwMDAxODAsIC8qZmxhZ3M9Ki8wLAog ICAgICAgICAgICAgICAgICAvKm9wdHM9Ki8weDIwMDAwMzQwLCAvKmNoZGlyPSovMSwgLypzaXpl PSovMHgxNTgsCiAgICAgICAgICAgICAgICAgIC8qaW1nPSovMHgyMDAwMDQwMCk7CiAgbWVtY3B5 KCh2b2lkKikweDIwMDAwMDQwLCAiLi9maWxlMFwwMDAiLCA4KTsKICBzeXNjYWxsKF9fTlJfY2hk aXIsIC8qZGlyPSovMHgyMDAwMDA0MHVsKTsKICAqKHVpbnQzMl90KikweDIwMDAwNjgwID0gMjsK ICAqKHVpbnQzMl90KikweDIwMDAwNjg0ID0gMzsKICAqKHVpbnQ2NF90KikweDIwMDAwNjg4ID0g MHgyMDAwMDA4MDsKICAqKHVpbnQ4X3QqKTB4MjAwMDAwODAgPSAweDE4OwogIFNUT1JFX0JZX0JJ VE1BU0sodWludDhfdCwgLCAweDIwMDAwMDgxLCAwLCAwLCA0KTsKICBTVE9SRV9CWV9CSVRNQVNL KHVpbnQ4X3QsICwgMHgyMDAwMDA4MSwgMCwgNCwgNCk7CiAgKih1aW50MTZfdCopMHgyMDAwMDA4 MiA9IDA7CiAgKih1aW50MzJfdCopMHgyMDAwMDA4NCA9IDA7CiAgKih1aW50OF90KikweDIwMDAw MDg4ID0gMDsKICAqKHVpbnQ4X3QqKTB4MjAwMDAwODkgPSAwOwogICoodWludDE2X3QqKTB4MjAw MDAwOGEgPSAwOwogICoodWludDMyX3QqKTB4MjAwMDAwOGMgPSAwOwogICoodWludDhfdCopMHgy MDAwMDA5MCA9IDB4OTU7CiAgKih1aW50OF90KikweDIwMDAwMDkxID0gMDsKICAqKHVpbnQxNl90 KikweDIwMDAwMDkyID0gMDsKICAqKHVpbnQzMl90KikweDIwMDAwMDk0ID0gMDsKICAqKHVpbnQ2 NF90KikweDIwMDAwNjkwID0gMHgyMDAwMDAwMDsKICBtZW1jcHkoKHZvaWQqKTB4MjAwMDAwMDAs ICJzeXprYWxsZXJcMDAwIiwgMTApOwogICoodWludDMyX3QqKTB4MjAwMDA2OTggPSAwOwogICoo dWludDMyX3QqKTB4MjAwMDA2OWMgPSAwOwogICoodWludDY0X3QqKTB4MjAwMDA2YTAgPSAwOwog ICoodWludDMyX3QqKTB4MjAwMDA2YTggPSAwOwogICoodWludDMyX3QqKTB4MjAwMDA2YWMgPSAw OwogIG1lbXNldCgodm9pZCopMHgyMDAwMDZiMCwgMCwgMTYpOwogICoodWludDMyX3QqKTB4MjAw MDA2YzAgPSAwOwogICoodWludDMyX3QqKTB4MjAwMDA2YzQgPSAweDMwOwogICoodWludDMyX3Qq KTB4MjAwMDA2YzggPSAwOwogICoodWludDMyX3QqKTB4MjAwMDA2Y2MgPSAwOwogICoodWludDY0 X3QqKTB4MjAwMDA2ZDAgPSAwOwogICoodWludDMyX3QqKTB4MjAwMDA2ZDggPSAwOwogICoodWlu dDMyX3QqKTB4MjAwMDA2ZGMgPSAwOwogICoodWludDY0X3QqKTB4MjAwMDA2ZTAgPSAwOwogICoo dWludDMyX3QqKTB4MjAwMDA2ZTggPSAwOwogICoodWludDMyX3QqKTB4MjAwMDA2ZWMgPSAwOwog ICoodWludDMyX3QqKTB4MjAwMDA2ZjAgPSAwOwogICoodWludDMyX3QqKTB4MjAwMDA2ZjQgPSAw OwogICoodWludDY0X3QqKTB4MjAwMDA2ZjggPSAwOwogICoodWludDY0X3QqKTB4MjAwMDA3MDAg PSAwOwogICoodWludDMyX3QqKTB4MjAwMDA3MDggPSAwOwogICoodWludDMyX3QqKTB4MjAwMDA3 MGMgPSAwOwogIHJlcyA9IHN5c2NhbGwoX19OUl9icGYsIC8qY21kPSovNXVsLCAvKmFyZz0qLzB4 MjAwMDA2ODB1bCwgLypzaXplPSovMHg5MHVsKTsKICBpZiAocmVzICE9IC0xKQogICAgclswXSA9 IHJlczsKICAqKHVpbnQzMl90KikweDIwMDAwMWMwID0gclswXTsKICAqKHVpbnQzMl90KikweDIw MDAwMWM0ID0gMDsKICAqKHVpbnQzMl90KikweDIwMDAwMWM4ID0gMHgzMDsKICAqKHVpbnQzMl90 KikweDIwMDAwMWNjID0gMDsKICAqKHVpbnQ2NF90KikweDIwMDAwMWQwID0gMHgyMDAwMDA0MDsK ICBtZW1jcHkoKHZvaWQqKTB4MjAwMDAwNDAsICIuL2ZpbGUwXDAwMCIsIDgpOwogICoodWludDY0 X3QqKTB4MjAwMDAxZDggPSAweDIwMDAwMGMwOwogICoodWludDY0X3QqKTB4MjAwMDAwYzAgPSAw OwogICoodWludDY0X3QqKTB4MjAwMDAxZTAgPSAwOwogICoodWludDY0X3QqKTB4MjAwMDAxZTgg PSAwOwogICoodWludDMyX3QqKTB4MjAwMDAxZjAgPSAweGZmZmZmZjFmOwogICoodWludDMyX3Qq KTB4MjAwMDAxZjQgPSAxOwogICoodWludDMyX3QqKTB4MjAwMDAxZjggPSAwOwogIHN5c2NhbGwo X19OUl9icGYsIC8qY21kPSovMHgxY3VsLCAvKmFyZz0qLzB4MjAwMDAxYzB1bCwgLypzaXplPSov MHg0MHVsKTsKICByZXR1cm4gMDsKfQo= ------=ALIBOUNDARY_122941_7f69acf60700_6643125b_87f42--