<?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>161377</bug_id>
          
          <creation_ts>2016-08-30 05:42:39 -0700</creation_ts>
          <short_desc>Move some code from MathMLElement to MathMLPresentationElement</short_desc>
          <delta_ts>2016-08-30 15:56:39 -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>MathML</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>160543</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Frédéric Wang Nélar">fred.wang</reporter>
          <assigned_to name="Frédéric Wang Nélar">fred.wang</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbarton</cc>
    
    <cc>rego</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1224541</commentid>
    <comment_count>0</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-08-30 05:42:39 -0700</bug_when>
    <thetext>Another step for bug 160543</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224542</commentid>
    <comment_count>1</comment_count>
      <attachid>287386</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-08-30 05:50:16 -0700</bug_when>
    <thetext>Created attachment 287386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224755</commentid>
    <comment_count>2</comment_count>
      <attachid>287386</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-30 15:56:35 -0700</bug_when>
    <thetext>Comment on attachment 287386
Patch

Clearing flags on attachment: 287386

Committed r205206: &lt;http://trac.webkit.org/changeset/205206&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224756</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-30 15:56:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287386</attachid>
            <date>2016-08-30 05:50:16 -0700</date>
            <delta_ts>2016-08-30 15:56:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161377-20160830144804.patch</filename>
            <type>text/plain</type>
            <size>35338</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQwZjE4NzBlNDkxY2Uw
