<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>113938</bug_id>
          
          <creation_ts>2013-04-04 09:24:01 -0700</creation_ts>
          <short_desc>Element: Unionize tagQName and elementData to save space.</short_desc>
          <delta_ts>2017-03-14 13:12:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>109505</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>869190</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-04-04 09:24:01 -0700</bug_when>
    <thetext>We could shrink attribute-less Elements by one pointer if we unionize tagQName() and elementData().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869195</commentid>
    <comment_count>1</comment_count>
      <attachid>196485</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-04-04 09:37:05 -0700</bug_when>
    <thetext>Created attachment 196485
Breakfast for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869577</commentid>
    <comment_count>2</comment_count>
      <attachid>196485</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-04 23:19:47 -0700</bug_when>
    <thetext>Comment on attachment 196485
Breakfast for EWS

Attachment 196485 did not pass win-ews (win):
Output: http://webkit-commit-queue.appspot.com/results/17488040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870245</commentid>
    <comment_count>3</comment_count>
      <attachid>196722</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-04-06 01:24:36 -0700</bug_when>
    <thetext>Created attachment 196722
Lunch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870361</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-04-06 15:45:15 -0700</bug_when>
    <thetext>Attachment 196722 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/dom/DocumentSharedObjectPool.cpp&apos;, u&apos;Source/WebCore/dom/DocumentSharedObjectPool.h&apos;, u&apos;Source/WebCore/dom/Element.cpp&apos;, u&apos;Source/WebCore/dom/Element.h&apos;, u&apos;Source/WebCore/dom/Node.h&apos;]&quot; exit_code: 1
Source/WebCore/dom/Element.cpp:2957:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870447</commentid>
    <comment_count>5</comment_count>
      <attachid>196785</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-04-07 06:49:05 -0700</bug_when>
    <thetext>Created attachment 196785
Dinner for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287760</commentid>
    <comment_count>6</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-03-14 13:12:27 -0700</bug_when>
    <thetext>Let&apos;s not do this cheesy micro-optimization.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196485</attachid>
            <date>2013-04-04 09:37:05 -0700</date>
            <delta_ts>2013-04-06 01:24:36 -0700</delta_ts>
            <desc>Breakfast for EWS</desc>
            <filename>ews-113938.diff</filename>
            <type>text/plain</type>
            <size>22833</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFNoYXJlZE9iamVjdFBvb2wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5jcHAKaW5k
