<?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>13592</bug_id>
          
          <creation_ts>2007-05-05 03:01:14 -0700</creation_ts>
          <short_desc>parseMappedAttribute inconsistency</short_desc>
          <delta_ts>2007-05-05 04:15:24 -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>SVG</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Rob Buis">rwlbuis</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>10868</commentid>
    <comment_count>0</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-05-05 03:01:14 -0700</bug_when>
    <thetext>parseMappedAttribute a lot of the time sets a local var to get the attribute value. In a lot of cases, as shown by the coverage results, this value is not used at all. This is very clear here:

http://www.openembedded.org/~zecke/coverage/webkit/mac/__WebCore__ksvg2__svg__SVGZoomAndPan.cpp.html

Also half the time here the value is not used:

http://www.openembedded.org/~zecke/coverage/webkit/mac/__WebCore__ksvg2__svg__SVGLinearGradientElement.cpp.html

Even though a compiler may be able to optimize the local var away, I think it is better to make it clear and be consistent with html code here too. Patch coming up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>10870</commentid>
    <comment_count>1</comment_count>
      <attachid>14350</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-05-05 03:40:38 -0700</bug_when>
    <thetext>Created attachment 14350
First  attempt

Should be straightforward patch. Would be nice if somebody could benchmark what the change brings us :)
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>10872</commentid>
    <comment_count>2</comment_count>
      <attachid>14350</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2007-05-05 03:58:34 -0700</bug_when>
    <thetext>Comment on attachment 14350
First  attempt

*SVGAnimateMotionElement::parseMappedAttribute

I&apos;d lift add const String&amp; value = attr-value() after the first name check.  It seem icky to query multiple times.

*SVGAnimateTransformElement::parseMappedAttribute
I don&apos;t think this gains anything.

*SVGAnimationElement::parseMappedAttribute
in those cases where you access attr-&gt;value() multiple times i think you should just declare a var.  eg. the attributeTypeAttr case.

*SVGCircleElement::parseMappedAttribute
*SVGClipPathElement::parseMappedAttribute
*SVGCursorElement::parseMappedAttribute
*SVGEllipseElement::parseMappedAttribute
I&apos;d consider a local const&amp; to hold the name, but otherwise looks good

*SVGExternalResourcesRequired::parseMappedAttribute
looks good

*SVGGradientElement::parseMappedAttribute
local for the attribute name, and maybe use locals in those branches that query the value multiple times.

*SVGImageElement::parseMappedAttribute
*SVGLineElement::parseMappedAttribute
*SVGLinearGradientElement::parseMappedAttribute
*SVGMarkerElement::parseMappedAttribute
*SVGMaskElement::parseMappedAttribute
*SVGPathElement::parseMappedAttribute
local for the name again

*SVGPatternElement::parseMappedAttribute
local for name, local for value on those branches that access the value multiple times

*SVGRadialGradientElement::parseMappedAttribute
*SVGRectElement::parseMappedAttribute
local for the name

*SVGSVGElement::parseMappedAttribute
local for name, local for value those places it&apos;s used multiple times

*SVGScriptElement::parseMappedAttribute
ooh, good *and* fixed indenting

*SVGStopElement::parseMappedAttribute
*SVGTests::parseMappedAttribute
*SVGTextContentElement::parseMappedAttribute
*SVGTextPositioningElement::parseMappedAttribute
*SVGUseElement::parseMappedAttribute
local for name if it&apos;s used multiple imes

*SVGViewElement::parseMappedAttribute
good

*SVGZoomAndPan::parseMappedAttribute
local for value when it&apos;s used multiple times</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>10873</commentid>
    <comment_count>3</comment_count>
      <attachid>14350</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2007-05-05 04:04:54 -0700</bug_when>
    <thetext>Comment on attachment 14350
First  attempt

Ignore last comment, seems like this patch matches the style elsewhere</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>10874</commentid>
    <comment_count>4</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-05-05 04:15:24 -0700</bug_when>
    <thetext>Landed in r21272.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14350</attachid>
            <date>2007-05-05 03:40:38 -0700</date>
            <delta_ts>2007-05-05 04:04:54 -0700</delta_ts>
            <desc>First  attempt</desc>
            <filename>13592.diff</filename>
            <type>text/plain</type>
            <size>50063</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMTI3MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzAgQEAKKzIwMDctMDUtMDUgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTkyCisgICAgICAgIHBhcnNlTWFwcGVkQXR0