ZjU4MmM3YmIyZTExM2M5ZGY4MjBhMGQ4NS4uYzZmMzhhMTAzNzExOWU0ZmI4N2U2ODMwMTFlOGNm
YmYwZjRjZDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE2LTA4LTMwICBGcmVk
ZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIHNvbWUgY29kZSBm
cm9tIE1hdGhNTEVsZW1lbnQgdG8gTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMzc3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyBjb2Rl
IGlzIG9ubHkgdXNlZCBpbiBwcmVzZW50YXRpb24gTWF0aE1MIGNsYXNzZXMuIFdlIHRoZW4gbW92
ZSBpdCBmcm9tCisgICAgICAgIE1hdGhNTEVsZW1lbnQgdG8gTWF0aE1MUHJlc2VudGF0aW9uRWxl
bWVudDoKKyAgICAgICAgLSB0ZXN0aW5nIHdoZXRoZXIgYSBjaGlsZCBpcyBhIHBocmFzaW5nL2Zs
b3cgZWxlbWVudC4KKyAgICAgICAgLSBwYXJzaW5nIG9mIGxlbmd0aCBhdHRyaWJ1dGVzLgorICAg
ICAgICAtIHBhcnNpbmcgb2YgYm9vbGVhbiBhdHRyaWJ1dGVzLgorICAgICAgICAtIHBhcnNpbmcg
b2YgbWF0aHZhcmlhbnQgYXR0cmlidXRlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGFscmVh
ZHkgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIG1hdGhtbC9NYXRoTUxF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OmlzUGhyYXNpbmdD
b250ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OmlzRmxv
d0NvbnRlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6cGFy
c2VOdW1iZXJBbmRVbml0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1l
bnQ6OnBhcnNlTmFtZWRTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxF
bGVtZW50OjpwYXJzZU1hdGhNTExlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpN
YXRoTUxFbGVtZW50OjpjYWNoZWRNYXRoTUxMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWF0aE1MRWxlbWVudDo6Y2FjaGVkQm9vbGVhbkF0dHJpYnV0ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50OjpwYXJzZU1hdGhWYXJpYW50QXR0cmlidXRl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OnNwZWNpZmllZERp
c3BsYXlTdHlsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50Ojpz
cGVjaWZpZWRNYXRoVmFyaWFudCk6IERlbGV0ZWQuCisgICAgICAgICogbWF0aG1sL01hdGhNTEVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OnNwZWNpZmllZERpc3Bs
YXlTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50OjpzcGVjaWZpZWRNYXRo
VmFyaWFudCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50OjphY2NlcHRzRGlzcGxh
eVN0eWxlQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1l
bnQ6OmFjY2VwdHNNYXRoVmFyaWFudEF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNYXRoTUxFbGVtZW50Ojp0b09wdGlvbmFsQm9vbCk6IERlbGV0ZWQuCisgICAgICAgICog
bWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6aXNQaHJhc2luZ0NvbnRlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6aXNGbG93Q29udGVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpjYWNoZWRCb29sZWFuQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnBh
cnNlTnVtYmVyQW5kVW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxQcmVzZW50YXRpb25F
bGVtZW50OjpwYXJzZU5hbWVkU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MUHJlc2Vu
dGF0aW9uRWxlbWVudDo6cGFyc2VNYXRoTUxMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6TWF0
aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6Y2FjaGVkTWF0aE1MTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnNwZWNpZmllZERpc3BsYXlTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU1hdGhW
YXJpYW50QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFByZXNlbnRhdGlvbkVs
ZW1lbnQ6OnNwZWNpZmllZE1hdGhWYXJpYW50KToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MUHJl
c2VudGF0aW9uRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9u
RWxlbWVudDo6dG9PcHRpb25hbEJvb2wpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MUHJlc2Vu
dGF0aW9uRWxlbWVudDo6YWNjZXB0c01hdGhWYXJpYW50QXR0cmlidXRlKToKKwogMjAxNi0wOC0y
OSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IEZpeCBXaW5kb3dzIGJ1aWxkIGFmdGVyIHIyMDUxNjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxFbGVtZW50LmNwcAppbmRleCAwOWQzMzY0NjBiMWNlYTliMmNmOTljOTkyYjlkMjEzOWRkNDg1
NmEwLi5iY2MyNzg0MDI4NjA0ODcyMGMwNDE5Zjg3NmIzY2E1NDY5YTg2ZmJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCkBAIC0zMSwyNCArMzEsMTIgQEAKIAogI2lm
IEVOQUJMRShNQVRITUwpCiAKLSNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKLSNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkhUTUxBbmNo
b3JFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MSHRt
bEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTWFwRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKLSNpbmNsdWRlICJNYXRoTUxN
YXRoRWxlbWVudC5oIgogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCi0jaW5jbHVkZSAiTWF0aE1M
U2VsZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJSZW5k
ZXJUYWJsZUNlbGwuaCIKLSNpbmNsdWRlICJTVkdFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHTmFt
ZXMuaCIKLSNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCi0jaW5jbHVkZSAiWExpbmtOYW1lcy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY0LDEyNCArNTIsNiBAQCBSZWY8TWF0aE1M
RWxlbWVudD4gTWF0aE1MRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1hdGhNTEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBNYXRoTUxFbGVtZW50Ojppc1BocmFzaW5nQ29u
dGVudChjb25zdCBOb2RlJiBub2RlKSBjb25zdAotewotICAgIC8vIFBocmFzaW5nIGNvbnRlbnQg
aXMgZGVzY3JpYmVkIGluIHRoZSBIVE1MIDUgc3BlY2lmaWNhdGlvbjoKLSAgICAvLyBodHRwOi8v
d3d3LnczLm9yZy9UUi9odG1sNS9kb20uaHRtbCNwaHJhc2luZy1jb250ZW50LgotCi0gICAgaWYg
KCFub2RlLmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgcmV0dXJuIG5vZGUuaXNUZXh0Tm9kZSgp
OwotCi0gICAgaWYgKGlzPE1hdGhNTEVsZW1lbnQ+KG5vZGUpKSB7Ci0gICAgICAgIGF1dG8mIG1h
dGhtbEVsZW1lbnQgPSBkb3duY2FzdDxNYXRoTUxFbGVtZW50Pihub2RlKTsKLSAgICAgICAgcmV0
dXJuIGlzPE1hdGhNTE1hdGhFbGVtZW50PihtYXRobWxFbGVtZW50KTsKLSAgICB9Ci0KLSAgICBp
ZiAoaXM8U1ZHRWxlbWVudD4obm9kZSkpIHsKLSAgICAgICAgYXV0byYgc3ZnRWxlbWVudCA9IGRv
d25jYXN0PFNWR0VsZW1lbnQ+KG5vZGUpOwotICAgICAgICByZXR1cm4gaXM8U1ZHU1ZHRWxlbWVu
dD4oc3ZnRWxlbWVudCk7Ci0gICAgfQotCi0gICAgaWYgKGlzPEhUTUxFbGVtZW50Pihub2RlKSkg
ewotICAgICAgICAvLyBGSVhNRTogYWRkIHRoZSA8ZGF0YT4gYW5kIDx0aW1lPiB0YWdzIHdoZW4g
dGhleSBhcmUgaW1wbGVtZW50ZWQuCi0gICAgICAgIGF1dG8mIGh0bWxFbGVtZW50ID0gZG93bmNh
c3Q8SFRNTEVsZW1lbnQ+KG5vZGUpOwotICAgICAgICByZXR1cm4gaHRtbEVsZW1lbnQuaGFzVGFn
TmFtZShIVE1MTmFtZXM6OmFUYWcpCi0gICAgICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdO
YW1lKEhUTUxOYW1lczo6YWJiclRhZykKLSAgICAgICAgICAgIHx8IChodG1sRWxlbWVudC5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6YXJlYVRhZykgJiYgYW5jZXN0b3JzT2ZUeXBlPEhUTUxNYXBFbGVt
ZW50PihodG1sRWxlbWVudCkuZmlyc3QoKSkKLSAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjphdWRpb1RhZykKLSAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50
Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpiVGFnKQotICAgICAgICAgICAgfHwgaHRtbEVsZW1lbnQu
aGFzVGFnTmFtZShIVE1MTmFtZXM6OmJkaVRhZykKLSAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50
Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpiZG9UYWcpCi0gICAgICAgICAgICB8fCBodG1sRWxlbWVu
dC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YnJUYWcpCi0gICAgICAgICAgICB8fCBodG1sRWxlbWVu
dC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YnV0dG9uVGFnKQotICAgICAgICAgICAgfHwgaHRtbEVs
ZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmNhbnZhc1RhZykKLSAgICAgICAgICAgIHx8IGh0
bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpjaXRlVGFnKQotICAgICAgICAgICAgfHwg
aHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmNvZGVUYWcpCi0gICAgICAgICAgICB8
fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZGF0YWxpc3RUYWcpCi0gICAgICAg
ICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZGVsVGFnKQotICAgICAg
ICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmRmblRhZykKLSAgICAg
ICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjplbVRhZykKLSAgICAg
ICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjplbWJlZFRhZykKLSAg
ICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppVGFnKQotICAg
ICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmlmcmFtZVRhZykK
LSAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbWdUYWcp
Ci0gICAgICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRU
YWcpCi0gICAgICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5z
VGFnKQotICAgICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6Omti
ZFRhZykKLSAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpr
ZXlnZW5UYWcpCi0gICAgICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6bGFiZWxUYWcpCi0gICAgICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6bWFwVGFnKQotICAgICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1M
TmFtZXM6Om1hcmtUYWcpCi0gICAgICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6bWV0ZXJUYWcpCi0gICAgICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6bm9zY3JpcHRUYWcpCi0gICAgICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6b2JqZWN0VGFnKQotICAgICAgICAgICAgfHwgaHRtbEVsZW1lbnQu
aGFzVGFnTmFtZShIVE1MTmFtZXM6Om91dHB1dFRhZykKLSAgICAgICAgICAgIHx8IGh0bWxFbGVt
ZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpwcm9ncmVzc1RhZykKLSAgICAgICAgICAgIHx8IGh0
bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpxVGFnKQotICAgICAgICAgICAgfHwgaHRt
bEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnJ1YnlUYWcpCi0gICAgICAgICAgICB8fCBo
dG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c1RhZykKLSAgICAgICAgICAgIHx8IGh0
bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzYW1wVGFnKQotICAgICAgICAgICAgfHwg
aHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnNjcmlwdFRhZykKLSAgICAgICAgICAg
IHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzZWxlY3RUYWcpCi0gICAgICAg
ICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c21hbGxUYWcpCi0gICAg
ICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c3BhblRhZykKLSAg
ICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzdHJvbmdUYWcp
Ci0gICAgICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c3ViVGFn
KQotICAgICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnN1cFRh
ZykKLSAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0ZW1w
bGF0ZVRhZykKLSAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVz
Ojp0ZXh0YXJlYVRhZykKLSAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjp1VGFnKQotICAgICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1M
TmFtZXM6OnZhclRhZykKLSAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjp2aWRlb1RhZykKLSAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjp3YnJUYWcpOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9v
bCBNYXRoTUxFbGVtZW50Ojppc0Zsb3dDb250ZW50KGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0Ci17
Ci0gICAgLy8gRmxvdyBjb250ZW50IGlzIGRlc2NyaWJlZCBpbiB0aGUgSFRNTCA1IHNwZWNpZmlj
YXRpb246Ci0gICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvZG9tLmh0bWwjZmxvdy1j
b250ZW50Ci0KLSAgICBpZiAoaXNQaHJhc2luZ0NvbnRlbnQobm9kZSkpCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgaWYgKCFpczxIVE1MRWxlbWVudD4obm9kZSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGF1dG8mIGh0bWxFbGVtZW50ID0gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+
KG5vZGUpOwotICAgIC8vIEZJWE1FIGFkZCB0aGUgPGRpYWxvZz4gdGFnIHdoZW4gaXQgaXMgaW1w
bGVtZW50ZWQuCi0gICAgcmV0dXJuIGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjph
ZGRyZXNzVGFnKQotICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
YXJ0aWNsZVRhZykKLSAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6
OmFzaWRlVGFnKQotICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
YmxvY2txdW90ZVRhZykKLSAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFt
ZXM6OmRldGFpbHNUYWcpCi0gICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjpkaXZUYWcpCi0gICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjpkbFRhZykKLSAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmZp
ZWxkc2V0VGFnKQotICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
ZmlndXJlVGFnKQotICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
Zm9vdGVyVGFnKQotICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
Zm9ybVRhZykKLSAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6Omgx
VGFnKQotICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aDJUYWcp
Ci0gICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpoM1RhZykKLSAg
ICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6Omg0VGFnKQotICAgICAg
ICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aDVUYWcpCi0gICAgICAgIHx8
IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpoNlRhZykKLSAgICAgICAgfHwgaHRt
bEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmhlYWRlclRhZykKLSAgICAgICAgfHwgaHRt
bEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmhyVGFnKQotICAgICAgICB8fCBodG1sRWxl
bWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6bWFpblRhZykKLSAgICAgICAgfHwgaHRtbEVsZW1l
bnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6Om5hdlRhZykKLSAgICAgICAgfHwgaHRtbEVsZW1lbnQu
aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9sVGFnKQotICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6cFRhZykKLSAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFt
ZShIVE1MTmFtZXM6OnByZVRhZykKLSAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShI
VE1MTmFtZXM6OnNlY3Rpb25UYWcpCi0gICAgICAgIHx8IChodG1sRWxlbWVudC5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6c3R5bGVUYWcpICYmIGh0bWxFbGVtZW50Lmhhc0F0dHJpYnV0ZSgic2NvcGVk
IikpCi0gICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0YWJsZVRh
ZykKLSAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnVsVGFnKTsK
LX0KLQogdW5zaWduZWQgTWF0aE1MRWxlbWVudDo6Y29sU3BhbigpIGNvbnN0CiB7CiAgICAgaWYg
KCFoYXNUYWdOYW1lKG10ZFRhZykpCkBAIC0zNTYsMTk3ICsyMjYsNiBAQCBTdHJpbmdWaWV3IE1h
dGhNTEVsZW1lbnQ6OnN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nV2hpdGVzcGFjZShjb25zdCBTdHJp
bmdWaWV3JiBzdAogICAgIHJldHVybiBzdHJpbmdWaWV3LnN1YnN0cmluZyhzdGFydCwgc3RyaW5n
TGVuZ3RoKTsKIH0KIAotTWF0aE1MRWxlbWVudDo6TGVuZ3RoIE1hdGhNTEVsZW1lbnQ6OnBhcnNl
TnVtYmVyQW5kVW5pdChjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcpCi17Ci0gICAgTGVuZ3RoVHlw
ZSBsZW5ndGhUeXBlID0gTGVuZ3RoVHlwZTo6VW5pdExlc3M7Ci0gICAgdW5zaWduZWQgc3RyaW5n
TGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotICAgIFVDaGFyIGxhc3RDaGFyID0gc3RyaW5nW3N0
cmluZ0xlbmd0aCAtIDFdOwotICAgIGlmIChsYXN0Q2hhciA9PSAnJScpIHsKLSAgICAgICAgbGVu
Z3RoVHlwZSA9IExlbmd0aFR5cGU6OlBlcmNlbnRhZ2U7Ci0gICAgICAgIHN0cmluZ0xlbmd0aC0t
OwotICAgIH0gZWxzZSBpZiAoc3RyaW5nTGVuZ3RoID49IDIpIHsKLSAgICAgICAgVUNoYXIgcGVu
dWx0aW1hdGVDaGFyID0gc3RyaW5nW3N0cmluZ0xlbmd0aCAtIDJdOwotICAgICAgICBpZiAocGVu
dWx0aW1hdGVDaGFyID09ICdjJyAmJiBsYXN0Q2hhciA9PSAnbScpCi0gICAgICAgICAgICBsZW5n
dGhUeXBlID0gTGVuZ3RoVHlwZTo6Q207Ci0gICAgICAgIGlmIChwZW51bHRpbWF0ZUNoYXIgPT0g
J2UnICYmIGxhc3RDaGFyID09ICdtJykKLSAgICAgICAgICAgIGxlbmd0aFR5cGUgPSBMZW5ndGhU
eXBlOjpFbTsKLSAgICAgICAgZWxzZSBpZiAocGVudWx0aW1hdGVDaGFyID09ICdlJyAmJiBsYXN0
Q2hhciA9PSAneCcpCi0gICAgICAgICAgICBsZW5ndGhUeXBlID0gTGVuZ3RoVHlwZTo6RXg7Ci0g
ICAgICAgIGVsc2UgaWYgKHBlbnVsdGltYXRlQ2hhciA9PSAnaScgJiYgbGFzdENoYXIgPT0gJ24n
KQotICAgICAgICAgICAgbGVuZ3RoVHlwZSA9IExlbmd0aFR5cGU6OkluOwotICAgICAgICBlbHNl
IGlmIChwZW51bHRpbWF0ZUNoYXIgPT0gJ20nICYmIGxhc3RDaGFyID09ICdtJykKLSAgICAgICAg
ICAgIGxlbmd0aFR5cGUgPSBMZW5ndGhUeXBlOjpNbTsKLSAgICAgICAgZWxzZSBpZiAocGVudWx0
aW1hdGVDaGFyID09ICdwJyAmJiBsYXN0Q2hhciA9PSAnYycpCi0gICAgICAgICAgICBsZW5ndGhU
eXBlID0gTGVuZ3RoVHlwZTo6UGM7Ci0gICAgICAgIGVsc2UgaWYgKHBlbnVsdGltYXRlQ2hhciA9
PSAncCcgJiYgbGFzdENoYXIgPT0gJ3QnKQotICAgICAgICAgICAgbGVuZ3RoVHlwZSA9IExlbmd0
aFR5cGU6OlB0OwotICAgICAgICBlbHNlIGlmIChwZW51bHRpbWF0ZUNoYXIgPT0gJ3AnICYmIGxh
c3RDaGFyID09ICd4JykKLSAgICAgICAgICAgIGxlbmd0aFR5cGUgPSBMZW5ndGhUeXBlOjpQeDsK
LQotICAgICAgICBpZiAobGVuZ3RoVHlwZSAhPSBMZW5ndGhUeXBlOjpVbml0TGVzcykKLSAgICAg
ICAgICAgIHN0cmluZ0xlbmd0aCAtPSAyOwotICAgIH0KLQotICAgIGJvb2wgb2s7Ci0gICAgZmxv
YXQgbGVuZ3RoVmFsdWUgPSBzdHJpbmcuc3Vic3RyaW5nKDAsIHN0cmluZ0xlbmd0aCkudG9GbG9h
dChvayk7Ci0gICAgaWYgKCFvaykKLSAgICAgICAgcmV0dXJuIExlbmd0aCgpOwotCi0gICAgTGVu
Z3RoIGxlbmd0aDsKLSAgICBsZW5ndGgudHlwZSA9IGxlbmd0aFR5cGU7Ci0gICAgbGVuZ3RoLnZh
bHVlID0gbGVuZ3RoVmFsdWU7Ci0gICAgcmV0dXJuIGxlbmd0aDsKLX0KLQotTWF0aE1MRWxlbWVu
dDo6TGVuZ3RoIE1hdGhNTEVsZW1lbnQ6OnBhcnNlTmFtZWRTcGFjZShjb25zdCBTdHJpbmdWaWV3
JiBzdHJpbmcpCi17Ci0gICAgLy8gTmFtZWQgc3BhY2UgdmFsdWVzIGFyZSBjYXNlLXNlbnNpdGl2
ZS4KLSAgICBpbnQgbmFtZWRTcGFjZVZhbHVlOwotICAgIGlmIChzdHJpbmcgPT0gInZlcnl2ZXJ5
dGhpbm1hdGhzcGFjZSIpCi0gICAgICAgIG5hbWVkU3BhY2VWYWx1ZSA9IDE7Ci0gICAgZWxzZSBp
ZiAoc3RyaW5nID09ICJ2ZXJ5dGhpbm1hdGhzcGFjZSIpCi0gICAgICAgIG5hbWVkU3BhY2VWYWx1
ZSA9IDI7Ci0gICAgZWxzZSBpZiAoc3RyaW5nID09ICJ0aGlubWF0aHNwYWNlIikKLSAgICAgICAg
bmFtZWRTcGFjZVZhbHVlID0gMzsKLSAgICBlbHNlIGlmIChzdHJpbmcgPT0gIm1lZGl1bW1hdGhz
cGFjZSIpCi0gICAgICAgIG5hbWVkU3BhY2VWYWx1ZSA9IDQ7Ci0gICAgZWxzZSBpZiAoc3RyaW5n
ID09ICJ0aGlja21hdGhzcGFjZSIpCi0gICAgICAgIG5hbWVkU3BhY2VWYWx1ZSA9IDU7Ci0gICAg
ZWxzZSBpZiAoc3RyaW5nID09ICJ2ZXJ5dGhpY2ttYXRoc3BhY2UiKQotICAgICAgICBuYW1lZFNw
YWNlVmFsdWUgPSA2OwotICAgIGVsc2UgaWYgKHN0cmluZyA9PSAidmVyeXZlcnl0aGlja21hdGhz
cGFjZSIpCi0gICAgICAgIG5hbWVkU3BhY2VWYWx1ZSA9IDc7Ci0gICAgZWxzZSBpZiAoc3RyaW5n
ID09ICJuZWdhdGl2ZXZlcnl2ZXJ5dGhpbm1hdGhzcGFjZSIpCi0gICAgICAgIG5hbWVkU3BhY2VW
YWx1ZSA9IC0xOwotICAgIGVsc2UgaWYgKHN0cmluZyA9PSAibmVnYXRpdmV2ZXJ5dGhpbm1hdGhz
cGFjZSIpCi0gICAgICAgIG5hbWVkU3BhY2VWYWx1ZSA9IC0yOwotICAgIGVsc2UgaWYgKHN0cmlu
ZyA9PSAibmVnYXRpdmV0aGlubWF0aHNwYWNlIikKLSAgICAgICAgbmFtZWRTcGFjZVZhbHVlID0g
LTM7Ci0gICAgZWxzZSBpZiAoc3RyaW5nID09ICJuZWdhdGl2ZW1lZGl1bW1hdGhzcGFjZSIpCi0g
ICAgICAgIG5hbWVkU3BhY2VWYWx1ZSA9IC00OwotICAgIGVsc2UgaWYgKHN0cmluZyA9PSAibmVn
YXRpdmV0aGlja21hdGhzcGFjZSIpCi0gICAgICAgIG5hbWVkU3BhY2VWYWx1ZSA9IC01OwotICAg
IGVsc2UgaWYgKHN0cmluZyA9PSAibmVnYXRpdmV2ZXJ5dGhpY2ttYXRoc3BhY2UiKQotICAgICAg
ICBuYW1lZFNwYWNlVmFsdWUgPSAtNjsKLSAgICBlbHNlIGlmIChzdHJpbmcgPT0gIm5lZ2F0aXZl
dmVyeXZlcnl0aGlja21hdGhzcGFjZSIpCi0gICAgICAgIG5hbWVkU3BhY2VWYWx1ZSA9IC03Owot
ICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIExlbmd0aCgpOwotCi0gICAgTGVuZ3RoIGxlbmd0aDsK
LSAgICBsZW5ndGgudHlwZSA9IExlbmd0aFR5cGU6Ok1hdGhVbml0OwotICAgIGxlbmd0aC52YWx1
ZSA9IG5hbWVkU3BhY2VWYWx1ZTsKLSAgICByZXR1cm4gbGVuZ3RoOwotfQotCi1NYXRoTUxFbGVt
ZW50OjpMZW5ndGggTWF0aE1MRWxlbWVudDo6cGFyc2VNYXRoTUxMZW5ndGgoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCi17Ci0gICAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBmcm9tIHRoZSBNYXRo
TUwgUmVsYXggTkcgc2NoZW1hIGlzIGFzIGZvbGxvd3M6Ci0gICAgLy8KLSAgICAvLyAgIHBhdHRl
cm4gPSAnXHMqKCgtP1swLTldKihbMC05XVwuP3xcLlswLTldKVswLTldKihlW214XXxpbnxjbXxt
bXxwW3h0Y118JSk/KXwobmVnYXRpdmUpPygodmVyeSl7MCwyfXRoaShufGNrKXxtZWRpdW0pbWF0
aHNwYWNlKVxzKicKLSAgICAvLwotICAgIC8vIFdlIGRvIG5vdCBwZXJmb3JtIGEgc3RyaWN0IHZl
cmlmaWNhdGlvbiBvZiB0aGUgc3ludGF4IG9mIHdoaXRlc3BhY2VzIGFuZCBudW1iZXIuCi0gICAg
Ly8gSW5zdGVhZCwgd2UganVzdCB1c2UgaXNIVE1MU3BhY2UgYW5kIHRvRmxvYXQgdG8gcGFyc2Ug
dGhlc2UgcGFydHMuCi0KLSAgICAvLyBXZSBmaXJzdCBza2lwIHdoaXRlc3BhY2UgZnJvbSBib3Ro
IGVuZHMgb2YgdGhlIHN0cmluZy4KLSAgICBTdHJpbmdWaWV3IHN0cmluZ1ZpZXcgPSBzdHJpcExl
YWRpbmdBbmRUcmFpbGluZ1doaXRlc3BhY2Uoc3RyaW5nKTsKLQotICAgIGlmIChzdHJpbmdWaWV3
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIExlbmd0aCgpOwotCi0gICAgLy8gV2UgY29uc2lk
ZXIgdGhlIG1vc3QgdHlwaWNhbCBjYXNlOiBhIG51bWJlciBmb2xsb3dlZCBieSBhbiBvcHRpb25h
bCB1bml0LgotICAgIFVDaGFyIGZpcnN0Q2hhciA9IHN0cmluZ1ZpZXdbMF07Ci0gICAgaWYgKGlz
QVNDSUlEaWdpdChmaXJzdENoYXIpIHx8IGZpcnN0Q2hhciA9PSAnLScgfHwgZmlyc3RDaGFyID09
ICcuJykKLSAgICAgICAgcmV0dXJuIHBhcnNlTnVtYmVyQW5kVW5pdChzdHJpbmdWaWV3KTsKLQot
ICAgIC8vIE90aGVyd2lzZSwgd2UgdHJ5IGFuZCBwYXJzZSBhIG5hbWVkIHNwYWNlLgotICAgIHJl
dHVybiBwYXJzZU5hbWVkU3BhY2Uoc3RyaW5nVmlldyk7Ci19Ci0KLWNvbnN0IE1hdGhNTEVsZW1l
bnQ6Okxlbmd0aCYgTWF0aE1MRWxlbWVudDo6Y2FjaGVkTWF0aE1MTGVuZ3RoKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIE9wdGlvbmFsPExlbmd0aD4mIGxlbmd0aCkKLXsKLSAgICBpZiAobGVu
Z3RoKQotICAgICAgICByZXR1cm4gbGVuZ3RoLnZhbHVlKCk7Ci0gICAgbGVuZ3RoID0gcGFyc2VN
YXRoTUxMZW5ndGgoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihuYW1lKSk7Ci0gICAg
cmV0dXJuIGxlbmd0aC52YWx1ZSgpOwotfQotCi1jb25zdCBNYXRoTUxFbGVtZW50OjpCb29sZWFu
VmFsdWUmIE1hdGhNTEVsZW1lbnQ6OmNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgT3B0aW9uYWw8Qm9vbGVhblZhbHVlPiYgYXR0cmlidXRlKQotewotICAg
IGlmIChhdHRyaWJ1dGUpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGUudmFsdWUoKTsKLQotICAg
IC8vIEluIE1hdGhNTCwgYXR0cmlidXRlIHZhbHVlcyBhcmUgY2FzZS1zZW5zaXRpdmUuCi0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24obmFtZSk7Ci0gICAgaWYgKHZhbHVlID09ICJ0cnVlIikKLSAgICAgICAgYXR0cmlidXRlID0g
Qm9vbGVhblZhbHVlOjpUcnVlOwotICAgIGVsc2UgaWYgKHZhbHVlID09ICJmYWxzZSIpCi0gICAg
ICAgIGF0dHJpYnV0ZSA9IEJvb2xlYW5WYWx1ZTo6RmFsc2U7Ci0gICAgZWxzZQotICAgICAgICBh
dHRyaWJ1dGUgPSBCb29sZWFuVmFsdWU6OkRlZmF1bHQ7Ci0KLSAgICByZXR1cm4gYXR0cmlidXRl
LnZhbHVlKCk7Ci19Ci0KLU1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50IE1hdGhNTEVsZW1lbnQ6
OnBhcnNlTWF0aFZhcmlhbnRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVW
YWx1ZSkKLXsKLSAgICAvLyBUaGUgbWF0aHZhcmlhbnQgYXR0cmlidXRlIHZhbHVlcyBpcyBjYXNl
LXNlbnNpdGl2ZS4KLSAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gIm5vcm1hbCIpCi0gICAgICAg
IHJldHVybiBNYXRoVmFyaWFudDo6Tm9ybWFsOwotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAi
Ym9sZCIpCi0gICAgICAgIHJldHVybiBNYXRoVmFyaWFudDo6Qm9sZDsKLSAgICBpZiAoYXR0cmli
dXRlVmFsdWUgPT0gIml0YWxpYyIpCi0gICAgICAgIHJldHVybiBNYXRoVmFyaWFudDo6SXRhbGlj
OwotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAiYm9sZC1pdGFsaWMiKQotICAgICAgICByZXR1
cm4gTWF0aFZhcmlhbnQ6OkJvbGRJdGFsaWM7Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJk
b3VibGUtc3RydWNrIikKLSAgICAgICAgcmV0dXJuIE1hdGhWYXJpYW50OjpEb3VibGVTdHJ1Y2s7
Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJib2xkLWZyYWt0dXIiKQotICAgICAgICByZXR1
cm4gTWF0aFZhcmlhbnQ6OkJvbGRGcmFrdHVyOwotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAi
c2NyaXB0IikKLSAgICAgICAgcmV0dXJuIE1hdGhWYXJpYW50OjpTY3JpcHQ7Ci0gICAgaWYgKGF0
dHJpYnV0ZVZhbHVlID09ICJib2xkLXNjcmlwdCIpCi0gICAgICAgIHJldHVybiBNYXRoVmFyaWFu
dDo6Qm9sZFNjcmlwdDsKLSAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gImZyYWt0dXIiKQotICAg
ICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6OkZyYWt0dXI7Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVl
ID09ICJzYW5zLXNlcmlmIikKLSAgICAgICAgcmV0dXJuIE1hdGhWYXJpYW50OjpTYW5zU2VyaWY7
Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJib2xkLXNhbnMtc2VyaWYiKQotICAgICAgICBy
ZXR1cm4gTWF0aFZhcmlhbnQ6OkJvbGRTYW5zU2VyaWY7Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVl
ID09ICJzYW5zLXNlcmlmLWl0YWxpYyIpCi0gICAgICAgIHJldHVybiBNYXRoVmFyaWFudDo6U2Fu
c1NlcmlmSXRhbGljOwotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAic2Fucy1zZXJpZi1ib2xk
LWl0YWxpYyIpCi0gICAgICAgIHJldHVybiBNYXRoVmFyaWFudDo6U2Fuc1NlcmlmQm9sZEl0YWxp
YzsKLSAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gIm1vbm9zcGFjZSIpCi0gICAgICAgIHJldHVy
biBNYXRoVmFyaWFudDo6TW9ub3NwYWNlOwotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAiaW5p
dGlhbCIpCi0gICAgICAgIHJldHVybiBNYXRoVmFyaWFudDo6SW5pdGlhbDsKLSAgICBpZiAoYXR0
cmlidXRlVmFsdWUgPT0gInRhaWxlZCIpCi0gICAgICAgIHJldHVybiBNYXRoVmFyaWFudDo6VGFp
bGVkOwotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAibG9vcGVkIikKLSAgICAgICAgcmV0dXJu
IE1hdGhWYXJpYW50OjpMb29wZWQ7Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJzdHJldGNo
ZWQiKQotICAgICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6OlN0cmV0Y2hlZDsKLSAgICByZXR1cm4g
TWF0aFZhcmlhbnQ6Ok5vbmU7Ci19Ci0KLU9wdGlvbmFsPGJvb2w+IE1hdGhNTEVsZW1lbnQ6OnNw
ZWNpZmllZERpc3BsYXlTdHlsZSgpCi17Ci0gICAgaWYgKCFhY2NlcHRzRGlzcGxheVN0eWxlQXR0
cmlidXRlKCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OwotICAgIGNvbnN0IE1hdGhNTEVsZW1l
bnQ6OkJvb2xlYW5WYWx1ZSYgc3BlY2lmaWVkRGlzcGxheVN0eWxlID0gY2FjaGVkQm9vbGVhbkF0
dHJpYnV0ZShkaXNwbGF5c3R5bGVBdHRyLCBtX2Rpc3BsYXlTdHlsZSk7Ci0gICAgcmV0dXJuIHRv
T3B0aW9uYWxCb29sKHNwZWNpZmllZERpc3BsYXlTdHlsZSk7Ci19Ci0KLU9wdGlvbmFsPE1hdGhN
TEVsZW1lbnQ6Ok1hdGhWYXJpYW50PiBNYXRoTUxFbGVtZW50OjpzcGVjaWZpZWRNYXRoVmFyaWFu
dCgpCi17Ci0gICAgaWYgKCFhY2NlcHRzTWF0aFZhcmlhbnRBdHRyaWJ1dGUoKSkKLSAgICAgICAg
cmV0dXJuIE51bGxvcHQ7Ci0gICAgaWYgKCFtX21hdGhWYXJpYW50KQotICAgICAgICBtX21hdGhW
YXJpYW50ID0gcGFyc2VNYXRoVmFyaWFudEF0dHJpYnV0ZShhdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKG1hdGh2YXJpYW50QXR0cikpOwotICAgIHJldHVybiBtX21hdGhWYXJpYW50LnZh
bHVlKCkgPT0gTWF0aFZhcmlhbnQ6Ok5vbmUgPyBOdWxsb3B0IDogbV9tYXRoVmFyaWFudDsKLX0K
LQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
RWxlbWVudC5oCmluZGV4IDI1OTBjMzMwOGVlNzFmMTFiMWZkNzk1Nzc3NzVhNjE0ODM5MzE1ZTUu
LmQ4ODYzYzYwMzYxNDRhODU1NGZiZjljZGJkOGQyMjkxYzQ4ZDRmYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTEVsZW1lbnQuaApAQCAtNTYsNyArNTYsNiBAQCBwdWJsaWM6CiAgICAgICAg
IExlbmd0aFR5cGUgdHlwZSB7IExlbmd0aFR5cGU6OlBhcnNpbmdGYWlsZWQgfTsKICAgICAgICAg
ZmxvYXQgdmFsdWUgeyAwIH07CiAgICAgfTsKLSAgICBzdGF0aWMgTGVuZ3RoIHBhcnNlTWF0aE1M
TGVuZ3RoKGNvbnN0IFN0cmluZyYpOwogCiAgICAgZW51bSBjbGFzcyBCb29sZWFuVmFsdWUgeyBU
cnVlLCBGYWxzZSwgRGVmYXVsdCB9OwogCkBAIC04NSw4ICs4NCw4IEBAIHB1YmxpYzoKICAgICAg
ICAgU3RyZXRjaGVkID0gMTgKICAgICB9OwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxib29sPiBz
cGVjaWZpZWREaXNwbGF5U3R5bGUoKTsKLSAgICBPcHRpb25hbDxNYXRoVmFyaWFudD4gc3BlY2lm
aWVkTWF0aFZhcmlhbnQoKTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsPGJvb2w+IHNwZWNpZmllZERp
c3BsYXlTdHlsZSgpIHsgcmV0dXJuIE51bGxvcHQ7IH0KKyAgICB2aXJ0dWFsIE9wdGlvbmFsPE1h
dGhWYXJpYW50PiBzcGVjaWZpZWRNYXRoVmFyaWFudCgpIHsgcmV0dXJuIE51bGxvcHQ7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZWxlY3RlZENoaWxkKCkgeyB9CiAKQEAgLTEwMSwyNyAr
MTAwLDEwIEBAIHByb3RlY3RlZDoKICAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNvbGxlY3RTdHls
ZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwogCi0gICAgYm9v
bCBpc1BocmFzaW5nQ29udGVudChjb25zdCBOb2RlJikgY29uc3Q7Ci0gICAgYm9vbCBpc0Zsb3dD
b250ZW50KGNvbnN0IE5vZGUmKSBjb25zdDsKLQogICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNl
Q2xpY2tFdmVudHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQqKSBvdmVycmlkZTsKIAotICAgIGNvbnN0IExlbmd0aCYgY2FjaGVkTWF0aE1MTGVuZ3RoKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBPcHRpb25hbDxMZW5ndGg+Jik7Ci0gICAgY29uc3QgQm9vbGVh
blZhbHVlJiBjYWNoZWRCb29sZWFuQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBPcHRp
b25hbDxCb29sZWFuVmFsdWU+Jik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgYWNjZXB0c0Rpc3BsYXlT
dHlsZUF0dHJpYnV0ZSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGFjY2Vw
dHNNYXRoVmFyaWFudEF0dHJpYnV0ZSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBzdGF0aWMg
T3B0aW9uYWw8Ym9vbD4gdG9PcHRpb25hbEJvb2woY29uc3QgQm9vbGVhblZhbHVlJiB2YWx1ZSkg
eyByZXR1cm4gdmFsdWUgPT0gQm9vbGVhblZhbHVlOjpEZWZhdWx0ID8gTnVsbG9wdCA6IE9wdGlv
bmFsPGJvb2w+KHZhbHVlID09IEJvb2xlYW5WYWx1ZTo6VHJ1ZSk7IH0KLSAgICBPcHRpb25hbDxC
b29sZWFuVmFsdWU+IG1fZGlzcGxheVN0eWxlOwotICAgIE9wdGlvbmFsPE1hdGhWYXJpYW50PiBt
X21hdGhWYXJpYW50OwotCiBwcml2YXRlOgotICAgIHN0YXRpYyBMZW5ndGggcGFyc2VOdW1iZXJB
bmRVbml0KGNvbnN0IFN0cmluZ1ZpZXcmKTsKLSAgICBzdGF0aWMgTGVuZ3RoIHBhcnNlTmFtZWRT
cGFjZShjb25zdCBTdHJpbmdWaWV3Jik7Ci0gICAgc3RhdGljIE1hdGhWYXJpYW50IHBhcnNlTWF0
aFZhcmlhbnRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSk7Ci0K
ICAgICBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0Zv
Y3VzYWJsZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXli
b2FyZEV2ZW50KikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAKaW5kZXggMDA3MzljZDRjZmIzNjg2NzVhOThm
NGY1MDQ1Y2I1YmQ5MjE0MGZiMi4uOTM1NWQzODMwYmZkNDAwMzFkYzQ2NmIwNmFhMzE1NjI5NjUy
OTRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlv
bkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRp
b25FbGVtZW50LmNwcApAQCAtMzAsOCArMzAsMTcgQEAKIAogI2lmIEVOQUJMRShNQVRITUwpCiAK
KyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJIVE1MSHRtbEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MTWFwRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgor
I2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJNYXRoTUxNYXRoRWxlbWVu
dC5oIgogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1MQmxv
Y2suaCIKKyNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKKyNpbmNsdWRlICJTVkdOYW1lcy5o
IgorI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC01NSwxMSArNjQsMzIwIEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxQcmVzZW50
YXRpb25FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyCiAgICAgcmV0dXJuIE1h
dGhNTEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihXVEZNb3ZlKHN0eWxlKSwgaW5zZXJ0
aW9uUG9zaXRpb24pOwogfQogCitib29sIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OmlzUGhy
YXNpbmdDb250ZW50KGNvbnN0IE5vZGUmIG5vZGUpCit7CisgICAgLy8gUGhyYXNpbmcgY29udGVu
dCBpcyBkZXNjcmliZWQgaW4gdGhlIEhUTUwgNSBzcGVjaWZpY2F0aW9uOgorICAgIC8vIGh0dHA6
Ly93d3cudzMub3JnL1RSL2h0bWw1L2RvbS5odG1sI3BocmFzaW5nLWNvbnRlbnQuCisKKyAgICBp
ZiAoIW5vZGUuaXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gbm9kZS5pc1RleHROb2Rl
KCk7CisKKyAgICBpZiAoaXM8TWF0aE1MRWxlbWVudD4obm9kZSkpIHsKKyAgICAgICAgYXV0byYg
bWF0aG1sRWxlbWVudCA9IGRvd25jYXN0PE1hdGhNTEVsZW1lbnQ+KG5vZGUpOworICAgICAgICBy
ZXR1cm4gaXM8TWF0aE1MTWF0aEVsZW1lbnQ+KG1hdGhtbEVsZW1lbnQpOworICAgIH0KKworICAg
IGlmIChpczxTVkdFbGVtZW50Pihub2RlKSkgeworICAgICAgICBhdXRvJiBzdmdFbGVtZW50ID0g
ZG93bmNhc3Q8U1ZHRWxlbWVudD4obm9kZSk7CisgICAgICAgIHJldHVybiBpczxTVkdTVkdFbGVt
ZW50PihzdmdFbGVtZW50KTsKKyAgICB9CisKKyAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KG5vZGUp
KSB7CisgICAgICAgIC8vIEZJWE1FOiBhZGQgdGhlIDxkYXRhPiBhbmQgPHRpbWU+IHRhZ3Mgd2hl
biB0aGV5IGFyZSBpbXBsZW1lbnRlZC4KKyAgICAgICAgYXV0byYgaHRtbEVsZW1lbnQgPSBkb3du
Y2FzdDxIVE1MRWxlbWVudD4obm9kZSk7CisgICAgICAgIHJldHVybiBodG1sRWxlbWVudC5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6YVRhZykKKyAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1Rh
Z05hbWUoSFRNTE5hbWVzOjphYmJyVGFnKQorICAgICAgICAgICAgfHwgKGh0bWxFbGVtZW50Lmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjphcmVhVGFnKSAmJiBhbmNlc3RvcnNPZlR5cGU8SFRNTE1hcEVs
ZW1lbnQ+KGh0bWxFbGVtZW50KS5maXJzdCgpKQorICAgICAgICAgICAgfHwgaHRtbEVsZW1lbnQu
aGFzVGFnTmFtZShIVE1MTmFtZXM6OmF1ZGlvVGFnKQorICAgICAgICAgICAgfHwgaHRtbEVsZW1l
bnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmJUYWcpCisgICAgICAgICAgICB8fCBodG1sRWxlbWVu
dC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YmRpVGFnKQorICAgICAgICAgICAgfHwgaHRtbEVsZW1l
bnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmJkb1RhZykKKyAgICAgICAgICAgIHx8IGh0bWxFbGVt
ZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpiclRhZykKKyAgICAgICAgICAgIHx8IGh0bWxFbGVt
ZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpidXR0b25UYWcpCisgICAgICAgICAgICB8fCBodG1s
RWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Y2FudmFzVGFnKQorICAgICAgICAgICAgfHwg
aHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmNpdGVUYWcpCisgICAgICAgICAgICB8
fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Y29kZVRhZykKKyAgICAgICAgICAg
IHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpkYXRhbGlzdFRhZykKKyAgICAg
ICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpkZWxUYWcpCisgICAg
ICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZGZuVGFnKQorICAg
ICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmVtVGFnKQorICAg
ICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmVtYmVkVGFnKQor
ICAgICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmlUYWcpCisg
ICAgICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFn
KQorICAgICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmltZ1Rh
ZykKKyAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1
dFRhZykKKyAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpp
bnNUYWcpCisgICAgICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
a2JkVGFnKQorICAgICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6
OmtleWdlblRhZykKKyAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjpsYWJlbFRhZykKKyAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjptYXBUYWcpCisgICAgICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6bWFya1RhZykKKyAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjptZXRlclRhZykKKyAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjpub3NjcmlwdFRhZykKKyAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjpvYmplY3RUYWcpCisgICAgICAgICAgICB8fCBodG1sRWxlbWVu
dC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b3V0cHV0VGFnKQorICAgICAgICAgICAgfHwgaHRtbEVs
ZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnByb2dyZXNzVGFnKQorICAgICAgICAgICAgfHwg
aHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnFUYWcpCisgICAgICAgICAgICB8fCBo
dG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6cnVieVRhZykKKyAgICAgICAgICAgIHx8
IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzVGFnKQorICAgICAgICAgICAgfHwg
aHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnNhbXBUYWcpCisgICAgICAgICAgICB8
fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2NyaXB0VGFnKQorICAgICAgICAg
ICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnNlbGVjdFRhZykKKyAgICAg
ICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzbWFsbFRhZykKKyAg
ICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzcGFuVGFnKQor
ICAgICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnN0cm9uZ1Rh
ZykKKyAgICAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzdWJU
YWcpCisgICAgICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c3Vw
VGFnKQorICAgICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnRl
bXBsYXRlVGFnKQorICAgICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnRleHRhcmVhVGFnKQorICAgICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShI
VE1MTmFtZXM6OnVUYWcpCisgICAgICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6dmFyVGFnKQorICAgICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShI
VE1MTmFtZXM6OnZpZGVvVGFnKQorICAgICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFt
ZShIVE1MTmFtZXM6OndiclRhZyk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OmlzRmxvd0NvbnRlbnQoY29uc3QgTm9kZSYg
bm9kZSkKK3sKKyAgICAvLyBGbG93IGNvbnRlbnQgaXMgZGVzY3JpYmVkIGluIHRoZSBIVE1MIDUg
c3BlY2lmaWNhdGlvbjoKKyAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9kb20uaHRt
bCNmbG93LWNvbnRlbnQKKworICAgIGlmIChpc1BocmFzaW5nQ29udGVudChub2RlKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIWlzPEhUTUxFbGVtZW50Pihub2RlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byYgaHRtbEVsZW1lbnQgPSBkb3duY2FzdDxIVE1M
RWxlbWVudD4obm9kZSk7CisgICAgLy8gRklYTUUgYWRkIHRoZSA8ZGlhbG9nPiB0YWcgd2hlbiBp
dCBpcyBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1M
TmFtZXM6OmFkZHJlc3NUYWcpCisgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjphcnRpY2xlVGFnKQorICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6YXNpZGVUYWcpCisgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjpibG9ja3F1b3RlVGFnKQorICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6ZGV0YWlsc1RhZykKKyAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFt
ZShIVE1MTmFtZXM6OmRpdlRhZykKKyAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShI
VE1MTmFtZXM6OmRsVGFnKQorICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6ZmllbGRzZXRUYWcpCisgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjpmaWd1cmVUYWcpCisgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjpmb290ZXJUYWcpCisgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjpmb3JtVGFnKQorICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6aDFUYWcpCisgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjpoMlRhZykKKyAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6Omgz
VGFnKQorICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aDRUYWcp
CisgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpoNVRhZykKKyAg
ICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6Omg2VGFnKQorICAgICAg
ICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aGVhZGVyVGFnKQorICAgICAg
ICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aHJUYWcpCisgICAgICAgIHx8
IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjptYWluVGFnKQorICAgICAgICB8fCBo
dG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6bmF2VGFnKQorICAgICAgICB8fCBodG1s
RWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b2xUYWcpCisgICAgICAgIHx8IGh0bWxFbGVt
ZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpwVGFnKQorICAgICAgICB8fCBodG1sRWxlbWVudC5o
YXNUYWdOYW1lKEhUTUxOYW1lczo6cHJlVGFnKQorICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6c2VjdGlvblRhZykKKyAgICAgICAgfHwgKGh0bWxFbGVtZW50Lmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjpzdHlsZVRhZykgJiYgaHRtbEVsZW1lbnQuaGFzQXR0cmlidXRl
KCJzY29wZWQiKSkKKyAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6
OnRhYmxlVGFnKQorICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
dWxUYWcpOworfQorCitjb25zdCBNYXRoTUxFbGVtZW50OjpCb29sZWFuVmFsdWUmIE1hdGhNTFBy
ZXNlbnRhdGlvbkVsZW1lbnQ6OmNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgT3B0aW9uYWw8Qm9vbGVhblZhbHVlPiYgYXR0cmlidXRlKQoreworICAgIGlm
IChhdHRyaWJ1dGUpCisgICAgICAgIHJldHVybiBhdHRyaWJ1dGUudmFsdWUoKTsKKworICAgIC8v
IEluIE1hdGhNTCwgYXR0cmlidXRlIHZhbHVlcyBhcmUgY2FzZS1zZW5zaXRpdmUuCisgICAgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
bmFtZSk7CisgICAgaWYgKHZhbHVlID09ICJ0cnVlIikKKyAgICAgICAgYXR0cmlidXRlID0gQm9v
bGVhblZhbHVlOjpUcnVlOworICAgIGVsc2UgaWYgKHZhbHVlID09ICJmYWxzZSIpCisgICAgICAg
IGF0dHJpYnV0ZSA9IEJvb2xlYW5WYWx1ZTo6RmFsc2U7CisgICAgZWxzZQorICAgICAgICBhdHRy
aWJ1dGUgPSBCb29sZWFuVmFsdWU6OkRlZmF1bHQ7CisKKyAgICByZXR1cm4gYXR0cmlidXRlLnZh
bHVlKCk7Cit9CisKK01hdGhNTEVsZW1lbnQ6Okxlbmd0aCBNYXRoTUxQcmVzZW50YXRpb25FbGVt
ZW50OjpwYXJzZU51bWJlckFuZFVuaXQoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nKQoreworICAg
IExlbmd0aFR5cGUgbGVuZ3RoVHlwZSA9IExlbmd0aFR5cGU6OlVuaXRMZXNzOworICAgIHVuc2ln
bmVkIHN0cmluZ0xlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBVQ2hhciBsYXN0Q2hhciA9
IHN0cmluZ1tzdHJpbmdMZW5ndGggLSAxXTsKKyAgICBpZiAobGFzdENoYXIgPT0gJyUnKSB7Cisg
ICAgICAgIGxlbmd0aFR5cGUgPSBMZW5ndGhUeXBlOjpQZXJjZW50YWdlOworICAgICAgICBzdHJp
bmdMZW5ndGgtLTsKKyAgICB9IGVsc2UgaWYgKHN0cmluZ0xlbmd0aCA+PSAyKSB7CisgICAgICAg
IFVDaGFyIHBlbnVsdGltYXRlQ2hhciA9IHN0cmluZ1tzdHJpbmdMZW5ndGggLSAyXTsKKyAgICAg
ICAgaWYgKHBlbnVsdGltYXRlQ2hhciA9PSAnYycgJiYgbGFzdENoYXIgPT0gJ20nKQorICAgICAg
ICAgICAgbGVuZ3RoVHlwZSA9IExlbmd0aFR5cGU6OkNtOworICAgICAgICBpZiAocGVudWx0aW1h
dGVDaGFyID09ICdlJyAmJiBsYXN0Q2hhciA9PSAnbScpCisgICAgICAgICAgICBsZW5ndGhUeXBl
ID0gTGVuZ3RoVHlwZTo6RW07CisgICAgICAgIGVsc2UgaWYgKHBlbnVsdGltYXRlQ2hhciA9PSAn
ZScgJiYgbGFzdENoYXIgPT0gJ3gnKQorICAgICAgICAgICAgbGVuZ3RoVHlwZSA9IExlbmd0aFR5
cGU6OkV4OworICAgICAgICBlbHNlIGlmIChwZW51bHRpbWF0ZUNoYXIgPT0gJ2knICYmIGxhc3RD
aGFyID09ICduJykKKyAgICAgICAgICAgIGxlbmd0aFR5cGUgPSBMZW5ndGhUeXBlOjpJbjsKKyAg
ICAgICAgZWxzZSBpZiAocGVudWx0aW1hdGVDaGFyID09ICdtJyAmJiBsYXN0Q2hhciA9PSAnbScp
CisgICAgICAgICAgICBsZW5ndGhUeXBlID0gTGVuZ3RoVHlwZTo6TW07CisgICAgICAgIGVsc2Ug
aWYgKHBlbnVsdGltYXRlQ2hhciA9PSAncCcgJiYgbGFzdENoYXIgPT0gJ2MnKQorICAgICAgICAg
ICAgbGVuZ3RoVHlwZSA9IExlbmd0aFR5cGU6OlBjOworICAgICAgICBlbHNlIGlmIChwZW51bHRp
bWF0ZUNoYXIgPT0gJ3AnICYmIGxhc3RDaGFyID09ICd0JykKKyAgICAgICAgICAgIGxlbmd0aFR5
cGUgPSBMZW5ndGhUeXBlOjpQdDsKKyAgICAgICAgZWxzZSBpZiAocGVudWx0aW1hdGVDaGFyID09
ICdwJyAmJiBsYXN0Q2hhciA9PSAneCcpCisgICAgICAgICAgICBsZW5ndGhUeXBlID0gTGVuZ3Ro
VHlwZTo6UHg7CisKKyAgICAgICAgaWYgKGxlbmd0aFR5cGUgIT0gTGVuZ3RoVHlwZTo6VW5pdExl
c3MpCisgICAgICAgICAgICBzdHJpbmdMZW5ndGggLT0gMjsKKyAgICB9CisKKyAgICBib29sIG9r
OworICAgIGZsb2F0IGxlbmd0aFZhbHVlID0gc3RyaW5nLnN1YnN0cmluZygwLCBzdHJpbmdMZW5n
dGgpLnRvRmxvYXQob2spOworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiBMZW5ndGgoKTsK
KworICAgIExlbmd0aCBsZW5ndGg7CisgICAgbGVuZ3RoLnR5cGUgPSBsZW5ndGhUeXBlOworICAg
IGxlbmd0aC52YWx1ZSA9IGxlbmd0aFZhbHVlOworICAgIHJldHVybiBsZW5ndGg7Cit9CisKK01h
dGhNTEVsZW1lbnQ6Okxlbmd0aCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU5hbWVk
U3BhY2UoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nKQoreworICAgIC8vIE5hbWVkIHNwYWNlIHZh
bHVlcyBhcmUgY2FzZS1zZW5zaXRpdmUuCisgICAgaW50IG5hbWVkU3BhY2VWYWx1ZTsKKyAgICBp
ZiAoc3RyaW5nID09ICJ2ZXJ5dmVyeXRoaW5tYXRoc3BhY2UiKQorICAgICAgICBuYW1lZFNwYWNl
VmFsdWUgPSAxOworICAgIGVsc2UgaWYgKHN0cmluZyA9PSAidmVyeXRoaW5tYXRoc3BhY2UiKQor
ICAgICAgICBuYW1lZFNwYWNlVmFsdWUgPSAyOworICAgIGVsc2UgaWYgKHN0cmluZyA9PSAidGhp
bm1hdGhzcGFjZSIpCisgICAgICAgIG5hbWVkU3BhY2VWYWx1ZSA9IDM7CisgICAgZWxzZSBpZiAo
c3RyaW5nID09ICJtZWRpdW1tYXRoc3BhY2UiKQorICAgICAgICBuYW1lZFNwYWNlVmFsdWUgPSA0
OworICAgIGVsc2UgaWYgKHN0cmluZyA9PSAidGhpY2ttYXRoc3BhY2UiKQorICAgICAgICBuYW1l
ZFNwYWNlVmFsdWUgPSA1OworICAgIGVsc2UgaWYgKHN0cmluZyA9PSAidmVyeXRoaWNrbWF0aHNw
YWNlIikKKyAgICAgICAgbmFtZWRTcGFjZVZhbHVlID0gNjsKKyAgICBlbHNlIGlmIChzdHJpbmcg
PT0gInZlcnl2ZXJ5dGhpY2ttYXRoc3BhY2UiKQorICAgICAgICBuYW1lZFNwYWNlVmFsdWUgPSA3
OworICAgIGVsc2UgaWYgKHN0cmluZyA9PSAibmVnYXRpdmV2ZXJ5dmVyeXRoaW5tYXRoc3BhY2Ui
KQorICAgICAgICBuYW1lZFNwYWNlVmFsdWUgPSAtMTsKKyAgICBlbHNlIGlmIChzdHJpbmcgPT0g
Im5lZ2F0aXZldmVyeXRoaW5tYXRoc3BhY2UiKQorICAgICAgICBuYW1lZFNwYWNlVmFsdWUgPSAt
MjsKKyAgICBlbHNlIGlmIChzdHJpbmcgPT0gIm5lZ2F0aXZldGhpbm1hdGhzcGFjZSIpCisgICAg
ICAgIG5hbWVkU3BhY2VWYWx1ZSA9IC0zOworICAgIGVsc2UgaWYgKHN0cmluZyA9PSAibmVnYXRp
dmVtZWRpdW1tYXRoc3BhY2UiKQorICAgICAgICBuYW1lZFNwYWNlVmFsdWUgPSAtNDsKKyAgICBl
bHNlIGlmIChzdHJpbmcgPT0gIm5lZ2F0aXZldGhpY2ttYXRoc3BhY2UiKQorICAgICAgICBuYW1l
ZFNwYWNlVmFsdWUgPSAtNTsKKyAgICBlbHNlIGlmIChzdHJpbmcgPT0gIm5lZ2F0aXZldmVyeXRo
aWNrbWF0aHNwYWNlIikKKyAgICAgICAgbmFtZWRTcGFjZVZhbHVlID0gLTY7CisgICAgZWxzZSBp
ZiAoc3RyaW5nID09ICJuZWdhdGl2ZXZlcnl2ZXJ5dGhpY2ttYXRoc3BhY2UiKQorICAgICAgICBu
YW1lZFNwYWNlVmFsdWUgPSAtNzsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBMZW5ndGgoKTsK
KworICAgIExlbmd0aCBsZW5ndGg7CisgICAgbGVuZ3RoLnR5cGUgPSBMZW5ndGhUeXBlOjpNYXRo
VW5pdDsKKyAgICBsZW5ndGgudmFsdWUgPSBuYW1lZFNwYWNlVmFsdWU7CisgICAgcmV0dXJuIGxl
bmd0aDsKK30KKworTWF0aE1MRWxlbWVudDo6TGVuZ3RoIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1l
bnQ6OnBhcnNlTWF0aE1MTGVuZ3RoKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIC8vIFRo
ZSByZWd1bGFyIGV4cHJlc3Npb24gZnJvbSB0aGUgTWF0aE1MIFJlbGF4IE5HIHNjaGVtYSBpcyBh
cyBmb2xsb3dzOgorICAgIC8vCisgICAgLy8gICBwYXR0ZXJuID0gJ1xzKigoLT9bMC05XSooWzAt
OV1cLj98XC5bMC05XSlbMC05XSooZVtteF18aW58Y218bW18cFt4dGNdfCUpPyl8KG5lZ2F0aXZl
KT8oKHZlcnkpezAsMn10aGkobnxjayl8bWVkaXVtKW1hdGhzcGFjZSlccyonCisgICAgLy8KKyAg
ICAvLyBXZSBkbyBub3QgcGVyZm9ybSBhIHN0cmljdCB2ZXJpZmljYXRpb24gb2YgdGhlIHN5bnRh
eCBvZiB3aGl0ZXNwYWNlcyBhbmQgbnVtYmVyLgorICAgIC8vIEluc3RlYWQsIHdlIGp1c3QgdXNl
IGlzSFRNTFNwYWNlIGFuZCB0b0Zsb2F0IHRvIHBhcnNlIHRoZXNlIHBhcnRzLgorCisgICAgLy8g
V2UgZmlyc3Qgc2tpcCB3aGl0ZXNwYWNlIGZyb20gYm90aCBlbmRzIG9mIHRoZSBzdHJpbmcuCisg
ICAgU3RyaW5nVmlldyBzdHJpbmdWaWV3ID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdXaGl0ZXNw
YWNlKHN0cmluZyk7CisKKyAgICBpZiAoc3RyaW5nVmlldy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBMZW5ndGgoKTsKKworICAgIC8vIFdlIGNvbnNpZGVyIHRoZSBtb3N0IHR5cGljYWwgY2Fz
ZTogYSBudW1iZXIgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgdW5pdC4KKyAgICBVQ2hhciBmaXJz
dENoYXIgPSBzdHJpbmdWaWV3WzBdOworICAgIGlmIChpc0FTQ0lJRGlnaXQoZmlyc3RDaGFyKSB8
fCBmaXJzdENoYXIgPT0gJy0nIHx8IGZpcnN0Q2hhciA9PSAnLicpCisgICAgICAgIHJldHVybiBw
YXJzZU51bWJlckFuZFVuaXQoc3RyaW5nVmlldyk7CisKKyAgICAvLyBPdGhlcndpc2UsIHdlIHRy
eSBhbmQgcGFyc2UgYSBuYW1lZCBzcGFjZS4KKyAgICByZXR1cm4gcGFyc2VOYW1lZFNwYWNlKHN0
cmluZ1ZpZXcpOworfQorCitjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIE1hdGhNTFByZXNl
bnRhdGlvbkVsZW1lbnQ6OmNhY2hlZE1hdGhNTExlbmd0aChjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBPcHRpb25hbDxMZW5ndGg+JiBsZW5ndGgpCit7CisgICAgaWYgKGxlbmd0aCkKKyAgICAg
ICAgcmV0dXJuIGxlbmd0aC52YWx1ZSgpOworICAgIGxlbmd0aCA9IHBhcnNlTWF0aE1MTGVuZ3Ro
KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obmFtZSkpOworICAgIHJldHVybiBsZW5n
dGgudmFsdWUoKTsKK30KKwogYm9vbCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjphY2NlcHRz
RGlzcGxheVN0eWxlQXR0cmlidXRlKCkKIHsKICAgICByZXR1cm4gaGFzVGFnTmFtZShtdGFibGVU
YWcpOwogfQogCitPcHRpb25hbDxib29sPiBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpzcGVj
aWZpZWREaXNwbGF5U3R5bGUoKQoreworICAgIGlmICghYWNjZXB0c0Rpc3BsYXlTdHlsZUF0dHJp
YnV0ZSgpKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICBjb25zdCBNYXRoTUxFbGVtZW50
OjpCb29sZWFuVmFsdWUmIHNwZWNpZmllZERpc3BsYXlTdHlsZSA9IGNhY2hlZEJvb2xlYW5BdHRy
aWJ1dGUoZGlzcGxheXN0eWxlQXR0ciwgbV9kaXNwbGF5U3R5bGUpOworICAgIHJldHVybiB0b09w
dGlvbmFsQm9vbChzcGVjaWZpZWREaXNwbGF5U3R5bGUpOworfQorCitNYXRoTUxFbGVtZW50OjpN
YXRoVmFyaWFudCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU1hdGhWYXJpYW50QXR0
cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVmFsdWUpCit7CisgICAgLy8gVGhl
IG1hdGh2YXJpYW50IGF0dHJpYnV0ZSB2YWx1ZXMgaXMgY2FzZS1zZW5zaXRpdmUuCisgICAgaWYg
KGF0dHJpYnV0ZVZhbHVlID09ICJub3JtYWwiKQorICAgICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6
Ok5vcm1hbDsKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gImJvbGQiKQorICAgICAgICByZXR1
cm4gTWF0aFZhcmlhbnQ6OkJvbGQ7CisgICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJpdGFsaWMi
KQorICAgICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6Okl0YWxpYzsKKyAgICBpZiAoYXR0cmlidXRl
VmFsdWUgPT0gImJvbGQtaXRhbGljIikKKyAgICAgICAgcmV0dXJuIE1hdGhWYXJpYW50OjpCb2xk
SXRhbGljOworICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAiZG91YmxlLXN0cnVjayIpCisgICAg
ICAgIHJldHVybiBNYXRoVmFyaWFudDo6RG91YmxlU3RydWNrOworICAgIGlmIChhdHRyaWJ1dGVW
YWx1ZSA9PSAiYm9sZC1mcmFrdHVyIikKKyAgICAgICAgcmV0dXJuIE1hdGhWYXJpYW50OjpCb2xk
RnJha3R1cjsKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gInNjcmlwdCIpCisgICAgICAgIHJl
dHVybiBNYXRoVmFyaWFudDo6U2NyaXB0OworICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAiYm9s
ZC1zY3JpcHQiKQorICAgICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6OkJvbGRTY3JpcHQ7CisgICAg
aWYgKGF0dHJpYnV0ZVZhbHVlID09ICJmcmFrdHVyIikKKyAgICAgICAgcmV0dXJuIE1hdGhWYXJp
YW50OjpGcmFrdHVyOworICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAic2Fucy1zZXJpZiIpCisg
ICAgICAgIHJldHVybiBNYXRoVmFyaWFudDo6U2Fuc1NlcmlmOworICAgIGlmIChhdHRyaWJ1dGVW
YWx1ZSA9PSAiYm9sZC1zYW5zLXNlcmlmIikKKyAgICAgICAgcmV0dXJuIE1hdGhWYXJpYW50OjpC
b2xkU2Fuc1NlcmlmOworICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAic2Fucy1zZXJpZi1pdGFs
aWMiKQorICAgICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6OlNhbnNTZXJpZkl0YWxpYzsKKyAgICBp
ZiAoYXR0cmlidXRlVmFsdWUgPT0gInNhbnMtc2VyaWYtYm9sZC1pdGFsaWMiKQorICAgICAgICBy
ZXR1cm4gTWF0aFZhcmlhbnQ6OlNhbnNTZXJpZkJvbGRJdGFsaWM7CisgICAgaWYgKGF0dHJpYnV0
ZVZhbHVlID09ICJtb25vc3BhY2UiKQorICAgICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6Ok1vbm9z
cGFjZTsKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gImluaXRpYWwiKQorICAgICAgICByZXR1
cm4gTWF0aFZhcmlhbnQ6OkluaXRpYWw7CisgICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09ICJ0YWls
ZWQiKQorICAgICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6OlRhaWxlZDsKKyAgICBpZiAoYXR0cmli
dXRlVmFsdWUgPT0gImxvb3BlZCIpCisgICAgICAgIHJldHVybiBNYXRoVmFyaWFudDo6TG9vcGVk
OworICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSAic3RyZXRjaGVkIikKKyAgICAgICAgcmV0dXJu
IE1hdGhWYXJpYW50OjpTdHJldGNoZWQ7CisgICAgcmV0dXJuIE1hdGhWYXJpYW50OjpOb25lOwor
fQorCitPcHRpb25hbDxNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudD4gTWF0aE1MUHJlc2VudGF0
aW9uRWxlbWVudDo6c3BlY2lmaWVkTWF0aFZhcmlhbnQoKQoreworICAgIGlmICghYWNjZXB0c01h
dGhWYXJpYW50QXR0cmlidXRlKCkpCisgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIGlmICgh
bV9tYXRoVmFyaWFudCkKKyAgICAgICAgbV9tYXRoVmFyaWFudCA9IHBhcnNlTWF0aFZhcmlhbnRB
dHRyaWJ1dGUoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihtYXRodmFyaWFudEF0dHIp
KTsKKyAgICByZXR1cm4gbV9tYXRoVmFyaWFudC52YWx1ZSgpID09IE1hdGhWYXJpYW50OjpOb25l
ID8gTnVsbG9wdCA6IG1fbWF0aFZhcmlhbnQ7Cit9CisKIHZvaWQgTWF0aE1MUHJlc2VudGF0aW9u
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBib29sIGRpc3BsYXlTdHlsZUF0dHJpYnV0ZSA9
IG5hbWUgPT0gZGlzcGxheXN0eWxlQXR0ciAmJiBhY2NlcHRzRGlzcGxheVN0eWxlQXR0cmlidXRl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9u
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1l
bnQuaAppbmRleCBiOWYzMzAwYTE2NWQwMjJlMDk5NzYyZGE1YWFlMjY5YjdhMTg3Y2Y4Li4xYWY4
YjgxZDFkYjMwZjNmMGI1ZjU3NzMwZjRjOWEyNGMxZTgzOWMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmgKQEAgLTQxLDExICs0MSwz
MSBAQCBwcm90ZWN0ZWQ6CiAgICAgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCi0g
ICAgYm9vbCBhY2NlcHRzRGlzcGxheVN0eWxlQXR0cmlidXRlKCkgb3ZlcnJpZGU7CisgICAgc3Rh
dGljIGJvb2wgaXNQaHJhc2luZ0NvbnRlbnQoY29uc3QgTm9kZSYpOworICAgIHN0YXRpYyBib29s
IGlzRmxvd0NvbnRlbnQoY29uc3QgTm9kZSYpOworCisgICAgc3RhdGljIE9wdGlvbmFsPGJvb2w+
IHRvT3B0aW9uYWxCb29sKGNvbnN0IEJvb2xlYW5WYWx1ZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
ID09IEJvb2xlYW5WYWx1ZTo6RGVmYXVsdCA/IE51bGxvcHQgOiBPcHRpb25hbDxib29sPih2YWx1
ZSA9PSBCb29sZWFuVmFsdWU6OlRydWUpOyB9CisgICAgY29uc3QgQm9vbGVhblZhbHVlJiBjYWNo
ZWRCb29sZWFuQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBPcHRpb25hbDxCb29sZWFu
VmFsdWU+Jik7CisKKyAgICBzdGF0aWMgTGVuZ3RoIHBhcnNlTWF0aE1MTGVuZ3RoKGNvbnN0IFN0
cmluZyYpOworICAgIGNvbnN0IExlbmd0aCYgY2FjaGVkTWF0aE1MTGVuZ3RoKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBPcHRpb25hbDxMZW5ndGg+Jik7CisKKyAgICB2aXJ0dWFsIGJvb2wgYWNjZXB0
c0Rpc3BsYXlTdHlsZUF0dHJpYnV0ZSgpOworICAgIE9wdGlvbmFsPGJvb2w+IHNwZWNpZmllZERp
c3BsYXlTdHlsZSgpIG92ZXJyaWRlOworCisgICAgdmlydHVhbCBib29sIGFjY2VwdHNNYXRoVmFy
aWFudEF0dHJpYnV0ZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgT3B0aW9uYWw8TWF0aFZhcmlh
bnQ+IHNwZWNpZmllZE1hdGhWYXJpYW50KCkgZmluYWw7CisKKyAgICBPcHRpb25hbDxCb29sZWFu
VmFsdWU+IG1fZGlzcGxheVN0eWxlOworICAgIE9wdGlvbmFsPE1hdGhWYXJpYW50PiBtX21hdGhW
YXJpYW50OwogCiBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikg
b3ZlcnJpZGU7CiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbk1hdGhNTCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KKworICAgIHN0YXRpYyBMZW5ndGggcGFyc2VOdW1iZXJBbmRVbml0KGNv
bnN0IFN0cmluZ1ZpZXcmKTsKKyAgICBzdGF0aWMgTGVuZ3RoIHBhcnNlTmFtZWRTcGFjZShjb25z
dCBTdHJpbmdWaWV3Jik7CisgICAgc3RhdGljIE1hdGhWYXJpYW50IHBhcnNlTWF0aFZhcmlhbnRB
dHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSk7CiB9OwogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>