ZXggOTk3ZTg2Ni4uMDU0NWE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50U2hhcmVkT2JqZWN0UG9vbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
U2hhcmVkT2JqZWN0UG9vbC5jcHAKQEAgLTMzLDEzICszMywxNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFNoYXJlYWJsZUVsZW1lbnREYXRhQ2FjaGVLZXkgewogcHVibGljOgotICAg
IFNoYXJlYWJsZUVsZW1lbnREYXRhQ2FjaGVLZXkoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGVz
LCB1bnNpZ25lZCBhdHRyaWJ1dGVDb3VudCkKLSAgICAgICAgOiBtX2F0dHJpYnV0ZXMoYXR0cmli
dXRlcykKKyAgICBTaGFyZWFibGVFbGVtZW50RGF0YUNhY2hlS2V5KGNvbnN0IFF1YWxpZmllZE5h
bWU6OlF1YWxpZmllZE5hbWVJbXBsKiB0YWdRTmFtZSwgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1
dGVzLCB1bnNpZ25lZCBhdHRyaWJ1dGVDb3VudCkKKyAgICAgICAgOiBtX3RhZ1FOYW1lKHRhZ1FO
YW1lKQorICAgICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQogICAgICAgICAsIG1fYXR0
cmlidXRlQ291bnQoYXR0cmlidXRlQ291bnQpCiAgICAgeyB9CiAKICAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgU2hhcmVhYmxlRWxlbWVudERhdGFDYWNoZUtleSYgb3RoZXIpIGNvbnN0CiAgICAg
eworICAgICAgICBpZiAobV90YWdRTmFtZSAhPSBvdGhlci5tX3RhZ1FOYW1lKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChtX2F0dHJpYnV0ZUNvdW50ICE9IG90aGVyLm1f
YXR0cmlidXRlQ291bnQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgcmV0dXJu
IG1lbWNtcChtX2F0dHJpYnV0ZXMsIG90aGVyLm1fYXR0cmlidXRlcywgc2l6ZW9mKEF0dHJpYnV0
ZSkgKiBtX2F0dHJpYnV0ZUNvdW50KTsKQEAgLTQ3LDEwICs1MCwxMiBAQCBwdWJsaWM6CiAKICAg
ICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJpbmdIYXNo
ZXI6Omhhc2hNZW1vcnkobV9hdHRyaWJ1dGVzLCBtX2F0dHJpYnV0ZUNvdW50ICogc2l6ZW9mKEF0
dHJpYnV0ZSkpOworICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVIYXNoID0gU3RyaW5nSGFzaGVy
OjpoYXNoTWVtb3J5KG1fYXR0cmlidXRlcywgbV9hdHRyaWJ1dGVDb3VudCAqIHNpemVvZihBdHRy
aWJ1dGUpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6cGFpckludEhhc2gobV90YWdRTmFtZS0+bV9l
eGlzdGluZ0hhc2gsIGF0dHJpYnV0ZUhhc2gpOwogICAgIH0KIAogcHJpdmF0ZToKKyAgICBjb25z
dCBRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbCogbV90YWdRTmFtZTsKICAgICBjb25z
dCBBdHRyaWJ1dGUqIG1fYXR0cmlidXRlczsKICAgICB1bnNpZ25lZCBtX2F0dHJpYnV0ZUNvdW50
OwogfTsKQEAgLTY2LDExICs3MSwxMSBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFNoYXJlYWJsZUVs
ZW1lbnREYXRhPiB2YWx1ZTsKIH07CiAKLVBhc3NSZWZQdHI8U2hhcmVhYmxlRWxlbWVudERhdGE+
IERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbDo6Y2FjaGVkU2hhcmVhYmxlRWxlbWVudERhdGFXaXRo
QXR0cmlidXRlcyhjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcykKK1Bhc3NSZWZQ
dHI8U2hhcmVhYmxlRWxlbWVudERhdGE+IERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbDo6Y2FjaGVk
U2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdRTmFtZSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNT
RVJUKCFhdHRyaWJ1dGVzLmlzRW1wdHkoKSk7CiAKLSAgICBTaGFyZWFibGVFbGVtZW50RGF0YUNh
Y2hlS2V5IGNhY2hlS2V5KGF0dHJpYnV0ZXMuZGF0YSgpLCBhdHRyaWJ1dGVzLnNpemUoKSk7Cisg
ICAgU2hhcmVhYmxlRWxlbWVudERhdGFDYWNoZUtleSBjYWNoZUtleSh0YWdRTmFtZS5pbXBsKCks
IGF0dHJpYnV0ZXMuZGF0YSgpLCBhdHRyaWJ1dGVzLnNpemUoKSk7CiAgICAgdW5zaWduZWQgY2Fj
aGVIYXNoID0gY2FjaGVLZXkuaGFzaCgpOwogCiAgICAgU2hhcmVhYmxlRWxlbWVudERhdGFDYWNo
ZTo6aXRlcmF0b3IgY2FjaGVJdGVyYXRvciA9IG1fc2hhcmVhYmxlRWxlbWVudERhdGFDYWNoZS5h
ZGQoY2FjaGVIYXNoLCBudWxscHRyKS5pdGVyYXRvcjsKQEAgLTgxLDEyICs4NiwxMiBAQCBQYXNz
UmVmUHRyPFNoYXJlYWJsZUVsZW1lbnREYXRhPiBEb2N1bWVudFNoYXJlZE9iamVjdFBvb2w6OmNh
Y2hlZFNoYXJlYWJsZUVsZW1lbgogICAgIGlmIChjYWNoZUhhc2ggJiYgY2FjaGVJdGVyYXRvci0+
dmFsdWUpCiAgICAgICAgIGVsZW1lbnREYXRhID0gY2FjaGVJdGVyYXRvci0+dmFsdWUtPnZhbHVl
OwogICAgIGVsc2UKLSAgICAgICAgZWxlbWVudERhdGEgPSBTaGFyZWFibGVFbGVtZW50RGF0YTo6
Y3JlYXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CisgICAgICAgIGVsZW1lbnREYXRhID0g
U2hhcmVhYmxlRWxlbWVudERhdGE6OmNyZWF0ZVdpdGhBdHRyaWJ1dGVzKHRhZ1FOYW1lLCBhdHRy
aWJ1dGVzKTsKIAogICAgIGlmICghY2FjaGVIYXNoIHx8IGNhY2hlSXRlcmF0b3ItPnZhbHVlKQog
ICAgICAgICByZXR1cm4gZWxlbWVudERhdGEucmVsZWFzZSgpOwogCi0gICAgY2FjaGVJdGVyYXRv
ci0+dmFsdWUgPSBhZG9wdFB0cihuZXcgU2hhcmVhYmxlRWxlbWVudERhdGFDYWNoZUVudHJ5KFNo
YXJlYWJsZUVsZW1lbnREYXRhQ2FjaGVLZXkoZWxlbWVudERhdGEtPm1fYXR0cmlidXRlQXJyYXks
IGVsZW1lbnREYXRhLT5sZW5ndGgoKSksIGVsZW1lbnREYXRhKSk7CisgICAgY2FjaGVJdGVyYXRv
ci0+dmFsdWUgPSBhZG9wdFB0cihuZXcgU2hhcmVhYmxlRWxlbWVudERhdGFDYWNoZUVudHJ5KFNo
YXJlYWJsZUVsZW1lbnREYXRhQ2FjaGVLZXkodGFnUU5hbWUuaW1wbCgpLCBlbGVtZW50RGF0YS0+
bV9hdHRyaWJ1dGVBcnJheSwgZWxlbWVudERhdGEtPmxlbmd0aCgpKSwgZWxlbWVudERhdGEpKTsK
IAogICAgIHJldHVybiBlbGVtZW50RGF0YS5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmgKaW5kZXggYTNiMjRkNy4uNDgzMjA0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuaApAQCAt
MzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdHRyaWJ1dGU7Citj
bGFzcyBRdWFsaWZpZWROYW1lOwogY2xhc3MgU2hhcmVhYmxlRWxlbWVudERhdGE7CiBjbGFzcyBT
aGFyZWFibGVFbGVtZW50RGF0YUNhY2hlRW50cnk7CiAKQEAgLTQyLDcgKzQzLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzT3duUHRyPERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbD4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbCk7IH0KICAg
ICB+RG9jdW1lbnRTaGFyZWRPYmplY3RQb29sKCk7CiAKLSAgICBQYXNzUmVmUHRyPFNoYXJlYWJs
ZUVsZW1lbnREYXRhPiBjYWNoZWRTaGFyZWFibGVFbGVtZW50RGF0YVdpdGhBdHRyaWJ1dGVzKGNv
bnN0IFZlY3RvcjxBdHRyaWJ1dGU+Jik7CisgICAgUGFzc1JlZlB0cjxTaGFyZWFibGVFbGVtZW50
RGF0YT4gY2FjaGVkU2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmlidXRlcyhjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdRTmFtZSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mKTsKIAogcHJpdmF0
ZToKICAgICBEb2N1bWVudFNoYXJlZE9iamVjdFBvb2woKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApp
bmRleCBiODk1NDAyLi5hZDU5N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yMTQsNiAr
MjE0LDExIEBAIEVsZW1lbnQ6On5FbGVtZW50KCkKICAgICAgICAgQVNTRVJUKCFoYXNQZW5kaW5n
UmVzb3VyY2VzKCkpOwogICAgIH0KICNlbmRpZgorCisgICAgaWYgKGhhc0VsZW1lbnREYXRhKCkp
CisgICAgICAgIG1fdGFnUU5hbWVPckVsZW1lbnREYXRhLmVsZW1lbnREYXRhLT5kZXJlZigpOwor
ICAgIGVsc2UKKyAgICAgICAgbV90YWdRTmFtZU9yRWxlbWVudERhdGEudGFnUU5hbWUtPmRlcmVm
KCk7CiB9CiAKIGlubGluZSBFbGVtZW50UmFyZURhdGEqIEVsZW1lbnQ6OmVsZW1lbnRSYXJlRGF0
YSgpIGNvbnN0CkBAIC0xMDY0LDE1ICsxMDY5LDE1IEBAIHZvaWQgRWxlbWVudDo6cGFyc2VyU2V0
QXR0cmlidXRlcyhjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlVmVjdG9yKQogewog
ICAgIEFTU0VSVCghaW5Eb2N1bWVudCgpKTsKICAgICBBU1NFUlQoIXBhcmVudE5vZGUoKSk7Ci0g
ICAgQVNTRVJUKCFtX2VsZW1lbnREYXRhKTsKKyAgICBBU1NFUlQoIWhhc0VsZW1lbnREYXRhKCkp
OwogCiAgICAgaWYgKGF0dHJpYnV0ZVZlY3Rvci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnNoYXJlZE9iamVjdFBvb2woKSkK
LSAgICAgICAgbV9lbGVtZW50RGF0YSA9IGRvY3VtZW50KCktPnNoYXJlZE9iamVjdFBvb2woKS0+
Y2FjaGVkU2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVWZWN0b3Ip
OworICAgICAgICBzZXRFbGVtZW50RGF0YShkb2N1bWVudCgpLT5zaGFyZWRPYmplY3RQb29sKCkt
PmNhY2hlZFNoYXJlYWJsZUVsZW1lbnREYXRhV2l0aEF0dHJpYnV0ZXModGFnUU5hbWUoKSwgYXR0
cmlidXRlVmVjdG9yKSk7CiAgICAgZWxzZQotICAgICAgICBtX2VsZW1lbnREYXRhID0gU2hhcmVh
YmxlRWxlbWVudERhdGE6OmNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGF0dHJpYnV0ZVZlY3Rvcik7Cisg
ICAgICAgIHNldEVsZW1lbnREYXRhKFNoYXJlYWJsZUVsZW1lbnREYXRhOjpjcmVhdGVXaXRoQXR0
cmlidXRlcyh0YWdRTmFtZSgpLCBhdHRyaWJ1dGVWZWN0b3IpKTsKIAogICAgIC8vIFVzZSBhdHRy
aWJ1dGVWZWN0b3IgaW5zdGVhZCBvZiBtX2VsZW1lbnREYXRhIGJlY2F1c2UgYXR0cmlidXRlQ2hh
bmdlZCBtaWdodCBtb2RpZnkgbV9lbGVtZW50RGF0YS4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYXR0cmlidXRlVmVjdG9yLnNpemUoKTsgKytpKQpAQCAtMTEwMCwxMiArMTEwNSwxMiBA
QCBib29sIEVsZW1lbnQ6Omhhc0VxdWl2YWxlbnRBdHRyaWJ1dGVzKGNvbnN0IEVsZW1lbnQqIG90
aGVyKSBjb25zdAogCiBTdHJpbmcgRWxlbWVudDo6bm9kZU5hbWUoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3RhZ05hbWUudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gdGFnUU5hbWUoKS50b1N0cmlu
ZygpOwogfQogCiBTdHJpbmcgRWxlbWVudDo6bm9kZU5hbWVQcmVzZXJ2aW5nQ2FzZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fdGFnTmFtZS50b1N0cmluZygpOworICAgIHJldHVybiB0YWdRTmFt
ZSgpLnRvU3RyaW5nKCk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2V0UHJlZml4KGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJlZml4LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTExMTUsNyArMTEyMCwxMCBA
QCB2b2lkIEVsZW1lbnQ6OnNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Rh
Z05hbWUuc2V0UHJlZml4KHByZWZpeC5pc0VtcHR5KCkgPyBBdG9taWNTdHJpbmcoKSA6IHByZWZp
eCk7CisgICAgaWYgKHRhZ1FOYW1lKCkucHJlZml4KCkgPT0gcHJlZml4KQorICAgICAgICByZXR1
cm47CisKKyAgICBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpLT5tX3RhZ1FOYW1lLnNldFByZWZp
eChwcmVmaXguaXNFbXB0eSgpID8gQXRvbWljU3RyaW5nKCkgOiBwcmVmaXgpOwogfQogCiBLVVJM
IEVsZW1lbnQ6OmJhc2VVUkkoKSBjb25zdApAQCAtMjg2MCw4ICsyODY4LDE0IEBAIHZvaWQgRWxl
bWVudDo6Y2xvbmVBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYgb3RoZXIpCiAg
ICAgICAgIGRldGFjaEFsbEF0dHJOb2Rlc0Zyb21FbGVtZW50KCk7CiAKICAgICBvdGhlci5zeW5j
aHJvbml6ZUFsbEF0dHJpYnV0ZXMoKTsKLSAgICBpZiAoIW90aGVyLm1fZWxlbWVudERhdGEpIHsK
LSAgICAgICAgbV9lbGVtZW50RGF0YS5jbGVhcigpOworICAgIGlmICghb3RoZXIuaGFzRWxlbWVu
dERhdGEoKSkgeworICAgICAgICBpZiAoaGFzRWxlbWVudERhdGEoKSkgeworICAgICAgICAgICAg
UXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGwqIG15VGFnUU5hbWUgPSB0YWdRTmFtZSgp
LmltcGwoKTsKKyAgICAgICAgICAgIG15VGFnUU5hbWUtPnJlZigpOworICAgICAgICAgICAgbV90
YWdRTmFtZU9yRWxlbWVudERhdGEuZWxlbWVudERhdGEtPmRlcmVmKCk7CisgICAgICAgICAgICBt
X3RhZ1FOYW1lT3JFbGVtZW50RGF0YS50YWdRTmFtZSA9IG15VGFnUU5hbWU7CisgICAgICAgICAg
ICBzZXRIYXNFbGVtZW50RGF0YShmYWxzZSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMjg3NywyMCArMjg5MSwyMiBAQCB2b2lkIEVsZW1lbnQ6OmNsb25lQXR0cmli
dXRlc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmIG90aGVyKQogICAgIGlmICghb2xkTmFtZS5p
c051bGwoKSB8fCAhbmV3TmFtZS5pc051bGwoKSkKICAgICAgICAgdXBkYXRlTmFtZShvbGROYW1l
LCBuZXdOYW1lKTsKIAorICAgIEVsZW1lbnREYXRhKiYgb3RoZXJFbGVtZW50RGF0YSA9IGNvbnN0
X2Nhc3Q8RWxlbWVudCY+KG90aGVyKS5tX3RhZ1FOYW1lT3JFbGVtZW50RGF0YS5lbGVtZW50RGF0
YTsKKwogICAgIC8vIElmICdvdGhlcicgaGFzIGEgbXV0YWJsZSBFbGVtZW50RGF0YSwgY29udmVy
dCBpdCB0byBhbiBpbW11dGFibGUgb25lIHNvIHdlIGNhbiBzaGFyZSBpdCBiZXR3ZWVuIGJvdGgg
ZWxlbWVudHMuCiAgICAgLy8gV2UgY2FuIG9ubHkgZG8gdGhpcyBpZiB0aGVyZSBpcyBubyBDU1NP
TSB3cmFwcGVyIGZvciBvdGhlcidzIGlubGluZSBzdHlsZSwgYW5kIHRoZXJlIGFyZSBubyBwcmVz
ZW50YXRpb24gYXR0cmlidXRlcy4KLSAgICBpZiAob3RoZXIubV9lbGVtZW50RGF0YS0+aXNVbmlx
dWUoKQotICAgICAgICAmJiAhb3RoZXIubV9lbGVtZW50RGF0YS0+cHJlc2VudGF0aW9uQXR0cmli
dXRlU3R5bGUoKQotICAgICAgICAmJiAoIW90aGVyLm1fZWxlbWVudERhdGEtPmlubGluZVN0eWxl
KCkgfHwgIW90aGVyLm1fZWxlbWVudERhdGEtPmlubGluZVN0eWxlKCktPmhhc0NTU09NV3JhcHBl
cigpKSkKLSAgICAgICAgY29uc3RfY2FzdDxFbGVtZW50Jj4ob3RoZXIpLm1fZWxlbWVudERhdGEg
PSBzdGF0aWNfY2FzdDxjb25zdCBVbmlxdWVFbGVtZW50RGF0YSo+KG90aGVyLm1fZWxlbWVudERh
dGEuZ2V0KCkpLT5tYWtlU2hhcmVhYmxlQ29weSgpOworICAgIGlmIChvdGhlckVsZW1lbnREYXRh
LT5pc1VuaXF1ZSgpCisgICAgICAgICYmICFvdGhlckVsZW1lbnREYXRhLT5wcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZSgpCisgICAgICAgICYmICghb3RoZXJFbGVtZW50RGF0YS0+aW5saW5lU3R5
bGUoKSB8fCAhb3RoZXJFbGVtZW50RGF0YS0+aW5saW5lU3R5bGUoKS0+aGFzQ1NTT01XcmFwcGVy
KCkpKQorICAgICAgICBjb25zdF9jYXN0PEVsZW1lbnQmPihvdGhlcikuc2V0RWxlbWVudERhdGEo
c3RhdGljX2Nhc3Q8Y29uc3QgVW5pcXVlRWxlbWVudERhdGEqPihvdGhlckVsZW1lbnREYXRhKS0+
bWFrZVNoYXJlYWJsZUNvcHkoKSk7CiAKLSAgICBpZiAoIW90aGVyLm1fZWxlbWVudERhdGEtPmlz
VW5pcXVlKCkpCi0gICAgICAgIG1fZWxlbWVudERhdGEgPSBvdGhlci5tX2VsZW1lbnREYXRhOwor
ICAgIGlmICghb3RoZXJFbGVtZW50RGF0YS0+aXNVbmlxdWUoKSkKKyAgICAgICAgc2V0RWxlbWVu
dERhdGEob3RoZXJFbGVtZW50RGF0YSk7CiAgICAgZWxzZQotICAgICAgICBtX2VsZW1lbnREYXRh
ID0gb3RoZXIubV9lbGVtZW50RGF0YS0+bWFrZVVuaXF1ZUNvcHkoKTsKKyAgICAgICAgc2V0RWxl
bWVudERhdGEob3RoZXJFbGVtZW50RGF0YS0+bWFrZVVuaXF1ZUNvcHkoKSk7CiAKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lbGVtZW50RGF0YS0+bGVuZ3RoKCk7ICsraSkgewotICAg
ICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGNvbnN0X2Nhc3Q8Y29uc3QgRWxlbWVu
dERhdGEqPihtX2VsZW1lbnREYXRhLmdldCgpKS0+YXR0cmlidXRlSXRlbShpKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbWVudERhdGEoKS0+bGVuZ3RoKCk7ICsraSkgeworICAg
ICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnREYXRhKCktPmF0dHJpYnV0
ZUl0ZW0oaSk7CiAgICAgICAgIGF0dHJpYnV0ZUNoYW5nZWRGcm9tUGFyc2VyT3JCeUNsb25pbmco
YXR0cmlidXRlLT5uYW1lKCksIGF0dHJpYnV0ZS0+dmFsdWUoKSwgTW9kaWZpZWRCeUNsb25pbmcp
OwogICAgIH0KIH0KQEAgLTI5MDEsMTMgKzI5MTcsMjMgQEAgdm9pZCBFbGVtZW50OjpjbG9uZURh
dGFGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JiBvdGhlcikKICAgICBjb3B5Tm9uQXR0cmlidXRl
UHJvcGVydGllc0Zyb21FbGVtZW50KG90aGVyKTsKIH0KIAordm9pZCBFbGVtZW50OjpzZXRFbGVt
ZW50RGF0YShQYXNzUmVmUHRyPEVsZW1lbnREYXRhPiBlbGVtZW50RGF0YSkKK3sKKyAgICBBU1NF
UlQoZWxlbWVudERhdGEpOworICAgIEFTU0VSVChlbGVtZW50RGF0YS0+bV90YWdRTmFtZSA9PSB0
YWdRTmFtZSgpKTsKKyAgICBpZiAoaGFzRWxlbWVudERhdGEoKSkKKyAgICAgICAgbV90YWdRTmFt
ZU9yRWxlbWVudERhdGEuZWxlbWVudERhdGEtPmRlcmVmKCk7CisgICAgbV90YWdRTmFtZU9yRWxl
bWVudERhdGEuZWxlbWVudERhdGEgPSBlbGVtZW50RGF0YS5sZWFrUmVmKCk7CisgICAgc2V0SGFz
RWxlbWVudERhdGEodHJ1ZSk7Cit9CisKIHZvaWQgRWxlbWVudDo6Y3JlYXRlVW5pcXVlRWxlbWVu
dERhdGEoKQogewotICAgIGlmICghbV9lbGVtZW50RGF0YSkKLSAgICAgICAgbV9lbGVtZW50RGF0
YSA9IFVuaXF1ZUVsZW1lbnREYXRhOjpjcmVhdGUoKTsKKyAgICBpZiAoIWhhc0VsZW1lbnREYXRh
KCkpCisgICAgICAgIHNldEVsZW1lbnREYXRhKFVuaXF1ZUVsZW1lbnREYXRhOjpjcmVhdGUodGFn
UU5hbWUoKSkpOwogICAgIGVsc2UgewotICAgICAgICBBU1NFUlQoIW1fZWxlbWVudERhdGEtPmlz
VW5pcXVlKCkpOwotICAgICAgICBtX2VsZW1lbnREYXRhID0gc3RhdGljX2Nhc3Q8U2hhcmVhYmxl
RWxlbWVudERhdGEqPihtX2VsZW1lbnREYXRhLmdldCgpKS0+bWFrZVVuaXF1ZUNvcHkoKTsKKyAg
ICAgICAgQVNTRVJUKCFlbGVtZW50RGF0YSgpLT5pc1VuaXF1ZSgpKTsKKyAgICAgICAgc2V0RWxl
bWVudERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgU2hhcmVhYmxlRWxlbWVudERhdGEqPihlbGVtZW50
RGF0YSgpKS0+bWFrZVVuaXF1ZUNvcHkoKSk7CiAgICAgfQogfQogCkBAIC0yOTE1LDggKzI5NDEs
MTAgQEAgdm9pZCBFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9y
eU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKICAgICBDb250YWlu
ZXJOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKLSAgICBpbmZvLmFk
ZE1lbWJlcihtX3RhZ05hbWUsICJ0YWdOYW1lIik7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9lbGVt
ZW50RGF0YSwgImVsZW1lbnREYXRhIik7CisgICAgaWYgKGhhc0VsZW1lbnREYXRhKCkpCisgICAg
ICAgIGluZm8uYWRkTWVtYmVyKGVsZW1lbnREYXRhKCksICJlbGVtZW50RGF0YSIpOworICAgIGVs
c2UKKyAgICAgICAgaW5mby5hZGRNZW1iZXIodGFnUU5hbWUoKSwgInRhZ1FOYW1lIik7CiB9CiAK
ICNpZiBFTkFCTEUoU1ZHKQpAQCAtMjk0Nyw3ICsyOTc1LDcgQEAgdm9pZCBFbGVtZW50RGF0YTo6
ZGVyZWYoKQogICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8U2hhcmVhYmxlRWxlbWVudERhdGEq
Pih0aGlzKTsKIH0KIAotRWxlbWVudERhdGE6OkVsZW1lbnREYXRhKCkKK0VsZW1lbnREYXRhOjpF
bGVtZW50RGF0YShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSkKICAgICA6IG1faXNVbmlx
dWUodHJ1ZSkKICAgICAsIG1fYXJyYXlTaXplKDApCiAgICAgLCBtX3ByZXNlbnRhdGlvbkF0dHJp
YnV0ZVN0eWxlSXNEaXJ0eShmYWxzZSkKQEAgLTI5NTUsMTAgKzI5ODMsMTEgQEAgRWxlbWVudERh
dGE6OkVsZW1lbnREYXRhKCkKICNpZiBFTkFCTEUoU1ZHKQogICAgICwgbV9hbmltYXRlZFNWR0F0
dHJpYnV0ZXNBcmVEaXJ0eShmYWxzZSkKICNlbmRpZgorICAgICwgbV90YWdRTmFtZSh0YWdRTmFt
ZSkKIHsKIH0KIAotRWxlbWVudERhdGE6OkVsZW1lbnREYXRhKHVuc2lnbmVkIGFycmF5U2l6ZSkK
K0VsZW1lbnREYXRhOjpFbGVtZW50RGF0YShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSwg
dW5zaWduZWQgYXJyYXlTaXplKQogICAgIDogbV9pc1VuaXF1ZShmYWxzZSkKICAgICAsIG1fYXJy
YXlTaXplKGFycmF5U2l6ZSkKICAgICAsIG1fcHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGVJc0Rp
cnR5KGZhbHNlKQpAQCAtMjk2NiwxMSArMjk5NSwxMyBAQCBFbGVtZW50RGF0YTo6RWxlbWVudERh
dGEodW5zaWduZWQgYXJyYXlTaXplKQogI2lmIEVOQUJMRShTVkcpCiAgICAgLCBtX2FuaW1hdGVk
U1ZHQXR0cmlidXRlc0FyZURpcnR5KGZhbHNlKQogI2VuZGlmCisgICAgLCBtX3RhZ1FOYW1lKHRh
Z1FOYW1lKQogewogfQogCiBzdHJ1Y3QgU2FtZVNpemVBc0VsZW1lbnREYXRhIDogcHVibGljIFJl
ZkNvdW50ZWQ8U2FtZVNpemVBc0VsZW1lbnREYXRhPiB7CiAgICAgdW5zaWduZWQgYml0ZmllbGQ7
CisgICAgUXVhbGlmaWVkTmFtZSBxbmFtZTsKICAgICB2b2lkKiByZWZQdHJzWzNdOwogfTsKIApA
QCAtMjk4MSwxOSArMzAxMiwxOSBAQCBzdGF0aWMgc2l6ZV90IHNpemVGb3JTaGFyZWFibGVFbGVt
ZW50RGF0YVdpdGhBdHRyaWJ1dGVDb3VudCh1bnNpZ25lZCBjb3VudCkKICAgICByZXR1cm4gc2l6
ZW9mKFNoYXJlYWJsZUVsZW1lbnREYXRhKSArIHNpemVvZihBdHRyaWJ1dGUpICogY291bnQ7CiB9
CiAKLVBhc3NSZWZQdHI8U2hhcmVhYmxlRWxlbWVudERhdGE+IFNoYXJlYWJsZUVsZW1lbnREYXRh
OjpjcmVhdGVXaXRoQXR0cmlidXRlcyhjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRl
cykKK1Bhc3NSZWZQdHI8U2hhcmVhYmxlRWxlbWVudERhdGE+IFNoYXJlYWJsZUVsZW1lbnREYXRh
OjpjcmVhdGVXaXRoQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSwgY29u
c3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCiB7CiAgICAgdm9pZCogc2xvdCA9IFdU
Rjo6ZmFzdE1hbGxvYyhzaXplRm9yU2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmlidXRlQ291
bnQoYXR0cmlidXRlcy5zaXplKCkpKTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IChzbG90KSBT
aGFyZWFibGVFbGVtZW50RGF0YShhdHRyaWJ1dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyAoTm90TnVsbCwgc2xvdCkgU2hhcmVhYmxlRWxlbWVudERhdGEodGFnUU5hbWUsIGF0dHJpYnV0
ZXMpKTsKIH0KIAotUGFzc1JlZlB0cjxVbmlxdWVFbGVtZW50RGF0YT4gVW5pcXVlRWxlbWVudERh
dGE6OmNyZWF0ZSgpCitQYXNzUmVmUHRyPFVuaXF1ZUVsZW1lbnREYXRhPiBVbmlxdWVFbGVtZW50
RGF0YTo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lKQogewotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVW5pcXVlRWxlbWVudERhdGEpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgVW5pcXVlRWxlbWVudERhdGEodGFnUU5hbWUpKTsKIH0KIAotU2hhcmVhYmxlRWxlbWVudERh
dGE6OlNoYXJlYWJsZUVsZW1lbnREYXRhKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1
dGVzKQotICAgIDogRWxlbWVudERhdGEoYXR0cmlidXRlcy5zaXplKCkpCitTaGFyZWFibGVFbGVt
ZW50RGF0YTo6U2hhcmVhYmxlRWxlbWVudERhdGEoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5h
bWUsIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKQorICAgIDogRWxlbWVudERh
dGEodGFnUU5hbWUsIGF0dHJpYnV0ZXMuc2l6ZSgpKQogewogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2FycmF5U2l6ZTsgKytpKQogICAgICAgICBuZXcgKCZtX2F0dHJpYnV0ZUFycmF5
W2ldKSBBdHRyaWJ1dGUoYXR0cmlidXRlc1tpXSk7CkBAIC0zMDI3LDEzICszMDU4LDE1IEBAIEVs
ZW1lbnREYXRhOjpFbGVtZW50RGF0YShjb25zdCBFbGVtZW50RGF0YSYgb3RoZXIsIGJvb2wgaXNV
bmlxdWUpCiAjaWYgRU5BQkxFKFNWRykKICAgICAsIG1fYW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJl
RGlydHkob3RoZXIubV9hbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eSkKICNlbmRpZgorICAg
ICwgbV90YWdRTmFtZShvdGhlci5tX3RhZ1FOYW1lKQogICAgICwgbV9jbGFzc05hbWVzKG90aGVy
Lm1fY2xhc3NOYW1lcykKICAgICAsIG1faWRGb3JTdHlsZVJlc29sdXRpb24ob3RoZXIubV9pZEZv
clN0eWxlUmVzb2x1dGlvbikKIHsKICAgICAvLyBOT1RFOiBUaGUgaW5saW5lIHN0eWxlIGlzIGNv
cGllZCBieSB0aGUgc3ViY2xhc3MgY29weSBjb25zdHJ1Y3RvciBzaW5jZSB3ZSBkb24ndCBrbm93
IHdoYXQgdG8gZG8gd2l0aCBpdCBoZXJlLgogfQogCi1VbmlxdWVFbGVtZW50RGF0YTo6VW5pcXVl
RWxlbWVudERhdGEoKQorVW5pcXVlRWxlbWVudERhdGE6OlVuaXF1ZUVsZW1lbnREYXRhKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lKQorICAgIDogRWxlbWVudERhdGEodGFnUU5hbWUpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDUxNGY1ODAuLmU1M2VkZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaApAQCAtODgsOCArODgsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1VuaXF1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNVbmlxdWU7IH0KIAogcHJvdGVjdGVkOgotICAgIEVsZW1lbnREYXRh
KCk7Ci0gICAgRWxlbWVudERhdGEodW5zaWduZWQgYXJyYXlTaXplKTsKKyAgICBFbGVtZW50RGF0
YShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSk7CisgICAgRWxlbWVudERhdGEoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUsIHVuc2lnbmVkIGFycmF5U2l6ZSk7CiAgICAgRWxlbWVu
dERhdGEoY29uc3QgRWxlbWVudERhdGEmLCBib29sIGlzVW5pcXVlKTsKIAogICAgIHVuc2lnbmVk
IG1faXNVbmlxdWUgOiAxOwpAQCAtMTAwLDYgKzEwMCw3IEBAIHByb3RlY3RlZDoKICAgICBtdXRh
YmxlIHVuc2lnbmVkIG1fYW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkgOiAxOwogI2VuZGlm
CiAKKyAgICBRdWFsaWZpZWROYW1lIG1fdGFnUU5hbWU7CiAgICAgbXV0YWJsZSBSZWZQdHI8U3R5
bGVQcm9wZXJ0eVNldD4gbV9pbmxpbmVTdHlsZTsKICAgICBtdXRhYmxlIFNwYWNlU3BsaXRTdHJp
bmcgbV9jbGFzc05hbWVzOwogICAgIG11dGFibGUgQXRvbWljU3RyaW5nIG1faWRGb3JTdHlsZVJl
c29sdXRpb247CkBAIC0xMjYsOSArMTI3LDkgQEAgcHJpdmF0ZToKIAogY2xhc3MgU2hhcmVhYmxl
RWxlbWVudERhdGEgOiBwdWJsaWMgRWxlbWVudERhdGEgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNoYXJlYWJsZUVsZW1lbnREYXRhPiBjcmVhdGVXaXRoQXR0cmlidXRlcyhjb25z
dCBWZWN0b3I8QXR0cmlidXRlPiYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZUVs
ZW1lbnREYXRhPiBjcmVhdGVXaXRoQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdR
TmFtZSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mKTsKIAotICAgIGV4cGxpY2l0IFNoYXJlYWJs
ZUVsZW1lbnREYXRhKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+Jik7CisgICAgU2hhcmVhYmxlRWxl
bWVudERhdGEoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUsIGNvbnN0IFZlY3RvcjxBdHRy
aWJ1dGU+Jik7CiAgICAgZXhwbGljaXQgU2hhcmVhYmxlRWxlbWVudERhdGEoY29uc3QgVW5pcXVl
RWxlbWVudERhdGEmKTsKICAgICB+U2hhcmVhYmxlRWxlbWVudERhdGEoKTsKIApAQCAtMTQxLDcg
KzE0Miw3IEBAIHB1YmxpYzoKIAogY2xhc3MgVW5pcXVlRWxlbWVudERhdGEgOiBwdWJsaWMgRWxl
bWVudERhdGEgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVuaXF1ZUVsZW1lbnRE
YXRhPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxVbmlxdWVFbGVtZW50RGF0YT4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lKTsKICAgICBQYXNzUmVmUHRyPFNo
YXJlYWJsZUVsZW1lbnREYXRhPiBtYWtlU2hhcmVhYmxlQ29weSgpIGNvbnN0OwogCiAgICAgLy8g
VGhlc2UgZnVuY3Rpb25zIGRvIG5vIGVycm9yL2R1cGxpY2F0ZSBjaGVja2luZy4KQEAgLTE1MSw5
ICsxNTIsOSBAQCBwdWJsaWM6CiAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGVJdGVtKHVuc2lnbmVk
IGluZGV4KTsKICAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogCi0gICAgVW5pcXVlRWxlbWVudERhdGEoKTsKKyAgICBleHBsaWNpdCBVbmlxdWVF
bGVtZW50RGF0YShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSk7CiAgICAgZXhwbGljaXQg
VW5pcXVlRWxlbWVudERhdGEoY29uc3QgU2hhcmVhYmxlRWxlbWVudERhdGEmKTsKLSAgICBleHBs
aWNpdCBVbmlxdWVFbGVtZW50RGF0YShjb25zdCBVbmlxdWVFbGVtZW50RGF0YSYpOworICAgIFVu
aXF1ZUVsZW1lbnREYXRhKGNvbnN0IFVuaXF1ZUVsZW1lbnREYXRhJik7CiAKICAgICBtdXRhYmxl
IFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBtX3ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlOwog
ICAgIFZlY3RvcjxBdHRyaWJ1dGUsIDQ+IG1fYXR0cmlidXRlVmVjdG9yOwpAQCAtMzQ2LDE3ICsz
NDcsMTcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHls
ZSgpOwogCi0gICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUoKSBjb25zdCB7IHJldHVy
biBtX3RhZ05hbWU7IH0KKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSgpIGNvbnN0
OwogICAgIFN0cmluZyB0YWdOYW1lKCkgY29uc3QgeyByZXR1cm4gbm9kZU5hbWUoKTsgfQotICAg
IGJvb2wgaGFzVGFnTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKSBjb25zdCB7IHJl
dHVybiBtX3RhZ05hbWUubWF0Y2hlcyh0YWdOYW1lKTsgfQorICAgIGJvb2wgaGFzVGFnTmFtZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKSBjb25zdCB7IHJldHVybiB0YWdRTmFtZSgpLm1h
dGNoZXModGFnTmFtZSk7IH0KICAgICAKICAgICAvLyBBIGZhc3QgZnVuY3Rpb24gZm9yIGNoZWNr
aW5nIHRoZSBsb2NhbCBuYW1lIGFnYWluc3QgYW5vdGhlciBhdG9taWMgc3RyaW5nLgotICAgIGJv
b2wgaGFzTG9jYWxOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1fdGFnTmFtZS5sb2NhbE5hbWUoKSA9PSBvdGhlcjsgfQotICAgIGJvb2wgaGFzTG9jYWxOYW1l
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3RhZ05hbWUubG9j
YWxOYW1lKCkgPT0gb3RoZXIubG9jYWxOYW1lKCk7IH0KKyAgICBib29sIGhhc0xvY2FsTmFtZShj
b25zdCBBdG9taWNTdHJpbmcmIG90aGVyKSBjb25zdCB7IHJldHVybiB0YWdRTmFtZSgpLmxvY2Fs
TmFtZSgpID09IG90aGVyOyB9CisgICAgYm9vbCBoYXNMb2NhbE5hbWUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHRhZ1FOYW1lKCkubG9jYWxOYW1lKCkgPT0gb3Ro
ZXIubG9jYWxOYW1lKCk7IH0KIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV90YWdOYW1lLmxvY2FsTmFtZSgpOyB9Ci0gICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBwcmVmaXgoKSBjb25zdCB7IHJldHVybiBtX3RhZ05hbWUucHJlZml4KCk7IH0KLSAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFn
TmFtZS5uYW1lc3BhY2VVUkkoKTsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1l
KCkgY29uc3QgeyByZXR1cm4gdGFnUU5hbWUoKS5sb2NhbE5hbWUoKTsgfQorICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgcHJlZml4KCkgY29uc3QgeyByZXR1cm4gdGFnUU5hbWUoKS5wcmVmaXgoKTsg
fQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKCkgY29uc3QgeyByZXR1cm4g
dGFnUU5hbWUoKS5uYW1lc3BhY2VVUkkoKTsgfQogCiAgICAgdmlydHVhbCBLVVJMIGJhc2VVUkko
KSBjb25zdDsKIApAQCAtMzg4LDcgKzM4OSw3IEBAIHB1YmxpYzoKICAgICAvLyBSZW1vdmUgYXR0
cmlidXRlcyB0aGF0IG1pZ2h0IGludHJvZHVjZSBzY3JpcHRpbmcgZnJvbSB0aGUgdmVjdG9yIGxl
YXZpbmcgdGhlIGVsZW1lbnQgdW5jaGFuZ2VkLgogICAgIHZvaWQgc3RyaXBTY3JpcHRpbmdBdHRy
aWJ1dGVzKFZlY3RvcjxBdHRyaWJ1dGU+JikgY29uc3Q7CiAKLSAgICBjb25zdCBFbGVtZW50RGF0
YSogZWxlbWVudERhdGEoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnREYXRhLmdldCgpOyB9Cisg
ICAgY29uc3QgRWxlbWVudERhdGEqIGVsZW1lbnREYXRhKCkgY29uc3QgeyByZXR1cm4gaGFzRWxl
bWVudERhdGEoKSA/IG1fdGFnUU5hbWVPckVsZW1lbnREYXRhLmVsZW1lbnREYXRhIDogMDsgfQog
ICAgIFVuaXF1ZUVsZW1lbnREYXRhKiBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpOwogCiAgICAg
dm9pZCBzeW5jaHJvbml6ZUFsbEF0dHJpYnV0ZXMoKSBjb25zdDsKQEAgLTYyNCwxMCArNjI1LDEx
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6Ci0gICAgRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlv
blR5cGUgdHlwZSkKKyAgICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICAgICAgOiBDb250
YWluZXJOb2RlKGRvY3VtZW50LCB0eXBlKQotICAgICAgICAsIG1fdGFnTmFtZSh0YWdOYW1lKQog
ICAgIHsKKyAgICAgICAgbV90YWdRTmFtZU9yRWxlbWVudERhdGEudGFnUU5hbWUgPSB0YWdRTmFt
ZS5pbXBsKCk7CisgICAgICAgIG1fdGFnUU5hbWVPckVsZW1lbnREYXRhLnRhZ1FOYW1lLT5yZWYo
KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5z
ZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKQEAgLTcxMSw3ICs3MTMsNiBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVw
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50
V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpOwogCi0gICAgUXVhbGlmaWVkTmFtZSBtX3Rh
Z05hbWU7CiAgICAgYm9vbCByYXJlRGF0YVN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3Q7CiAg
ICAgYm9vbCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKCkgY29uc3Q7CiAgICAgYm9v
bCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0OwpAQCAtNzMwLDYgKzcz
MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50Tm9k
ZSgpOwogCisgICAgdm9pZCBzZXRFbGVtZW50RGF0YShQYXNzUmVmUHRyPEVsZW1lbnREYXRhPik7
CiAgICAgdm9pZCBjcmVhdGVVbmlxdWVFbGVtZW50RGF0YSgpOwogCiAgICAgYm9vbCBzaG91bGRJ
bnZhbGlkYXRlRGlzdHJpYnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudFNoYWRvdyos
IGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKQEAgLTc0NCw4ICs3
NDYsMTggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNKYXZhU2NyaXB0VVJMQXR0cmlidXRlKGNv
bnN0IEF0dHJpYnV0ZSYpIGNvbnN0OwogCi0gICAgUmVmUHRyPEVsZW1lbnREYXRhPiBtX2VsZW1l
bnREYXRhOworICAgIHVuaW9uIHsKKyAgICAgICAgUXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFt
ZUltcGwqIHRhZ1FOYW1lOworICAgICAgICBFbGVtZW50RGF0YSogZWxlbWVudERhdGE7CisgICAg
fSBtX3RhZ1FOYW1lT3JFbGVtZW50RGF0YTsKIH07CisKK2lubGluZSBjb25zdCBRdWFsaWZpZWRO
YW1lJiBFbGVtZW50Ojp0YWdRTmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKGhhc0VsZW1lbnREYXRh
KCkpCisgICAgICAgIHJldHVybiBlbGVtZW50RGF0YSgpLT5tX3RhZ1FOYW1lOworICAgIHJldHVy
biAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBRdWFsaWZpZWROYW1lKj4oJm1fdGFnUU5hbWVPckVs
ZW1lbnREYXRhLnRhZ1FOYW1lKTsKK30KICAgICAKIGlubGluZSBFbGVtZW50KiB0b0VsZW1lbnQo
Tm9kZSogbm9kZSkKIHsKQEAgLTgxMiwxMyArODI0LDEzIEBAIGlubGluZSBFbGVtZW50KiBFbGVt
ZW50OjpuZXh0RWxlbWVudFNpYmxpbmcoKSBjb25zdAogaW5saW5lIGJvb2wgRWxlbWVudDo6ZmFz
dEhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogewogICAgIEFT
U0VSVChmYXN0QXR0cmlidXRlTG9va3VwQWxsb3dlZChuYW1lKSk7Ci0gICAgcmV0dXJuIGVsZW1l
bnREYXRhKCkgJiYgZ2V0QXR0cmlidXRlSXRlbShuYW1lKTsKKyAgICByZXR1cm4gaGFzRWxlbWVu
dERhdGEoKSAmJiBnZXRBdHRyaWJ1dGVJdGVtKG5hbWUpOwogfQogCiBpbmxpbmUgY29uc3QgQXRv
bWljU3RyaW5nJiBFbGVtZW50OjpmYXN0R2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGZhc3RBdHRyaWJ1dGVMb29rdXBBbGxvd2VkKG5h
bWUpKTsKLSAgICBpZiAoZWxlbWVudERhdGEoKSkgeworICAgIGlmIChoYXNFbGVtZW50RGF0YSgp
KSB7CiAgICAgICAgIGlmIChjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGdldEF0dHJpYnV0
ZUl0ZW0obmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlLT52YWx1ZSgpOwogICAg
IH0KQEAgLTgyNyw3ICs4MzksNyBAQCBpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50
OjpmYXN0R2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAKIGlubGluZSBi
b29sIEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZXNXaXRob3V0VXBkYXRlKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gZWxlbWVudERhdGEoKSAmJiAhZWxlbWVudERhdGEoKS0+aXNFbXB0eSgpOworICAgIHJl
dHVybiBoYXNFbGVtZW50RGF0YSgpICYmICFlbGVtZW50RGF0YSgpLT5pc0VtcHR5KCk7CiB9CiAK
IGlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmlkRm9yU3R5bGVSZXNvbHV0aW9u
KCkgY29uc3QKQEAgLTg2Myw0MyArODc1LDQzIEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6OnNldElk
QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiBpbmxpbmUgY29uc3QgU3BhY2VT
cGxpdFN0cmluZyYgRWxlbWVudDo6Y2xhc3NOYW1lcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhh
c0NsYXNzKCkpOwotICAgIEFTU0VSVChlbGVtZW50RGF0YSgpKTsKKyAgICBBU1NFUlQoaGFzRWxl
bWVudERhdGEoKSk7CiAgICAgcmV0dXJuIGVsZW1lbnREYXRhKCktPmNsYXNzTmFtZXMoKTsKIH0K
IAogaW5saW5lIHNpemVfdCBFbGVtZW50OjphdHRyaWJ1dGVDb3VudCgpIGNvbnN0CiB7Ci0gICAg
QVNTRVJUKGVsZW1lbnREYXRhKCkpOworICAgIEFTU0VSVChoYXNFbGVtZW50RGF0YSgpKTsKICAg
ICByZXR1cm4gZWxlbWVudERhdGEoKS0+bGVuZ3RoKCk7CiB9CiAKIGlubGluZSBjb25zdCBBdHRy
aWJ1dGUqIEVsZW1lbnQ6OmF0dHJpYnV0ZUl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKGVsZW1lbnREYXRhKCkpOworICAgIEFTU0VSVChoYXNFbGVtZW50RGF0YSgpKTsK
ICAgICByZXR1cm4gZWxlbWVudERhdGEoKS0+YXR0cmlidXRlSXRlbShpbmRleCk7CiB9CiAKIGlu
bGluZSBjb25zdCBBdHRyaWJ1dGUqIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKLSAgICBBU1NFUlQoZWxlbWVudERhdGEoKSk7Cisg
ICAgQVNTRVJUKGhhc0VsZW1lbnREYXRhKCkpOwogICAgIHJldHVybiBlbGVtZW50RGF0YSgpLT5n
ZXRBdHRyaWJ1dGVJdGVtKG5hbWUpOwogfQogCiBpbmxpbmUgYm9vbCBFbGVtZW50OjpoYXNJRCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGVsZW1lbnREYXRhKCkgJiYgZWxlbWVudERhdGEoKS0+aGFz
SUQoKTsKKyAgICByZXR1cm4gaGFzRWxlbWVudERhdGEoKSAmJiBlbGVtZW50RGF0YSgpLT5oYXNJ
RCgpOwogfQogCiBpbmxpbmUgYm9vbCBFbGVtZW50OjpoYXNDbGFzcygpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGVsZW1lbnREYXRhKCkgJiYgZWxlbWVudERhdGEoKS0+aGFzQ2xhc3MoKTsKKyAgICBy
ZXR1cm4gaGFzRWxlbWVudERhdGEoKSAmJiBlbGVtZW50RGF0YSgpLT5oYXNDbGFzcygpOwogfQog
CiBpbmxpbmUgVW5pcXVlRWxlbWVudERhdGEqIEVsZW1lbnQ6OmVuc3VyZVVuaXF1ZUVsZW1lbnRE
YXRhKCkKIHsKLSAgICBpZiAoIWVsZW1lbnREYXRhKCkgfHwgIWVsZW1lbnREYXRhKCktPmlzVW5p
cXVlKCkpCisgICAgaWYgKCFoYXNFbGVtZW50RGF0YSgpIHx8ICFlbGVtZW50RGF0YSgpLT5pc1Vu
aXF1ZSgpKQogICAgICAgICBjcmVhdGVVbmlxdWVFbGVtZW50RGF0YSgpOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxVbmlxdWVFbGVtZW50RGF0YSo+KG1fZWxlbWVudERhdGEuZ2V0KCkpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxVbmlxdWVFbGVtZW50RGF0YSo+KG1fdGFnUU5hbWVPckVsZW1l
bnREYXRhLmVsZW1lbnREYXRhKTsKIH0KIAogLy8gUHV0IGhlcmUgdG8gbWFrZSB0aGVtIGlubGlu
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCmluZGV4IGVhZTkxNDkuLmUwMzI4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjc0
LDYgKzI3NCw5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1N5bnRoZXRpY0F0dHJDaGlsZE5vZGVz
KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhIYXNTeW50aGV0aWNBdHRyQ2hpbGROb2Rlc0ZsYWcp
OyB9CiAgICAgdm9pZCBzZXRIYXNTeW50aGV0aWNBdHRyQ2hpbGROb2Rlcyhib29sIGZsYWcpIHsg
c2V0RmxhZyhmbGFnLCBIYXNTeW50aGV0aWNBdHRyQ2hpbGROb2Rlc0ZsYWcpOyB9CiAKKyAgICBi
b29sIGhhc0VsZW1lbnREYXRhKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhIYXNFbGVtZW50RGF0
YUZsYWcpOyB9CisgICAgdm9pZCBzZXRIYXNFbGVtZW50RGF0YShib29sIGZsYWcpIHsgc2V0Rmxh
ZyhmbGFnLCBIYXNFbGVtZW50RGF0YUZsYWcpOyB9CisKICAgICAvLyBJZiB0aGlzIG5vZGUgaXMg
aW4gYSBzaGFkb3cgdHJlZSwgcmV0dXJucyBpdHMgc2hhZG93IGhvc3QuIE90aGVyd2lzZSwgcmV0
dXJucyAwLgogICAgIEVsZW1lbnQqIHNoYWRvd0hvc3QoKSBjb25zdDsKICAgICAvLyBJZiB0aGlz
IG5vZGUgaXMgaW4gYSBzaGFkb3cgdHJlZSwgcmV0dXJucyBpdHMgc2hhZG93IGhvc3QuIE90aGVy
d2lzZSwgcmV0dXJucyB0aGlzLgpAQCAtNzM1LDExICs3MzgsMTIgQEAgcHJpdmF0ZToKICNlbmRp
ZgogICAgICAgICBOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnID0gMSA8PCAyNSwKICAgICAgICAg
SXNJblNoYWRvd1RyZWVGbGFnID0gMSA8PCAyNiwKKyAgICAgICAgSGFzRWxlbWVudERhdGFGbGFn
ID0gMSA8PCAyNywKIAogICAgICAgICBEZWZhdWx0Tm9kZUZsYWdzID0gSXNQYXJzaW5nQ2hpbGRy
ZW5GaW5pc2hlZEZsYWcKICAgICB9OwogCi0gICAgLy8gNSBiaXRzIHJlbWFpbmluZworICAgIC8v
IDQgYml0cyByZW1haW5pbmcKIAogICAgIGJvb2wgZ2V0RmxhZyhOb2RlRmxhZ3MgbWFzaykgY29u
c3QgeyByZXR1cm4gbV9ub2RlRmxhZ3MgJiBtYXNrOyB9CiAgICAgdm9pZCBzZXRGbGFnKGJvb2wg
ZiwgTm9kZUZsYWdzIG1hc2spIGNvbnN0IHsgbV9ub2RlRmxhZ3MgPSAobV9ub2RlRmxhZ3MgJiB+
bWFzaykgfCAoLShpbnQzMl90KWYgJiBtYXNrKTsgfSAK
</data>
<flag name="commit-queue"
          id="218671"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196722</attachid>
            <date>2013-04-06 01:24:36 -0700</date>
            <delta_ts>2013-04-07 06:49:05 -0700</delta_ts>
            <desc>Lunch for EWS</desc>
            <filename>ews-113938-v2.diff</filename>
            <type>text/plain</type>
            <size>23557</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFNoYXJlZE9iamVjdFBvb2wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5jcHAKaW5k