cmlidXRlIGluY29uc2lzdGVuY3kKKworICAgICAgICBEbyBub3QgdXNlIGxvY2FsIHZhcnMgaW4g
cGFyc2VNYXBwZWRBdHRyaWJ1dGUgZm9yIGF0dHIgbmFtZSBhbmQgdmFsdWUuCisKKyAgICAgICAg
KiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6Cisg
ICAgICAgICoga3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQ2lyY2xlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGtz
dmcyL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xp
cFBhdGhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3Zn
L1NWR0N1cnNvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdFbGxpcHNl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHR3Jh
ZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdJbWFnZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToK
KyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdNYXJrZXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICog
a3N2ZzIvc3ZnL1NWR01hc2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1Bh
dGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6cHJlc2VydmVBc3BlY3RS
YXRpb1N0cmluZyk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8u
aDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NW
R0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZH
U2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N0b3BFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0b3BFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1Rlc3RzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Rlc3RzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3Zn
L1NWR1RleHRDb250ZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29u
dGVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdWaWV3RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdab29tQW5kUGFuLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1pvb21BbmRQYW46OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKwogMjAw
Ny0wNS0wNSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEh5YXR0LgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVNb3Rp
b25FbGVtZW50LmNwcAkocmV2aXNpb24gMjEyNzEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdB
bmltYXRlTW90aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAv
KgogICAgIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgor
ICAgICAgICAgICAgICAoQykgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0CiAKQEAgLTczLDIxICs3NCwxOSBA
QCBib29sIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpoYXNWYWxpZFRhCiAKIHZvaWQgU1ZHQW5p
bWF0ZU1vdGlvbkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSog
YXR0cikKIHsKLSAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lID0gYXR0ci0+bmFtZSgpOwot
ICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwotICAgIGlmIChuYW1lID09
IFNWR05hbWVzOjpyb3RhdGVBdHRyKSB7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSAiYXV0byIpCisg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cm90YXRlQXR0cikgeworICAgICAgICBp
ZiAoYXR0ci0+dmFsdWUoKSA9PSAiYXV0byIpCiAgICAgICAgICAgICBtX3JvdGF0ZU1vZGUgPSBB
dXRvTW9kZTsKLSAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gImF1dG8tcmV2ZXJzZSIpCisgICAg
ICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gImF1dG8tcmV2ZXJzZSIpCiAgICAgICAgICAg
ICBtX3JvdGF0ZU1vZGUgPSBBdXRvUmV2ZXJzZU1vZGU7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgbV9yb3RhdGVNb2RlID0gQW5nbGVNb2RlOwotICAgICAgICAgICAgbV9hbmdsZSA9IHZh
bHVlLnRvRG91YmxlKCk7CisgICAgICAgICAgICBtX2FuZ2xlID0gYXR0ci0+dmFsdWUoKS50b0Rv
dWJsZSgpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjprZXlQ
b2ludHNBdHRyKSB7CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Omtl
eVBvaW50c0F0dHIpIHsKICAgICAgICAgbV9rZXlQb2ludHMuY2xlYXIoKTsKLSAgICAgICAgcGFy
c2VLZXlOdW1iZXJzKG1fa2V5UG9pbnRzLCB2YWx1ZSk7Ci0gICAgfSBlbHNlIGlmIChuYW1lID09
IFNWR05hbWVzOjpkQXR0cikgeworICAgICAgICBwYXJzZUtleU51bWJlcnMobV9rZXlQb2ludHMs
IGF0dHItPnZhbHVlKCkpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
OjpkQXR0cikgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBkdW1teSBvYmplY3QgaXMgbmVjZXNz
YXJ5IHVudGlsIHBhdGggcGFyc2luZyBpcyB1bnRhbmdsZWQgZnJvbSBTVkdQYXRoRWxlbWVudCwg
c2VlIGJ1ZyAxMjEyMgogICAgICAgICBSZWZQdHI8U1ZHUGF0aEVsZW1lbnQ+IGR1bW15UGF0aCA9
IG5ldyBTVkdQYXRoRWxlbWVudChTVkdOYW1lczo6cGF0aFRhZywgZG9jdW1lbnQoKSk7CiAgICAg
ICAgIGlmIChkdW1teVBhdGgtPnBhcnNlU1ZHKGF0dHItPnZhbHVlKCksIHRydWUpKQpJbmRleDog
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAko
cmV2aXNpb24gMjEyNzEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3Jt
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4K
LSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KICAgICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Vi
a2l0Lm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAt
NTgsMTYgKzU4LDE1IEBAIGJvb2wgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6Omhhc1ZhbGkK
IHZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
Ojp0eXBlQXR0cikgewotICAgICAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUo
KTsKLSAgICAgICAgaWYgKHZhbHVlID09ICJ0cmFuc2xhdGUiKQorICAgICAgICBpZiAoYXR0ci0+
dmFsdWUoKSA9PSAidHJhbnNsYXRlIikKICAgICAgICAgICAgIG1fdHlwZSA9IFNWR1RyYW5zZm9y
bTo6U1ZHX1RSQU5TRk9STV9UUkFOU0xBVEU7Ci0gICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJz
Y2FsZSIpCisgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gInNjYWxlIikKICAgICAg
ICAgICAgIG1fdHlwZSA9IFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9TQ0FMRTsKLSAgICAg
ICAgZWxzZSBpZiAodmFsdWUgPT0gInJvdGF0ZSIpCisgICAgICAgIGVsc2UgaWYgKGF0dHItPnZh
bHVlKCkgPT0gInJvdGF0ZSIpCiAgICAgICAgICAgICBtX3R5cGUgPSBTVkdUcmFuc2Zvcm06OlNW
R19UUkFOU0ZPUk1fUk9UQVRFOwotICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSAic2tld1giKQor
ICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1ZSgpID09ICJza2V3WCIpCiAgICAgICAgICAgICBt
X3R5cGUgPSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fU0tFV1g7Ci0gICAgICAgIGVsc2Ug
aWYgKHZhbHVlID09ICJza2V3WSIpCisgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0g
InNrZXdZIikKICAgICAgICAgICAgIG1fdHlwZSA9IFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9S
TV9TS0VXWTsKICAgICB9IGVsc2UKICAgICAgICAgU1ZHQW5pbWF0aW9uRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoYXR0cik7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRp
b25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRp
b25FbGVtZW50LmNwcAkocmV2aXNpb24gMjEyNzEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdB
bmltYXRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
ICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBr
ZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgogICAgIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8
ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9q
ZWN0CkBAIC0yNDIsODYgKzI0Miw4NSBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnBhcnNl
QmVnaW5PckVuCiAKIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewotICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBh
dHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkubWF0Y2hlcyhYTGlua05hbWVzOjpo
cmVmQXR0cikpCi0gICAgICAgIG1faHJlZiA9IHZhbHVlOworICAgICAgICBtX2hyZWYgPSBhdHRy
LT52YWx1ZSgpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6YXR0cmli
dXRlTmFtZUF0dHIpCi0gICAgICAgIG1fYXR0cmlidXRlTmFtZSA9IHZhbHVlOworICAgICAgICBt
X2F0dHJpYnV0ZU5hbWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6YXR0cmlidXRlVHlwZUF0dHIpIHsKLSAgICAgICAgaWYgKHZhbHVlID09
ICJDU1MiKQorICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiQ1NTIikKICAgICAgICAgICAg
IG1fYXR0cmlidXRlVHlwZSA9IEFUVFJJQlVURVRZUEVfQ1NTOwotICAgICAgICBlbHNlIGlmICh2
YWx1ZSA9PSAiWE1MIikKKyAgICAgICAgZWxzZSBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiWE1MIikK
ICAgICAgICAgICAgIG1fYXR0cmlidXRlVHlwZSA9IEFUVFJJQlVURVRZUEVfWE1MOwotICAgICAg
ICBlbHNlIGlmICh2YWx1ZSA9PSAiYXV0byIpCisgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVl
KCkgPT0gImF1dG8iKQogICAgICAgICAgICAgbV9hdHRyaWJ1dGVUeXBlID0gQVRUUklCVVRFVFlQ
RV9BVVRPOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpiZWdpbkF0
dHIpCi0gICAgICAgIHBhcnNlQmVnaW5PckVuZFZhbHVlKG1fYmVnaW4sIHZhbHVlKTsKKyAgICAg
ICAgcGFyc2VCZWdpbk9yRW5kVmFsdWUobV9iZWdpbiwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjplbmRBdHRyKQotICAgICAgICBwYXJzZUJl
Z2luT3JFbmRWYWx1ZShtX2VuZCwgdmFsdWUpOworICAgICAgICBwYXJzZUJlZ2luT3JFbmRWYWx1
ZShtX2VuZCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjpkdXJBdHRyKSB7Ci0gICAgICAgIG1fc2ltcGxlRHVyYXRpb24gPSBwYXJzZUNsb2Nr
VmFsdWUodmFsdWUpOworICAgICAgICBtX3NpbXBsZUR1cmF0aW9uID0gcGFyc2VDbG9ja1ZhbHVl
KGF0dHItPnZhbHVlKCkpOwogICAgICAgICBpZiAoIWlzSW5kZWZpbml0ZShtX3NpbXBsZUR1cmF0
aW9uKSkKICAgICAgICAgICAgIG1fc2ltcGxlRHVyYXRpb24gKj0gMTAwMC4wOwogICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjptaW5BdHRyKSB7Ci0gICAgICAgIG1fbWlu
ID0gcGFyc2VDbG9ja1ZhbHVlKHZhbHVlKTsKKyAgICAgICAgbV9taW4gPSBwYXJzZUNsb2NrVmFs
dWUoYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIGlmICghaXNJbmRlZmluaXRlKG1fbWluKSkKICAg
ICAgICAgICAgIG1fbWluICo9IDEwMDAuMDsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6bWF4QXR0cikgewotICAgICAgICBtX21heCA9IHBhcnNlQ2xvY2tWYWx1ZSh2
YWx1ZSk7CisgICAgICAgIG1fbWF4ID0gcGFyc2VDbG9ja1ZhbHVlKGF0dHItPnZhbHVlKCkpOwog
ICAgICAgICBpZiAoIWlzSW5kZWZpbml0ZShtX21heCkpCiAgICAgICAgICAgICBtX21heCAqPSAx
MDAwLjA7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJlc3RhcnRB
dHRyKSB7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSAid2hlbk5vdEFjdGl2ZSIpCisgICAgICAgIGlm
IChhdHRyLT52YWx1ZSgpID09ICJ3aGVuTm90QWN0aXZlIikKICAgICAgICAgICAgIG1fcmVzdGFy
dCA9IFJFU1RBUlRfV0hFTk5PVEFDVElWRTsKLSAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gIm5l
dmVyIikKKyAgICAgICAgZWxzZSBpZiAoYXR0ci0+dmFsdWUoKSA9PSAibmV2ZXIiKQogICAgICAg
ICAgICAgbV9yZXN0YXJ0ID0gUkVTVEFSVF9ORVZFUjsKLSAgICAgICAgZWxzZSBpZiAodmFsdWUg
PT0gImFsd2F5cyIpCisgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gImFsd2F5cyIp
CiAgICAgICAgICAgICBtX3Jlc3RhcnQgPSBSRVNUQVJUX0FMV0FZUzsKICAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cmVwZWF0Q291bnRBdHRyKSB7Ci0gICAgICAgIGlm
ICh2YWx1ZSA9PSAiaW5kZWZpbml0ZSIpCisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpID09ICJp
bmRlZmluaXRlIikKICAgICAgICAgICAgIG1fcmVwZWF0Q291bnQgPSBEQkxfTUFYOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3JlcGVhdENvdW50ID0gdmFsdWUudG9Eb3VibGUoKTsKKyAg
ICAgICAgICAgIG1fcmVwZWF0Q291bnQgPSBhdHRyLT52YWx1ZSgpLnRvRG91YmxlKCk7CiAgICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJlcGVhdER1ckF0dHIpCi0gICAg
ICAgIG1fcmVwZWF0RHVyID0gdmFsdWU7CisgICAgICAgIG1fcmVwZWF0RHVyID0gYXR0ci0+dmFs
dWUoKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmZpbGxBdHRyKSB7
Ci0gICAgICAgIGlmICh2YWx1ZSA9PSAiZnJlZXplIikKKyAgICAgICAgaWYgKGF0dHItPnZhbHVl
KCkgPT0gImZyZWV6ZSIpCiAgICAgICAgICAgICBtX2ZpbGwgPSBGSUxMX0ZSRUVaRTsKLSAgICAg
ICAgZWxzZSBpZiAodmFsdWUgPT0gInJlbW92ZSIpCisgICAgICAgIGVsc2UgaWYgKGF0dHItPnZh
bHVlKCkgPT0gInJlbW92ZSIpCiAgICAgICAgICAgICBtX2ZpbGwgPSBGSUxMX1JFTU9WRTsKICAg
ICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Y2FsY01vZGVBdHRyKSB7Ci0g
ICAgICAgIGlmICh2YWx1ZSA9PSAiZGlzY3JldGUiKQorICAgICAgICBpZiAoYXR0ci0+dmFsdWUo
KSA9PSAiZGlzY3JldGUiKQogICAgICAgICAgICAgbV9jYWxjTW9kZSA9IENBTENNT0RFX0RJU0NS
RVRFOwotICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSAibGluZWFyIikKKyAgICAgICAgZWxzZSBp
ZiAoYXR0ci0+dmFsdWUoKSA9PSAibGluZWFyIikKICAgICAgICAgICAgIG1fY2FsY01vZGUgPSBD
QUxDTU9ERV9MSU5FQVI7Ci0gICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJzcGxpbmUiKQorICAg
ICAgICBlbHNlIGlmIChhdHRyLT52YWx1ZSgpID09ICJzcGxpbmUiKQogICAgICAgICAgICAgbV9j
YWxjTW9kZSA9IENBTENNT0RFX1NQTElORTsKLSAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gInBh
Y2VkIikKKyAgICAgICAgZWxzZSBpZiAoYXR0ci0+dmFsdWUoKSA9PSAicGFjZWQiKQogICAgICAg
ICAgICAgbV9jYWxjTW9kZSA9IENBTENNT0RFX1BBQ0VEOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IFNWR05hbWVzOjp2YWx1ZXNBdHRyKSB7CiAgICAgICAgIG1fdmFsdWVzLmNsZWFy
KCk7Ci0gICAgICAgIHBhcnNlVmFsdWVzKG1fdmFsdWVzLCB2YWx1ZSk7CisgICAgICAgIHBhcnNl
VmFsdWVzKG1fdmFsdWVzLCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBTVkdOYW1lczo6a2V5VGltZXNBdHRyKSB7CiAgICAgICAgIG1fa2V5VGltZXMuY2xl
YXIoKTsKLSAgICAgICAgcGFyc2VLZXlOdW1iZXJzKG1fa2V5VGltZXMsIHZhbHVlKTsKKyAgICAg
ICAgcGFyc2VLZXlOdW1iZXJzKG1fa2V5VGltZXMsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjprZXlTcGxpbmVzQXR0cikgewogICAgICAg
ICBtX2tleVNwbGluZXMuY2xlYXIoKTsKLSAgICAgICAgcGFyc2VLZXlTcGxpbmVzKG1fa2V5U3Bs
aW5lcywgdmFsdWUpOworICAgICAgICBwYXJzZUtleVNwbGluZXMobV9rZXlTcGxpbmVzLCBhdHRy
LT52YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6ZnJv
bUF0dHIpCi0gICAgICAgIG1fZnJvbSA9IHZhbHVlOworICAgICAgICBtX2Zyb20gPSBhdHRyLT52
YWx1ZSgpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6dG9BdHRyKQot
ICAgICAgICBtX3RvID0gdmFsdWU7CisgICAgICAgIG1fdG8gPSBhdHRyLT52YWx1ZSgpOwogICAg
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6YnlBdHRyKQotICAgICAgICBtX2J5
ID0gdmFsdWU7CisgICAgICAgIG1fYnkgPSBhdHRyLT52YWx1ZSgpOwogICAgIGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6YWRkaXRpdmVBdHRyKSB7Ci0gICAgICAgIGlmICh2YWx1
ZSA9PSAic3VtIikKKyAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkgPT0gInN1bSIpCiAgICAgICAg
ICAgICBtX2FkZGl0aXZlID0gQURESVRJVkVfU1VNOwotICAgICAgICBlbHNlIGlmICh2YWx1ZSA9
PSAicmVwbGFjZSIpCisgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gInJlcGxhY2Ui
KQogICAgICAgICAgICAgbV9hZGRpdGl2ZSA9IEFERElUSVZFX1JFUExBQ0U7CiAgICAgfSBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmFjY3VtdWxhdGVBdHRyKSB7Ci0gICAgICAg
IGlmICh2YWx1ZSA9PSAic3VtIikKKyAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkgPT0gInN1bSIp
CiAgICAgICAgICAgICBtX2FjY3VtdWxhdGUgPSBBQ0NVTVVMQVRFX1NVTTsKLSAgICAgICAgZWxz
ZSBpZiAodmFsdWUgPT0gIm5vbmUiKQorICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1ZSgpID09
ICJub25lIikKICAgICAgICAgICAgIG1fYWNjdW11bGF0ZSA9IEFDQ1VNVUxBVEVfTk9ORTsKICAg
ICB9IGVsc2UgewogICAgICAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0
dHIpKQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHJldmlzaW9u
IDIxMjcxKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAgICAgICAg
ICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICAg
ICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC01MSwx
MyArNTEsMTIgQEAgQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xlRQogCiB2
b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0
ZSogYXR0cikKIHsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUo
KTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpjeEF0dHIpCi0gICAgICAgIHNl
dEN4QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7ICAg
ICAgIAorICAgICAgICBzZXRDeEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdp
ZHRoLCBhdHRyLT52YWx1ZSgpKSk7ICAgICAgIAogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6Y3lBdHRyKQotICAgICAgICBzZXRDeUJhc2VWYWx1ZShTVkdMZW5ndGgodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKKyAgICAgICAgc2V0Q3lCYXNlVmFsdWUoU1ZH
TGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIGF0dHItPnZhbHVlKCkpKTsKICAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJBdHRyKSB7Ci0gICAgICAgIHNldFJCYXNl
VmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVPdGhlciwgdmFsdWUpKTsKKyAgICAgICAg
c2V0UkJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZU90aGVyLCBhdHRyLT52YWx1
ZSgpKSk7CiAgICAgICAgIGlmIChyKCkudmFsdWUoKSA8IDAuMCkKICAgICAgICAgICAgIGRvY3Vt
ZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVwb3J0RXJyb3IoIkEgbmVnYXRpdmUgdmFs
dWUgZm9yIGNpcmNsZSA8cj4gaXMgbm90IGFsbG93ZWQiKTsKICAgICB9IGVsc2UgewpJbmRleDog
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMTI3MSkK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAgICAgICAgICAgICAg
ICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICAgICAgICAg
ICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAog
ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC01MCwxMSArNTAs
MTAgQEAgQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2xpcFBhdAogCiB2b2lkIFNW
R0NsaXBQYXRoRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBh
dHRyKQogewotICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlm
IChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyKSB7Ci0gICAgICAg
IGlmICh2YWx1ZSA9PSAidXNlclNwYWNlT25Vc2UiKQorICAgICAgICBpZiAoYXR0ci0+dmFsdWUo
KSA9PSAidXNlclNwYWNlT25Vc2UiKQogICAgICAgICAgICAgc2V0Q2xpcFBhdGhVbml0c0Jhc2VW
YWx1ZShTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpOwotICAgICAg
ICBlbHNlIGlmICh2YWx1ZSA9PSAib2JqZWN0Qm91bmRpbmdCb3giKQorICAgICAgICBlbHNlIGlm
IChhdHRyLT52YWx1ZSgpID09ICJvYmplY3RCb3VuZGluZ0JveCIpCiAgICAgICAgICAgICBzZXRD
bGlwUGF0aFVuaXRzQmFzZVZhbHVlKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RC
T1VORElOR0JPWCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKFNWR1Rlc3RzOjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShhdHRyKSkKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0N1cnNvckVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyMTI3MSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0N1cnNvckVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5v
cmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2pl
Y3QKIApAQCAtNTcsMTEgKzU3LDEwIEBAIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0N1cnNvckUKIAogdm9pZCBTVkdDdXJzb3JFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShN
YXBwZWRBdHRyaWJ1dGUgKmF0dHIpCiB7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9
IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIp
Ci0gICAgICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVuZ3RoKDAsIExlbmd0aE1vZGVXaWR0aCwgdmFs
dWUpKTsKKyAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGgoMCwgTGVuZ3RoTW9kZVdpZHRo
LCBhdHRyLT52YWx1ZSgpKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
Ojp5QXR0cikKLSAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgoMCwgTGVuZ3RoTW9kZUhl
aWdodCwgdmFsdWUpKTsKKyAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgoMCwgTGVuZ3Ro
TW9kZUhlaWdodCwgYXR0ci0+dmFsdWUoKSkpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoU1ZH
VGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuOwpJ
bmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjEy
NzEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KLSAgICAgICAgICAgICAg
ICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICAgICAgICAg
ICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAog
ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC01NCwxNyArNTQs
MTYgQEAgQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRWxsaXBzZQogCiB2b2lkIFNW
R0VsbGlwc2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0
dHIpCiB7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Y3hBdHRyKQotICAgICAgICBzZXRDeEJh
c2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOworICAgICAg
ICBzZXRDeEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCBhdHRyLT52
YWx1ZSgpKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpjeUF0dHIp
Ci0gICAgICAgIHNldEN5QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0
LCB2YWx1ZSkpOworICAgICAgICBzZXRDeUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3Ro
TW9kZUhlaWdodCwgYXR0ci0+dmFsdWUoKSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6cnhBdHRyKSB7Ci0gICAgICAgIHNldFJ4QmFzZVZhbHVlKFNWR0xlbmd0aCh0
aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CisgICAgICAgIHNldFJ4QmFzZVZhbHVlKFNW
R0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIGF0dHItPnZhbHVlKCkpKTsKICAgICAgICAg
aWYgKHJ4KCkudmFsdWUoKSA8IDAuMCkKICAgICAgICAgICAgIGRvY3VtZW50KCktPmFjY2Vzc1NW
R0V4dGVuc2lvbnMoKS0+cmVwb3J0RXJyb3IoIkEgbmVnYXRpdmUgdmFsdWUgZm9yIGVsbGlwc2Ug
PHJ4PiBpcyBub3QgYWxsb3dlZCIpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjpyeUF0dHIpIHsKLSAgICAgICAgc2V0UnlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMs
IExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CisgICAgICAgIHNldFJ5QmFzZVZhbHVlKFNWR0xl
bmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCBhdHRyLT52YWx1ZSgpKSk7CiAgICAgICAgIGlm
IChyeSgpLnZhbHVlKCkgPCAwLjApCiAgICAgICAgICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdF
eHRlbnNpb25zKCktPnJlcG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBlbGxpcHNlIDxy
eT4gaXMgbm90IGFsbG93ZWQiKTsKICAgICB9IGVsc2UgewpJbmRleDogV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAJKHJldmlzaW9uIDIx
MjcxKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KLSAgICAgICAg
ICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICAgICAgICAg
ICAgICAgIDIwMDQsIDIwMDUsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC00Myw5ICs0Myw4IEBAIEFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJVEhfQ09OVEUKIAogYm9vbCBTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUq
IGF0dHIpCiB7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7
CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZEF0dHIpIHsKLSAgICAgICAgc2V0RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEJhc2VWYWx1
ZSh2YWx1ZSA9PSAidHJ1ZSIpOworICAgICAgICBzZXRFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
QmFzZVZhbHVlKGF0dHItPnZhbHVlKCkgPT0gInRydWUiKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIxMjcxKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHR3JhZGllbnRFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0
CiAKQEAgLTU5LDExICs1OSwxMCBAQCBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdH
cmFkaWVuCiAKIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShN
YXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7Ci0gICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHIt
PnZhbHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Z3JhZGllbnRVbml0
c0F0dHIpIHsKLSAgICAgICAgaWYgKHZhbHVlID09ICJ1c2VyU3BhY2VPblVzZSIpCisgICAgICAg
IGlmIChhdHRyLT52YWx1ZSgpID09ICJ1c2VyU3BhY2VPblVzZSIpCiAgICAgICAgICAgICBzZXRH
cmFkaWVudFVuaXRzQmFzZVZhbHVlKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BB
Q0VPTlVTRSk7Ci0gICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJvYmplY3RCb3VuZGluZ0JveCIp
CisgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gIm9iamVjdEJvdW5kaW5nQm94IikK
ICAgICAgICAgICAgIHNldEdyYWRpZW50VW5pdHNCYXNlVmFsdWUoU1ZHVW5pdFR5cGVzOjpTVkdf
VU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyKSB7CiAgICAgICAgIFNWR1RyYW5z
Zm9ybUxpc3QqIGdyYWRpZW50VHJhbnNmb3JtcyA9IGdyYWRpZW50VHJhbnNmb3JtQmFzZVZhbHVl
KCk7CkBAIC03MiwxMSArNzEsMTEgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cgogICAgICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm1zLT5jbGVhcihlYyk7CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6c3ByZWFkTWV0
aG9kQXR0cikgewotICAgICAgICBpZiAodmFsdWUgPT0gInJlZmxlY3QiKQorICAgICAgICBpZiAo
YXR0ci0+dmFsdWUoKSA9PSAicmVmbGVjdCIpCiAgICAgICAgICAgICBzZXRTcHJlYWRNZXRob2RC
YXNlVmFsdWUoU1ZHX1NQUkVBRE1FVEhPRF9SRUZMRUNUKTsKLSAgICAgICAgZWxzZSBpZiAodmFs
dWUgPT0gInJlcGVhdCIpCisgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gInJlcGVh
dCIpCiAgICAgICAgICAgICBzZXRTcHJlYWRNZXRob2RCYXNlVmFsdWUoU1ZHX1NQUkVBRE1FVEhP
RF9SRVBFQVQpOwotICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSAicGFkIikKKyAgICAgICAgZWxz
ZSBpZiAoYXR0ci0+dmFsdWUoKSA9PSAicGFkIikKICAgICAgICAgICAgIHNldFNwcmVhZE1ldGhv
ZEJhc2VWYWx1ZShTVkdfU1BSRUFETUVUSE9EX1BBRCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
aWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIxMjcxKQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMg
WmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAw
NSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICAgICAgICAgICAgICAg
ICAgMjAwNiBBbGV4YW5kZXIgS2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgogCiAgICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC02NSwyMSArNjUsMjAgQEAgQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHSW1hZ2VFbAogCiB2b2lkIFNWR0ltYWdlRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewotICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5u
YW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0
aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CisgICAgICAgIHNldFhCYXNlVmFsdWUo
U1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgYXR0ci0+dmFsdWUoKSkpOwogICAgIGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHNldFlCYXNl
VmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CisgICAgICAg
IHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIGF0dHItPnZh
bHVlKCkpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnByZXNlcnZl
QXNwZWN0UmF0aW9BdHRyKQotICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvQmFzZVZhbHVlKCkt
PnBhcnNlUHJlc2VydmVBc3BlY3RSYXRpbyh2YWx1ZSk7CisgICAgICAgIHByZXNlcnZlQXNwZWN0
UmF0aW9CYXNlVmFsdWUoKS0+cGFyc2VQcmVzZXJ2ZUFzcGVjdFJhdGlvKGF0dHItPnZhbHVlKCkp
OwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKSB7Ci0g
ICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgs
IHZhbHVlKSk7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU19QUk9QX1dJRFRILCB2
YWx1ZSk7CisgICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhN
b2RlV2lkdGgsIGF0dHItPnZhbHVlKCkpKTsKKyAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwg
Q1NTX1BST1BfV0lEVEgsIGF0dHItPnZhbHVlKCkpOwogICAgICAgICBpZiAod2lkdGgoKS52YWx1
ZSgpIDwgMC4wKQogICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygp
LT5yZXBvcnRFcnJvcigiQSBuZWdhdGl2ZSB2YWx1ZSBmb3IgaW1hZ2UgYXR0cmlidXRlIDx3aWR0
aD4gaXMgbm90IGFsbG93ZWQiKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdO
YW1lczo6aGVpZ2h0QXR0cikgewotICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3Ro
KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5
KGF0dHIsIENTU19QUk9QX0hFSUdIVCwgdmFsdWUpOworICAgICAgICBzZXRIZWlnaHRCYXNlVmFs
dWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIGF0dHItPnZhbHVlKCkpKTsKKyAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTX1BST1BfSEVJR0hULCBhdHRyLT52YWx1ZSgp
KTsKICAgICAgICAgaWYgKGhlaWdodCgpLnZhbHVlKCkgPCAwLjApCiAgICAgICAgICAgICBkb2N1
bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlcG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZh
bHVlIGZvciBpbWFnZSBhdHRyaWJ1dGUgPGhlaWdodD4gaXMgbm90IGFsbG93ZWQiKTsKICAgICB9
IGVsc2UgewpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAkocmV2aXNpb24g
MjEyNzEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KLSAgICAgICAgICAgICAg
ICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICAgICAgICAg
ICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAog
ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC01NCwxNSArNTQs
MTQgQEAgQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZUVsZQogCiB2b2lkIFNW
R0xpbmVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIp
CiB7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAg
aWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eDFBdHRyKQotICAgICAgICBzZXRYMUJhc2VW
YWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOworICAgICAgICBz
ZXRYMUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCBhdHRyLT52YWx1
ZSgpKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5MUF0dHIpCi0g
ICAgICAgIHNldFkxQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2
YWx1ZSkpOworICAgICAgICBzZXRZMUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9k
ZUhlaWdodCwgYXR0ci0+dmFsdWUoKSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBT
VkdOYW1lczo6eDJBdHRyKQotICAgICAgICBzZXRYMkJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywg
TGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOworICAgICAgICBzZXRYMkJhc2VWYWx1ZShTVkdMZW5n
dGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCBhdHRyLT52YWx1ZSgpKSk7CiAgICAgZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5MkF0dHIpCi0gICAgICAgIHNldFkyQmFzZVZhbHVl
KFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOworICAgICAgICBzZXRZ
MkJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgYXR0ci0+dmFsdWUo
KSkpOwogICAgIGVsc2UKICAgICB7CiAgICAgICAgIGlmIChTVkdUZXN0czo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoYXR0cikpCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDIxMjcxKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwg
MjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTU3LDE1ICs1NywxNCBAQCBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lYXJHCiAKIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7Ci0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0
dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eDFBdHRyKQotICAgICAgICBzZXRYMUJhc2VWYWx1ZShT
VkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOworICAgICAgICBzZXRYMUJh
c2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCBhdHRyLT52YWx1ZSgpKSk7
CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5MUF0dHIpCi0gICAgICAg
IHNldFkxQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkp
OworICAgICAgICBzZXRZMUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdo
dCwgYXR0ci0+dmFsdWUoKSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1l
czo6eDJBdHRyKQotICAgICAgICBzZXRYMkJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3Ro
TW9kZVdpZHRoLCB2YWx1ZSkpOworICAgICAgICBzZXRYMkJhc2VWYWx1ZShTVkdMZW5ndGgodGhp
cywgTGVuZ3RoTW9kZVdpZHRoLCBhdHRyLT52YWx1ZSgpKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IFNWR05hbWVzOjp5MkF0dHIpCi0gICAgICAgIHNldFkyQmFzZVZhbHVlKFNWR0xl
bmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOworICAgICAgICBzZXRZMkJhc2VW
YWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgYXR0ci0+dmFsdWUoKSkpOwog
ICAgIGVsc2UKICAgICAgICAgU1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShhdHRyKTsKIH0KSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMTI3MSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2pl
Y3QKIApAQCAtNjgsMjQgKzY4LDIzIEBAIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R01hcmtlckUKIAogdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShN
YXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9
IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6bWFya2Vy
VW5pdHNBdHRyKSB7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSAidXNlclNwYWNlT25Vc2UiKQorICAg
ICAgICBpZiAoYXR0ci0+dmFsdWUoKSA9PSAidXNlclNwYWNlT25Vc2UiKQogICAgICAgICAgICAg
c2V0TWFya2VyVW5pdHNCYXNlVmFsdWUoU1ZHX01BUktFUlVOSVRTX1VTRVJTUEFDRU9OVVNFKTsK
ICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cmVmWEF0dHIpCi0gICAg
ICAgIHNldFJlZlhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFs
dWUpKTsKKyAgICAgICAgc2V0UmVmWEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9k
ZVdpZHRoLCBhdHRyLT52YWx1ZSgpKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjpyZWZZQXR0cikKLSAgICAgICAgc2V0UmVmWUJhc2VWYWx1ZShTVkdMZW5ndGgodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKKyAgICAgICAgc2V0UmVmWUJhc2VWYWx1ZShT
VkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgYXR0ci0+dmFsdWUoKSkpOwogICAgIGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6bWFya2VyV2lkdGhBdHRyKQotICAgICAg
ICBzZXRNYXJrZXJXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRo
LCB2YWx1ZSkpOworICAgICAgICBzZXRNYXJrZXJXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhp
cywgTGVuZ3RoTW9kZVdpZHRoLCBhdHRyLT52YWx1ZSgpKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IFNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRyKQotICAgICAgICBzZXRNYXJrZXJI
ZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7
CisgICAgICAgIHNldE1hcmtlckhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3Ro
TW9kZUhlaWdodCwgYXR0ci0+dmFsdWUoKSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6b3JpZW50QXR0cikgewotICAgICAgICBpZiAodmFsdWUgPT0gImF1dG8iKQor
ICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiYXV0byIpCiAgICAgICAgICAgICBzZXRPcmll
bnRUb0F1dG8oKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBTVkdBbmdsZSogYW5nbGUg
PSBuZXcgU1ZHQW5nbGUoMCk7Ci0gICAgICAgICAgICBhbmdsZS0+c2V0VmFsdWVBc1N0cmluZyh2
YWx1ZSk7CisgICAgICAgICAgICBhbmdsZS0+c2V0VmFsdWVBc1N0cmluZyhhdHRyLT52YWx1ZSgp
KTsKICAgICAgICAgICAgIHNldE9yaWVudFRvQW5nbGUoYW5nbGUpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAJKHJldmlzaW9u
IDIxMjcxKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAg
ICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgICAgICAgICAg
ICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAg
ICAgICAgICAgICAgICAgICAyMDA1IEFsZXhhbmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+
CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTcyLDE1ICs3
MiwxNCBAQCBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlCiAKIHZvaWQg
U1ZHTWFza0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0
cikKIHsKLSAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAo
YXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgc2V0WEJhc2VWYWx1ZShT
VkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOworICAgICAgICBzZXRYQmFz
ZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIGF0dHItPnZhbHVlKCkpKTsK
ICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBz
ZXRZQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwor
ICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCBh
dHRyLT52YWx1ZSgpKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp3
aWR0aEF0dHIpCi0gICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5n
dGhNb2RlV2lkdGgsIHZhbHVlKSk7CisgICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0
aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIGF0dHItPnZhbHVlKCkpKTsKICAgICBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCi0gICAgICAgIHNldEhlaWdodEJh
c2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKKyAgICAg
ICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCBh
dHRyLT52YWx1ZSgpKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChTVkdVUklSZWZlcmVuY2U6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDog
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMjEyNzEpCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIw
MDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC0yNjgsMTQgKzI2OCwxMyBAQCB2b2lk
IFNWR1BhdGhFbGVtZW50OjpzdmdDbG9zZVBhdGgoKQogCiB2b2lkIFNWR1BhdGhFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7Ci0gICAgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6ZEF0dHIpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKICAgICAg
ICAgcGF0aFNlZ0xpc3QoKS0+Y2xlYXIoZWMpOwotICAgICAgICBpZiAoIXBhcnNlU1ZHKHZhbHVl
LCB0cnVlKSkKLSAgICAgICAgICAgIGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+
cmVwb3J0RXJyb3IoIlByb2JsZW0gcGFyc2luZyBkPVwiIiArIHZhbHVlICsgIlwiIik7CisgICAg
ICAgIGlmICghcGFyc2VTVkcoYXR0ci0+dmFsdWUoKSwgdHJ1ZSkpCisgICAgICAgICAgICBkb2N1
bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlcG9ydEVycm9yKCJQcm9ibGVtIHBhcnNp
bmcgZD1cIiIgKyBhdHRyLT52YWx1ZSgpICsgIlwiIik7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyKSB7Ci0gICAgICAgIG1fcGF0aExlbmd0
aCA9IHZhbHVlLnRvRG91YmxlKCk7CisgICAgICAgIG1fcGF0aExlbmd0aCA9IGF0dHItPnZhbHVl
KCkudG9Eb3VibGUoKTsKICAgICAgICAgaWYgKG1fcGF0aExlbmd0aCA8IDAuMCkKICAgICAgICAg
ICAgIGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVwb3J0RXJyb3IoIkEgbmVn
YXRpdmUgdmFsdWUgZm9yIHBhdGggYXR0cmlidXRlIDxwYXRoTGVuZ3RoPiBpcyBub3QgYWxsb3dl
ZCIpOwogICAgIH0gZWxzZSB7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyMTI3MSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMzMgKzc4LDMyIEBAIEFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm4KIAogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1l
KCkgPT0gU1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0dHIpIHsKLSAgICAgICAgaWYgKHZhbHVlID09
ICJ1c2VyU3BhY2VPblVzZSIpCisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpID09ICJ1c2VyU3Bh
Y2VPblVzZSIpCiAgICAgICAgICAgICBzZXRQYXR0ZXJuVW5pdHNCYXNlVmFsdWUoU1ZHVW5pdFR5
cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKTsKLSAgICAgICAgZWxzZSBpZiAodmFs
dWUgPT0gIm9iamVjdEJvdW5kaW5nQm94IikKKyAgICAgICAgZWxzZSBpZiAoYXR0ci0+dmFsdWUo
KSA9PSAib2JqZWN0Qm91bmRpbmdCb3giKQogICAgICAgICAgICAgc2V0UGF0dGVyblVuaXRzQmFz
ZVZhbHVlKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCk7CiAg
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5p
dHNBdHRyKSB7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSAidXNlclNwYWNlT25Vc2UiKQorICAgICAg
ICBpZiAoYXR0ci0+dmFsdWUoKSA9PSAidXNlclNwYWNlT25Vc2UiKQogICAgICAgICAgICAgc2V0
UGF0dGVybkNvbnRlbnRVbml0c0Jhc2VWYWx1ZShTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVf
VVNFUlNQQUNFT05VU0UpOwotICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSAib2JqZWN0Qm91bmRp
bmdCb3giKQorICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1ZSgpID09ICJvYmplY3RCb3VuZGlu
Z0JveCIpCiAgICAgICAgICAgICBzZXRQYXR0ZXJuQ29udGVudFVuaXRzQmFzZVZhbHVlKFNWR1Vu
aXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCk7CiAgICAgfSBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1BdHRyKSB7CiAgICAg
ICAgIFNWR1RyYW5zZm9ybUxpc3QqIHBhdHRlcm5UcmFuc2Zvcm1zID0gcGF0dGVyblRyYW5zZm9y
bUJhc2VWYWx1ZSgpOwotICAgICAgICBpZiAoIVNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNm
b3JtQXR0cmlidXRlKHBhdHRlcm5UcmFuc2Zvcm1zLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKCFT
VkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShwYXR0ZXJuVHJhbnNmb3Jt
cywgYXR0ci0+dmFsdWUoKSkpIHsKICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgICAgICAgICAgcGF0dGVyblRyYW5zZm9ybXMtPmNsZWFyKGVjKTsKICAgICAgICAgfQogICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgc2V0
WEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOworICAg
ICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIGF0dHIt
PnZhbHVlKCkpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRy
KQotICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0
LCB2YWx1ZSkpOworICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhN
b2RlSGVpZ2h0LCBhdHRyLT52YWx1ZSgpKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVu
Z3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKKyAgICAgICAgc2V0V2lkdGhCYXNl
VmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgYXR0ci0+dmFsdWUoKSkpOwog
ICAgICAgICBpZiAod2lkdGgoKS52YWx1ZSgpIDwgMC4wKQogICAgICAgICAgICAgZG9jdW1lbnQo
KS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZXBvcnRFcnJvcigiQSBuZWdhdGl2ZSB2YWx1ZSBm
b3IgcGF0dGVybiBhdHRyaWJ1dGUgPHdpZHRoPiBpcyBub3QgYWxsb3dlZCIpOwogICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIHNl
dEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUp
KTsKKyAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2Rl
SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKSk7CiAgICAgICAgIGlmICh3aWR0aCgpLnZhbHVlKCkgPCAw
LjApCiAgICAgICAgICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlcG9y
dEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBwYXR0ZXJuIGF0dHJpYnV0ZSA8aGVpZ2h0PiBp
cyBub3QgYWxsb3dlZCIpOwogICAgIH0gZWxzZSB7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDIxMjcxKQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICAgICAgICAgICAgICAg
ICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAgICAg
ICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAg
ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTYyLDE5ICs2Miwx
OCBAQCBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHCiAKIHZvaWQgU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1
dGUqIGF0dHIpCiB7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVl
KCk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Y3hBdHRyKQotICAgICAgICBz
ZXRDeEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwor
ICAgICAgICBzZXRDeEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCBh
dHRyLT52YWx1ZSgpKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpj
eUF0dHIpCi0gICAgICAgIHNldEN5QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2Rl
SGVpZ2h0LCB2YWx1ZSkpOworICAgICAgICBzZXRDeUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCwgYXR0ci0+dmFsdWUoKSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBTVkdOYW1lczo6ckF0dHIpIHsKLSAgICAgICAgc2V0UkJhc2VWYWx1ZShTVkdMZW5n
dGgodGhpcywgTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSkpOworICAgICAgICBzZXRSQmFzZVZhbHVl
KFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlT3RoZXIsIGF0dHItPnZhbHVlKCkpKTsKICAgICAg
ICAgaWYgKHIoKS52YWx1ZSgpIDwgMC4wKQogICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWNjZXNz
U1ZHRXh0ZW5zaW9ucygpLT5yZXBvcnRFcnJvcigiQSBuZWdhdGl2ZSB2YWx1ZSBmb3IgcmFkaWFs
IGdyYWRpZW50IHJhZGl1cyA8cj4gaXMgbm90IGFsbG93ZWQiKTsKICAgICB9IGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6ZnhBdHRyKQotICAgICAgICBzZXRGeEJhc2VWYWx1ZShT
VkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOworICAgICAgICBzZXRGeEJh
c2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCBhdHRyLT52YWx1ZSgpKSk7
CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpmeUF0dHIpCi0gICAgICAg
IHNldEZ5QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkp
OworICAgICAgICBzZXRGeUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdo
dCwgYXR0ci0+dmFsdWUoKSkpOwogICAgIGVsc2UKICAgICAgICAgU1ZHR3JhZGllbnRFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1JlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdS
ZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIxMjcxKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
UmVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94
QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJv
YiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RF
IHByb2plY3QKIApAQCAtNTYsMjUgKzU2LDI0IEBAIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR1JlY3RFbGUKIAogdm9pZCBTVkdSZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhB
dHRyKQotICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lk
dGgsIHZhbHVlKSk7CisgICAgICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0
aE1vZGVXaWR0aCwgYXR0ci0+dmFsdWUoKSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMs
IExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVu
Z3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIGF0dHItPnZhbHVlKCkpKTsKICAgICBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJ4QXR0cikgewotICAgICAgICBzZXRSeEJhc2VW
YWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOworICAgICAgICBz
ZXRSeEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCBhdHRyLT52YWx1
ZSgpKSk7CiAgICAgICAgIGlmIChyeCgpLnZhbHVlKCkgPCAwLjApCiAgICAgICAgICAgICBkb2N1
bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlcG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZh
bHVlIGZvciByZWN0IDxyeD4gaXMgbm90IGFsbG93ZWQiKTsKICAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBTVkdOYW1lczo6cnlBdHRyKSB7Ci0gICAgICAgIHNldFJ5QmFzZVZhbHVlKFNW
R0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOworICAgICAgICBzZXRSeUJh
c2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgYXR0ci0+dmFsdWUoKSkp
OwogICAgICAgICBpZiAocnkoKS52YWx1ZSgpIDwgMC4wKQogICAgICAgICAgICAgZG9jdW1lbnQo
KS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZXBvcnRFcnJvcigiQSBuZWdhdGl2ZSB2YWx1ZSBm
b3IgcmVjdCA8cnk+IGlzIG5vdCBhbGxvd2VkIik7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShT
VkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOworICAgICAgICBzZXRXaWR0
aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCBhdHRyLT52YWx1ZSgp
KSk7CiAgICAgICAgIGlmICh3aWR0aCgpLnZhbHVlKCkgPCAwLjApCiAgICAgICAgICAgICBkb2N1
bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlcG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZh
bHVlIGZvciByZWN0IDx3aWR0aD4gaXMgbm90IGFsbG93ZWQiKTsKICAgICB9IGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewotICAgICAgICBzZXRIZWlnaHRC
YXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CisgICAg
ICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwg
YXR0ci0+dmFsdWUoKSkpOwogICAgICAgICBpZiAoaGVpZ2h0KCkudmFsdWUoKSA8IDAuMCkKICAg
ICAgICAgICAgIGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVwb3J0RXJyb3Io
IkEgbmVnYXRpdmUgdmFsdWUgZm9yIHJlY3QgPGhlaWdodD4gaXMgbm90IGFsbG93ZWQiKTsKICAg
ICB9IGVsc2UgewpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9u
IDIxMjcxKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAgICAgICAgICAg
ICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICAgICAg
ICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
IAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC0xNzgsNyAr
MTc4LDYgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjphZGRTVkdXaW5kb3dFdmVudExpcwogCiB2b2lk
IFNWR1NWR0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0
cikKIHsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAg
ICBpZiAoIW5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoKSkgewogICAgICAgICAvLyBPbmx5IGhhbmRs
ZSBldmVudHMgaWYgd2UncmUgdGhlIG91dGVybW9zdCA8c3ZnPiBlbGVtZW50CiAgICAgICAgIGlm
IChhdHRyLT5uYW1lKCkgPT0gb251bmxvYWRBdHRyKQpAQCAtMTk1LDE3ICsxOTQsMTcgQEAgdm9p
ZCBTVkdTVkdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZQogICAgICAgICAgICAgYWRkU1ZH
V2luZG93RXZlbnRMaXN0ZW5lcih6b29tRXZlbnQsIGF0dHIpOwogICAgIH0KICAgICBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdM
ZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOworICAgICAgICBzZXRYQmFzZVZh
bHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIGF0dHItPnZhbHVlKCkpKTsKICAg
ICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBzZXRZ
QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOworICAg
ICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCBhdHRy
LT52YWx1ZSgpKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp3aWR0
aEF0dHIpIHsKLSAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUpKTsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTX1BS
T1BfV0lEVEgsIHZhbHVlKTsKKyAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCwgYXR0ci0+dmFsdWUoKSkpOworICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShhdHRyLCBDU1NfUFJPUF9XSURUSCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIGlmICh3
aWR0aCgpLnZhbHVlKCkgPCAwLjApCiAgICAgICAgICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdF
eHRlbnNpb25zKCktPnJlcG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBzdmcgYXR0cmli
dXRlIDx3aWR0aD4gaXMgbm90IGFsbG93ZWQiKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewotICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUo
U1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7Ci0gICAgICAgIGFkZENT
U1Byb3BlcnR5KGF0dHIsIENTU19QUk9QX0hFSUdIVCwgdmFsdWUpOworICAgICAgICBzZXRIZWln
aHRCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIGF0dHItPnZhbHVl
KCkpKTsKKyAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTX1BST1BfSEVJR0hULCBhdHRy
LT52YWx1ZSgpKTsKICAgICAgICAgaWYgKGhlaWdodCgpLnZhbHVlKCkgPCAwLjApCiAgICAgICAg
ICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlcG9ydEVycm9yKCJBIG5l
Z2F0aXZlIHZhbHVlIGZvciBzdmcgYXR0cmlidXRlIDxoZWlnaHQ+IGlzIG5vdCBhbGxvd2VkIik7
CiAgICAgfSBlbHNlIHsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NjcmlwdEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyMTI3MSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NjcmlwdEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAg
ICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgICAgICAgICAg
ICAgICAgICAyMDA0LCAyMDA1LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKIApAQCAtNTUsNyArNTUsNyBAQCB2
b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnNldFR5cGUoY29uc3QgU3RyCiB2b2lkIFNWR1NjcmlwdEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKICAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp0eXBlQXR0cikKLSAgICAgICAgICAgIHNl
dFR5cGUoYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIHNldFR5cGUoYXR0ci0+dmFsdWUoKSk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIGlmKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoYXR0cikpCiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdTdG9wRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3Rv
cEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMTI3MSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0
b3BFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtE
RSBwcm9qZWN0CiAKQEAgLTQ1LDggKzQ1LDggQEAgQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHU3RvcEVsZQogCiB2b2lkIFNWR1N0b3BFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7Ci0gICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0
dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6b2Zmc2V0QXR0
cikgeworICAgICAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICAg
ICAgaWYgKHZhbHVlLmVuZHNXaXRoKCIlIikpCiAgICAgICAgICAgICBzZXRPZmZzZXRCYXNlVmFs
dWUodmFsdWUubGVmdCh2YWx1ZS5sZW5ndGgoKSAtIDEpLnRvRG91YmxlKCkgLyAxMDAuKTsKICAg
ICAgICAgZWxzZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGVzdHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1Rlc3RzLmNwcAkocmV2aXNpb24gMjEyNzEpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1h
bm4gPHdpbGRmb3hAa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iLCAy
MDA2IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC05NSwxNSArOTUsMTQgQEAgYm9vbCBTVkdUZXN0czo6
aXNWYWxpZCgpIGNvbnN0CiAKIGJvb2wgU1ZHVGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKLSAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+
dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1
cmVzQXR0cikgewotICAgICAgICByZXF1aXJlZEZlYXR1cmVzKCktPnJlc2V0KHZhbHVlKTsKKyAg
ICAgICAgcmVxdWlyZWRGZWF0dXJlcygpLT5yZXNldChhdHRyLT52YWx1ZSgpKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJl
cXVpcmVkRXh0ZW5zaW9uc0F0dHIpIHsKLSAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zKCktPnJl
c2V0KHZhbHVlKTsKKyAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zKCktPnJlc2V0KGF0dHItPnZh
bHVlKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6c3lzdGVtTGFuZ3VhZ2VBdHRyKSB7Ci0gICAgICAgIHN5c3RlbUxhbmd1
YWdlKCktPnJlc2V0KHZhbHVlKTsKKyAgICAgICAgc3lzdGVtTGFuZ3VhZ2UoKS0+cmVzZXQoYXR0
ci0+dmFsdWUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMjEy
NzEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gICAgICAg
ICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgICAg
ICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKIApAQCAtOTgs
MTIgKzk4LDExIEBAIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzZWxlY3RTdWJTdHIKIAog
dm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0
dHJpYnV0ZSogYXR0cikKIHsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+
dmFsdWUoKTsKICAgICAvL2lmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Omxlbmd0aEFkanVz
dEF0dHIpCi0gICAgLy8gICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9k
ZVdpZHRoLCB2YWx1ZSkpOworICAgIC8vICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMs
IExlbmd0aE1vZGVXaWR0aCwgYXR0ci0+dmFsdWUoKSkpOwogICAgIC8vZWxzZQogICAgIGlmIChh
dHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyKSB7Ci0gICAgICAgIHNldFRl
eHRMZW5ndGhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVPdGhlciwgdmFsdWUp
KTsKKyAgICAgICAgc2V0VGV4dExlbmd0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3Ro
TW9kZU90aGVyLCBhdHRyLT52YWx1ZSgpKSk7CiAgICAgICAgIGlmICh0ZXh0TGVuZ3RoKCkudmFs
dWUoKSA8IDAuMCkKICAgICAgICAgICAgIGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMo
KS0+cmVwb3J0RXJyb3IoIkEgbmVnYXRpdmUgdmFsdWUgZm9yIHRleHQgYXR0cmlidXRlIDx0ZXh0
TGVuZ3RoPiBpcyBub3QgYWxsb3dlZCIpOwogICAgIH0gZWxzZSB7CkluZGV4OiBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAkocmV2aXNpb24gMjEy
NzEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAg
ICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAg
ICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgog
CiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTUyLDE4ICs1
MiwxNiBAQCBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0UG9zCiAKIHZvaWQg
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlKiBhdHRyKQogewotICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgp
OwotICAgIAogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAg
ICB4QmFzZVZhbHVlKCktPnBhcnNlKHZhbHVlLCB0aGlzLCBMZW5ndGhNb2RlV2lkdGgpOworICAg
ICAgICB4QmFzZVZhbHVlKCktPnBhcnNlKGF0dHItPnZhbHVlKCksIHRoaXMsIExlbmd0aE1vZGVX
aWR0aCk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5QXR0cikKLSAg
ICAgICAgeUJhc2VWYWx1ZSgpLT5wYXJzZSh2YWx1ZSwgdGhpcywgTGVuZ3RoTW9kZUhlaWdodCk7
CisgICAgICAgIHlCYXNlVmFsdWUoKS0+cGFyc2UoYXR0ci0+dmFsdWUoKSwgdGhpcywgTGVuZ3Ro
TW9kZUhlaWdodCk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpkeEF0
dHIpCi0gICAgICAgIGR4QmFzZVZhbHVlKCktPnBhcnNlKHZhbHVlLCB0aGlzLCBMZW5ndGhNb2Rl
V2lkdGgpOworICAgICAgICBkeEJhc2VWYWx1ZSgpLT5wYXJzZShhdHRyLT52YWx1ZSgpLCB0aGlz
LCBMZW5ndGhNb2RlV2lkdGgpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1l
czo6ZHlBdHRyKQotICAgICAgICBkeUJhc2VWYWx1ZSgpLT5wYXJzZSh2YWx1ZSwgdGhpcywgTGVu
Z3RoTW9kZUhlaWdodCk7CisgICAgICAgIGR5QmFzZVZhbHVlKCktPnBhcnNlKGF0dHItPnZhbHVl
KCksIHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6cm90YXRlQXR0cikKLSAgICAgICAgcm90YXRlQmFzZVZhbHVlKCktPnBhcnNl
KHZhbHVlKTsKKyAgICAgICAgcm90YXRlQmFzZVZhbHVlKCktPnBhcnNlKGF0dHItPnZhbHVlKCkp
OwogICAgIGVsc2UKICAgICAgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShhdHRyKTsKIH0KSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMTI3MSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+
Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QK
IApAQCAtODcsMTggKzg3LDE2IEBAIFNWR0VsZW1lbnRJbnN0YW5jZSogU1ZHVXNlRWxlbWVudDo6
YW5pbWEKICAKIHZvaWQgU1ZHVXNlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKiBhdHRyKQogewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRy
LT52YWx1ZSgpOwotICAgIAogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRy
KQotICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgs
IHZhbHVlKSk7CisgICAgICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCwgYXR0ci0+dmFsdWUoKSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBT
VkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3Ro
KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIGF0dHItPnZhbHVlKCkpKTsKICAgICBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAgICAgICBzZXRXaWR0aEJh
c2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOworICAgICAg
ICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCBhdHRy
LT52YWx1ZSgpKSk7CiAgICAgICAgIGlmICh3aWR0aCgpLnZhbHVlKCkgPCAwLjApCiAgICAgICAg
ICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlcG9ydEVycm9yKCJBIG5l
Z2F0aXZlIHZhbHVlIGZvciB1c2UgYXR0cmlidXRlIDx3aWR0aD4gaXMgbm90IGFsbG93ZWQiKTsK
ICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewot
ICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWln
aHQsIHZhbHVlKSk7CisgICAgICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCwgYXR0ci0+dmFsdWUoKSkpOwogICAgICAgICBpZiAoaGVpZ2h0KCku
dmFsdWUoKSA8IDAuMCkKICAgICAgICAgICAgIGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lv
bnMoKS0+cmVwb3J0RXJyb3IoIkEgbmVnYXRpdmUgdmFsdWUgZm9yIHVzZSBhdHRyaWJ1dGUgPGhl
aWdodD4gaXMgbm90IGFsbG93ZWQiKTsKICAgICB9IGVsc2UgewpJbmRleDogV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1ZpZXdFbGVtZW50LmNwcAkocmV2aXNpb24gMjEyNzEpCisrKyBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdWaWV3RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgog
ICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hA
a2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBA
IC01NSw5ICs1NSw4IEBAIFNWR1N0cmluZ0xpc3QqIFNWR1ZpZXdFbGVtZW50Ojp2aWV3VGFyZ2UK
IAogdm9pZCBTVkdWaWV3RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmli
dXRlICphdHRyKQogewotICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwog
ICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnZpZXdUYXJnZXRBdHRyKQotICAgICAg
ICB2aWV3VGFyZ2V0KCktPnJlc2V0KHZhbHVlKTsKKyAgICAgICAgdmlld1RhcmdldCgpLT5yZXNl
dChhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYoU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikKICAgICAgICAgICAgfHwg
U1ZHRml0VG9WaWV3Qm94OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKQpJbmRleDogV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHWm9vbUFuZFBhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHWm9vbUFuZFBhbi5jcHAJKHJldmlzaW9uIDIxMjcxKQorKysgV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHWm9vbUFuZFBhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAv
KgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRm
b3hAa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBL
REUgcHJvamVjdAogCkBAIC01MCwxMSArNTAsMTAgQEAgdm9pZCBTVkdab29tQW5kUGFuOjpzZXRa
b29tQW5kUGFuKHVuc2lnbgogCiBib29sIFNWR1pvb21BbmRQYW46OnBhcnNlTWFwcGVkQXR0cmli
dXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKLSAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0g
YXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp6b29tQW5k
UGFuQXR0cikgewotICAgICAgICBpZiAodmFsdWUgPT0gImRpc2FibGUiKQorICAgICAgICBpZiAo
YXR0ci0+dmFsdWUoKSA9PSAiZGlzYWJsZSIpCiAgICAgICAgICAgICBzZXRab29tQW5kUGFuKFNW
R19aT09NQU5EUEFOX0RJU0FCTEUpOwotICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSAibWFnbmlm
eSIpCisgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gIm1hZ25pZnkiKQogICAgICAg
ICAgICAgc2V0Wm9vbUFuZFBhbihTVkdfWk9PTUFORFBBTl9NQUdOSUZZKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQo=
</data>
<flag name="review"
          id="5849"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>