ZXggOTk3ZTg2Ni4uMDU0NWE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50U2hhcmVkT2JqZWN0UG9vbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
U2hhcmVkT2JqZWN0UG9vbC5jcHAKQEAgLTMzLDEzICszMywxNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFNoYXJlYWJsZUVsZW1lbnREYXRhQ2FjaGVLZXkgewogcHVibGljOgotICAg
IFNoYXJlYWJsZUVsZW1lbnREYXRhQ2FjaGVLZXkoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGVz
LCB1bnNpZ25lZCBhdHRyaWJ1dGVDb3VudCkKLSAgICAgICAgOiBtX2F0dHJpYnV0ZXMoYXR0cmli
dXRlcykKKyAgICBTaGFyZWFibGVFbGVtZW50RGF0YUNhY2hlS2V5KGNvbnN0IFF1YWxpZmllZE5h
bWU6OlF1YWxpZmllZE5hbWVJbXBsKiB0YWdRTmFtZSwgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1
dGVzLCB1bnNpZ25lZCBhdHRyaWJ1dGVDb3VudCkKKyAgICAgICAgOiBtX3RhZ1FOYW1lKHRhZ1FO
YW1lKQorICAgICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQogICAgICAgICAsIG1fYXR0
cmlidXRlQ291bnQoYXR0cmlidXRlQ291bnQpCiAgICAgeyB9CiAKICAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgU2hhcmVhYmxlRWxlbWVudERhdGFDYWNoZUtleSYgb3RoZXIpIGNvbnN0CiAgICAg
eworICAgICAgICBpZiAobV90YWdRTmFtZSAhPSBvdGhlci5tX3RhZ1FOYW1lKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChtX2F0dHJpYnV0ZUNvdW50ICE9IG90aGVyLm1f
YXR0cmlidXRlQ291bnQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgcmV0dXJu
IG1lbWNtcChtX2F0dHJpYnV0ZXMsIG90aGVyLm1fYXR0cmlidXRlcywgc2l6ZW9mKEF0dHJpYnV0
ZSkgKiBtX2F0dHJpYnV0ZUNvdW50KTsKQEAgLTQ3LDEwICs1MCwxMiBAQCBwdWJsaWM6CiAKICAg
ICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJpbmdIYXNo
ZXI6Omhhc2hNZW1vcnkobV9hdHRyaWJ1dGVzLCBtX2F0dHJpYnV0ZUNvdW50ICogc2l6ZW9mKEF0
dHJpYnV0ZSkpOworICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVIYXNoID0gU3RyaW5nSGFzaGVy
OjpoYXNoTWVtb3J5KG1fYXR0cmlidXRlcywgbV9hdHRyaWJ1dGVDb3VudCAqIHNpemVvZihBdHRy
aWJ1dGUpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6cGFpckludEhhc2gobV90YWdRTmFtZS0+bV9l
eGlzdGluZ0hhc2gsIGF0dHJpYnV0ZUhhc2gpOwogICAgIH0KIAogcHJpdmF0ZToKKyAgICBjb25z
dCBRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbCogbV90YWdRTmFtZTsKICAgICBjb25z
dCBBdHRyaWJ1dGUqIG1fYXR0cmlidXRlczsKICAgICB1bnNpZ25lZCBtX2F0dHJpYnV0ZUNvdW50
OwogfTsKQEAgLTY2LDExICs3MSwxMSBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFNoYXJlYWJsZUVs
ZW1lbnREYXRhPiB2YWx1ZTsKIH07CiAKLVBhc3NSZWZQdHI8U2hhcmVhYmxlRWxlbWVudERhdGE+
IERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbDo6Y2FjaGVkU2hhcmVhYmxlRWxlbWVudERhdGFXaXRo
QXR0cmlidXRlcyhjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcykKK1Bhc3NSZWZQ
dHI8U2hhcmVhYmxlRWxlbWVudERhdGE+IERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbDo6Y2FjaGVk
U2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdRTmFtZSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNT
RVJUKCFhdHRyaWJ1dGVzLmlzRW1wdHkoKSk7CiAKLSAgICBTaGFyZWFibGVFbGVtZW50RGF0YUNh
Y2hlS2V5IGNhY2hlS2V5KGF0dHJpYnV0ZXMuZGF0YSgpLCBhdHRyaWJ1dGVzLnNpemUoKSk7Cisg
ICAgU2hhcmVhYmxlRWxlbWVudERhdGFDYWNoZUtleSBjYWNoZUtleSh0YWdRTmFtZS5pbXBsKCks
IGF0dHJpYnV0ZXMuZGF0YSgpLCBhdHRyaWJ1dGVzLnNpemUoKSk7CiAgICAgdW5zaWduZWQgY2Fj
aGVIYXNoID0gY2FjaGVLZXkuaGFzaCgpOwogCiAgICAgU2hhcmVhYmxlRWxlbWVudERhdGFDYWNo
ZTo6aXRlcmF0b3IgY2FjaGVJdGVyYXRvciA9IG1fc2hhcmVhYmxlRWxlbWVudERhdGFDYWNoZS5h
ZGQoY2FjaGVIYXNoLCBudWxscHRyKS5pdGVyYXRvcjsKQEAgLTgxLDEyICs4NiwxMiBAQCBQYXNz
UmVmUHRyPFNoYXJlYWJsZUVsZW1lbnREYXRhPiBEb2N1bWVudFNoYXJlZE9iamVjdFBvb2w6OmNh
Y2hlZFNoYXJlYWJsZUVsZW1lbgogICAgIGlmIChjYWNoZUhhc2ggJiYgY2FjaGVJdGVyYXRvci0+
dmFsdWUpCiAgICAgICAgIGVsZW1lbnREYXRhID0gY2FjaGVJdGVyYXRvci0+dmFsdWUtPnZhbHVl
OwogICAgIGVsc2UKLSAgICAgICAgZWxlbWVudERhdGEgPSBTaGFyZWFibGVFbGVtZW50RGF0YTo6
Y3JlYXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CisgICAgICAgIGVsZW1lbnREYXRhID0g
U2hhcmVhYmxlRWxlbWVudERhdGE6OmNyZWF0ZVdpdGhBdHRyaWJ1dGVzKHRhZ1FOYW1lLCBhdHRy
aWJ1dGVzKTsKIAogICAgIGlmICghY2FjaGVIYXNoIHx8IGNhY2hlSXRlcmF0b3ItPnZhbHVlKQog
ICAgICAgICByZXR1cm4gZWxlbWVudERhdGEucmVsZWFzZSgpOwogCi0gICAgY2FjaGVJdGVyYXRv
ci0+dmFsdWUgPSBhZG9wdFB0cihuZXcgU2hhcmVhYmxlRWxlbWVudERhdGFDYWNoZUVudHJ5KFNo
YXJlYWJsZUVsZW1lbnREYXRhQ2FjaGVLZXkoZWxlbWVudERhdGEtPm1fYXR0cmlidXRlQXJyYXks
IGVsZW1lbnREYXRhLT5sZW5ndGgoKSksIGVsZW1lbnREYXRhKSk7CisgICAgY2FjaGVJdGVyYXRv
ci0+dmFsdWUgPSBhZG9wdFB0cihuZXcgU2hhcmVhYmxlRWxlbWVudERhdGFDYWNoZUVudHJ5KFNo
YXJlYWJsZUVsZW1lbnREYXRhQ2FjaGVLZXkodGFnUU5hbWUuaW1wbCgpLCBlbGVtZW50RGF0YS0+
bV9hdHRyaWJ1dGVBcnJheSwgZWxlbWVudERhdGEtPmxlbmd0aCgpKSwgZWxlbWVudERhdGEpKTsK
IAogICAgIHJldHVybiBlbGVtZW50RGF0YS5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmgKaW5kZXggYTNiMjRkNy4uNDgzMjA0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuaApAQCAt
MzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdHRyaWJ1dGU7Citj
bGFzcyBRdWFsaWZpZWROYW1lOwogY2xhc3MgU2hhcmVhYmxlRWxlbWVudERhdGE7CiBjbGFzcyBT
aGFyZWFibGVFbGVtZW50RGF0YUNhY2hlRW50cnk7CiAKQEAgLTQyLDcgKzQzLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzT3duUHRyPERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbD4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbCk7IH0KICAg
ICB+RG9jdW1lbnRTaGFyZWRPYmplY3RQb29sKCk7CiAKLSAgICBQYXNzUmVmUHRyPFNoYXJlYWJs
ZUVsZW1lbnREYXRhPiBjYWNoZWRTaGFyZWFibGVFbGVtZW50RGF0YVdpdGhBdHRyaWJ1dGVzKGNv
bnN0IFZlY3RvcjxBdHRyaWJ1dGU+Jik7CisgICAgUGFzc1JlZlB0cjxTaGFyZWFibGVFbGVtZW50
RGF0YT4gY2FjaGVkU2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmlidXRlcyhjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdRTmFtZSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mKTsKIAogcHJpdmF0
ZToKICAgICBEb2N1bWVudFNoYXJlZE9iamVjdFBvb2woKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApp
bmRleCBiODk1NDAyLi4yZDE4NWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yMTQsNiAr
MjE0LDExIEBAIEVsZW1lbnQ6On5FbGVtZW50KCkKICAgICAgICAgQVNTRVJUKCFoYXNQZW5kaW5n
UmVzb3VyY2VzKCkpOwogICAgIH0KICNlbmRpZgorCisgICAgaWYgKGhhc0VsZW1lbnREYXRhKCkp
CisgICAgICAgIG1fdGFnUU5hbWVPckVsZW1lbnREYXRhLmVsZW1lbnREYXRhLT5kZXJlZigpOwor
ICAgIGVsc2UKKyAgICAgICAgbV90YWdRTmFtZU9yRWxlbWVudERhdGEudGFnUU5hbWUtPmRlcmVm
KCk7CiB9CiAKIGlubGluZSBFbGVtZW50UmFyZURhdGEqIEVsZW1lbnQ6OmVsZW1lbnRSYXJlRGF0
YSgpIGNvbnN0CkBAIC0xMDY0LDE1ICsxMDY5LDE1IEBAIHZvaWQgRWxlbWVudDo6cGFyc2VyU2V0
QXR0cmlidXRlcyhjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlVmVjdG9yKQogewog
ICAgIEFTU0VSVCghaW5Eb2N1bWVudCgpKTsKICAgICBBU1NFUlQoIXBhcmVudE5vZGUoKSk7Ci0g
ICAgQVNTRVJUKCFtX2VsZW1lbnREYXRhKTsKKyAgICBBU1NFUlQoIWhhc0VsZW1lbnREYXRhKCkp
OwogCiAgICAgaWYgKGF0dHJpYnV0ZVZlY3Rvci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnNoYXJlZE9iamVjdFBvb2woKSkK
LSAgICAgICAgbV9lbGVtZW50RGF0YSA9IGRvY3VtZW50KCktPnNoYXJlZE9iamVjdFBvb2woKS0+
Y2FjaGVkU2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVWZWN0b3Ip
OworICAgICAgICBzZXRFbGVtZW50RGF0YShkb2N1bWVudCgpLT5zaGFyZWRPYmplY3RQb29sKCkt
PmNhY2hlZFNoYXJlYWJsZUVsZW1lbnREYXRhV2l0aEF0dHJpYnV0ZXModGFnUU5hbWUoKSwgYXR0
cmlidXRlVmVjdG9yKSk7CiAgICAgZWxzZQotICAgICAgICBtX2VsZW1lbnREYXRhID0gU2hhcmVh
YmxlRWxlbWVudERhdGE6OmNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGF0dHJpYnV0ZVZlY3Rvcik7Cisg
ICAgICAgIHNldEVsZW1lbnREYXRhKFNoYXJlYWJsZUVsZW1lbnREYXRhOjpjcmVhdGVXaXRoQXR0
cmlidXRlcyh0YWdRTmFtZSgpLCBhdHRyaWJ1dGVWZWN0b3IpKTsKIAogICAgIC8vIFVzZSBhdHRy
aWJ1dGVWZWN0b3IgaW5zdGVhZCBvZiBtX2VsZW1lbnREYXRhIGJlY2F1c2UgYXR0cmlidXRlQ2hh
bmdlZCBtaWdodCBtb2RpZnkgbV9lbGVtZW50RGF0YS4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYXR0cmlidXRlVmVjdG9yLnNpemUoKTsgKytpKQpAQCAtMTEwMCwxMiArMTEwNSwxMiBA
QCBib29sIEVsZW1lbnQ6Omhhc0VxdWl2YWxlbnRBdHRyaWJ1dGVzKGNvbnN0IEVsZW1lbnQqIG90
aGVyKSBjb25zdAogCiBTdHJpbmcgRWxlbWVudDo6bm9kZU5hbWUoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3RhZ05hbWUudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gdGFnUU5hbWUoKS50b1N0cmlu
ZygpOwogfQogCiBTdHJpbmcgRWxlbWVudDo6bm9kZU5hbWVQcmVzZXJ2aW5nQ2FzZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fdGFnTmFtZS50b1N0cmluZygpOworICAgIHJldHVybiB0YWdRTmFt
ZSgpLnRvU3RyaW5nKCk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2V0UHJlZml4KGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJlZml4LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTExMTUsNyArMTEyMCwxMCBA
QCB2b2lkIEVsZW1lbnQ6OnNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Rh
Z05hbWUuc2V0UHJlZml4KHByZWZpeC5pc0VtcHR5KCkgPyBBdG9taWNTdHJpbmcoKSA6IHByZWZp
eCk7CisgICAgaWYgKHRhZ1FOYW1lKCkucHJlZml4KCkgPT0gcHJlZml4KQorICAgICAgICByZXR1
cm47CisKKyAgICBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpLT5tX3RhZ1FOYW1lLnNldFByZWZp
eChwcmVmaXguaXNFbXB0eSgpID8gQXRvbWljU3RyaW5nKCkgOiBwcmVmaXgpOwogfQogCiBLVVJM
IEVsZW1lbnQ6OmJhc2VVUkkoKSBjb25zdApAQCAtMjg2MCw4ICsyODY4LDE0IEBAIHZvaWQgRWxl
bWVudDo6Y2xvbmVBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYgb3RoZXIpCiAg
ICAgICAgIGRldGFjaEFsbEF0dHJOb2Rlc0Zyb21FbGVtZW50KCk7CiAKICAgICBvdGhlci5zeW5j
aHJvbml6ZUFsbEF0dHJpYnV0ZXMoKTsKLSAgICBpZiAoIW90aGVyLm1fZWxlbWVudERhdGEpIHsK
LSAgICAgICAgbV9lbGVtZW50RGF0YS5jbGVhcigpOworICAgIGlmICghb3RoZXIuaGFzRWxlbWVu
dERhdGEoKSkgeworICAgICAgICBpZiAoaGFzRWxlbWVudERhdGEoKSkgeworICAgICAgICAgICAg
UXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGwqIG15VGFnUU5hbWUgPSB0YWdRTmFtZSgp
LmltcGwoKTsKKyAgICAgICAgICAgIG15VGFnUU5hbWUtPnJlZigpOworICAgICAgICAgICAgbV90
YWdRTmFtZU9yRWxlbWVudERhdGEuZWxlbWVudERhdGEtPmRlcmVmKCk7CisgICAgICAgICAgICBt
X3RhZ1FOYW1lT3JFbGVtZW50RGF0YS50YWdRTmFtZSA9IG15VGFnUU5hbWU7CisgICAgICAgICAg
ICBzZXRIYXNFbGVtZW50RGF0YShmYWxzZSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMjg3NywyMCArMjg5MSwyOCBAQCB2b2lkIEVsZW1lbnQ6OmNsb25lQXR0cmli
dXRlc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmIG90aGVyKQogICAgIGlmICghb2xkTmFtZS5p
c051bGwoKSB8fCAhbmV3TmFtZS5pc051bGwoKSkKICAgICAgICAgdXBkYXRlTmFtZShvbGROYW1l
LCBuZXdOYW1lKTsKIAotICAgIC8vIElmICdvdGhlcicgaGFzIGEgbXV0YWJsZSBFbGVtZW50RGF0
YSwgY29udmVydCBpdCB0byBhbiBpbW11dGFibGUgb25lIHNvIHdlIGNhbiBzaGFyZSBpdCBiZXR3
ZWVuIGJvdGggZWxlbWVudHMuCi0gICAgLy8gV2UgY2FuIG9ubHkgZG8gdGhpcyBpZiB0aGVyZSBp
cyBubyBDU1NPTSB3cmFwcGVyIGZvciBvdGhlcidzIGlubGluZSBzdHlsZSwgYW5kIHRoZXJlIGFy
ZSBubyBwcmVzZW50YXRpb24gYXR0cmlidXRlcy4KLSAgICBpZiAob3RoZXIubV9lbGVtZW50RGF0
YS0+aXNVbmlxdWUoKQotICAgICAgICAmJiAhb3RoZXIubV9lbGVtZW50RGF0YS0+cHJlc2VudGF0
aW9uQXR0cmlidXRlU3R5bGUoKQotICAgICAgICAmJiAoIW90aGVyLm1fZWxlbWVudERhdGEtPmlu
bGluZVN0eWxlKCkgfHwgIW90aGVyLm1fZWxlbWVudERhdGEtPmlubGluZVN0eWxlKCktPmhhc0NT
U09NV3JhcHBlcigpKSkKLSAgICAgICAgY29uc3RfY2FzdDxFbGVtZW50Jj4ob3RoZXIpLm1fZWxl
bWVudERhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBVbmlxdWVFbGVtZW50RGF0YSo+KG90aGVyLm1f
ZWxlbWVudERhdGEuZ2V0KCkpLT5tYWtlU2hhcmVhYmxlQ29weSgpOworICAgIGlmICh0YWdRTmFt
ZSgpICE9IG90aGVyLnRhZ1FOYW1lKCkpIHsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnREYXRhPiBj
bG9uZWRFbGVtZW50RGF0YSA9IG90aGVyLmVsZW1lbnREYXRhKCktPm1ha2VVbmlxdWVDb3B5KCk7
CisgICAgICAgIGNsb25lZEVsZW1lbnREYXRhLT5tX3RhZ1FOYW1lID0gdGFnUU5hbWUoKTsKKyAg
ICAgICAgc2V0RWxlbWVudERhdGEoY2xvbmVkRWxlbWVudERhdGEucmVsZWFzZSgpKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBFbGVtZW50RGF0YSomIG90aGVyRWxlbWVudERhdGEgPSBjb25zdF9j
YXN0PEVsZW1lbnQmPihvdGhlcikubV90YWdRTmFtZU9yRWxlbWVudERhdGEuZWxlbWVudERhdGE7
CiAKLSAgICBpZiAoIW90aGVyLm1fZWxlbWVudERhdGEtPmlzVW5pcXVlKCkpCi0gICAgICAgIG1f
ZWxlbWVudERhdGEgPSBvdGhlci5tX2VsZW1lbnREYXRhOwotICAgIGVsc2UKLSAgICAgICAgbV9l
bGVtZW50RGF0YSA9IG90aGVyLm1fZWxlbWVudERhdGEtPm1ha2VVbmlxdWVDb3B5KCk7CisgICAg
ICAgIC8vIElmICdvdGhlcicgaGFzIGEgbXV0YWJsZSBFbGVtZW50RGF0YSwgY29udmVydCBpdCB0
byBhbiBpbW11dGFibGUgb25lIHNvIHdlIGNhbiBzaGFyZSBpdCBiZXR3ZWVuIGJvdGggZWxlbWVu
dHMuCisgICAgICAgIC8vIFdlIGNhbiBvbmx5IGRvIHRoaXMgaWYgdGhlcmUgaXMgbm8gQ1NTT00g
d3JhcHBlciBmb3Igb3RoZXIncyBpbmxpbmUgc3R5bGUsIGFuZCB0aGVyZSBhcmUgbm8gcHJlc2Vu
dGF0aW9uIGF0dHJpYnV0ZXMuCisgICAgICAgIGlmIChvdGhlckVsZW1lbnREYXRhLT5pc1VuaXF1
ZSgpCisgICAgICAgICYmICFvdGhlckVsZW1lbnREYXRhLT5wcmVzZW50YXRpb25BdHRyaWJ1dGVT
dHlsZSgpCisgICAgICAgICYmICghb3RoZXJFbGVtZW50RGF0YS0+aW5saW5lU3R5bGUoKSB8fCAh
b3RoZXJFbGVtZW50RGF0YS0+aW5saW5lU3R5bGUoKS0+aGFzQ1NTT01XcmFwcGVyKCkpKQorICAg
ICAgICBjb25zdF9jYXN0PEVsZW1lbnQmPihvdGhlcikuc2V0RWxlbWVudERhdGEoc3RhdGljX2Nh
c3Q8Y29uc3QgVW5pcXVlRWxlbWVudERhdGEqPihvdGhlckVsZW1lbnREYXRhKS0+bWFrZVNoYXJl
YWJsZUNvcHkoKSk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lbGVtZW50RGF0
YS0+bGVuZ3RoKCk7ICsraSkgewotICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9
IGNvbnN0X2Nhc3Q8Y29uc3QgRWxlbWVudERhdGEqPihtX2VsZW1lbnREYXRhLmdldCgpKS0+YXR0
cmlidXRlSXRlbShpKTsKKyAgICAgICAgaWYgKCFvdGhlckVsZW1lbnREYXRhLT5pc1VuaXF1ZSgp
KQorICAgICAgICAgICAgc2V0RWxlbWVudERhdGEob3RoZXJFbGVtZW50RGF0YSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHNldEVsZW1lbnREYXRhKG90aGVyRWxlbWVudERhdGEtPm1ha2VV
bmlxdWVDb3B5KCkpOworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVt
ZW50RGF0YSgpLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0
cmlidXRlID0gZWxlbWVudERhdGEoKS0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgYXR0cmli
dXRlQ2hhbmdlZEZyb21QYXJzZXJPckJ5Q2xvbmluZyhhdHRyaWJ1dGUtPm5hbWUoKSwgYXR0cmli
dXRlLT52YWx1ZSgpLCBNb2RpZmllZEJ5Q2xvbmluZyk7CiAgICAgfQogfQpAQCAtMjkwMSwxMyAr
MjkyMywyNiBAQCB2b2lkIEVsZW1lbnQ6OmNsb25lRGF0YUZyb21FbGVtZW50KGNvbnN0IEVsZW1l
bnQmIG90aGVyKQogICAgIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQob3Ro
ZXIpOwogfQogCit2b2lkIEVsZW1lbnQ6OnNldEVsZW1lbnREYXRhKFBhc3NSZWZQdHI8RWxlbWVu
dERhdGE+IGVsZW1lbnREYXRhKQoreworICAgIEFTU0VSVChlbGVtZW50RGF0YSk7CisgICAgaWYg
KGVsZW1lbnREYXRhLT5tX3RhZ1FOYW1lICE9IHRhZ1FOYW1lKCkpIHsKKyAgICAgICAgcHJpbnRm
KCInJXMnIDw+ICclcydcbiIsIGVsZW1lbnREYXRhLT5tX3RhZ1FOYW1lLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgdGFnUU5hbWUoKS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIH0K
KyAgICBBU1NFUlQoZWxlbWVudERhdGEtPm1fdGFnUU5hbWUgPT0gdGFnUU5hbWUoKSk7CisgICAg
aWYgKGhhc0VsZW1lbnREYXRhKCkpCisgICAgICAgIG1fdGFnUU5hbWVPckVsZW1lbnREYXRhLmVs
ZW1lbnREYXRhLT5kZXJlZigpOworICAgIG1fdGFnUU5hbWVPckVsZW1lbnREYXRhLmVsZW1lbnRE
YXRhID0gZWxlbWVudERhdGEubGVha1JlZigpOworICAgIHNldEhhc0VsZW1lbnREYXRhKHRydWUp
OworfQorCiB2b2lkIEVsZW1lbnQ6OmNyZWF0ZVVuaXF1ZUVsZW1lbnREYXRhKCkKIHsKLSAgICBp
ZiAoIW1fZWxlbWVudERhdGEpCi0gICAgICAgIG1fZWxlbWVudERhdGEgPSBVbmlxdWVFbGVtZW50
RGF0YTo6Y3JlYXRlKCk7CisgICAgaWYgKCFoYXNFbGVtZW50RGF0YSgpKQorICAgICAgICBzZXRF
bGVtZW50RGF0YShVbmlxdWVFbGVtZW50RGF0YTo6Y3JlYXRlKHRhZ1FOYW1lKCkpKTsKICAgICBl
bHNlIHsKLSAgICAgICAgQVNTRVJUKCFtX2VsZW1lbnREYXRhLT5pc1VuaXF1ZSgpKTsKLSAgICAg
ICAgbV9lbGVtZW50RGF0YSA9IHN0YXRpY19jYXN0PFNoYXJlYWJsZUVsZW1lbnREYXRhKj4obV9l
bGVtZW50RGF0YS5nZXQoKSktPm1ha2VVbmlxdWVDb3B5KCk7CisgICAgICAgIEFTU0VSVCghZWxl
bWVudERhdGEoKS0+aXNVbmlxdWUoKSk7CisgICAgICAgIHNldEVsZW1lbnREYXRhKHN0YXRpY19j
YXN0PGNvbnN0IFNoYXJlYWJsZUVsZW1lbnREYXRhKj4oZWxlbWVudERhdGEoKSktPm1ha2VVbmlx
dWVDb3B5KCkpOwogICAgIH0KIH0KIApAQCAtMjkxNSw4ICsyOTUwLDEwIEBAIHZvaWQgRWxlbWVu
dDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykg
Y29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlz
LCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7CiAgICAgQ29udGFpbmVyTm9kZTo6cmVwb3J0TWVt
b3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Ci0gICAgaW5mby5hZGRNZW1iZXIobV90YWdOYW1l
LCAidGFnTmFtZSIpOwotICAgIGluZm8uYWRkTWVtYmVyKG1fZWxlbWVudERhdGEsICJlbGVtZW50
RGF0YSIpOworICAgIGlmIChoYXNFbGVtZW50RGF0YSgpKQorICAgICAgICBpbmZvLmFkZE1lbWJl
cihlbGVtZW50RGF0YSgpLCAiZWxlbWVudERhdGEiKTsKKyAgICBlbHNlCisgICAgICAgIGluZm8u
YWRkTWVtYmVyKHRhZ1FOYW1lKCksICJ0YWdRTmFtZSIpOwogfQogCiAjaWYgRU5BQkxFKFNWRykK
QEAgLTI5NDcsNyArMjk4NCw3IEBAIHZvaWQgRWxlbWVudERhdGE6OmRlcmVmKCkKICAgICAgICAg
ZGVsZXRlIHN0YXRpY19jYXN0PFNoYXJlYWJsZUVsZW1lbnREYXRhKj4odGhpcyk7CiB9CiAKLUVs
ZW1lbnREYXRhOjpFbGVtZW50RGF0YSgpCitFbGVtZW50RGF0YTo6RWxlbWVudERhdGEoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUpCiAgICAgOiBtX2lzVW5pcXVlKHRydWUpCiAgICAgLCBt
X2FycmF5U2l6ZSgwKQogICAgICwgbV9wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZUlzRGlydHko
ZmFsc2UpCkBAIC0yOTU1LDEwICsyOTkyLDExIEBAIEVsZW1lbnREYXRhOjpFbGVtZW50RGF0YSgp
CiAjaWYgRU5BQkxFKFNWRykKICAgICAsIG1fYW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHko
ZmFsc2UpCiAjZW5kaWYKKyAgICAsIG1fdGFnUU5hbWUodGFnUU5hbWUpCiB7CiB9CiAKLUVsZW1l
bnREYXRhOjpFbGVtZW50RGF0YSh1bnNpZ25lZCBhcnJheVNpemUpCitFbGVtZW50RGF0YTo6RWxl
bWVudERhdGEoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUsIHVuc2lnbmVkIGFycmF5U2l6
ZSkKICAgICA6IG1faXNVbmlxdWUoZmFsc2UpCiAgICAgLCBtX2FycmF5U2l6ZShhcnJheVNpemUp
CiAgICAgLCBtX3ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlSXNEaXJ0eShmYWxzZSkKQEAgLTI5
NjYsMTEgKzMwMDQsMTMgQEAgRWxlbWVudERhdGE6OkVsZW1lbnREYXRhKHVuc2lnbmVkIGFycmF5
U2l6ZSkKICNpZiBFTkFCTEUoU1ZHKQogICAgICwgbV9hbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVE
aXJ0eShmYWxzZSkKICNlbmRpZgorICAgICwgbV90YWdRTmFtZSh0YWdRTmFtZSkKIHsKIH0KIAog
c3RydWN0IFNhbWVTaXplQXNFbGVtZW50RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFNhbWVTaXpl
QXNFbGVtZW50RGF0YT4gewogICAgIHVuc2lnbmVkIGJpdGZpZWxkOworICAgIFF1YWxpZmllZE5h
bWUgcW5hbWU7CiAgICAgdm9pZCogcmVmUHRyc1szXTsKIH07CiAKQEAgLTI5ODEsMTkgKzMwMjEs
MTkgQEAgc3RhdGljIHNpemVfdCBzaXplRm9yU2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmli
dXRlQ291bnQodW5zaWduZWQgY291bnQpCiAgICAgcmV0dXJuIHNpemVvZihTaGFyZWFibGVFbGVt
ZW50RGF0YSkgKyBzaXplb2YoQXR0cmlidXRlKSAqIGNvdW50OwogfQogCi1QYXNzUmVmUHRyPFNo
YXJlYWJsZUVsZW1lbnREYXRhPiBTaGFyZWFibGVFbGVtZW50RGF0YTo6Y3JlYXRlV2l0aEF0dHJp
YnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCitQYXNzUmVmUHRyPFNo
YXJlYWJsZUVsZW1lbnREYXRhPiBTaGFyZWFibGVFbGVtZW50RGF0YTo6Y3JlYXRlV2l0aEF0dHJp
YnV0ZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUsIGNvbnN0IFZlY3RvcjxBdHRyaWJ1
dGU+JiBhdHRyaWJ1dGVzKQogewogICAgIHZvaWQqIHNsb3QgPSBXVEY6OmZhc3RNYWxsb2Moc2l6
ZUZvclNoYXJlYWJsZUVsZW1lbnREYXRhV2l0aEF0dHJpYnV0ZUNvdW50KGF0dHJpYnV0ZXMuc2l6
ZSgpKSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyAoc2xvdCkgU2hhcmVhYmxlRWxlbWVudERh
dGEoYXR0cmlidXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgKE5vdE51bGwsIHNsb3Qp
IFNoYXJlYWJsZUVsZW1lbnREYXRhKHRhZ1FOYW1lLCBhdHRyaWJ1dGVzKSk7CiB9CiAKLVBhc3NS
ZWZQdHI8VW5pcXVlRWxlbWVudERhdGE+IFVuaXF1ZUVsZW1lbnREYXRhOjpjcmVhdGUoKQorUGFz
c1JlZlB0cjxVbmlxdWVFbGVtZW50RGF0YT4gVW5pcXVlRWxlbWVudERhdGE6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVu
aXF1ZUVsZW1lbnREYXRhKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVuaXF1ZUVsZW1lbnRE
YXRhKHRhZ1FOYW1lKSk7CiB9CiAKLVNoYXJlYWJsZUVsZW1lbnREYXRhOjpTaGFyZWFibGVFbGVt
ZW50RGF0YShjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcykKLSAgICA6IEVsZW1l
bnREYXRhKGF0dHJpYnV0ZXMuc2l6ZSgpKQorU2hhcmVhYmxlRWxlbWVudERhdGE6OlNoYXJlYWJs
ZUVsZW1lbnREYXRhKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lLCBjb25zdCBWZWN0b3I8
QXR0cmlidXRlPiYgYXR0cmlidXRlcykKKyAgICA6IEVsZW1lbnREYXRhKHRhZ1FOYW1lLCBhdHRy
aWJ1dGVzLnNpemUoKSkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hcnJheVNp
emU7ICsraSkKICAgICAgICAgbmV3ICgmbV9hdHRyaWJ1dGVBcnJheVtpXSkgQXR0cmlidXRlKGF0
dHJpYnV0ZXNbaV0pOwpAQCAtMzAyNywxMyArMzA2NywxNSBAQCBFbGVtZW50RGF0YTo6RWxlbWVu
dERhdGEoY29uc3QgRWxlbWVudERhdGEmIG90aGVyLCBib29sIGlzVW5pcXVlKQogI2lmIEVOQUJM
RShTVkcpCiAgICAgLCBtX2FuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KG90aGVyLm1fYW5p
bWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkpCiAjZW5kaWYKKyAgICAsIG1fdGFnUU5hbWUob3Ro
ZXIubV90YWdRTmFtZSkKICAgICAsIG1fY2xhc3NOYW1lcyhvdGhlci5tX2NsYXNzTmFtZXMpCiAg
ICAgLCBtX2lkRm9yU3R5bGVSZXNvbHV0aW9uKG90aGVyLm1faWRGb3JTdHlsZVJlc29sdXRpb24p
CiB7CiAgICAgLy8gTk9URTogVGhlIGlubGluZSBzdHlsZSBpcyBjb3BpZWQgYnkgdGhlIHN1YmNs
YXNzIGNvcHkgY29uc3RydWN0b3Igc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGF0IHRvIGRvIHdpdGgg
aXQgaGVyZS4KIH0KIAotVW5pcXVlRWxlbWVudERhdGE6OlVuaXF1ZUVsZW1lbnREYXRhKCkKK1Vu
aXF1ZUVsZW1lbnREYXRhOjpVbmlxdWVFbGVtZW50RGF0YShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdRTmFtZSkKKyAgICA6IEVsZW1lbnREYXRhKHRhZ1FOYW1lKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAppbmRleCA1MTRmNTgwLi5lNTNlZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTg4LDgg
Kzg4LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNVbmlxdWUoKSBjb25zdCB7IHJldHVybiBtX2lz
VW5pcXVlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBFbGVtZW50RGF0YSgpOwotICAgIEVsZW1lbnRE
YXRhKHVuc2lnbmVkIGFycmF5U2l6ZSk7CisgICAgRWxlbWVudERhdGEoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnUU5hbWUpOworICAgIEVsZW1lbnREYXRhKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z1FOYW1lLCB1bnNpZ25lZCBhcnJheVNpemUpOwogICAgIEVsZW1lbnREYXRhKGNvbnN0IEVsZW1l
bnREYXRhJiwgYm9vbCBpc1VuaXF1ZSk7CiAKICAgICB1bnNpZ25lZCBtX2lzVW5pcXVlIDogMTsK
QEAgLTEwMCw2ICsxMDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2Fu
aW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5IDogMTsKICNlbmRpZgogCisgICAgUXVhbGlmaWVk
TmFtZSBtX3RhZ1FOYW1lOwogICAgIG11dGFibGUgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IG1f
aW5saW5lU3R5bGU7CiAgICAgbXV0YWJsZSBTcGFjZVNwbGl0U3RyaW5nIG1fY2xhc3NOYW1lczsK
ICAgICBtdXRhYmxlIEF0b21pY1N0cmluZyBtX2lkRm9yU3R5bGVSZXNvbHV0aW9uOwpAQCAtMTI2
LDkgKzEyNyw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIFNoYXJlYWJsZUVsZW1lbnREYXRhIDogcHVi
bGljIEVsZW1lbnREYXRhIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFi
bGVFbGVtZW50RGF0YT4gY3JlYXRlV2l0aEF0dHJpYnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0
ZT4mKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVFbGVtZW50RGF0YT4gY3JlYXRl
V2l0aEF0dHJpYnV0ZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUsIGNvbnN0IFZlY3Rv
cjxBdHRyaWJ1dGU+Jik7CiAKLSAgICBleHBsaWNpdCBTaGFyZWFibGVFbGVtZW50RGF0YShjb25z
dCBWZWN0b3I8QXR0cmlidXRlPiYpOworICAgIFNoYXJlYWJsZUVsZW1lbnREYXRhKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ1FOYW1lLCBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYpOwogICAgIGV4
cGxpY2l0IFNoYXJlYWJsZUVsZW1lbnREYXRhKGNvbnN0IFVuaXF1ZUVsZW1lbnREYXRhJik7CiAg
ICAgflNoYXJlYWJsZUVsZW1lbnREYXRhKCk7CiAKQEAgLTE0MSw3ICsxNDIsNyBAQCBwdWJsaWM6
CiAKIGNsYXNzIFVuaXF1ZUVsZW1lbnREYXRhIDogcHVibGljIEVsZW1lbnREYXRhIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxVbmlxdWVFbGVtZW50RGF0YT4gY3JlYXRlKCk7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8VW5pcXVlRWxlbWVudERhdGE+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdRTmFtZSk7CiAgICAgUGFzc1JlZlB0cjxTaGFyZWFibGVFbGVtZW50RGF0
YT4gbWFrZVNoYXJlYWJsZUNvcHkoKSBjb25zdDsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBk
byBubyBlcnJvci9kdXBsaWNhdGUgY2hlY2tpbmcuCkBAIC0xNTEsOSArMTUyLDkgQEAgcHVibGlj
OgogICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlSXRlbSh1bnNpZ25lZCBpbmRleCk7CiAgICAgQXR0
cmlidXRlKiBnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgIFVu
aXF1ZUVsZW1lbnREYXRhKCk7CisgICAgZXhwbGljaXQgVW5pcXVlRWxlbWVudERhdGEoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUpOwogICAgIGV4cGxpY2l0IFVuaXF1ZUVsZW1lbnREYXRh
KGNvbnN0IFNoYXJlYWJsZUVsZW1lbnREYXRhJik7Ci0gICAgZXhwbGljaXQgVW5pcXVlRWxlbWVu
dERhdGEoY29uc3QgVW5pcXVlRWxlbWVudERhdGEmKTsKKyAgICBVbmlxdWVFbGVtZW50RGF0YShj
b25zdCBVbmlxdWVFbGVtZW50RGF0YSYpOwogCiAgICAgbXV0YWJsZSBSZWZQdHI8U3R5bGVQcm9w
ZXJ0eVNldD4gbV9wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZTsKICAgICBWZWN0b3I8QXR0cmli
dXRlLCA0PiBtX2F0dHJpYnV0ZVZlY3RvcjsKQEAgLTM0NiwxNyArMzQ3LDE3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUoKTsKIAotICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90YWdOYW1lOyB9Cisg
ICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUoKSBjb25zdDsKICAgICBTdHJpbmcgdGFn
TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG5vZGVOYW1lKCk7IH0KLSAgICBib29sIGhhc1RhZ05hbWUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkgY29uc3QgeyByZXR1cm4gbV90YWdOYW1lLm1h
dGNoZXModGFnTmFtZSk7IH0KKyAgICBib29sIGhhc1RhZ05hbWUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSkgY29uc3QgeyByZXR1cm4gdGFnUU5hbWUoKS5tYXRjaGVzKHRhZ05hbWUpOyB9
CiAgICAgCiAgICAgLy8gQSBmYXN0IGZ1bmN0aW9uIGZvciBjaGVja2luZyB0aGUgbG9jYWwgbmFt
ZSBhZ2FpbnN0IGFub3RoZXIgYXRvbWljIHN0cmluZy4KLSAgICBib29sIGhhc0xvY2FsTmFtZShj
b25zdCBBdG9taWNTdHJpbmcmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3RhZ05hbWUubG9jYWxO
YW1lKCkgPT0gb3RoZXI7IH0KLSAgICBib29sIGhhc0xvY2FsTmFtZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV90YWdOYW1lLmxvY2FsTmFtZSgpID09IG90aGVy
LmxvY2FsTmFtZSgpOyB9CisgICAgYm9vbCBoYXNMb2NhbE5hbWUoY29uc3QgQXRvbWljU3RyaW5n
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gdGFnUU5hbWUoKS5sb2NhbE5hbWUoKSA9PSBvdGhlcjsg
fQorICAgIGJvb2wgaGFzTG9jYWxOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIG90aGVyKSBjb25z
dCB7IHJldHVybiB0YWdRTmFtZSgpLmxvY2FsTmFtZSgpID09IG90aGVyLmxvY2FsTmFtZSgpOyB9
CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGFnTmFtZS5sb2NhbE5hbWUoKTsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KCkg
Y29uc3QgeyByZXR1cm4gbV90YWdOYW1lLnByZWZpeCgpOyB9Ci0gICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lc3BhY2VVUkkoKSBjb25zdCB7IHJldHVybiBtX3RhZ05hbWUubmFtZXNwYWNlVVJJ
KCk7IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSgpIGNvbnN0IHsgcmV0dXJu
IHRhZ1FOYW1lKCkubG9jYWxOYW1lKCk7IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHByZWZp
eCgpIGNvbnN0IHsgcmV0dXJuIHRhZ1FOYW1lKCkucHJlZml4KCk7IH0KKyAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWVzcGFjZVVSSSgpIGNvbnN0IHsgcmV0dXJuIHRhZ1FOYW1lKCkubmFtZXNw
YWNlVVJJKCk7IH0KIAogICAgIHZpcnR1YWwgS1VSTCBiYXNlVVJJKCkgY29uc3Q7CiAKQEAgLTM4
OCw3ICszODksNyBAQCBwdWJsaWM6CiAgICAgLy8gUmVtb3ZlIGF0dHJpYnV0ZXMgdGhhdCBtaWdo
dCBpbnRyb2R1Y2Ugc2NyaXB0aW5nIGZyb20gdGhlIHZlY3RvciBsZWF2aW5nIHRoZSBlbGVtZW50
IHVuY2hhbmdlZC4KICAgICB2b2lkIHN0cmlwU2NyaXB0aW5nQXR0cmlidXRlcyhWZWN0b3I8QXR0
cmlidXRlPiYpIGNvbnN0OwogCi0gICAgY29uc3QgRWxlbWVudERhdGEqIGVsZW1lbnREYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9lbGVtZW50RGF0YS5nZXQoKTsgfQorICAgIGNvbnN0IEVsZW1lbnRE
YXRhKiBlbGVtZW50RGF0YSgpIGNvbnN0IHsgcmV0dXJuIGhhc0VsZW1lbnREYXRhKCkgPyBtX3Rh
Z1FOYW1lT3JFbGVtZW50RGF0YS5lbGVtZW50RGF0YSA6IDA7IH0KICAgICBVbmlxdWVFbGVtZW50
RGF0YSogZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKTsKIAogICAgIHZvaWQgc3luY2hyb25pemVB
bGxBdHRyaWJ1dGVzKCkgY29uc3Q7CkBAIC02MjQsMTAgKzYyNSwxMSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBP
VkVSUklERTsKIAogcHJvdGVjdGVkOgotICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCisgICAg
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgICAgIDogQ29udGFpbmVyTm9kZShkb2N1bWVu
dCwgdHlwZSkKLSAgICAgICAgLCBtX3RhZ05hbWUodGFnTmFtZSkKICAgICB7CisgICAgICAgIG1f
dGFnUU5hbWVPckVsZW1lbnREYXRhLnRhZ1FOYW1lID0gdGFnUU5hbWUuaW1wbCgpOworICAgICAg
ICBtX3RhZ1FOYW1lT3JFbGVtZW50RGF0YS50YWdRTmFtZS0+cmVmKCk7CiAgICAgfQogCiAgICAg
dmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWlu
ZXJOb2RlKikgT1ZFUlJJREU7CkBAIC03MTEsNyArNzEzLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVz
QW5kQ2hpbGRyZW4oKTsKIAotICAgIFF1YWxpZmllZE5hbWUgbV90YWdOYW1lOwogICAgIGJvb2wg
cmFyZURhdGFTdHlsZUFmZmVjdGVkQnlFbXB0eSgpIGNvbnN0OwogICAgIGJvb2wgcmFyZURhdGFD
aGlsZHJlbkFmZmVjdGVkQnlIb3ZlcigpIGNvbnN0OwogICAgIGJvb2wgcmFyZURhdGFDaGlsZHJl
bkFmZmVjdGVkQnlBY3RpdmUoKSBjb25zdDsKQEAgLTczMCw2ICs3MzEsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCB1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudE5vZGUoKTsKIAorICAgIHZvaWQg
c2V0RWxlbWVudERhdGEoUGFzc1JlZlB0cjxFbGVtZW50RGF0YT4pOwogICAgIHZvaWQgY3JlYXRl
VW5pcXVlRWxlbWVudERhdGEoKTsKIAogICAgIGJvb2wgc2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1
dGlvbldoZW5BdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnRTaGFkb3cqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJik7CkBAIC03NDQsOCArNzQ2LDE4IEBAIHByaXZhdGU6
CiAKICAgICBib29sIGlzSmF2YVNjcmlwdFVSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBj
b25zdDsKIAotICAgIFJlZlB0cjxFbGVtZW50RGF0YT4gbV9lbGVtZW50RGF0YTsKKyAgICB1bmlv
biB7CisgICAgICAgIFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsKiB0YWdRTmFtZTsK
KyAgICAgICAgRWxlbWVudERhdGEqIGVsZW1lbnREYXRhOworICAgIH0gbV90YWdRTmFtZU9yRWxl
bWVudERhdGE7CiB9OworCitpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYgRWxlbWVudDo6dGFn
UU5hbWUoKSBjb25zdAoreworICAgIGlmIChoYXNFbGVtZW50RGF0YSgpKQorICAgICAgICByZXR1
cm4gZWxlbWVudERhdGEoKS0+bV90YWdRTmFtZTsKKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgUXVhbGlmaWVkTmFtZSo+KCZtX3RhZ1FOYW1lT3JFbGVtZW50RGF0YS50YWdRTmFt
ZSk7Cit9CiAgICAgCiBpbmxpbmUgRWxlbWVudCogdG9FbGVtZW50KE5vZGUqIG5vZGUpCiB7CkBA
IC04MTIsMTMgKzgyNCwxMyBAQCBpbmxpbmUgRWxlbWVudCogRWxlbWVudDo6bmV4dEVsZW1lbnRT
aWJsaW5nKCkgY29uc3QKIGlubGluZSBib29sIEVsZW1lbnQ6OmZhc3RIYXNBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZmFzdEF0dHJpYnV0
ZUxvb2t1cEFsbG93ZWQobmFtZSkpOwotICAgIHJldHVybiBlbGVtZW50RGF0YSgpICYmIGdldEF0
dHJpYnV0ZUl0ZW0obmFtZSk7CisgICAgcmV0dXJuIGhhc0VsZW1lbnREYXRhKCkgJiYgZ2V0QXR0
cmlidXRlSXRlbShuYW1lKTsKIH0KIAogaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVu
dDo6ZmFzdEdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogewog
ICAgIEFTU0VSVChmYXN0QXR0cmlidXRlTG9va3VwQWxsb3dlZChuYW1lKSk7Ci0gICAgaWYgKGVs
ZW1lbnREYXRhKCkpIHsKKyAgICBpZiAoaGFzRWxlbWVudERhdGEoKSkgewogICAgICAgICBpZiAo
Y29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBnZXRBdHRyaWJ1dGVJdGVtKG5hbWUpKQogICAg
ICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFsdWUoKTsKICAgICB9CkBAIC04MjcsNyArODM5
LDcgQEAgaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6ZmFzdEdldEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogCiBpbmxpbmUgYm9vbCBFbGVtZW50OjpoYXNB
dHRyaWJ1dGVzV2l0aG91dFVwZGF0ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGVsZW1lbnREYXRh
KCkgJiYgIWVsZW1lbnREYXRhKCktPmlzRW1wdHkoKTsKKyAgICByZXR1cm4gaGFzRWxlbWVudERh
dGEoKSAmJiAhZWxlbWVudERhdGEoKS0+aXNFbXB0eSgpOwogfQogCiBpbmxpbmUgY29uc3QgQXRv
bWljU3RyaW5nJiBFbGVtZW50OjppZEZvclN0eWxlUmVzb2x1dGlvbigpIGNvbnN0CkBAIC04NjMs
NDMgKzg3NSw0MyBAQCBpbmxpbmUgdm9pZCBFbGVtZW50OjpzZXRJZEF0dHJpYnV0ZShjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKQogaW5saW5lIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIEVsZW1l
bnQ6OmNsYXNzTmFtZXMoKSBjb25zdAogewogICAgIEFTU0VSVChoYXNDbGFzcygpKTsKLSAgICBB
U1NFUlQoZWxlbWVudERhdGEoKSk7CisgICAgQVNTRVJUKGhhc0VsZW1lbnREYXRhKCkpOwogICAg
IHJldHVybiBlbGVtZW50RGF0YSgpLT5jbGFzc05hbWVzKCk7CiB9CiAKIGlubGluZSBzaXplX3Qg
RWxlbWVudDo6YXR0cmlidXRlQ291bnQoKSBjb25zdAogewotICAgIEFTU0VSVChlbGVtZW50RGF0
YSgpKTsKKyAgICBBU1NFUlQoaGFzRWxlbWVudERhdGEoKSk7CiAgICAgcmV0dXJuIGVsZW1lbnRE
YXRhKCktPmxlbmd0aCgpOwogfQogCiBpbmxpbmUgY29uc3QgQXR0cmlidXRlKiBFbGVtZW50Ojph
dHRyaWJ1dGVJdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewotICAgIEFTU0VSVChlbGVtZW50
RGF0YSgpKTsKKyAgICBBU1NFUlQoaGFzRWxlbWVudERhdGEoKSk7CiAgICAgcmV0dXJuIGVsZW1l
bnREYXRhKCktPmF0dHJpYnV0ZUl0ZW0oaW5kZXgpOwogfQogCiBpbmxpbmUgY29uc3QgQXR0cmli
dXRlKiBFbGVtZW50OjpnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGVsZW1lbnREYXRhKCkpOworICAgIEFTU0VSVChoYXNFbGVt
ZW50RGF0YSgpKTsKICAgICByZXR1cm4gZWxlbWVudERhdGEoKS0+Z2V0QXR0cmlidXRlSXRlbShu
YW1lKTsKIH0KIAogaW5saW5lIGJvb2wgRWxlbWVudDo6aGFzSUQoKSBjb25zdAogewotICAgIHJl
dHVybiBlbGVtZW50RGF0YSgpICYmIGVsZW1lbnREYXRhKCktPmhhc0lEKCk7CisgICAgcmV0dXJu
IGhhc0VsZW1lbnREYXRhKCkgJiYgZWxlbWVudERhdGEoKS0+aGFzSUQoKTsKIH0KIAogaW5saW5l
IGJvb2wgRWxlbWVudDo6aGFzQ2xhc3MoKSBjb25zdAogewotICAgIHJldHVybiBlbGVtZW50RGF0
YSgpICYmIGVsZW1lbnREYXRhKCktPmhhc0NsYXNzKCk7CisgICAgcmV0dXJuIGhhc0VsZW1lbnRE
YXRhKCkgJiYgZWxlbWVudERhdGEoKS0+aGFzQ2xhc3MoKTsKIH0KIAogaW5saW5lIFVuaXF1ZUVs
ZW1lbnREYXRhKiBFbGVtZW50OjplbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpCiB7Ci0gICAgaWYg
KCFlbGVtZW50RGF0YSgpIHx8ICFlbGVtZW50RGF0YSgpLT5pc1VuaXF1ZSgpKQorICAgIGlmICgh
aGFzRWxlbWVudERhdGEoKSB8fCAhZWxlbWVudERhdGEoKS0+aXNVbmlxdWUoKSkKICAgICAgICAg
Y3JlYXRlVW5pcXVlRWxlbWVudERhdGEoKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VW5pcXVl
RWxlbWVudERhdGEqPihtX2VsZW1lbnREYXRhLmdldCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8VW5pcXVlRWxlbWVudERhdGEqPihtX3RhZ1FOYW1lT3JFbGVtZW50RGF0YS5lbGVtZW50RGF0
YSk7CiB9CiAKIC8vIFB1dCBoZXJlIHRvIG1ha2UgdGhlbSBpbmxpbmUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRl
eCBlYWU5MTQ5Li5lMDMyODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTI3NCw2ICsyNzQsOSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNTeW50aGV0aWNBdHRyQ2hpbGROb2RlcygpIGNvbnN0IHsgcmV0dXJu
IGdldEZsYWcoSGFzU3ludGhldGljQXR0ckNoaWxkTm9kZXNGbGFnKTsgfQogICAgIHZvaWQgc2V0
SGFzU3ludGhldGljQXR0ckNoaWxkTm9kZXMoYm9vbCBmbGFnKSB7IHNldEZsYWcoZmxhZywgSGFz
U3ludGhldGljQXR0ckNoaWxkTm9kZXNGbGFnKTsgfQogCisgICAgYm9vbCBoYXNFbGVtZW50RGF0
YSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSGFzRWxlbWVudERhdGFGbGFnKTsgfQorICAgIHZv
aWQgc2V0SGFzRWxlbWVudERhdGEoYm9vbCBmbGFnKSB7IHNldEZsYWcoZmxhZywgSGFzRWxlbWVu
dERhdGFGbGFnKTsgfQorCiAgICAgLy8gSWYgdGhpcyBub2RlIGlzIGluIGEgc2hhZG93IHRyZWUs
IHJldHVybnMgaXRzIHNoYWRvdyBob3N0LiBPdGhlcndpc2UsIHJldHVybnMgMC4KICAgICBFbGVt
ZW50KiBzaGFkb3dIb3N0KCkgY29uc3Q7CiAgICAgLy8gSWYgdGhpcyBub2RlIGlzIGluIGEgc2hh
ZG93IHRyZWUsIHJldHVybnMgaXRzIHNoYWRvdyBob3N0LiBPdGhlcndpc2UsIHJldHVybnMgdGhp
cy4KQEAgLTczNSwxMSArNzM4LDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgTmVlZHNT
aGFkb3dUcmVlV2Fsa2VyRmxhZyA9IDEgPDwgMjUsCiAgICAgICAgIElzSW5TaGFkb3dUcmVlRmxh
ZyA9IDEgPDwgMjYsCisgICAgICAgIEhhc0VsZW1lbnREYXRhRmxhZyA9IDEgPDwgMjcsCiAKICAg
ICAgICAgRGVmYXVsdE5vZGVGbGFncyA9IElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRGbGFnCiAg
ICAgfTsKIAotICAgIC8vIDUgYml0cyByZW1haW5pbmcKKyAgICAvLyA0IGJpdHMgcmVtYWluaW5n
CiAKICAgICBib29sIGdldEZsYWcoTm9kZUZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fbm9k
ZUZsYWdzICYgbWFzazsgfQogICAgIHZvaWQgc2V0RmxhZyhib29sIGYsIE5vZGVGbGFncyBtYXNr
KSBjb25zdCB7IG1fbm9kZUZsYWdzID0gKG1fbm9kZUZsYWdzICYgfm1hc2spIHwgKC0oaW50MzJf
dClmICYgbWFzayk7IH0gCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196785</attachid>
            <date>2013-04-07 06:49:05 -0700</date>
            <delta_ts>2013-04-07 06:49:05 -0700</delta_ts>
            <desc>Dinner for EWS</desc>
            <filename>ews-113938-dinner.diff</filename>
            <type>text/plain</type>
            <size>23378</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFNoYXJlZE9iamVjdFBvb2wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5jcHAKaW5k
ZXggOTk3ZTg2Ni4uMDU0NWE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50U2hhcmVkT2JqZWN0UG9vbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
U2hhcmVkT2JqZWN0UG9vbC5jcHAKQEAgLTMzLDEzICszMywxNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFNoYXJlYWJsZUVsZW1lbnREYXRhQ2FjaGVLZXkgewogcHVibGljOgotICAg
IFNoYXJlYWJsZUVsZW1lbnREYXRhQ2FjaGVLZXkoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGVz
LCB1bnNpZ25lZCBhdHRyaWJ1dGVDb3VudCkKLSAgICAgICAgOiBtX2F0dHJpYnV0ZXMoYXR0cmli
dXRlcykKKyAgICBTaGFyZWFibGVFbGVtZW50RGF0YUNhY2hlS2V5KGNvbnN0IFF1YWxpZmllZE5h
bWU6OlF1YWxpZmllZE5hbWVJbXBsKiB0YWdRTmFtZSwgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1
dGVzLCB1bnNpZ25lZCBhdHRyaWJ1dGVDb3VudCkKKyAgICAgICAgOiBtX3RhZ1FOYW1lKHRhZ1FO
YW1lKQorICAgICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQogICAgICAgICAsIG1fYXR0
cmlidXRlQ291bnQoYXR0cmlidXRlQ291bnQpCiAgICAgeyB9CiAKICAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgU2hhcmVhYmxlRWxlbWVudERhdGFDYWNoZUtleSYgb3RoZXIpIGNvbnN0CiAgICAg
eworICAgICAgICBpZiAobV90YWdRTmFtZSAhPSBvdGhlci5tX3RhZ1FOYW1lKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChtX2F0dHJpYnV0ZUNvdW50ICE9IG90aGVyLm1f
YXR0cmlidXRlQ291bnQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgcmV0dXJu
IG1lbWNtcChtX2F0dHJpYnV0ZXMsIG90aGVyLm1fYXR0cmlidXRlcywgc2l6ZW9mKEF0dHJpYnV0
ZSkgKiBtX2F0dHJpYnV0ZUNvdW50KTsKQEAgLTQ3LDEwICs1MCwxMiBAQCBwdWJsaWM6CiAKICAg
ICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJpbmdIYXNo
ZXI6Omhhc2hNZW1vcnkobV9hdHRyaWJ1dGVzLCBtX2F0dHJpYnV0ZUNvdW50ICogc2l6ZW9mKEF0
dHJpYnV0ZSkpOworICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVIYXNoID0gU3RyaW5nSGFzaGVy
OjpoYXNoTWVtb3J5KG1fYXR0cmlidXRlcywgbV9hdHRyaWJ1dGVDb3VudCAqIHNpemVvZihBdHRy
aWJ1dGUpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6cGFpckludEhhc2gobV90YWdRTmFtZS0+bV9l
eGlzdGluZ0hhc2gsIGF0dHJpYnV0ZUhhc2gpOwogICAgIH0KIAogcHJpdmF0ZToKKyAgICBjb25z
dCBRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbCogbV90YWdRTmFtZTsKICAgICBjb25z
dCBBdHRyaWJ1dGUqIG1fYXR0cmlidXRlczsKICAgICB1bnNpZ25lZCBtX2F0dHJpYnV0ZUNvdW50
OwogfTsKQEAgLTY2LDExICs3MSwxMSBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFNoYXJlYWJsZUVs
ZW1lbnREYXRhPiB2YWx1ZTsKIH07CiAKLVBhc3NSZWZQdHI8U2hhcmVhYmxlRWxlbWVudERhdGE+
IERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbDo6Y2FjaGVkU2hhcmVhYmxlRWxlbWVudERhdGFXaXRo
QXR0cmlidXRlcyhjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcykKK1Bhc3NSZWZQ
dHI8U2hhcmVhYmxlRWxlbWVudERhdGE+IERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbDo6Y2FjaGVk
U2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdRTmFtZSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNT
RVJUKCFhdHRyaWJ1dGVzLmlzRW1wdHkoKSk7CiAKLSAgICBTaGFyZWFibGVFbGVtZW50RGF0YUNh
Y2hlS2V5IGNhY2hlS2V5KGF0dHJpYnV0ZXMuZGF0YSgpLCBhdHRyaWJ1dGVzLnNpemUoKSk7Cisg
ICAgU2hhcmVhYmxlRWxlbWVudERhdGFDYWNoZUtleSBjYWNoZUtleSh0YWdRTmFtZS5pbXBsKCks
IGF0dHJpYnV0ZXMuZGF0YSgpLCBhdHRyaWJ1dGVzLnNpemUoKSk7CiAgICAgdW5zaWduZWQgY2Fj
aGVIYXNoID0gY2FjaGVLZXkuaGFzaCgpOwogCiAgICAgU2hhcmVhYmxlRWxlbWVudERhdGFDYWNo
ZTo6aXRlcmF0b3IgY2FjaGVJdGVyYXRvciA9IG1fc2hhcmVhYmxlRWxlbWVudERhdGFDYWNoZS5h
ZGQoY2FjaGVIYXNoLCBudWxscHRyKS5pdGVyYXRvcjsKQEAgLTgxLDEyICs4NiwxMiBAQCBQYXNz
UmVmUHRyPFNoYXJlYWJsZUVsZW1lbnREYXRhPiBEb2N1bWVudFNoYXJlZE9iamVjdFBvb2w6OmNh
Y2hlZFNoYXJlYWJsZUVsZW1lbgogICAgIGlmIChjYWNoZUhhc2ggJiYgY2FjaGVJdGVyYXRvci0+
dmFsdWUpCiAgICAgICAgIGVsZW1lbnREYXRhID0gY2FjaGVJdGVyYXRvci0+dmFsdWUtPnZhbHVl
OwogICAgIGVsc2UKLSAgICAgICAgZWxlbWVudERhdGEgPSBTaGFyZWFibGVFbGVtZW50RGF0YTo6
Y3JlYXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CisgICAgICAgIGVsZW1lbnREYXRhID0g
U2hhcmVhYmxlRWxlbWVudERhdGE6OmNyZWF0ZVdpdGhBdHRyaWJ1dGVzKHRhZ1FOYW1lLCBhdHRy
aWJ1dGVzKTsKIAogICAgIGlmICghY2FjaGVIYXNoIHx8IGNhY2hlSXRlcmF0b3ItPnZhbHVlKQog
ICAgICAgICByZXR1cm4gZWxlbWVudERhdGEucmVsZWFzZSgpOwogCi0gICAgY2FjaGVJdGVyYXRv
ci0+dmFsdWUgPSBhZG9wdFB0cihuZXcgU2hhcmVhYmxlRWxlbWVudERhdGFDYWNoZUVudHJ5KFNo
YXJlYWJsZUVsZW1lbnREYXRhQ2FjaGVLZXkoZWxlbWVudERhdGEtPm1fYXR0cmlidXRlQXJyYXks
IGVsZW1lbnREYXRhLT5sZW5ndGgoKSksIGVsZW1lbnREYXRhKSk7CisgICAgY2FjaGVJdGVyYXRv
ci0+dmFsdWUgPSBhZG9wdFB0cihuZXcgU2hhcmVhYmxlRWxlbWVudERhdGFDYWNoZUVudHJ5KFNo
YXJlYWJsZUVsZW1lbnREYXRhQ2FjaGVLZXkodGFnUU5hbWUuaW1wbCgpLCBlbGVtZW50RGF0YS0+
bV9hdHRyaWJ1dGVBcnJheSwgZWxlbWVudERhdGEtPmxlbmd0aCgpKSwgZWxlbWVudERhdGEpKTsK
IAogICAgIHJldHVybiBlbGVtZW50RGF0YS5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmgKaW5kZXggYTNiMjRkNy4uNDgzMjA0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuaApAQCAt
MzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdHRyaWJ1dGU7Citj
bGFzcyBRdWFsaWZpZWROYW1lOwogY2xhc3MgU2hhcmVhYmxlRWxlbWVudERhdGE7CiBjbGFzcyBT
aGFyZWFibGVFbGVtZW50RGF0YUNhY2hlRW50cnk7CiAKQEAgLTQyLDcgKzQzLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzT3duUHRyPERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbD4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbCk7IH0KICAg
ICB+RG9jdW1lbnRTaGFyZWRPYmplY3RQb29sKCk7CiAKLSAgICBQYXNzUmVmUHRyPFNoYXJlYWJs
ZUVsZW1lbnREYXRhPiBjYWNoZWRTaGFyZWFibGVFbGVtZW50RGF0YVdpdGhBdHRyaWJ1dGVzKGNv
bnN0IFZlY3RvcjxBdHRyaWJ1dGU+Jik7CisgICAgUGFzc1JlZlB0cjxTaGFyZWFibGVFbGVtZW50
RGF0YT4gY2FjaGVkU2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmlidXRlcyhjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdRTmFtZSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mKTsKIAogcHJpdmF0
ZToKICAgICBEb2N1bWVudFNoYXJlZE9iamVjdFBvb2woKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApp
bmRleCA4MThlZjI5Li4wZDEzM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yMTQsNiAr
MjE0LDExIEBAIEVsZW1lbnQ6On5FbGVtZW50KCkKICAgICAgICAgQVNTRVJUKCFoYXNQZW5kaW5n
UmVzb3VyY2VzKCkpOwogICAgIH0KICNlbmRpZgorCisgICAgaWYgKGhhc0VsZW1lbnREYXRhKCkp
CisgICAgICAgIG1fdGFnUU5hbWVPckVsZW1lbnREYXRhLmVsZW1lbnREYXRhLT5kZXJlZigpOwor
ICAgIGVsc2UKKyAgICAgICAgbV90YWdRTmFtZU9yRWxlbWVudERhdGEudGFnUU5hbWUtPmRlcmVm
KCk7CiB9CiAKIGlubGluZSBFbGVtZW50UmFyZURhdGEqIEVsZW1lbnQ6OmVsZW1lbnRSYXJlRGF0
YSgpIGNvbnN0CkBAIC0xMDY0LDE1ICsxMDY5LDE1IEBAIHZvaWQgRWxlbWVudDo6cGFyc2VyU2V0
QXR0cmlidXRlcyhjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlVmVjdG9yKQogewog
ICAgIEFTU0VSVCghaW5Eb2N1bWVudCgpKTsKICAgICBBU1NFUlQoIXBhcmVudE5vZGUoKSk7Ci0g
ICAgQVNTRVJUKCFtX2VsZW1lbnREYXRhKTsKKyAgICBBU1NFUlQoIWhhc0VsZW1lbnREYXRhKCkp
OwogCiAgICAgaWYgKGF0dHJpYnV0ZVZlY3Rvci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnNoYXJlZE9iamVjdFBvb2woKSkK
LSAgICAgICAgbV9lbGVtZW50RGF0YSA9IGRvY3VtZW50KCktPnNoYXJlZE9iamVjdFBvb2woKS0+
Y2FjaGVkU2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVWZWN0b3Ip
OworICAgICAgICBzZXRFbGVtZW50RGF0YShkb2N1bWVudCgpLT5zaGFyZWRPYmplY3RQb29sKCkt
PmNhY2hlZFNoYXJlYWJsZUVsZW1lbnREYXRhV2l0aEF0dHJpYnV0ZXModGFnUU5hbWUoKSwgYXR0
cmlidXRlVmVjdG9yKSk7CiAgICAgZWxzZQotICAgICAgICBtX2VsZW1lbnREYXRhID0gU2hhcmVh
YmxlRWxlbWVudERhdGE6OmNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGF0dHJpYnV0ZVZlY3Rvcik7Cisg
ICAgICAgIHNldEVsZW1lbnREYXRhKFNoYXJlYWJsZUVsZW1lbnREYXRhOjpjcmVhdGVXaXRoQXR0
cmlidXRlcyh0YWdRTmFtZSgpLCBhdHRyaWJ1dGVWZWN0b3IpKTsKIAogICAgIC8vIFVzZSBhdHRy
aWJ1dGVWZWN0b3IgaW5zdGVhZCBvZiBtX2VsZW1lbnREYXRhIGJlY2F1c2UgYXR0cmlidXRlQ2hh
bmdlZCBtaWdodCBtb2RpZnkgbV9lbGVtZW50RGF0YS4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYXR0cmlidXRlVmVjdG9yLnNpemUoKTsgKytpKQpAQCAtMTEwMCwxMiArMTEwNSwxMiBA
QCBib29sIEVsZW1lbnQ6Omhhc0VxdWl2YWxlbnRBdHRyaWJ1dGVzKGNvbnN0IEVsZW1lbnQqIG90
aGVyKSBjb25zdAogCiBTdHJpbmcgRWxlbWVudDo6bm9kZU5hbWUoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3RhZ05hbWUudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gdGFnUU5hbWUoKS50b1N0cmlu
ZygpOwogfQogCiBTdHJpbmcgRWxlbWVudDo6bm9kZU5hbWVQcmVzZXJ2aW5nQ2FzZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fdGFnTmFtZS50b1N0cmluZygpOworICAgIHJldHVybiB0YWdRTmFt
ZSgpLnRvU3RyaW5nKCk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2V0UHJlZml4KGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJlZml4LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTExMTUsNyArMTEyMCwxMCBA
QCB2b2lkIEVsZW1lbnQ6OnNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Rh
Z05hbWUuc2V0UHJlZml4KHByZWZpeC5pc0VtcHR5KCkgPyBBdG9taWNTdHJpbmcoKSA6IHByZWZp
eCk7CisgICAgaWYgKHRhZ1FOYW1lKCkucHJlZml4KCkgPT0gcHJlZml4KQorICAgICAgICByZXR1
cm47CisKKyAgICBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpLT5tX3RhZ1FOYW1lLnNldFByZWZp
eChwcmVmaXguaXNFbXB0eSgpID8gQXRvbWljU3RyaW5nKCkgOiBwcmVmaXgpOwogfQogCiBLVVJM
IEVsZW1lbnQ6OmJhc2VVUkkoKSBjb25zdApAQCAtMjg4Niw4ICsyODk0LDE0IEBAIHZvaWQgRWxl
bWVudDo6Y2xvbmVBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYgb3RoZXIpCiAg
ICAgICAgIGRldGFjaEFsbEF0dHJOb2Rlc0Zyb21FbGVtZW50KCk7CiAKICAgICBvdGhlci5zeW5j
aHJvbml6ZUFsbEF0dHJpYnV0ZXMoKTsKLSAgICBpZiAoIW90aGVyLm1fZWxlbWVudERhdGEpIHsK
LSAgICAgICAgbV9lbGVtZW50RGF0YS5jbGVhcigpOworICAgIGlmICghb3RoZXIuaGFzRWxlbWVu
dERhdGEoKSkgeworICAgICAgICBpZiAoaGFzRWxlbWVudERhdGEoKSkgeworICAgICAgICAgICAg
UXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGwqIG15VGFnUU5hbWUgPSB0YWdRTmFtZSgp
LmltcGwoKTsKKyAgICAgICAgICAgIG15VGFnUU5hbWUtPnJlZigpOworICAgICAgICAgICAgbV90
YWdRTmFtZU9yRWxlbWVudERhdGEuZWxlbWVudERhdGEtPmRlcmVmKCk7CisgICAgICAgICAgICBt
X3RhZ1FOYW1lT3JFbGVtZW50RGF0YS50YWdRTmFtZSA9IG15VGFnUU5hbWU7CisgICAgICAgICAg
ICBzZXRIYXNFbGVtZW50RGF0YShmYWxzZSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMjkwMywyMCArMjkxNywyOCBAQCB2b2lkIEVsZW1lbnQ6OmNsb25lQXR0cmli
dXRlc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmIG90aGVyKQogICAgIGlmICghb2xkTmFtZS5p
c051bGwoKSB8fCAhbmV3TmFtZS5pc051bGwoKSkKICAgICAgICAgdXBkYXRlTmFtZShvbGROYW1l
LCBuZXdOYW1lKTsKIAotICAgIC8vIElmICdvdGhlcicgaGFzIGEgbXV0YWJsZSBFbGVtZW50RGF0
YSwgY29udmVydCBpdCB0byBhbiBpbW11dGFibGUgb25lIHNvIHdlIGNhbiBzaGFyZSBpdCBiZXR3
ZWVuIGJvdGggZWxlbWVudHMuCi0gICAgLy8gV2UgY2FuIG9ubHkgZG8gdGhpcyBpZiB0aGVyZSBp
cyBubyBDU1NPTSB3cmFwcGVyIGZvciBvdGhlcidzIGlubGluZSBzdHlsZSwgYW5kIHRoZXJlIGFy
ZSBubyBwcmVzZW50YXRpb24gYXR0cmlidXRlcy4KLSAgICBpZiAob3RoZXIubV9lbGVtZW50RGF0
YS0+aXNVbmlxdWUoKQotICAgICAgICAmJiAhb3RoZXIubV9lbGVtZW50RGF0YS0+cHJlc2VudGF0
aW9uQXR0cmlidXRlU3R5bGUoKQotICAgICAgICAmJiAoIW90aGVyLm1fZWxlbWVudERhdGEtPmlu
bGluZVN0eWxlKCkgfHwgIW90aGVyLm1fZWxlbWVudERhdGEtPmlubGluZVN0eWxlKCktPmhhc0NT
U09NV3JhcHBlcigpKSkKLSAgICAgICAgY29uc3RfY2FzdDxFbGVtZW50Jj4ob3RoZXIpLm1fZWxl
bWVudERhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBVbmlxdWVFbGVtZW50RGF0YSo+KG90aGVyLm1f
ZWxlbWVudERhdGEuZ2V0KCkpLT5tYWtlU2hhcmVhYmxlQ29weSgpOworICAgIGlmICh0YWdRTmFt
ZSgpICE9IG90aGVyLnRhZ1FOYW1lKCkpIHsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnREYXRhPiBj
bG9uZWRFbGVtZW50RGF0YSA9IG90aGVyLmVsZW1lbnREYXRhKCktPm1ha2VVbmlxdWVDb3B5KCk7
CisgICAgICAgIGNsb25lZEVsZW1lbnREYXRhLT5tX3RhZ1FOYW1lID0gdGFnUU5hbWUoKTsKKyAg
ICAgICAgc2V0RWxlbWVudERhdGEoY2xvbmVkRWxlbWVudERhdGEucmVsZWFzZSgpKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBFbGVtZW50RGF0YSomIG90aGVyRWxlbWVudERhdGEgPSBjb25zdF9j
YXN0PEVsZW1lbnQmPihvdGhlcikubV90YWdRTmFtZU9yRWxlbWVudERhdGEuZWxlbWVudERhdGE7
CiAKLSAgICBpZiAoIW90aGVyLm1fZWxlbWVudERhdGEtPmlzVW5pcXVlKCkpCi0gICAgICAgIG1f
ZWxlbWVudERhdGEgPSBvdGhlci5tX2VsZW1lbnREYXRhOwotICAgIGVsc2UKLSAgICAgICAgbV9l
bGVtZW50RGF0YSA9IG90aGVyLm1fZWxlbWVudERhdGEtPm1ha2VVbmlxdWVDb3B5KCk7CisgICAg
ICAgIC8vIElmICdvdGhlcicgaGFzIGEgbXV0YWJsZSBFbGVtZW50RGF0YSwgY29udmVydCBpdCB0
byBhbiBpbW11dGFibGUgb25lIHNvIHdlIGNhbiBzaGFyZSBpdCBiZXR3ZWVuIGJvdGggZWxlbWVu
dHMuCisgICAgICAgIC8vIFdlIGNhbiBvbmx5IGRvIHRoaXMgaWYgdGhlcmUgaXMgbm8gQ1NTT00g
d3JhcHBlciBmb3Igb3RoZXIncyBpbmxpbmUgc3R5bGUsIGFuZCB0aGVyZSBhcmUgbm8gcHJlc2Vu
dGF0aW9uIGF0dHJpYnV0ZXMuCisgICAgICAgIGlmIChvdGhlckVsZW1lbnREYXRhLT5pc1VuaXF1
ZSgpCisgICAgICAgICYmICFvdGhlckVsZW1lbnREYXRhLT5wcmVzZW50YXRpb25BdHRyaWJ1dGVT
dHlsZSgpCisgICAgICAgICYmICghb3RoZXJFbGVtZW50RGF0YS0+aW5saW5lU3R5bGUoKSB8fCAh
b3RoZXJFbGVtZW50RGF0YS0+aW5saW5lU3R5bGUoKS0+aGFzQ1NTT01XcmFwcGVyKCkpKQorICAg
ICAgICBjb25zdF9jYXN0PEVsZW1lbnQmPihvdGhlcikuc2V0RWxlbWVudERhdGEoc3RhdGljX2Nh
c3Q8Y29uc3QgVW5pcXVlRWxlbWVudERhdGEqPihvdGhlckVsZW1lbnREYXRhKS0+bWFrZVNoYXJl
YWJsZUNvcHkoKSk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lbGVtZW50RGF0
YS0+bGVuZ3RoKCk7ICsraSkgewotICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9
IGNvbnN0X2Nhc3Q8Y29uc3QgRWxlbWVudERhdGEqPihtX2VsZW1lbnREYXRhLmdldCgpKS0+YXR0
cmlidXRlSXRlbShpKTsKKyAgICAgICAgaWYgKCFvdGhlckVsZW1lbnREYXRhLT5pc1VuaXF1ZSgp
KQorICAgICAgICAgICAgc2V0RWxlbWVudERhdGEob3RoZXJFbGVtZW50RGF0YSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHNldEVsZW1lbnREYXRhKG90aGVyRWxlbWVudERhdGEtPm1ha2VV
bmlxdWVDb3B5KCkpOworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVt
ZW50RGF0YSgpLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0
cmlidXRlID0gZWxlbWVudERhdGEoKS0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgYXR0cmli
dXRlQ2hhbmdlZEZyb21QYXJzZXJPckJ5Q2xvbmluZyhhdHRyaWJ1dGUtPm5hbWUoKSwgYXR0cmli
dXRlLT52YWx1ZSgpLCBNb2RpZmllZEJ5Q2xvbmluZyk7CiAgICAgfQogfQpAQCAtMjkyNywxMyAr
Mjk0OSwyMyBAQCB2b2lkIEVsZW1lbnQ6OmNsb25lRGF0YUZyb21FbGVtZW50KGNvbnN0IEVsZW1l
bnQmIG90aGVyKQogICAgIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQob3Ro
ZXIpOwogfQogCit2b2lkIEVsZW1lbnQ6OnNldEVsZW1lbnREYXRhKFBhc3NSZWZQdHI8RWxlbWVu
dERhdGE+IGVsZW1lbnREYXRhKQoreworICAgIEFTU0VSVChlbGVtZW50RGF0YSk7CisgICAgQVNT
RVJUKGVsZW1lbnREYXRhLT5tX3RhZ1FOYW1lID09IHRhZ1FOYW1lKCkpOworICAgIGlmIChoYXNF
bGVtZW50RGF0YSgpKQorICAgICAgICBtX3RhZ1FOYW1lT3JFbGVtZW50RGF0YS5lbGVtZW50RGF0
YS0+ZGVyZWYoKTsKKyAgICBtX3RhZ1FOYW1lT3JFbGVtZW50RGF0YS5lbGVtZW50RGF0YSA9IGVs
ZW1lbnREYXRhLmxlYWtSZWYoKTsKKyAgICBzZXRIYXNFbGVtZW50RGF0YSh0cnVlKTsKK30KKwog
dm9pZCBFbGVtZW50OjpjcmVhdGVVbmlxdWVFbGVtZW50RGF0YSgpCiB7Ci0gICAgaWYgKCFtX2Vs
ZW1lbnREYXRhKQotICAgICAgICBtX2VsZW1lbnREYXRhID0gVW5pcXVlRWxlbWVudERhdGE6OmNy
ZWF0ZSgpOworICAgIGlmICghaGFzRWxlbWVudERhdGEoKSkKKyAgICAgICAgc2V0RWxlbWVudERh
dGEoVW5pcXVlRWxlbWVudERhdGE6OmNyZWF0ZSh0YWdRTmFtZSgpKSk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIEFTU0VSVCghbV9lbGVtZW50RGF0YS0+aXNVbmlxdWUoKSk7Ci0gICAgICAgIG1fZWxl
bWVudERhdGEgPSBzdGF0aWNfY2FzdDxTaGFyZWFibGVFbGVtZW50RGF0YSo+KG1fZWxlbWVudERh
dGEuZ2V0KCkpLT5tYWtlVW5pcXVlQ29weSgpOworICAgICAgICBBU1NFUlQoIWVsZW1lbnREYXRh
KCktPmlzVW5pcXVlKCkpOworICAgICAgICBzZXRFbGVtZW50RGF0YShzdGF0aWNfY2FzdDxjb25z
dCBTaGFyZWFibGVFbGVtZW50RGF0YSo+KGVsZW1lbnREYXRhKCkpLT5tYWtlVW5pcXVlQ29weSgp
KTsKICAgICB9CiB9CiAKQEAgLTI5NDEsOCArMjk3MywxMCBAQCB2b2lkIEVsZW1lbnQ6OnJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7
CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29y
ZU1lbW9yeVR5cGVzOjpET00pOwogICAgIENvbnRhaW5lck5vZGU6OnJlcG9ydE1lbW9yeVVzYWdl
KG1lbW9yeU9iamVjdEluZm8pOwotICAgIGluZm8uYWRkTWVtYmVyKG1fdGFnTmFtZSwgInRhZ05h
bWUiKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX2VsZW1lbnREYXRhLCAiZWxlbWVudERhdGEiKTsK
KyAgICBpZiAoaGFzRWxlbWVudERhdGEoKSkKKyAgICAgICAgaW5mby5hZGRNZW1iZXIoZWxlbWVu
dERhdGEoKSwgImVsZW1lbnREYXRhIik7CisgICAgZWxzZQorICAgICAgICBpbmZvLmFkZE1lbWJl
cih0YWdRTmFtZSgpLCAidGFnUU5hbWUiKTsKIH0KIAogI2lmIEVOQUJMRShTVkcpCkBAIC0yOTcz
LDcgKzMwMDcsNyBAQCB2b2lkIEVsZW1lbnREYXRhOjpkZXJlZigpCiAgICAgICAgIGRlbGV0ZSBz
dGF0aWNfY2FzdDxTaGFyZWFibGVFbGVtZW50RGF0YSo+KHRoaXMpOwogfQogCi1FbGVtZW50RGF0
YTo6RWxlbWVudERhdGEoKQorRWxlbWVudERhdGE6OkVsZW1lbnREYXRhKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ1FOYW1lKQogICAgIDogbV9pc1VuaXF1ZSh0cnVlKQogICAgICwgbV9hcnJheVNp
emUoMCkKICAgICAsIG1fcHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGVJc0RpcnR5KGZhbHNlKQpA
QCAtMjk4MSwxMCArMzAxNSwxMSBAQCBFbGVtZW50RGF0YTo6RWxlbWVudERhdGEoKQogI2lmIEVO
QUJMRShTVkcpCiAgICAgLCBtX2FuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KGZhbHNlKQog
I2VuZGlmCisgICAgLCBtX3RhZ1FOYW1lKHRhZ1FOYW1lKQogewogfQogCi1FbGVtZW50RGF0YTo6
RWxlbWVudERhdGEodW5zaWduZWQgYXJyYXlTaXplKQorRWxlbWVudERhdGE6OkVsZW1lbnREYXRh
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lLCB1bnNpZ25lZCBhcnJheVNpemUpCiAgICAg
OiBtX2lzVW5pcXVlKGZhbHNlKQogICAgICwgbV9hcnJheVNpemUoYXJyYXlTaXplKQogICAgICwg
bV9wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZUlzRGlydHkoZmFsc2UpCkBAIC0yOTkyLDExICsz
MDI3LDEzIEBAIEVsZW1lbnREYXRhOjpFbGVtZW50RGF0YSh1bnNpZ25lZCBhcnJheVNpemUpCiAj
aWYgRU5BQkxFKFNWRykKICAgICAsIG1fYW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkoZmFs
c2UpCiAjZW5kaWYKKyAgICAsIG1fdGFnUU5hbWUodGFnUU5hbWUpCiB7CiB9CiAKIHN0cnVjdCBT
YW1lU2l6ZUFzRWxlbWVudERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTYW1lU2l6ZUFzRWxlbWVu
dERhdGE+IHsKICAgICB1bnNpZ25lZCBiaXRmaWVsZDsKKyAgICBRdWFsaWZpZWROYW1lIHFuYW1l
OwogICAgIHZvaWQqIHJlZlB0cnNbM107CiB9OwogCkBAIC0zMDA3LDE5ICszMDQ0LDE5IEBAIHN0
YXRpYyBzaXplX3Qgc2l6ZUZvclNoYXJlYWJsZUVsZW1lbnREYXRhV2l0aEF0dHJpYnV0ZUNvdW50
KHVuc2lnbmVkIGNvdW50KQogICAgIHJldHVybiBzaXplb2YoU2hhcmVhYmxlRWxlbWVudERhdGEp
ICsgc2l6ZW9mKEF0dHJpYnV0ZSkgKiBjb3VudDsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWFibGVF
bGVtZW50RGF0YT4gU2hhcmVhYmxlRWxlbWVudERhdGE6OmNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGNv
bnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKQorUGFzc1JlZlB0cjxTaGFyZWFibGVF
bGVtZW50RGF0YT4gU2hhcmVhYmxlRWxlbWVudERhdGE6OmNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lLCBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0
cmlidXRlcykKIHsKICAgICB2b2lkKiBzbG90ID0gV1RGOjpmYXN0TWFsbG9jKHNpemVGb3JTaGFy
ZWFibGVFbGVtZW50RGF0YVdpdGhBdHRyaWJ1dGVDb3VudChhdHRyaWJ1dGVzLnNpemUoKSkpOwot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgKHNsb3QpIFNoYXJlYWJsZUVsZW1lbnREYXRhKGF0dHJp
YnV0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IChOb3ROdWxsLCBzbG90KSBTaGFyZWFi
bGVFbGVtZW50RGF0YSh0YWdRTmFtZSwgYXR0cmlidXRlcykpOwogfQogCi1QYXNzUmVmUHRyPFVu
aXF1ZUVsZW1lbnREYXRhPiBVbmlxdWVFbGVtZW50RGF0YTo6Y3JlYXRlKCkKK1Bhc3NSZWZQdHI8
VW5pcXVlRWxlbWVudERhdGE+IFVuaXF1ZUVsZW1lbnREYXRhOjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnUU5hbWUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVbmlxdWVFbGVt
ZW50RGF0YSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVbmlxdWVFbGVtZW50RGF0YSh0YWdR
TmFtZSkpOwogfQogCi1TaGFyZWFibGVFbGVtZW50RGF0YTo6U2hhcmVhYmxlRWxlbWVudERhdGEo
Y29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCi0gICAgOiBFbGVtZW50RGF0YShh
dHRyaWJ1dGVzLnNpemUoKSkKK1NoYXJlYWJsZUVsZW1lbnREYXRhOjpTaGFyZWFibGVFbGVtZW50
RGF0YShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0
ZT4mIGF0dHJpYnV0ZXMpCisgICAgOiBFbGVtZW50RGF0YSh0YWdRTmFtZSwgYXR0cmlidXRlcy5z
aXplKCkpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXJyYXlTaXplOyArK2kp
CiAgICAgICAgIG5ldyAoJm1fYXR0cmlidXRlQXJyYXlbaV0pIEF0dHJpYnV0ZShhdHRyaWJ1dGVz
W2ldKTsKQEAgLTMwNTMsMTMgKzMwOTAsMTUgQEAgRWxlbWVudERhdGE6OkVsZW1lbnREYXRhKGNv
bnN0IEVsZW1lbnREYXRhJiBvdGhlciwgYm9vbCBpc1VuaXF1ZSkKICNpZiBFTkFCTEUoU1ZHKQog
ICAgICwgbV9hbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eShvdGhlci5tX2FuaW1hdGVkU1ZH
QXR0cmlidXRlc0FyZURpcnR5KQogI2VuZGlmCisgICAgLCBtX3RhZ1FOYW1lKG90aGVyLm1fdGFn
UU5hbWUpCiAgICAgLCBtX2NsYXNzTmFtZXMob3RoZXIubV9jbGFzc05hbWVzKQogICAgICwgbV9p
ZEZvclN0eWxlUmVzb2x1dGlvbihvdGhlci5tX2lkRm9yU3R5bGVSZXNvbHV0aW9uKQogewogICAg
IC8vIE5PVEU6IFRoZSBpbmxpbmUgc3R5bGUgaXMgY29waWVkIGJ5IHRoZSBzdWJjbGFzcyBjb3B5
IGNvbnN0cnVjdG9yIHNpbmNlIHdlIGRvbid0IGtub3cgd2hhdCB0byBkbyB3aXRoIGl0IGhlcmUu
CiB9CiAKLVVuaXF1ZUVsZW1lbnREYXRhOjpVbmlxdWVFbGVtZW50RGF0YSgpCitVbmlxdWVFbGVt
ZW50RGF0YTo6VW5pcXVlRWxlbWVudERhdGEoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUp
CisgICAgOiBFbGVtZW50RGF0YSh0YWdRTmFtZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5k
ZXggZDBjOGZlYy4uNzEwYzI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC04OCw4ICs4OCw4IEBA
IHB1YmxpYzoKICAgICBib29sIGlzVW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9pc1VuaXF1ZTsg
fQogCiBwcm90ZWN0ZWQ6Ci0gICAgRWxlbWVudERhdGEoKTsKLSAgICBFbGVtZW50RGF0YSh1bnNp
Z25lZCBhcnJheVNpemUpOworICAgIEVsZW1lbnREYXRhKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z1FOYW1lKTsKKyAgICBFbGVtZW50RGF0YShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSwg
dW5zaWduZWQgYXJyYXlTaXplKTsKICAgICBFbGVtZW50RGF0YShjb25zdCBFbGVtZW50RGF0YSYs
IGJvb2wgaXNVbmlxdWUpOwogCiAgICAgdW5zaWduZWQgbV9pc1VuaXF1ZSA6IDE7CkBAIC0xMDAs
NiArMTAwLDcgQEAgcHJvdGVjdGVkOgogICAgIG11dGFibGUgdW5zaWduZWQgbV9hbmltYXRlZFNW
R0F0dHJpYnV0ZXNBcmVEaXJ0eSA6IDE7CiAjZW5kaWYKIAorICAgIFF1YWxpZmllZE5hbWUgbV90
YWdRTmFtZTsKICAgICBtdXRhYmxlIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBtX2lubGluZVN0
eWxlOwogICAgIG11dGFibGUgU3BhY2VTcGxpdFN0cmluZyBtX2NsYXNzTmFtZXM7CiAgICAgbXV0
YWJsZSBBdG9taWNTdHJpbmcgbV9pZEZvclN0eWxlUmVzb2x1dGlvbjsKQEAgLTEyNiw5ICsxMjcs
OSBAQCBwcml2YXRlOgogCiBjbGFzcyBTaGFyZWFibGVFbGVtZW50RGF0YSA6IHB1YmxpYyBFbGVt
ZW50RGF0YSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlRWxlbWVu
dERhdGE+IGNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+Jik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlRWxlbWVudERhdGE+IGNyZWF0ZVdpdGhBdHRy
aWJ1dGVzKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lLCBjb25zdCBWZWN0b3I8QXR0cmli
dXRlPiYpOwogCi0gICAgZXhwbGljaXQgU2hhcmVhYmxlRWxlbWVudERhdGEoY29uc3QgVmVjdG9y
PEF0dHJpYnV0ZT4mKTsKKyAgICBTaGFyZWFibGVFbGVtZW50RGF0YShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdRTmFtZSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mKTsKICAgICBleHBsaWNpdCBT
aGFyZWFibGVFbGVtZW50RGF0YShjb25zdCBVbmlxdWVFbGVtZW50RGF0YSYpOwogICAgIH5TaGFy
ZWFibGVFbGVtZW50RGF0YSgpOwogCkBAIC0xNDEsNyArMTQyLDcgQEAgcHVibGljOgogCiBjbGFz
cyBVbmlxdWVFbGVtZW50RGF0YSA6IHB1YmxpYyBFbGVtZW50RGF0YSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8VW5pcXVlRWxlbWVudERhdGE+IGNyZWF0ZSgpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFVuaXF1ZUVsZW1lbnREYXRhPiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnUU5hbWUpOwogICAgIFBhc3NSZWZQdHI8U2hhcmVhYmxlRWxlbWVudERhdGE+IG1ha2VT
aGFyZWFibGVDb3B5KCkgY29uc3Q7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgZG8gbm8gZXJy
b3IvZHVwbGljYXRlIGNoZWNraW5nLgpAQCAtMTUxLDkgKzE1Miw5IEBAIHB1YmxpYzoKICAgICBB
dHRyaWJ1dGUqIGF0dHJpYnV0ZUl0ZW0odW5zaWduZWQgaW5kZXgpOwogICAgIEF0dHJpYnV0ZSog
Z2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICBVbmlxdWVFbGVt
ZW50RGF0YSgpOworICAgIGV4cGxpY2l0IFVuaXF1ZUVsZW1lbnREYXRhKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ1FOYW1lKTsKICAgICBleHBsaWNpdCBVbmlxdWVFbGVtZW50RGF0YShjb25zdCBT
aGFyZWFibGVFbGVtZW50RGF0YSYpOwotICAgIGV4cGxpY2l0IFVuaXF1ZUVsZW1lbnREYXRhKGNv
bnN0IFVuaXF1ZUVsZW1lbnREYXRhJik7CisgICAgVW5pcXVlRWxlbWVudERhdGEoY29uc3QgVW5p
cXVlRWxlbWVudERhdGEmKTsKIAogICAgIG11dGFibGUgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+
IG1fcHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGU7CiAgICAgVmVjdG9yPEF0dHJpYnV0ZSwgND4g
bV9hdHRyaWJ1dGVWZWN0b3I7CkBAIC0zNDYsMTcgKzM0NywxNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKCk7CiAKLSAgICBjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdRTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFnTmFtZTsgfQorICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lKCkgY29uc3Q7CiAgICAgU3RyaW5nIHRhZ05hbWUoKSBj
b25zdCB7IHJldHVybiBub2RlTmFtZSgpOyB9Ci0gICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUpIGNvbnN0IHsgcmV0dXJuIG1fdGFnTmFtZS5tYXRjaGVzKHRh
Z05hbWUpOyB9CisgICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUpIGNvbnN0IHsgcmV0dXJuIHRhZ1FOYW1lKCkubWF0Y2hlcyh0YWdOYW1lKTsgfQogICAgIAog
ICAgIC8vIEEgZmFzdCBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgdGhlIGxvY2FsIG5hbWUgYWdhaW5z
dCBhbm90aGVyIGF0b21pYyBzdHJpbmcuCi0gICAgYm9vbCBoYXNMb2NhbE5hbWUoY29uc3QgQXRv
bWljU3RyaW5nJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV90YWdOYW1lLmxvY2FsTmFtZSgpID09
IG90aGVyOyB9Ci0gICAgYm9vbCBoYXNMb2NhbE5hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fdGFnTmFtZS5sb2NhbE5hbWUoKSA9PSBvdGhlci5sb2NhbE5h
bWUoKTsgfQorICAgIGJvb2wgaGFzTG9jYWxOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIHRhZ1FOYW1lKCkubG9jYWxOYW1lKCkgPT0gb3RoZXI7IH0KKyAgICBi
b29sIGhhc0xvY2FsTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gdGFnUU5hbWUoKS5sb2NhbE5hbWUoKSA9PSBvdGhlci5sb2NhbE5hbWUoKTsgfQogCi0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUoKSBjb25zdCB7IHJldHVybiBtX3RhZ05hbWUu
bG9jYWxOYW1lKCk7IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGFnTmFtZS5wcmVmaXgoKTsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZXNwYWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV90YWdOYW1lLm5hbWVzcGFjZVVSSSgpOyB9Cisg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUoKSBjb25zdCB7IHJldHVybiB0YWdRTmFt
ZSgpLmxvY2FsTmFtZSgpOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgoKSBjb25z
dCB7IHJldHVybiB0YWdRTmFtZSgpLnByZWZpeCgpOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lc3BhY2VVUkkoKSBjb25zdCB7IHJldHVybiB0YWdRTmFtZSgpLm5hbWVzcGFjZVVSSSgp
OyB9CiAKICAgICB2aXJ0dWFsIEtVUkwgYmFzZVVSSSgpIGNvbnN0OwogCkBAIC0zODgsNyArMzg5
LDcgQEAgcHVibGljOgogICAgIC8vIFJlbW92ZSBhdHRyaWJ1dGVzIHRoYXQgbWlnaHQgaW50cm9k
dWNlIHNjcmlwdGluZyBmcm9tIHRoZSB2ZWN0b3IgbGVhdmluZyB0aGUgZWxlbWVudCB1bmNoYW5n
ZWQuCiAgICAgdm9pZCBzdHJpcFNjcmlwdGluZ0F0dHJpYnV0ZXMoVmVjdG9yPEF0dHJpYnV0ZT4m
KSBjb25zdDsKIAotICAgIGNvbnN0IEVsZW1lbnREYXRhKiBlbGVtZW50RGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fZWxlbWVudERhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBFbGVtZW50RGF0YSogZWxl
bWVudERhdGEoKSBjb25zdCB7IHJldHVybiBoYXNFbGVtZW50RGF0YSgpID8gbV90YWdRTmFtZU9y
RWxlbWVudERhdGEuZWxlbWVudERhdGEgOiAwOyB9CiAgICAgVW5pcXVlRWxlbWVudERhdGEqIGVu
c3VyZVVuaXF1ZUVsZW1lbnREYXRhKCk7CiAKICAgICB2b2lkIHN5bmNocm9uaXplQWxsQXR0cmli
dXRlcygpIGNvbnN0OwpAQCAtNjI1LDEwICs2MjYsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7
CiAKIHByb3RlY3RlZDoKLSAgICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQorICAgIEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3Ry
dWN0aW9uVHlwZSB0eXBlKQogICAgICAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1lbnQsIHR5cGUp
Ci0gICAgICAgICwgbV90YWdOYW1lKHRhZ05hbWUpCiAgICAgeworICAgICAgICBtX3RhZ1FOYW1l
T3JFbGVtZW50RGF0YS50YWdRTmFtZSA9IHRhZ1FOYW1lLmltcGwoKTsKKyAgICAgICAgbV90YWdR
TmFtZU9yRWxlbWVudERhdGEudGFnUU5hbWUtPnJlZigpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSop
IE9WRVJSSURFOwpAQCAtNzEyLDcgKzcxNCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXApIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxk
cmVuKCk7CiAKLSAgICBRdWFsaWZpZWROYW1lIG1fdGFnTmFtZTsKICAgICBib29sIHJhcmVEYXRh
U3R5bGVBZmZlY3RlZEJ5RW1wdHkoKSBjb25zdDsKICAgICBib29sIHJhcmVEYXRhQ2hpbGRyZW5B
ZmZlY3RlZEJ5SG92ZXIoKSBjb25zdDsKICAgICBib29sIHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3Rl
ZEJ5QWN0aXZlKCkgY29uc3Q7CkBAIC03MzEsNiArNzMyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgdW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnROb2RlKCk7CiAKKyAgICB2b2lkIHNldEVsZW1l
bnREYXRhKFBhc3NSZWZQdHI8RWxlbWVudERhdGE+KTsKICAgICB2b2lkIGNyZWF0ZVVuaXF1ZUVs
ZW1lbnREYXRhKCk7CiAKICAgICBib29sIHNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVu
QXR0cmlidXRlQ2hhbmdlZChFbGVtZW50U2hhZG93KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpOwpAQCAtNzQ1LDggKzc0NywxOCBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBpc0phdmFTY3JpcHRVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Q7CiAK
LSAgICBSZWZQdHI8RWxlbWVudERhdGE+IG1fZWxlbWVudERhdGE7CisgICAgdW5pb24geworICAg
ICAgICBRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbCogdGFnUU5hbWU7CisgICAgICAg
IEVsZW1lbnREYXRhKiBlbGVtZW50RGF0YTsKKyAgICB9IG1fdGFnUU5hbWVPckVsZW1lbnREYXRh
OwogfTsKKworaW5saW5lIGNvbnN0IFF1YWxpZmllZE5hbWUmIEVsZW1lbnQ6OnRhZ1FOYW1lKCkg
Y29uc3QKK3sKKyAgICBpZiAoaGFzRWxlbWVudERhdGEoKSkKKyAgICAgICAgcmV0dXJuIGVsZW1l
bnREYXRhKCktPm1fdGFnUU5hbWU7CisgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0
IFF1YWxpZmllZE5hbWUqPigmbV90YWdRTmFtZU9yRWxlbWVudERhdGEudGFnUU5hbWUpOworfQog
ICAgIAogaW5saW5lIEVsZW1lbnQqIHRvRWxlbWVudChOb2RlKiBub2RlKQogewpAQCAtODEzLDEz
ICs4MjUsMTMgQEAgaW5saW5lIEVsZW1lbnQqIEVsZW1lbnQ6Om5leHRFbGVtZW50U2libGluZygp
IGNvbnN0CiBpbmxpbmUgYm9vbCBFbGVtZW50OjpmYXN0SGFzQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGZhc3RBdHRyaWJ1dGVMb29rdXBB
bGxvd2VkKG5hbWUpKTsKLSAgICByZXR1cm4gZWxlbWVudERhdGEoKSAmJiBnZXRBdHRyaWJ1dGVJ
dGVtKG5hbWUpOworICAgIHJldHVybiBoYXNFbGVtZW50RGF0YSgpICYmIGdldEF0dHJpYnV0ZUl0
ZW0obmFtZSk7CiB9CiAKIGlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmZhc3RH
ZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICAgICBBU1NF
UlQoZmFzdEF0dHJpYnV0ZUxvb2t1cEFsbG93ZWQobmFtZSkpOwotICAgIGlmIChlbGVtZW50RGF0
YSgpKSB7CisgICAgaWYgKGhhc0VsZW1lbnREYXRhKCkpIHsKICAgICAgICAgaWYgKGNvbnN0IEF0
dHJpYnV0ZSogYXR0cmlidXRlID0gZ2V0QXR0cmlidXRlSXRlbShuYW1lKSkKICAgICAgICAgICAg
IHJldHVybiBhdHRyaWJ1dGUtPnZhbHVlKCk7CiAgICAgfQpAQCAtODI4LDcgKzg0MCw3IEBAIGlu
bGluZSBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmZhc3RHZXRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSkKIAogaW5saW5lIGJvb2wgRWxlbWVudDo6aGFzQXR0cmlidXRl
c1dpdGhvdXRVcGRhdGUoKSBjb25zdAogewotICAgIHJldHVybiBlbGVtZW50RGF0YSgpICYmICFl
bGVtZW50RGF0YSgpLT5pc0VtcHR5KCk7CisgICAgcmV0dXJuIGhhc0VsZW1lbnREYXRhKCkgJiYg
IWVsZW1lbnREYXRhKCktPmlzRW1wdHkoKTsKIH0KIAogaW5saW5lIGNvbnN0IEF0b21pY1N0cmlu
ZyYgRWxlbWVudDo6aWRGb3JTdHlsZVJlc29sdXRpb24oKSBjb25zdApAQCAtODY0LDQzICs4NzYs
NDMgQEAgaW5saW5lIHZvaWQgRWxlbWVudDo6c2V0SWRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKIGlubGluZSBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBFbGVtZW50OjpjbGFz
c05hbWVzKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzQ2xhc3MoKSk7Ci0gICAgQVNTRVJUKGVs
ZW1lbnREYXRhKCkpOworICAgIEFTU0VSVChoYXNFbGVtZW50RGF0YSgpKTsKICAgICByZXR1cm4g
ZWxlbWVudERhdGEoKS0+Y2xhc3NOYW1lcygpOwogfQogCiBpbmxpbmUgc2l6ZV90IEVsZW1lbnQ6
OmF0dHJpYnV0ZUNvdW50KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoZWxlbWVudERhdGEoKSk7Cisg
ICAgQVNTRVJUKGhhc0VsZW1lbnREYXRhKCkpOwogICAgIHJldHVybiBlbGVtZW50RGF0YSgpLT5s
ZW5ndGgoKTsKIH0KIAogaW5saW5lIGNvbnN0IEF0dHJpYnV0ZSogRWxlbWVudDo6YXR0cmlidXRl
SXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKLSAgICBBU1NFUlQoZWxlbWVudERhdGEoKSk7
CisgICAgQVNTRVJUKGhhc0VsZW1lbnREYXRhKCkpOwogICAgIHJldHVybiBlbGVtZW50RGF0YSgp
LT5hdHRyaWJ1dGVJdGVtKGluZGV4KTsKIH0KIAogaW5saW5lIGNvbnN0IEF0dHJpYnV0ZSogRWxl
bWVudDo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAog
ewotICAgIEFTU0VSVChlbGVtZW50RGF0YSgpKTsKKyAgICBBU1NFUlQoaGFzRWxlbWVudERhdGEo
KSk7CiAgICAgcmV0dXJuIGVsZW1lbnREYXRhKCktPmdldEF0dHJpYnV0ZUl0ZW0obmFtZSk7CiB9
CiAKIGlubGluZSBib29sIEVsZW1lbnQ6Omhhc0lEKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZWxl
bWVudERhdGEoKSAmJiBlbGVtZW50RGF0YSgpLT5oYXNJRCgpOworICAgIHJldHVybiBoYXNFbGVt
ZW50RGF0YSgpICYmIGVsZW1lbnREYXRhKCktPmhhc0lEKCk7CiB9CiAKIGlubGluZSBib29sIEVs
ZW1lbnQ6Omhhc0NsYXNzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZWxlbWVudERhdGEoKSAmJiBl
bGVtZW50RGF0YSgpLT5oYXNDbGFzcygpOworICAgIHJldHVybiBoYXNFbGVtZW50RGF0YSgpICYm
IGVsZW1lbnREYXRhKCktPmhhc0NsYXNzKCk7CiB9CiAKIGlubGluZSBVbmlxdWVFbGVtZW50RGF0
YSogRWxlbWVudDo6ZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKQogewotICAgIGlmICghZWxlbWVu
dERhdGEoKSB8fCAhZWxlbWVudERhdGEoKS0+aXNVbmlxdWUoKSkKKyAgICBpZiAoIWhhc0VsZW1l
bnREYXRhKCkgfHwgIWVsZW1lbnREYXRhKCktPmlzVW5pcXVlKCkpCiAgICAgICAgIGNyZWF0ZVVu
aXF1ZUVsZW1lbnREYXRhKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFVuaXF1ZUVsZW1lbnRE
YXRhKj4obV9lbGVtZW50RGF0YS5nZXQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFVuaXF1
ZUVsZW1lbnREYXRhKj4obV90YWdRTmFtZU9yRWxlbWVudERhdGEuZWxlbWVudERhdGEpOwogfQog
CiAvLyBQdXQgaGVyZSB0byBtYWtlIHRoZW0gaW5saW5lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggNTM4YTdm
Yi4uNDFlMWEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0yNzIsNiArMjcyLDkgQEAgcHVibGljOgogICAg
IGJvb2wgaGFzU3ludGhldGljQXR0ckNoaWxkTm9kZXMoKSBjb25zdCB7IHJldHVybiBnZXRGbGFn
KEhhc1N5bnRoZXRpY0F0dHJDaGlsZE5vZGVzRmxhZyk7IH0KICAgICB2b2lkIHNldEhhc1N5bnRo
ZXRpY0F0dHJDaGlsZE5vZGVzKGJvb2wgZmxhZykgeyBzZXRGbGFnKGZsYWcsIEhhc1N5bnRoZXRp
Y0F0dHJDaGlsZE5vZGVzRmxhZyk7IH0KIAorICAgIGJvb2wgaGFzRWxlbWVudERhdGEoKSBjb25z
dCB7IHJldHVybiBnZXRGbGFnKEhhc0VsZW1lbnREYXRhRmxhZyk7IH0KKyAgICB2b2lkIHNldEhh
c0VsZW1lbnREYXRhKGJvb2wgZmxhZykgeyBzZXRGbGFnKGZsYWcsIEhhc0VsZW1lbnREYXRhRmxh
Zyk7IH0KKwogICAgIC8vIElmIHRoaXMgbm9kZSBpcyBpbiBhIHNoYWRvdyB0cmVlLCByZXR1cm5z
IGl0cyBzaGFkb3cgaG9zdC4gT3RoZXJ3aXNlLCByZXR1cm5zIDAuCiAgICAgRWxlbWVudCogc2hh
ZG93SG9zdCgpIGNvbnN0OwogICAgIC8vIElmIHRoaXMgbm9kZSBpcyBpbiBhIHNoYWRvdyB0cmVl
LCByZXR1cm5zIGl0cyBzaGFkb3cgaG9zdC4gT3RoZXJ3aXNlLCByZXR1cm5zIHRoaXMuCkBAIC03
MzMsMTEgKzczNiwxMiBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAgIE5lZWRzU2hhZG93VHJl
ZVdhbGtlckZsYWcgPSAxIDw8IDI1LAogICAgICAgICBJc0luU2hhZG93VHJlZUZsYWcgPSAxIDw8
IDI2LAorICAgICAgICBIYXNFbGVtZW50RGF0YUZsYWcgPSAxIDw8IDI3LAogCiAgICAgICAgIERl
ZmF1bHROb2RlRmxhZ3MgPSBJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZwogICAgIH07CiAK
LSAgICAvLyA1IGJpdHMgcmVtYWluaW5nCisgICAgLy8gNCBiaXRzIHJlbWFpbmluZwogCiAgICAg
Ym9vbCBnZXRGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IHJldHVybiBtX25vZGVGbGFncyAm
IG1hc2s7IH0KICAgICB2b2lkIHNldEZsYWcoYm9vbCBmLCBOb2RlRmxhZ3MgbWFzaykgY29uc3Qg
eyBtX25vZGVGbGFncyA9IChtX25vZGVGbGFncyAmIH5tYXNrKSB8ICgtKGludDMyX3QpZiAmIG1h
c2spOyB9IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>