<?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>141673</bug_id>
          
          <creation_ts>2015-02-16 15:55:42 -0800</creation_ts>
          <short_desc>The wrong element&apos;s style is used for text-decoration-style</short_desc>
          <delta_ts>2015-02-18 11:01:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mario</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>samuel_white</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1069639</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2015-02-16 15:55:42 -0800</bug_when>
    <thetext>It should behave like colors and be drawn from the enclosing decorating box&apos;s style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069642</commentid>
    <comment_count>1</comment_count>
      <attachid>246694</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2015-02-16 15:58:01 -0800</bug_when>
    <thetext>Created attachment 246694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069673</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-02-16 17:01:39 -0800</bug_when>
    <thetext>/Volumes/Data/EWS/WebKit/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:1768:19: error: no member named &apos;getTextDecorationColors&apos; in &apos;WebCore::RenderObject&apos;
        renderer-&gt;getTextDecorationColors(decor, underline, overline, linethrough);
        ~~~~~~~~  ^
1 error generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069894</commentid>
    <comment_count>3</comment_count>
      <attachid>246755</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2015-02-17 10:57:29 -0800</bug_when>
    <thetext>Created attachment 246755
Patch that works on iOS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069895</commentid>
    <comment_count>4</comment_count>
      <attachid>246756</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2015-02-17 10:58:23 -0800</bug_when>
    <thetext>Created attachment 246756
Patch that works on iOS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070147</commentid>
    <comment_count>5</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2015-02-18 11:01:11 -0800</bug_when>
    <thetext>Fixed in r180273.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246694</attachid>
            <date>2015-02-16 15:58:01 -0800</date>
            <delta_ts>2015-02-17 10:57:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>19088</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDE4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE1LTAyLTE2ICBEYXZpZCBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBXcm9uZyBlbGVtZW50J3Mgc3R5bGUg
aXMgdXNlZCBmb3IgdGV4dC1kZWNvcmF0aW9uLXN0eWxlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgZmFzdC90ZXh0L3RleHQtdW5kZXJsaW5l
LXN0eWxlLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHls
ZSk6CisgICAgICAgIEFkZCBhcmd1bWVudHMgZm9yIGZldGNoaW5nIHN0eWxlcy4KKworICAgICAg
ICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZVRleHRCb3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50
RGVjb3JhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guaDoKKyAgICAg
ICAgUmVtb3ZlIHRoZSBwYXNzZWQgaW4gVGV4dERlY29yYXRpb25TdHlsZSBhbmQgaW5zdGVhZCBw
YXRjaCB0aGUgY29kZSB0byBmZXRjaCB0aGUgc3R5bGVzIGluIHRoZSBzYW1lCisgICAgICAgIHdh
eSBpdCBmZXRjaGVzIHRoZSBjb2xvcnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Z2V0VGV4dERlY29yYXRp
b25Db2xvcnNBbmRTdHlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpnZXRU
ZXh0RGVjb3JhdGlvbkNvbG9ycyk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oOgorICAgICAgICBBZGQgc3R5bGUgZmV0Y2hpbmcgdG8gdGhlIHNhbWUgZnVuY3Rp
b24gdGhhdCBmZXRjaGVzIGNvbG9ycyBhbmQgcmVuYW1lIGl0LgorCiAyMDE1LTAyLTE2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0
IGEgY2hhbmdlIGluIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIgY29tbWl0
dGVkIGZvciBmaXhpbmcgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTk2MjY+LgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHJl
dmlzaW9uIDE4MDE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04ODIsMTkg
Kzg4MiwxOSBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKE5TCiAgICAg
fQogICAgIAogICAgIGlmICgoZGVjb3IgJiAoVGV4dERlY29yYXRpb25VbmRlcmxpbmUgfCBUZXh0
RGVjb3JhdGlvbkxpbmVUaHJvdWdoKSkgIT0gMCkgewotICAgICAgICAvLyBmaW5kIGNvbG9ycyB1
c2luZyBxdWlyayBtb2RlIGFwcHJvYWNoIChzdHJpY3QgbW9kZSB3b3VsZCB1c2UgY3VycmVudAot
ICAgICAgICAvLyBjb2xvciBmb3IgYWxsIGJ1dCB0aGUgcm9vdCBsaW5lIGJveCwgd2hpY2ggd291
bGQgdXNlIGdldFRleHREZWNvcmF0aW9uQ29sb3JzKQotICAgICAgICBDb2xvciB1bmRlcmxpbmUs
IG92ZXJsaW5lLCBsaW5ldGhyb3VnaDsKLSAgICAgICAgcmVuZGVyZXItPmdldFRleHREZWNvcmF0
aW9uQ29sb3JzKGRlY29yLCB1bmRlcmxpbmUsIG92ZXJsaW5lLCBsaW5ldGhyb3VnaCk7CisgICAg
ICAgIC8vIEZJWE1FOiBTaG91bGQgdGhlIHVuZGVybGluZSBzdHlsZSBiZSByZXBvcnRlZCBoZXJl
PworICAgICAgICBDb2xvciB1bmRlcmxpbmVDb2xvciwgb3ZlcmxpbmVDb2xvciwgbGluZXRocm91
Z2hDb2xvcjsKKyAgICAgICAgVGV4dERlY29yYXRpb25TdHlsZSB1bmRlcmxpbmVTdHlsZSwgb3Zl
cmxpbmVTdHlsZSwgbGluZXRocm91Z2hTdHlsZTsKKyAgICAgICAgcmVuZGVyZXItPmdldFRleHRE
ZWNvcmF0aW9uQ29sb3JzQW5kU3R5bGVzKGRlY29yLCB1bmRlcmxpbmVDb2xvciwgb3ZlcmxpbmVD
b2xvciwgbGluZXRocm91Z2hDb2xvciwgdW5kZXJsaW5lU3R5bGUsIG92ZXJsaW5lU3R5bGUsIGxp
bmV0aHJvdWdoU3R5bGUpOwogICAgICAgICAKICAgICAgICAgaWYgKChkZWNvciAmIFRleHREZWNv
cmF0aW9uVW5kZXJsaW5lKSAhPSAwKSB7CiAgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1Nl
dE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVUZXh0QXR0cmlidXRl
LCBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgcmFuZ2UpOwotICAgICAgICAgICAgQVhB
dHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxp
bmVDb2xvclRleHRBdHRyaWJ1dGUsIG5zQ29sb3IodW5kZXJsaW5lKSwgcmFuZ2UpOworICAgICAg
ICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxp
dHlVbmRlcmxpbmVDb2xvclRleHRBdHRyaWJ1dGUsIG5zQ29sb3IodW5kZXJsaW5lQ29sb3IpLCBy
YW5nZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICgoZGVjb3IgJiBUZXh0RGVj
b3JhdGlvbkxpbmVUaHJvdWdoKSAhPSAwKSB7CiAgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmlu
Z1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoVGV4dEF0
dHJpYnV0ZSwgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sIHJhbmdlKTsKLSAgICAgICAg
ICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5
U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0dHJpYnV0ZSwgbnNDb2xvcihsaW5ldGhyb3VnaCksIHJh
bmdlKTsKKyAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywg
TlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0dHJpYnV0ZSwgbnNDb2xvcihs
aW5ldGhyb3VnaENvbG9yKSwgcmFuZ2UpOwogICAgICAgICB9CiAgICAgfQogICAgIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkocmV2aXNpb24gMTgw
MTU0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MjIsNyArNjIyLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQ
YWludEluZm8mIHBhaQogICAgICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoY29udGV4dCwgdGV4
dFBhaW50U3R5bGUpOwogICAgICAgICBpZiAoY29tYmluZWRUZXh0KQogICAgICAgICAgICAgY29u
dGV4dC5jb25jYXRDVE0ocm90YXRpb24oYm94UmVjdCwgQ2xvY2t3aXNlKSk7Ci0gICAgICAgIHBh
aW50RGVjb3JhdGlvbihjb250ZXh0LCBib3hPcmlnaW4sIHRleHREZWNvcmF0aW9ucywgbGluZVN0
eWxlLnRleHREZWNvcmF0aW9uU3R5bGUoKSwgdGV4dFNoYWRvdywgdGV4dFBhaW50ZXIpOworICAg
ICAgICBwYWludERlY29yYXRpb24oY29udGV4dCwgYm94T3JpZ2luLCB0ZXh0RGVjb3JhdGlvbnMs
IHRleHRTaGFkb3csIHRleHRQYWludGVyKTsKICAgICAgICAgaWYgKGNvbWJpbmVkVGV4dCkKICAg
ICAgICAgICAgIGNvbnRleHQuY29uY2F0Q1RNKHJvdGF0aW9uKGJveFJlY3QsIENvdW50ZXJjbG9j
a3dpc2UpKTsKICAgICB9CkBAIC04OTUsNyArODk1LDcgQEAgc3RhdGljIHZvaWQgc3Ryb2tlV2F2
eVRleHREZWNvcmF0aW9uKEdyYQogICAgIGNvbnRleHQuc3Ryb2tlUGF0aChwYXRoKTsKIH0KIAot
dm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFRleHREZWNvcmF0aW9uIGRlY29yYXRp
b24sIFRleHREZWNvcmF0aW9uU3R5bGUgZGVjb3JhdGlvblN0eWxlLCBjb25zdCBTaGFkb3dEYXRh
KiBzaGFkb3csIFRleHRQYWludGVyJiB0ZXh0UGFpbnRlcikKK3ZvaWQgSW5saW5lVGV4dEJveDo6
cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2lu
dCYgYm94T3JpZ2luLCBUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBjb25zdCBTaGFkb3dEYXRh
KiBzaGFkb3csIFRleHRQYWludGVyJiB0ZXh0UGFpbnRlcikKIHsKICNpZiAhRU5BQkxFKENTUzNf
VEVYVF9ERUNPUkFUSU9OX1NLSVBfSU5LKQogICAgIFVOVVNFRF9QQVJBTSh0ZXh0UGFpbnRlcik7
CkBAIC05MTQsMTAgKzkxNCwxMSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlv
bihHcmFwCiAgICAgfQogICAgIAogICAgIC8vIEdldCB0aGUgdGV4dCBkZWNvcmF0aW9uIGNvbG9y
cy4KLSAgICBDb2xvciB1bmRlcmxpbmUsIG92ZXJsaW5lLCBsaW5ldGhyb3VnaDsKLSAgICByZW5k
ZXJlcigpLmdldFRleHREZWNvcmF0aW9uQ29sb3JzKGRlY29yYXRpb24sIHVuZGVybGluZSwgb3Zl
cmxpbmUsIGxpbmV0aHJvdWdoKTsKKyAgICBDb2xvciB1bmRlcmxpbmVDb2xvciwgb3ZlcmxpbmVD
b2xvciwgbGluZXRocm91Z2hDb2xvcjsKKyAgICBUZXh0RGVjb3JhdGlvblN0eWxlIHVuZGVybGlu
ZVN0eWxlLCBvdmVybGluZVN0eWxlLCBsaW5ldGhyb3VnaFN0eWxlOworICAgIHJlbmRlcmVyKCku
Z2V0VGV4dERlY29yYXRpb25Db2xvcnNBbmRTdHlsZXMoZGVjb3JhdGlvbiwgdW5kZXJsaW5lQ29s
b3IsIG92ZXJsaW5lQ29sb3IsIGxpbmV0aHJvdWdoQ29sb3IsIHVuZGVybGluZVN0eWxlLCBvdmVy
bGluZVN0eWxlLCBsaW5ldGhyb3VnaFN0eWxlKTsKICAgICBpZiAoaXNGaXJzdExpbmUoKSkKLSAg
ICAgICAgcmVuZGVyZXIoKS5nZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyhkZWNvcmF0aW9uLCB1bmRl
cmxpbmUsIG92ZXJsaW5lLCBsaW5ldGhyb3VnaCwgdHJ1ZSk7CisgICAgICAgIHJlbmRlcmVyKCku
Z2V0VGV4dERlY29yYXRpb25Db2xvcnNBbmRTdHlsZXMoZGVjb3JhdGlvbiwgdW5kZXJsaW5lQ29s
b3IsIG92ZXJsaW5lQ29sb3IsIGxpbmV0aHJvdWdoQ29sb3IsIHVuZGVybGluZVN0eWxlLCBvdmVy
bGluZVN0eWxlLCBsaW5ldGhyb3VnaFN0eWxlLCB0cnVlKTsKICAgICAKICAgICAvLyBVc2UgYSBz
cGVjaWFsIGZ1bmN0aW9uIGZvciB1bmRlcmxpbmVzIHRvIGdldCB0aGUgcG9zaXRpb25pbmcgZXhh
Y3RseSByaWdodC4KICAgICBib29sIGlzUHJpbnRpbmcgPSByZW5kZXJlcigpLmRvY3VtZW50KCku
cHJpbnRpbmcoKTsKQEAgLTkyNSw3ICs5MjYsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50
RGVjb3JhdGlvbihHcmFwCiAgICAgZmxvYXQgdGV4dERlY29yYXRpb25UaGlja25lc3MgPSB0ZXh0
RGVjb3JhdGlvblN0cm9rZVRoaWNrbmVzcyhyZW5kZXJlcigpLnN0eWxlKCkuZm9udFNpemUoKSk7
CiAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3ModGV4dERlY29yYXRpb25UaGlja25lc3Mp
OwogCi0gICAgYm9vbCBsaW5lc0FyZU9wYXF1ZSA9ICFpc1ByaW50aW5nICYmICghKGRlY29yYXRp
b24gJiBUZXh0RGVjb3JhdGlvblVuZGVybGluZSkgfHwgdW5kZXJsaW5lLmFscGhhKCkgPT0gMjU1
KSAmJiAoIShkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25PdmVybGluZSkgfHwgb3ZlcmxpbmUu
YWxwaGEoKSA9PSAyNTUpICYmICghKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmVUaHJv
dWdoKSB8fCBsaW5ldGhyb3VnaC5hbHBoYSgpID09IDI1NSk7CisgICAgYm9vbCBsaW5lc0FyZU9w
YXF1ZSA9ICFpc1ByaW50aW5nICYmICghKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvblVuZGVy
bGluZSkgfHwgdW5kZXJsaW5lQ29sb3IuYWxwaGEoKSA9PSAyNTUpICYmICghKGRlY29yYXRpb24g
JiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKSB8fCBvdmVybGluZUNvbG9yLmFscGhhKCkgPT0gMjU1
KSAmJiAoIShkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkgfHwgbGluZXRo
cm91Z2hDb2xvci5hbHBoYSgpID09IDI1NSk7CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGlu
ZVN0eWxlID0gdGhpcy0+bGluZVN0eWxlKCk7CiAgICAgaW50IGJhc2VsaW5lID0gbGluZVN0eWxl
LmZvbnRNZXRyaWNzKCkuYXNjZW50KCk7CkBAIC05NzAsMTMgKzk3MSwxMyBAQCB2b2lkIElubGlu
ZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwCiAgICAgICAgIAogICAgICAgICBmbG9hdCB3
YXZ5T2Zmc2V0ID0gd2F2eU9mZnNldEZyb21EZWNvcmF0aW9uKCk7CiAKLSAgICAgICAgY29udGV4
dC5zZXRTdHJva2VTdHlsZSh0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZShkZWNvcmF0
aW9uU3R5bGUpKTsKICAgICAgICAgLy8gVGhlc2UgZGVjb3JhdGlvbnMgc2hvdWxkIG1hdGNoIHRo
ZSB2aXN1YWwgb3ZlcmZsb3dzIGNvbXB1dGVkIGluIHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlv
bnMoKQogICAgICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKHVuZGVybGluZSwgY29sb3JTcGFj
ZSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKHVuZGVybGluZUNvbG9yLCBj
b2xvclNwYWNlKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUodGV4dERlY29y
YXRpb25TdHlsZVRvU3Ryb2tlU3R5bGUodW5kZXJsaW5lU3R5bGUpKTsKICAgICAgICAgICAgIGNv
bnN0IGludCB1bmRlcmxpbmVPZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KGxpbmVTdHls
ZS50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCksIHRoaXMs
IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKIAotICAgICAgICAgICAgc3dpdGNoIChkZWNvcmF0
aW9uU3R5bGUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAodW5kZXJsaW5lU3R5bGUpIHsKICAgICAg
ICAgICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZVdhdnk6IHsKICAgICAgICAgICAgICAgICBG
bG9hdFBvaW50IHN0YXJ0KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4ueSgpICsgdW5kZXJs
aW5lT2Zmc2V0ICsgd2F2eU9mZnNldCk7CiAgICAgICAgICAgICAgICAgRmxvYXRQb2ludCBlbmQo
bG9jYWxPcmlnaW4ueCgpICsgd2lkdGgsIGxvY2FsT3JpZ2luLnkoKSArIHVuZGVybGluZU9mZnNl
dCArIHdhdnlPZmZzZXQpOwpAQCAtOTg3LDE3ICs5ODgsMTggQEAgdm9pZCBJbmxpbmVUZXh0Qm94
OjpwYWludERlY29yYXRpb24oR3JhcAogI2lmIEVOQUJMRShDU1MzX1RFWFRfREVDT1JBVElPTl9T
S0lQX0lOSykKICAgICAgICAgICAgICAgICBpZiAoKGxpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblNr
aXAoKSA9PSBUZXh0RGVjb3JhdGlvblNraXBJbmsgfHwgbGluZVN0eWxlLnRleHREZWNvcmF0aW9u
U2tpcCgpID09IFRleHREZWNvcmF0aW9uU2tpcEF1dG8pICYmIGlzSG9yaXpvbnRhbCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRyYXdTa2lwSW5rVW5kZXJsaW5lKHRleHRQYWludGVyLCBj
b250ZXh0LCBsb2NhbE9yaWdpbiwgdW5kZXJsaW5lT2Zmc2V0LCB3aWR0aCwgaXNQcmludGluZywg
ZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZHJhd1NraXBJbmtVbmRlcmxpbmUodGV4dFBhaW50ZXIsIGNvbnRleHQs
IGxvY2FsT3JpZ2luLCB1bmRlcmxpbmVPZmZzZXQsIHdpZHRoLCBpc1ByaW50aW5nLCB1bmRlcmxp
bmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlRG91YmxlKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogTmVlZCB0byBzdXBwb3J0IHRleHQtZGVjb3JhdGlvbi1za2lwOiBub25lLgogI2VuZGlmIC8v
IENTUzNfVEVYVF9ERUNPUkFUSU9OX1NLSVBfSU5LCi0gICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuZHJhd0xpbmVGb3JUZXh0KEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdp
bi55KCkgKyB1bmRlcmxpbmVPZmZzZXQpLCB3aWR0aCwgaXNQcmludGluZywgZGVjb3JhdGlvblN0
eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpOworICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LmRyYXdMaW5lRm9yVGV4dChGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxP
cmlnaW4ueSgpICsgdW5kZXJsaW5lT2Zmc2V0KSwgd2lkdGgsIGlzUHJpbnRpbmcsIHVuZGVybGlu
ZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25PdmVybGluZSkg
ewotICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihvdmVybGluZSwgY29sb3JTcGFj
ZSk7Ci0gICAgICAgICAgICBzd2l0Y2ggKGRlY29yYXRpb25TdHlsZSkgeworICAgICAgICAgICAg
Y29udGV4dC5zZXRTdHJva2VDb2xvcihvdmVybGluZUNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICAg
ICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUodGV4dERlY29yYXRpb25TdHlsZVRvU3Ryb2tl
U3R5bGUob3ZlcmxpbmVTdHlsZSkpOworICAgICAgICAgICAgc3dpdGNoIChvdmVybGluZVN0eWxl
KSB7CiAgICAgICAgICAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5OiB7CiAgICAgICAg
ICAgICAgICAgRmxvYXRQb2ludCBzdGFydChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2luLnko
KSAtIHdhdnlPZmZzZXQpOwogICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQgZW5kKGxvY2FsT3Jp
Z2luLngoKSArIHdpZHRoLCBsb2NhbE9yaWdpbi55KCkgLSB3YXZ5T2Zmc2V0KTsKQEAgLTEwMDgs
MTYgKzEwMTAsMTcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcAog
I2lmIEVOQUJMRShDU1MzX1RFWFRfREVDT1JBVElPTl9TS0lQX0lOSykKICAgICAgICAgICAgICAg
ICBpZiAoKGxpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblNraXAoKSA9PSBUZXh0RGVjb3JhdGlvblNr
aXBJbmsgfHwgbGluZVN0eWxlLnRleHREZWNvcmF0aW9uU2tpcCgpID09IFRleHREZWNvcmF0aW9u
U2tpcEF1dG8pICYmIGlzSG9yaXpvbnRhbCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgh
Y29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBkcmF3
U2tpcElua1VuZGVybGluZSh0ZXh0UGFpbnRlciwgY29udGV4dCwgbG9jYWxPcmlnaW4sIDAsIHdp
ZHRoLCBpc1ByaW50aW5nLCBkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZURv
dWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBkcmF3U2tpcElua1VuZGVybGluZSh0ZXh0
UGFpbnRlciwgY29udGV4dCwgbG9jYWxPcmlnaW4sIDAsIHdpZHRoLCBpc1ByaW50aW5nLCBvdmVy
bGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpOwogICAgICAgICAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBzdXBwb3J0IHRl
eHQtZGVjb3JhdGlvbi1za2lwOiBub25lLgogI2VuZGlmIC8vIENTUzNfVEVYVF9ERUNPUkFUSU9O
X1NLSVBfSU5LCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0xpbmVGb3JUZXh0KGxv
Y2FsT3JpZ2luLCB3aWR0aCwgaXNQcmludGluZywgZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNv
cmF0aW9uU3R5bGVEb3VibGUpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdMaW5l
Rm9yVGV4dChsb2NhbE9yaWdpbiwgd2lkdGgsIGlzUHJpbnRpbmcsIG92ZXJsaW5lU3R5bGUgPT0g
VGV4dERlY29yYXRpb25TdHlsZURvdWJsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGxpbmV0aHJvdWdoLCBjb2xvclNwYWNlKTsK
LSAgICAgICAgICAgIHN3aXRjaCAoZGVjb3JhdGlvblN0eWxlKSB7CisgICAgICAgICAgICBjb250
ZXh0LnNldFN0cm9rZUNvbG9yKGxpbmV0aHJvdWdoQ29sb3IsIGNvbG9yU3BhY2UpOworICAgICAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZSh0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VT
dHlsZShsaW5ldGhyb3VnaFN0eWxlKSk7CisgICAgICAgICAgICBzd2l0Y2ggKGxpbmV0aHJvdWdo
U3R5bGUpIHsKICAgICAgICAgICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZVdhdnk6IHsKICAg
ICAgICAgICAgICAgICBGbG9hdFBvaW50IHN0YXJ0KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmln
aW4ueSgpICsgMiAqIGJhc2VsaW5lIC8gMyk7CiAgICAgICAgICAgICAgICAgRmxvYXRQb2ludCBl
bmQobG9jYWxPcmlnaW4ueCgpICsgd2lkdGgsIGxvY2FsT3JpZ2luLnkoKSArIDIgKiBiYXNlbGlu
ZSAvIDMpOwpAQCAtMTAyNSw3ICsxMDI4LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERl
Y29yYXRpb24oR3JhcAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdMaW5lRm9yVGV4
dChGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4ueSgpICsgMiAqIGJhc2Vs
aW5lIC8gMyksIHdpZHRoLCBpc1ByaW50aW5nLCBkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29y
YXRpb25TdHlsZURvdWJsZSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3TGluZUZvclRl
eHQoRmxvYXRQb2ludChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSArIDIgKiBiYXNl
bGluZSAvIDMpLCB3aWR0aCwgaXNQcmludGluZywgbGluZXRocm91Z2hTdHlsZSA9PSBUZXh0RGVj
b3JhdGlvblN0eWxlRG91YmxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gd2hp
bGUgKHNoYWRvdyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmgJKHJldmlzaW9uIDE4MDE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgY29uc3QgQ29tcG9zaXRpb25VbmRlcmxpbmUmKTsKIAog
cHJpdmF0ZToKLSAgICB2b2lkIHBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFRleHREZWNvcmF0aW9uLCBUZXh0RGVjb3JhdGlvblN0
eWxlLCBjb25zdCBTaGFkb3dEYXRhKiwgVGV4dFBhaW50ZXImKTsKKyAgICB2b2lkIHBhaW50RGVj
b3JhdGlvbihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFRl
eHREZWNvcmF0aW9uLCBjb25zdCBTaGFkb3dEYXRhKiwgVGV4dFBhaW50ZXImKTsKICAgICB2b2lk
IHBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9y
aWdpbiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250Q2FzY2FkZSYsIENvbG9yIHRleHRD
b2xvcik7CiAgICAgdm9pZCBwYWludERvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgUmVuZGVyZWREb2N1bWVudE1hcmtlciYsIGNvbnN0
IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udENhc2NhZGUmLCBib29sIGdyYW1tYXIpOwogICAgIHZv
aWQgcGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRQb2lu
dCYgYm94T3JpZ2luLCBSZW5kZXJlZERvY3VtZW50TWFya2VyJiwgY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBGb250Q2FzY2FkZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDE4MDE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEwLDcgKzIxMTAsOCBA
QCBzdGF0aWMgQ29sb3IgZGVjb3JhdGlvbkNvbG9yKFJlbmRlclN0eWxlCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9uQ29sb3JzKGlu
dCBkZWNvcmF0aW9ucywgQ29sb3ImIHVuZGVybGluZSwgQ29sb3ImIG92ZXJsaW5lLCBDb2xvciYg
bGluZXRocm91Z2gsIGJvb2wgZmlyc3RsaW5lU3R5bGUpCit2b2lkIFJlbmRlck9iamVjdDo6Z2V0
VGV4dERlY29yYXRpb25Db2xvcnNBbmRTdHlsZXMoaW50IGRlY29yYXRpb25zLCBDb2xvciYgdW5k
ZXJsaW5lQ29sb3IsIENvbG9yJiBvdmVybGluZUNvbG9yLCBDb2xvciYgbGluZXRocm91Z2hDb2xv
ciwKKyAgICBUZXh0RGVjb3JhdGlvblN0eWxlJiB1bmRlcmxpbmVTdHlsZSwgVGV4dERlY29yYXRp
b25TdHlsZSYgb3ZlcmxpbmVTdHlsZSwgVGV4dERlY29yYXRpb25TdHlsZSYgbGluZXRocm91Z2hT
dHlsZSwgYm9vbCBmaXJzdGxpbmVTdHlsZSkKIHsKICAgICBSZW5kZXJPYmplY3QqIGN1cnJlbnQg
PSB0aGlzOwogICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gbnVsbHB0cjsKQEAgLTIxMjQs
MTUgKzIxMjUsMTggQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9uQ29sbwog
ICAgICAgICBpZiAoY3VyckRlY3MpIHsKICAgICAgICAgICAgIGlmIChjdXJyRGVjcyAmIFRleHRE
ZWNvcmF0aW9uVW5kZXJsaW5lKSB7CiAgICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMgJj0gflRl
eHREZWNvcmF0aW9uVW5kZXJsaW5lOwotICAgICAgICAgICAgICAgIHVuZGVybGluZSA9IHJlc3Vs
dENvbG9yOworICAgICAgICAgICAgICAgIHVuZGVybGluZUNvbG9yID0gcmVzdWx0Q29sb3I7Cisg
ICAgICAgICAgICAgICAgdW5kZXJsaW5lU3R5bGUgPSBzdHlsZVRvVXNlLT50ZXh0RGVjb3JhdGlv
blN0eWxlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY3VyckRlY3MgJiBUZXh0
RGVjb3JhdGlvbk92ZXJsaW5lKSB7CiAgICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMgJj0gflRl
eHREZWNvcmF0aW9uT3ZlcmxpbmU7Ci0gICAgICAgICAgICAgICAgb3ZlcmxpbmUgPSByZXN1bHRD
b2xvcjsKKyAgICAgICAgICAgICAgICBvdmVybGluZUNvbG9yID0gcmVzdWx0Q29sb3I7CisgICAg
ICAgICAgICAgICAgb3ZlcmxpbmVTdHlsZSA9IHN0eWxlVG9Vc2UtPnRleHREZWNvcmF0aW9uU3R5
bGUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjdXJyRGVjcyAmIFRleHREZWNv
cmF0aW9uTGluZVRocm91Z2gpIHsKICAgICAgICAgICAgICAgICBkZWNvcmF0aW9ucyAmPSB+VGV4
dERlY29yYXRpb25MaW5lVGhyb3VnaDsKLSAgICAgICAgICAgICAgICBsaW5ldGhyb3VnaCA9IHJl
c3VsdENvbG9yOworICAgICAgICAgICAgICAgIGxpbmV0aHJvdWdoQ29sb3IgPSByZXN1bHRDb2xv
cjsKKyAgICAgICAgICAgICAgICBsaW5ldGhyb3VnaFN0eWxlID0gc3R5bGVUb1VzZS0+dGV4dERl
Y29yYXRpb25TdHlsZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChj
dXJyZW50LT5pc1J1YnlUZXh0KCkpCkBAIC0yMTQ2LDEyICsyMTUwLDE4IEBAIHZvaWQgUmVuZGVy
T2JqZWN0OjpnZXRUZXh0RGVjb3JhdGlvbkNvbG8KICAgICBpZiAoZGVjb3JhdGlvbnMgJiYgY3Vy
cmVudCkgewogICAgICAgICBzdHlsZVRvVXNlID0gZmlyc3RsaW5lU3R5bGUgPyAmY3VycmVudC0+
Zmlyc3RMaW5lU3R5bGUoKSA6ICZjdXJyZW50LT5zdHlsZSgpOwogICAgICAgICByZXN1bHRDb2xv
ciA9IGRlY29yYXRpb25Db2xvcihzdHlsZVRvVXNlKTsKLSAgICAgICAgaWYgKGRlY29yYXRpb25z
ICYgVGV4dERlY29yYXRpb25VbmRlcmxpbmUpCi0gICAgICAgICAgICB1bmRlcmxpbmUgPSByZXN1
bHRDb2xvcjsKLSAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRpb25PdmVybGlu
ZSkKLSAgICAgICAgICAgIG92ZXJsaW5lID0gcmVzdWx0Q29sb3I7Ci0gICAgICAgIGlmIChkZWNv
cmF0aW9ucyAmIFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gpCi0gICAgICAgICAgICBsaW5ldGhy
b3VnaCA9IHJlc3VsdENvbG9yOworICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3Jh
dGlvblVuZGVybGluZSkgeworICAgICAgICAgICAgdW5kZXJsaW5lQ29sb3IgPSByZXN1bHRDb2xv
cjsKKyAgICAgICAgICAgIHVuZGVybGluZVN0eWxlID0gc3R5bGVUb1VzZS0+dGV4dERlY29yYXRp
b25TdHlsZSgpOworICAgICAgICB9CisgICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIFRleHREZWNv
cmF0aW9uT3ZlcmxpbmUpIHsKKyAgICAgICAgICAgIG92ZXJsaW5lQ29sb3IgPSByZXN1bHRDb2xv
cjsKKyAgICAgICAgICAgIG92ZXJsaW5lU3R5bGUgPSBzdHlsZVRvVXNlLT50ZXh0RGVjb3JhdGlv
blN0eWxlKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29y
YXRpb25MaW5lVGhyb3VnaCkgeworICAgICAgICAgICAgbGluZXRocm91Z2hDb2xvciA9IHJlc3Vs
dENvbG9yOworICAgICAgICAgICAgbGluZXRocm91Z2hTdHlsZSA9IHN0eWxlVG9Vc2UtPnRleHRE
ZWNvcmF0aW9uU3R5bGUoKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMTgwMTU0KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MDMs
NyArNzAzLDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgQ3Vyc29yRGlyZWN0aXZlIGdl
dEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYsIEN1cnNvciYpIGNvbnN0OwogCi0gICAgdm9pZCBn
ZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyhpbnQgZGVjb3JhdGlvbnMsIENvbG9yJiB1bmRlcmxpbmUs
IENvbG9yJiBvdmVybGluZSwgQ29sb3ImIGxpbmV0aHJvdWdoLCBib29sIGZpcnN0bGluZVN0eWxl
ID0gZmFsc2UpOworICAgIHZvaWQgZ2V0VGV4dERlY29yYXRpb25Db2xvcnNBbmRTdHlsZXMoaW50
IGRlY29yYXRpb25zLCBDb2xvciYgdW5kZXJsaW5lQ29sb3IsIENvbG9yJiBvdmVybGluZUNvbG9y
LCBDb2xvciYgbGluZXRocm91Z2hDb2xvciwKKyAgICAgICAgVGV4dERlY29yYXRpb25TdHlsZSYg
dW5kZXJsaW5lU3R5bGUsIFRleHREZWNvcmF0aW9uU3R5bGUmIG92ZXJsaW5lU3R5bGUsIFRleHRE
ZWNvcmF0aW9uU3R5bGUmIGxpbmV0aHJvdWdoU3R5bGUsIGJvb2wgZmlyc3RsaW5lU3R5bGUgPSBm
YWxzZSk7CiAKICAgICAvLyBSZXR1cm4gdGhlIFJlbmRlckxheWVyTW9kZWxPYmplY3QgaW4gdGhl
IGNvbnRhaW5lciBjaGFpbiB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgdGhpcyBv
YmplY3QsIG9yIDAKICAgICAvLyBpZiBwYWludGluZyBpcyByb290LXJlbGF0aXZlLiBUaGlzIGlz
IHRoZSBjb250YWluZXIgdGhhdCBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSAnZm9yUmVwYWludCcK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4MDE4MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAyLTE2ICBEYXZpZCBIeWF0dCAgPGh5
YXR0QGFwcGxlLmNvbT4KKyAgICAgICAgCisgICAgICAgIFdyb25nIGVsZW1lbnQncyBzdHlsZSBp
cyB1c2VkIGZvciB0ZXh0LWRlY29yYXRpb24tc3R5bGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE2NzMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvdGV4dC90ZXh0LXVuZGVybGluZS1zdHls
ZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvdGV4dC11bmRlcmxp
bmUtc3R5bGUuaHRtbDogQWRkZWQuCisKIDIwMTUtMDItMTYgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgZmFzdC9kb20ve0VsZW1lbnQs
UmFuZ2V9L2dldENsaWVudFJlY3RzLmh0bWwgYWZ0ZXIgcjE3Nzc3NApJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC90ZXh0L3RleHQtdW5kZXJsaW5lLXN0eWxlLWV4cGVjdGVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RleHQtdW5kZXJsaW5lLXN0eWxlLWV4cGVjdGVk
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dC11bmRlcmxp
bmUtc3R5bGUtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDggQEAKKzw/
eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQorPCFET0NUWVBFIGh0bWwgUFVC
TElDICItLy9XM0MvL0RURCBYSFRNTCAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0
bWwxMS9EVEQveGh0bWwxMS5kdGQiPg0KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hodG1sIiB4bWxuczppYm9va3M9Imh0dHA6Ly9hcHBsZS5jb20vaWJvb2tzL2h0bWwtZXh0
ZW5zaW9ucyIgeG1sbnM6ZXB1Yj0iaHR0cDovL3d3dy5pZHBmLm9yZy8yMDA3L29wcyI+DQorPGJv
ZHkgc3R5bGU9Im92ZXJmbG93OmhpZGRlbiI+DQorPHA+VGVzdCB0byBtYWtlIHN1cmUgdGhlIGRv
dHRlZCBzdHlsZSBpcyBwcm9wZXJseSBvYnRhaW5lZCBmcm9tIGFuIGVuY2xvc2luZyBhbmNlc3Rv
ci4NCis8L3A+DQorDQorPHAgc3R5bGU9InRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7LXdlYmtp
dC10ZXh0LWRlY29yYXRpb24tc3R5bGU6ZG91YmxlOyBjb2xvcjpncmVlbjsgLXdlYmtpdC10ZXh0
LWRlY29yYXRpb24tY29sb3I6Ymx1ZSI+VGhpcyB0ZXh0IHNob3VsZCBoYXZlIGEgZG91YmxlIGJs
dWUgdW5kZXJsaW5lLjwvcD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3RleHQvdGV4dC11bmRlcmxpbmUtc3R5bGUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dC11bmRlcmxpbmUtc3R5bGUuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC90ZXh0LXVuZGVybGluZS1zdHlsZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0idXRmLTgiPz4NCis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1M
IDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDExL0RURC94aHRtbDExLmR0ZCI+
DQorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbG5zOmlib29r
cz0iaHR0cDovL2FwcGxlLmNvbS9pYm9va3MvaHRtbC1leHRlbnNpb25zIiB4bWxuczplcHViPSJo
dHRwOi8vd3d3LmlkcGYub3JnLzIwMDcvb3BzIj4NCis8Ym9keSBzdHlsZT0ib3ZlcmZsb3c6aGlk
ZGVuIj4NCis8cD5UZXN0IHRvIG1ha2Ugc3VyZSB0aGUgZG90dGVkIHN0eWxlIGlzIHByb3Blcmx5
IG9idGFpbmVkIGZyb20gYW4gZW5jbG9zaW5nIGFuY2VzdG9yLg0KKzwvcD4NCisNCis8cCBzdHls
ZT0idGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTstd2Via2l0LXRleHQtZGVjb3JhdGlvbi1zdHls
ZTpkb3VibGU7IGNvbG9yOmJsdWU7Ij48c3BhbiBzdHlsZT0iLXdlYmtpdC10ZXh0LWRlY29yYXRp
b24tc3R5bGU6d2F2eTsgY29sb3I6Z3JlZW4iPlRoaXMgdGV4dCBzaG91bGQgaGF2ZSBhIGRvdWJs
ZSBibHVlIHVuZGVybGluZS48L3A+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="271641"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246755</attachid>
            <date>2015-02-17 10:57:29 -0800</date>
            <delta_ts>2015-02-17 10:58:23 -0800</delta_ts>
            <desc>Patch that works on iOS</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>20114</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDE4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE1LTAyLTE2ICBEYXZpZCBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBXcm9uZyBlbGVtZW50J3Mgc3R5bGUg
aXMgdXNlZCBmb3IgdGV4dC1kZWNvcmF0aW9uLXN0eWxlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgZmFzdC90ZXh0L3RleHQtdW5kZXJsaW5l
LXN0eWxlLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHls
ZSk6CisgICAgICAgIEFkZCBhcmd1bWVudHMgZm9yIGZldGNoaW5nIHN0eWxlcy4KKworICAgICAg
ICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZVRleHRCb3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50
RGVjb3JhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guaDoKKyAgICAg
ICAgUmVtb3ZlIHRoZSBwYXNzZWQgaW4gVGV4dERlY29yYXRpb25TdHlsZSBhbmQgaW5zdGVhZCBw
YXRjaCB0aGUgY29kZSB0byBmZXRjaCB0aGUgc3R5bGVzIGluIHRoZSBzYW1lCisgICAgICAgIHdh
eSBpdCBmZXRjaGVzIHRoZSBjb2xvcnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Z2V0VGV4dERlY29yYXRp
b25Db2xvcnNBbmRTdHlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpnZXRU
ZXh0RGVjb3JhdGlvbkNvbG9ycyk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oOgorICAgICAgICBBZGQgc3R5bGUgZmV0Y2hpbmcgdG8gdGhlIHNhbWUgZnVuY3Rp
b24gdGhhdCBmZXRjaGVzIGNvbG9ycyBhbmQgcmVuYW1lIGl0LgorCiAyMDE1LTAyLTE2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0
IGEgY2hhbmdlIGluIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIgY29tbWl0
dGVkIGZvciBmaXhpbmcgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTk2MjY+LgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHJl
dmlzaW9uIDE4MDE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYyLDEx
ICsxNzYyLDYgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZShOUwogICAg
ICAgICAgICAgICAgIAogICAgIGludCBkZWNvciA9IHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZm
ZWN0KCk7CiAgICAgaWYgKChkZWNvciAmIChUZXh0RGVjb3JhdGlvblVuZGVybGluZSB8IFRleHRE
ZWNvcmF0aW9uTGluZVRocm91Z2gpKSAhPSAwKSB7Ci0gICAgICAgIC8vIGZpbmQgY29sb3JzIHVz
aW5nIHF1aXJrIG1vZGUgYXBwcm9hY2ggKHN0cmljdCBtb2RlIHdvdWxkIHVzZSBjdXJyZW50Ci0g
ICAgICAgIC8vIGNvbG9yIGZvciBhbGwgYnV0IHRoZSByb290IGxpbmUgYm94LCB3aGljaCB3b3Vs
ZCB1c2UgZ2V0VGV4dERlY29yYXRpb25Db2xvcnMpCi0gICAgICAgIENvbG9yIHVuZGVybGluZSwg
b3ZlcmxpbmUsIGxpbmV0aHJvdWdoOwotICAgICAgICByZW5kZXJlci0+Z2V0VGV4dERlY29yYXRp
b25Db2xvcnMoZGVjb3IsIHVuZGVybGluZSwgb3ZlcmxpbmUsIGxpbmV0aHJvdWdoKTsKLSAgICAg
ICAgCiAgICAgICAgIGlmIChkZWNvciAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKQogICAgICAg
ICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgVUlBY2Nlc3NpYmls
aXR5VG9rZW5VbmRlcmxpbmUsIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCByYW5nZSk7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHJl
dmlzaW9uIDE4MDE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04ODIsMTkg
Kzg4MiwxOSBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKE5TCiAgICAg
fQogICAgIAogICAgIGlmICgoZGVjb3IgJiAoVGV4dERlY29yYXRpb25VbmRlcmxpbmUgfCBUZXh0
RGVjb3JhdGlvbkxpbmVUaHJvdWdoKSkgIT0gMCkgewotICAgICAgICAvLyBmaW5kIGNvbG9ycyB1
c2luZyBxdWlyayBtb2RlIGFwcHJvYWNoIChzdHJpY3QgbW9kZSB3b3VsZCB1c2UgY3VycmVudAot
ICAgICAgICAvLyBjb2xvciBmb3IgYWxsIGJ1dCB0aGUgcm9vdCBsaW5lIGJveCwgd2hpY2ggd291
bGQgdXNlIGdldFRleHREZWNvcmF0aW9uQ29sb3JzKQotICAgICAgICBDb2xvciB1bmRlcmxpbmUs
IG92ZXJsaW5lLCBsaW5ldGhyb3VnaDsKLSAgICAgICAgcmVuZGVyZXItPmdldFRleHREZWNvcmF0
aW9uQ29sb3JzKGRlY29yLCB1bmRlcmxpbmUsIG92ZXJsaW5lLCBsaW5ldGhyb3VnaCk7CisgICAg
ICAgIC8vIEZJWE1FOiBTaG91bGQgdGhlIHVuZGVybGluZSBzdHlsZSBiZSByZXBvcnRlZCBoZXJl
PworICAgICAgICBDb2xvciB1bmRlcmxpbmVDb2xvciwgb3ZlcmxpbmVDb2xvciwgbGluZXRocm91
Z2hDb2xvcjsKKyAgICAgICAgVGV4dERlY29yYXRpb25TdHlsZSB1bmRlcmxpbmVTdHlsZSwgb3Zl
cmxpbmVTdHlsZSwgbGluZXRocm91Z2hTdHlsZTsKKyAgICAgICAgcmVuZGVyZXItPmdldFRleHRE
ZWNvcmF0aW9uQ29sb3JzQW5kU3R5bGVzKGRlY29yLCB1bmRlcmxpbmVDb2xvciwgb3ZlcmxpbmVD
b2xvciwgbGluZXRocm91Z2hDb2xvciwgdW5kZXJsaW5lU3R5bGUsIG92ZXJsaW5lU3R5bGUsIGxp
bmV0aHJvdWdoU3R5bGUpOwogICAgICAgICAKICAgICAgICAgaWYgKChkZWNvciAmIFRleHREZWNv
cmF0aW9uVW5kZXJsaW5lKSAhPSAwKSB7CiAgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1Nl
dE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVUZXh0QXR0cmlidXRl
LCBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgcmFuZ2UpOwotICAgICAgICAgICAgQVhB
dHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxp
bmVDb2xvclRleHRBdHRyaWJ1dGUsIG5zQ29sb3IodW5kZXJsaW5lKSwgcmFuZ2UpOworICAgICAg
ICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxp
dHlVbmRlcmxpbmVDb2xvclRleHRBdHRyaWJ1dGUsIG5zQ29sb3IodW5kZXJsaW5lQ29sb3IpLCBy
YW5nZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICgoZGVjb3IgJiBUZXh0RGVj
b3JhdGlvbkxpbmVUaHJvdWdoKSAhPSAwKSB7CiAgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmlu
Z1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoVGV4dEF0
dHJpYnV0ZSwgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sIHJhbmdlKTsKLSAgICAgICAg
ICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5
U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0dHJpYnV0ZSwgbnNDb2xvcihsaW5ldGhyb3VnaCksIHJh
bmdlKTsKKyAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywg
TlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0dHJpYnV0ZSwgbnNDb2xvcihs
aW5ldGhyb3VnaENvbG9yKSwgcmFuZ2UpOwogICAgICAgICB9CiAgICAgfQogICAgIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkocmV2aXNpb24gMTgw
MTU0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MjIsNyArNjIyLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQ
YWludEluZm8mIHBhaQogICAgICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoY29udGV4dCwgdGV4
dFBhaW50U3R5bGUpOwogICAgICAgICBpZiAoY29tYmluZWRUZXh0KQogICAgICAgICAgICAgY29u
dGV4dC5jb25jYXRDVE0ocm90YXRpb24oYm94UmVjdCwgQ2xvY2t3aXNlKSk7Ci0gICAgICAgIHBh
aW50RGVjb3JhdGlvbihjb250ZXh0LCBib3hPcmlnaW4sIHRleHREZWNvcmF0aW9ucywgbGluZVN0
eWxlLnRleHREZWNvcmF0aW9uU3R5bGUoKSwgdGV4dFNoYWRvdywgdGV4dFBhaW50ZXIpOworICAg
ICAgICBwYWludERlY29yYXRpb24oY29udGV4dCwgYm94T3JpZ2luLCB0ZXh0RGVjb3JhdGlvbnMs
IHRleHRTaGFkb3csIHRleHRQYWludGVyKTsKICAgICAgICAgaWYgKGNvbWJpbmVkVGV4dCkKICAg
ICAgICAgICAgIGNvbnRleHQuY29uY2F0Q1RNKHJvdGF0aW9uKGJveFJlY3QsIENvdW50ZXJjbG9j
a3dpc2UpKTsKICAgICB9CkBAIC04OTUsNyArODk1LDcgQEAgc3RhdGljIHZvaWQgc3Ryb2tlV2F2
eVRleHREZWNvcmF0aW9uKEdyYQogICAgIGNvbnRleHQuc3Ryb2tlUGF0aChwYXRoKTsKIH0KIAot
dm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFRleHREZWNvcmF0aW9uIGRlY29yYXRp
b24sIFRleHREZWNvcmF0aW9uU3R5bGUgZGVjb3JhdGlvblN0eWxlLCBjb25zdCBTaGFkb3dEYXRh
KiBzaGFkb3csIFRleHRQYWludGVyJiB0ZXh0UGFpbnRlcikKK3ZvaWQgSW5saW5lVGV4dEJveDo6
cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2lu
dCYgYm94T3JpZ2luLCBUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBjb25zdCBTaGFkb3dEYXRh
KiBzaGFkb3csIFRleHRQYWludGVyJiB0ZXh0UGFpbnRlcikKIHsKICNpZiAhRU5BQkxFKENTUzNf
VEVYVF9ERUNPUkFUSU9OX1NLSVBfSU5LKQogICAgIFVOVVNFRF9QQVJBTSh0ZXh0UGFpbnRlcik7
CkBAIC05MTQsMTAgKzkxNCwxMSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlv
bihHcmFwCiAgICAgfQogICAgIAogICAgIC8vIEdldCB0aGUgdGV4dCBkZWNvcmF0aW9uIGNvbG9y
cy4KLSAgICBDb2xvciB1bmRlcmxpbmUsIG92ZXJsaW5lLCBsaW5ldGhyb3VnaDsKLSAgICByZW5k
ZXJlcigpLmdldFRleHREZWNvcmF0aW9uQ29sb3JzKGRlY29yYXRpb24sIHVuZGVybGluZSwgb3Zl
cmxpbmUsIGxpbmV0aHJvdWdoKTsKKyAgICBDb2xvciB1bmRlcmxpbmVDb2xvciwgb3ZlcmxpbmVD
b2xvciwgbGluZXRocm91Z2hDb2xvcjsKKyAgICBUZXh0RGVjb3JhdGlvblN0eWxlIHVuZGVybGlu
ZVN0eWxlLCBvdmVybGluZVN0eWxlLCBsaW5ldGhyb3VnaFN0eWxlOworICAgIHJlbmRlcmVyKCku
Z2V0VGV4dERlY29yYXRpb25Db2xvcnNBbmRTdHlsZXMoZGVjb3JhdGlvbiwgdW5kZXJsaW5lQ29s
b3IsIG92ZXJsaW5lQ29sb3IsIGxpbmV0aHJvdWdoQ29sb3IsIHVuZGVybGluZVN0eWxlLCBvdmVy
bGluZVN0eWxlLCBsaW5ldGhyb3VnaFN0eWxlKTsKICAgICBpZiAoaXNGaXJzdExpbmUoKSkKLSAg
ICAgICAgcmVuZGVyZXIoKS5nZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyhkZWNvcmF0aW9uLCB1bmRl
cmxpbmUsIG92ZXJsaW5lLCBsaW5ldGhyb3VnaCwgdHJ1ZSk7CisgICAgICAgIHJlbmRlcmVyKCku
Z2V0VGV4dERlY29yYXRpb25Db2xvcnNBbmRTdHlsZXMoZGVjb3JhdGlvbiwgdW5kZXJsaW5lQ29s
b3IsIG92ZXJsaW5lQ29sb3IsIGxpbmV0aHJvdWdoQ29sb3IsIHVuZGVybGluZVN0eWxlLCBvdmVy
bGluZVN0eWxlLCBsaW5ldGhyb3VnaFN0eWxlLCB0cnVlKTsKICAgICAKICAgICAvLyBVc2UgYSBz
cGVjaWFsIGZ1bmN0aW9uIGZvciB1bmRlcmxpbmVzIHRvIGdldCB0aGUgcG9zaXRpb25pbmcgZXhh
Y3RseSByaWdodC4KICAgICBib29sIGlzUHJpbnRpbmcgPSByZW5kZXJlcigpLmRvY3VtZW50KCku
cHJpbnRpbmcoKTsKQEAgLTkyNSw3ICs5MjYsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50
RGVjb3JhdGlvbihHcmFwCiAgICAgZmxvYXQgdGV4dERlY29yYXRpb25UaGlja25lc3MgPSB0ZXh0
RGVjb3JhdGlvblN0cm9rZVRoaWNrbmVzcyhyZW5kZXJlcigpLnN0eWxlKCkuZm9udFNpemUoKSk7
CiAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3ModGV4dERlY29yYXRpb25UaGlja25lc3Mp
OwogCi0gICAgYm9vbCBsaW5lc0FyZU9wYXF1ZSA9ICFpc1ByaW50aW5nICYmICghKGRlY29yYXRp
b24gJiBUZXh0RGVjb3JhdGlvblVuZGVybGluZSkgfHwgdW5kZXJsaW5lLmFscGhhKCkgPT0gMjU1
KSAmJiAoIShkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25PdmVybGluZSkgfHwgb3ZlcmxpbmUu
YWxwaGEoKSA9PSAyNTUpICYmICghKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmVUaHJv
dWdoKSB8fCBsaW5ldGhyb3VnaC5hbHBoYSgpID09IDI1NSk7CisgICAgYm9vbCBsaW5lc0FyZU9w
YXF1ZSA9ICFpc1ByaW50aW5nICYmICghKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvblVuZGVy
bGluZSkgfHwgdW5kZXJsaW5lQ29sb3IuYWxwaGEoKSA9PSAyNTUpICYmICghKGRlY29yYXRpb24g
JiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKSB8fCBvdmVybGluZUNvbG9yLmFscGhhKCkgPT0gMjU1
KSAmJiAoIShkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkgfHwgbGluZXRo
cm91Z2hDb2xvci5hbHBoYSgpID09IDI1NSk7CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGlu
ZVN0eWxlID0gdGhpcy0+bGluZVN0eWxlKCk7CiAgICAgaW50IGJhc2VsaW5lID0gbGluZVN0eWxl
LmZvbnRNZXRyaWNzKCkuYXNjZW50KCk7CkBAIC05NzAsMTMgKzk3MSwxMyBAQCB2b2lkIElubGlu
ZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwCiAgICAgICAgIAogICAgICAgICBmbG9hdCB3
YXZ5T2Zmc2V0ID0gd2F2eU9mZnNldEZyb21EZWNvcmF0aW9uKCk7CiAKLSAgICAgICAgY29udGV4
dC5zZXRTdHJva2VTdHlsZSh0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZShkZWNvcmF0
aW9uU3R5bGUpKTsKICAgICAgICAgLy8gVGhlc2UgZGVjb3JhdGlvbnMgc2hvdWxkIG1hdGNoIHRo
ZSB2aXN1YWwgb3ZlcmZsb3dzIGNvbXB1dGVkIGluIHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlv
bnMoKQogICAgICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKHVuZGVybGluZSwgY29sb3JTcGFj
ZSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKHVuZGVybGluZUNvbG9yLCBj
b2xvclNwYWNlKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUodGV4dERlY29y
YXRpb25TdHlsZVRvU3Ryb2tlU3R5bGUodW5kZXJsaW5lU3R5bGUpKTsKICAgICAgICAgICAgIGNv
bnN0IGludCB1bmRlcmxpbmVPZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KGxpbmVTdHls
ZS50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCksIHRoaXMs
IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKIAotICAgICAgICAgICAgc3dpdGNoIChkZWNvcmF0
aW9uU3R5bGUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAodW5kZXJsaW5lU3R5bGUpIHsKICAgICAg
ICAgICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZVdhdnk6IHsKICAgICAgICAgICAgICAgICBG
bG9hdFBvaW50IHN0YXJ0KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4ueSgpICsgdW5kZXJs
aW5lT2Zmc2V0ICsgd2F2eU9mZnNldCk7CiAgICAgICAgICAgICAgICAgRmxvYXRQb2ludCBlbmQo
bG9jYWxPcmlnaW4ueCgpICsgd2lkdGgsIGxvY2FsT3JpZ2luLnkoKSArIHVuZGVybGluZU9mZnNl
dCArIHdhdnlPZmZzZXQpOwpAQCAtOTg3LDE3ICs5ODgsMTggQEAgdm9pZCBJbmxpbmVUZXh0Qm94
OjpwYWludERlY29yYXRpb24oR3JhcAogI2lmIEVOQUJMRShDU1MzX1RFWFRfREVDT1JBVElPTl9T
S0lQX0lOSykKICAgICAgICAgICAgICAgICBpZiAoKGxpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblNr
aXAoKSA9PSBUZXh0RGVjb3JhdGlvblNraXBJbmsgfHwgbGluZVN0eWxlLnRleHREZWNvcmF0aW9u
U2tpcCgpID09IFRleHREZWNvcmF0aW9uU2tpcEF1dG8pICYmIGlzSG9yaXpvbnRhbCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRyYXdTa2lwSW5rVW5kZXJsaW5lKHRleHRQYWludGVyLCBj
b250ZXh0LCBsb2NhbE9yaWdpbiwgdW5kZXJsaW5lT2Zmc2V0LCB3aWR0aCwgaXNQcmludGluZywg
ZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZHJhd1NraXBJbmtVbmRlcmxpbmUodGV4dFBhaW50ZXIsIGNvbnRleHQs
IGxvY2FsT3JpZ2luLCB1bmRlcmxpbmVPZmZzZXQsIHdpZHRoLCBpc1ByaW50aW5nLCB1bmRlcmxp
bmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlRG91YmxlKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogTmVlZCB0byBzdXBwb3J0IHRleHQtZGVjb3JhdGlvbi1za2lwOiBub25lLgogI2VuZGlmIC8v
IENTUzNfVEVYVF9ERUNPUkFUSU9OX1NLSVBfSU5LCi0gICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuZHJhd0xpbmVGb3JUZXh0KEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdp
bi55KCkgKyB1bmRlcmxpbmVPZmZzZXQpLCB3aWR0aCwgaXNQcmludGluZywgZGVjb3JhdGlvblN0
eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpOworICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LmRyYXdMaW5lRm9yVGV4dChGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxP
cmlnaW4ueSgpICsgdW5kZXJsaW5lT2Zmc2V0KSwgd2lkdGgsIGlzUHJpbnRpbmcsIHVuZGVybGlu
ZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25PdmVybGluZSkg
ewotICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihvdmVybGluZSwgY29sb3JTcGFj
ZSk7Ci0gICAgICAgICAgICBzd2l0Y2ggKGRlY29yYXRpb25TdHlsZSkgeworICAgICAgICAgICAg
Y29udGV4dC5zZXRTdHJva2VDb2xvcihvdmVybGluZUNvbG9yLCBjb2xvclNwYWNlKTsKKyAgICAg
ICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUodGV4dERlY29yYXRpb25TdHlsZVRvU3Ryb2tl
U3R5bGUob3ZlcmxpbmVTdHlsZSkpOworICAgICAgICAgICAgc3dpdGNoIChvdmVybGluZVN0eWxl
KSB7CiAgICAgICAgICAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5OiB7CiAgICAgICAg
ICAgICAgICAgRmxvYXRQb2ludCBzdGFydChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2luLnko
KSAtIHdhdnlPZmZzZXQpOwogICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQgZW5kKGxvY2FsT3Jp
Z2luLngoKSArIHdpZHRoLCBsb2NhbE9yaWdpbi55KCkgLSB3YXZ5T2Zmc2V0KTsKQEAgLTEwMDgs
MTYgKzEwMTAsMTcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcAog
I2lmIEVOQUJMRShDU1MzX1RFWFRfREVDT1JBVElPTl9TS0lQX0lOSykKICAgICAgICAgICAgICAg
ICBpZiAoKGxpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblNraXAoKSA9PSBUZXh0RGVjb3JhdGlvblNr
aXBJbmsgfHwgbGluZVN0eWxlLnRleHREZWNvcmF0aW9uU2tpcCgpID09IFRleHREZWNvcmF0aW9u
U2tpcEF1dG8pICYmIGlzSG9yaXpvbnRhbCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgh
Y29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBkcmF3
U2tpcElua1VuZGVybGluZSh0ZXh0UGFpbnRlciwgY29udGV4dCwgbG9jYWxPcmlnaW4sIDAsIHdp
ZHRoLCBpc1ByaW50aW5nLCBkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZURv
dWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBkcmF3U2tpcElua1VuZGVybGluZSh0ZXh0
UGFpbnRlciwgY29udGV4dCwgbG9jYWxPcmlnaW4sIDAsIHdpZHRoLCBpc1ByaW50aW5nLCBvdmVy
bGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpOwogICAgICAgICAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBzdXBwb3J0IHRl
eHQtZGVjb3JhdGlvbi1za2lwOiBub25lLgogI2VuZGlmIC8vIENTUzNfVEVYVF9ERUNPUkFUSU9O
X1NLSVBfSU5LCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0xpbmVGb3JUZXh0KGxv
Y2FsT3JpZ2luLCB3aWR0aCwgaXNQcmludGluZywgZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNv
cmF0aW9uU3R5bGVEb3VibGUpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdMaW5l
Rm9yVGV4dChsb2NhbE9yaWdpbiwgd2lkdGgsIGlzUHJpbnRpbmcsIG92ZXJsaW5lU3R5bGUgPT0g
VGV4dERlY29yYXRpb25TdHlsZURvdWJsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGxpbmV0aHJvdWdoLCBjb2xvclNwYWNlKTsK
LSAgICAgICAgICAgIHN3aXRjaCAoZGVjb3JhdGlvblN0eWxlKSB7CisgICAgICAgICAgICBjb250
ZXh0LnNldFN0cm9rZUNvbG9yKGxpbmV0aHJvdWdoQ29sb3IsIGNvbG9yU3BhY2UpOworICAgICAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZSh0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VT
dHlsZShsaW5ldGhyb3VnaFN0eWxlKSk7CisgICAgICAgICAgICBzd2l0Y2ggKGxpbmV0aHJvdWdo
U3R5bGUpIHsKICAgICAgICAgICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZVdhdnk6IHsKICAg
ICAgICAgICAgICAgICBGbG9hdFBvaW50IHN0YXJ0KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmln
aW4ueSgpICsgMiAqIGJhc2VsaW5lIC8gMyk7CiAgICAgICAgICAgICAgICAgRmxvYXRQb2ludCBl
bmQobG9jYWxPcmlnaW4ueCgpICsgd2lkdGgsIGxvY2FsT3JpZ2luLnkoKSArIDIgKiBiYXNlbGlu
ZSAvIDMpOwpAQCAtMTAyNSw3ICsxMDI4LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERl
Y29yYXRpb24oR3JhcAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdMaW5lRm9yVGV4
dChGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4ueSgpICsgMiAqIGJhc2Vs
aW5lIC8gMyksIHdpZHRoLCBpc1ByaW50aW5nLCBkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29y
YXRpb25TdHlsZURvdWJsZSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3TGluZUZvclRl
eHQoRmxvYXRQb2ludChsb2NhbE9yaWdpbi54KCksIGxvY2FsT3JpZ2luLnkoKSArIDIgKiBiYXNl
bGluZSAvIDMpLCB3aWR0aCwgaXNQcmludGluZywgbGluZXRocm91Z2hTdHlsZSA9PSBUZXh0RGVj
b3JhdGlvblN0eWxlRG91YmxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gd2hp
bGUgKHNoYWRvdyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmgJKHJldmlzaW9uIDE4MDE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgY29uc3QgQ29tcG9zaXRpb25VbmRlcmxpbmUmKTsKIAog
cHJpdmF0ZToKLSAgICB2b2lkIHBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFRleHREZWNvcmF0aW9uLCBUZXh0RGVjb3JhdGlvblN0
eWxlLCBjb25zdCBTaGFkb3dEYXRhKiwgVGV4dFBhaW50ZXImKTsKKyAgICB2b2lkIHBhaW50RGVj
b3JhdGlvbihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFRl
eHREZWNvcmF0aW9uLCBjb25zdCBTaGFkb3dEYXRhKiwgVGV4dFBhaW50ZXImKTsKICAgICB2b2lk
IHBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9y
aWdpbiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250Q2FzY2FkZSYsIENvbG9yIHRleHRD
b2xvcik7CiAgICAgdm9pZCBwYWludERvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgUmVuZGVyZWREb2N1bWVudE1hcmtlciYsIGNvbnN0
IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udENhc2NhZGUmLCBib29sIGdyYW1tYXIpOwogICAgIHZv
aWQgcGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRQb2lu
dCYgYm94T3JpZ2luLCBSZW5kZXJlZERvY3VtZW50TWFya2VyJiwgY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBGb250Q2FzY2FkZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDE4MDE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEwLDcgKzIxMTAsOCBA
QCBzdGF0aWMgQ29sb3IgZGVjb3JhdGlvbkNvbG9yKFJlbmRlclN0eWxlCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9uQ29sb3JzKGlu
dCBkZWNvcmF0aW9ucywgQ29sb3ImIHVuZGVybGluZSwgQ29sb3ImIG92ZXJsaW5lLCBDb2xvciYg
bGluZXRocm91Z2gsIGJvb2wgZmlyc3RsaW5lU3R5bGUpCit2b2lkIFJlbmRlck9iamVjdDo6Z2V0
VGV4dERlY29yYXRpb25Db2xvcnNBbmRTdHlsZXMoaW50IGRlY29yYXRpb25zLCBDb2xvciYgdW5k
ZXJsaW5lQ29sb3IsIENvbG9yJiBvdmVybGluZUNvbG9yLCBDb2xvciYgbGluZXRocm91Z2hDb2xv
ciwKKyAgICBUZXh0RGVjb3JhdGlvblN0eWxlJiB1bmRlcmxpbmVTdHlsZSwgVGV4dERlY29yYXRp
b25TdHlsZSYgb3ZlcmxpbmVTdHlsZSwgVGV4dERlY29yYXRpb25TdHlsZSYgbGluZXRocm91Z2hT
dHlsZSwgYm9vbCBmaXJzdGxpbmVTdHlsZSkKIHsKICAgICBSZW5kZXJPYmplY3QqIGN1cnJlbnQg
PSB0aGlzOwogICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gbnVsbHB0cjsKQEAgLTIxMjQs
MTUgKzIxMjUsMTggQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9uQ29sbwog
ICAgICAgICBpZiAoY3VyckRlY3MpIHsKICAgICAgICAgICAgIGlmIChjdXJyRGVjcyAmIFRleHRE
ZWNvcmF0aW9uVW5kZXJsaW5lKSB7CiAgICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMgJj0gflRl
eHREZWNvcmF0aW9uVW5kZXJsaW5lOwotICAgICAgICAgICAgICAgIHVuZGVybGluZSA9IHJlc3Vs
dENvbG9yOworICAgICAgICAgICAgICAgIHVuZGVybGluZUNvbG9yID0gcmVzdWx0Q29sb3I7Cisg
ICAgICAgICAgICAgICAgdW5kZXJsaW5lU3R5bGUgPSBzdHlsZVRvVXNlLT50ZXh0RGVjb3JhdGlv
blN0eWxlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY3VyckRlY3MgJiBUZXh0
RGVjb3JhdGlvbk92ZXJsaW5lKSB7CiAgICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMgJj0gflRl
eHREZWNvcmF0aW9uT3ZlcmxpbmU7Ci0gICAgICAgICAgICAgICAgb3ZlcmxpbmUgPSByZXN1bHRD
b2xvcjsKKyAgICAgICAgICAgICAgICBvdmVybGluZUNvbG9yID0gcmVzdWx0Q29sb3I7CisgICAg
ICAgICAgICAgICAgb3ZlcmxpbmVTdHlsZSA9IHN0eWxlVG9Vc2UtPnRleHREZWNvcmF0aW9uU3R5
bGUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjdXJyRGVjcyAmIFRleHREZWNv
cmF0aW9uTGluZVRocm91Z2gpIHsKICAgICAgICAgICAgICAgICBkZWNvcmF0aW9ucyAmPSB+VGV4
dERlY29yYXRpb25MaW5lVGhyb3VnaDsKLSAgICAgICAgICAgICAgICBsaW5ldGhyb3VnaCA9IHJl
c3VsdENvbG9yOworICAgICAgICAgICAgICAgIGxpbmV0aHJvdWdoQ29sb3IgPSByZXN1bHRDb2xv
cjsKKyAgICAgICAgICAgICAgICBsaW5ldGhyb3VnaFN0eWxlID0gc3R5bGVUb1VzZS0+dGV4dERl
Y29yYXRpb25TdHlsZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChj
dXJyZW50LT5pc1J1YnlUZXh0KCkpCkBAIC0yMTQ2LDEyICsyMTUwLDE4IEBAIHZvaWQgUmVuZGVy
T2JqZWN0OjpnZXRUZXh0RGVjb3JhdGlvbkNvbG8KICAgICBpZiAoZGVjb3JhdGlvbnMgJiYgY3Vy
cmVudCkgewogICAgICAgICBzdHlsZVRvVXNlID0gZmlyc3RsaW5lU3R5bGUgPyAmY3VycmVudC0+
Zmlyc3RMaW5lU3R5bGUoKSA6ICZjdXJyZW50LT5zdHlsZSgpOwogICAgICAgICByZXN1bHRDb2xv
ciA9IGRlY29yYXRpb25Db2xvcihzdHlsZVRvVXNlKTsKLSAgICAgICAgaWYgKGRlY29yYXRpb25z
ICYgVGV4dERlY29yYXRpb25VbmRlcmxpbmUpCi0gICAgICAgICAgICB1bmRlcmxpbmUgPSByZXN1
bHRDb2xvcjsKLSAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRpb25PdmVybGlu
ZSkKLSAgICAgICAgICAgIG92ZXJsaW5lID0gcmVzdWx0Q29sb3I7Ci0gICAgICAgIGlmIChkZWNv
cmF0aW9ucyAmIFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gpCi0gICAgICAgICAgICBsaW5ldGhy
b3VnaCA9IHJlc3VsdENvbG9yOworICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3Jh
dGlvblVuZGVybGluZSkgeworICAgICAgICAgICAgdW5kZXJsaW5lQ29sb3IgPSByZXN1bHRDb2xv
cjsKKyAgICAgICAgICAgIHVuZGVybGluZVN0eWxlID0gc3R5bGVUb1VzZS0+dGV4dERlY29yYXRp
b25TdHlsZSgpOworICAgICAgICB9CisgICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIFRleHREZWNv
cmF0aW9uT3ZlcmxpbmUpIHsKKyAgICAgICAgICAgIG92ZXJsaW5lQ29sb3IgPSByZXN1bHRDb2xv
cjsKKyAgICAgICAgICAgIG92ZXJsaW5lU3R5bGUgPSBzdHlsZVRvVXNlLT50ZXh0RGVjb3JhdGlv
blN0eWxlKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29y
YXRpb25MaW5lVGhyb3VnaCkgeworICAgICAgICAgICAgbGluZXRocm91Z2hDb2xvciA9IHJlc3Vs
dENvbG9yOworICAgICAgICAgICAgbGluZXRocm91Z2hTdHlsZSA9IHN0eWxlVG9Vc2UtPnRleHRE
ZWNvcmF0aW9uU3R5bGUoKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMTgwMTU0KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MDMs
NyArNzAzLDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgQ3Vyc29yRGlyZWN0aXZlIGdl
dEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYsIEN1cnNvciYpIGNvbnN0OwogCi0gICAgdm9pZCBn
ZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyhpbnQgZGVjb3JhdGlvbnMsIENvbG9yJiB1bmRlcmxpbmUs
IENvbG9yJiBvdmVybGluZSwgQ29sb3ImIGxpbmV0aHJvdWdoLCBib29sIGZpcnN0bGluZVN0eWxl
ID0gZmFsc2UpOworICAgIHZvaWQgZ2V0VGV4dERlY29yYXRpb25Db2xvcnNBbmRTdHlsZXMoaW50
IGRlY29yYXRpb25zLCBDb2xvciYgdW5kZXJsaW5lQ29sb3IsIENvbG9yJiBvdmVybGluZUNvbG9y
LCBDb2xvciYgbGluZXRocm91Z2hDb2xvciwKKyAgICAgICAgVGV4dERlY29yYXRpb25TdHlsZSYg
dW5kZXJsaW5lU3R5bGUsIFRleHREZWNvcmF0aW9uU3R5bGUmIG92ZXJsaW5lU3R5bGUsIFRleHRE
ZWNvcmF0aW9uU3R5bGUmIGxpbmV0aHJvdWdoU3R5bGUsIGJvb2wgZmlyc3RsaW5lU3R5bGUgPSBm
YWxzZSk7CiAKICAgICAvLyBSZXR1cm4gdGhlIFJlbmRlckxheWVyTW9kZWxPYmplY3QgaW4gdGhl
IGNvbnRhaW5lciBjaGFpbiB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgdGhpcyBv
YmplY3QsIG9yIDAKICAgICAvLyBpZiBwYWludGluZyBpcyByb290LXJlbGF0aXZlLiBUaGlzIGlz
IHRoZSBjb250YWluZXIgdGhhdCBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSAnZm9yUmVwYWludCcK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4MDE4MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAyLTE2ICBEYXZpZCBIeWF0dCAgPGh5
YXR0QGFwcGxlLmNvbT4KKyAgICAgICAgCisgICAgICAgIFdyb25nIGVsZW1lbnQncyBzdHlsZSBp
cyB1c2VkIGZvciB0ZXh0LWRlY29yYXRpb24tc3R5bGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE2NzMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvdGV4dC90ZXh0LXVuZGVybGluZS1zdHls
ZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvdGV4dC11bmRlcmxp
bmUtc3R5bGUuaHRtbDogQWRkZWQuCisKIDIwMTUtMDItMTYgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgZmFzdC9kb20ve0VsZW1lbnQs
UmFuZ2V9L2dldENsaWVudFJlY3RzLmh0bWwgYWZ0ZXIgcjE3Nzc3NApJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC90ZXh0L3RleHQtdW5kZXJsaW5lLXN0eWxlLWV4cGVjdGVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RleHQtdW5kZXJsaW5lLXN0eWxlLWV4cGVjdGVk
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dC11bmRlcmxp
bmUtc3R5bGUtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDggQEAKKzw/
eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQorPCFET0NUWVBFIGh0bWwgUFVC
TElDICItLy9XM0MvL0RURCBYSFRNTCAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0
bWwxMS9EVEQveGh0bWwxMS5kdGQiPg0KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hodG1sIiB4bWxuczppYm9va3M9Imh0dHA6Ly9hcHBsZS5jb20vaWJvb2tzL2h0bWwtZXh0
ZW5zaW9ucyIgeG1sbnM6ZXB1Yj0iaHR0cDovL3d3dy5pZHBmLm9yZy8yMDA3L29wcyI+DQorPGJv
ZHkgc3R5bGU9Im92ZXJmbG93OmhpZGRlbiI+DQorPHA+VGVzdCB0byBtYWtlIHN1cmUgdGhlIGRv
dHRlZCBzdHlsZSBpcyBwcm9wZXJseSBvYnRhaW5lZCBmcm9tIGFuIGVuY2xvc2luZyBhbmNlc3Rv
ci4NCis8L3A+DQorDQorPHAgc3R5bGU9InRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7LXdlYmtp
dC10ZXh0LWRlY29yYXRpb24tc3R5bGU6ZG91YmxlOyBjb2xvcjpncmVlbjsgLXdlYmtpdC10ZXh0
LWRlY29yYXRpb24tY29sb3I6Ymx1ZSI+VGhpcyB0ZXh0IHNob3VsZCBoYXZlIGEgZG91YmxlIGJs
dWUgdW5kZXJsaW5lLjwvcD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3RleHQvdGV4dC11bmRlcmxpbmUtc3R5bGUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dC11bmRlcmxpbmUtc3R5bGUuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC90ZXh0LXVuZGVybGluZS1zdHlsZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0idXRmLTgiPz4NCis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1M
IDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDExL0RURC94aHRtbDExLmR0ZCI+
DQorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbG5zOmlib29r
cz0iaHR0cDovL2FwcGxlLmNvbS9pYm9va3MvaHRtbC1leHRlbnNpb25zIiB4bWxuczplcHViPSJo
dHRwOi8vd3d3LmlkcGYub3JnLzIwMDcvb3BzIj4NCis8Ym9keSBzdHlsZT0ib3ZlcmZsb3c6aGlk
ZGVuIj4NCis8cD5UZXN0IHRvIG1ha2Ugc3VyZSB0aGUgZG90dGVkIHN0eWxlIGlzIHByb3Blcmx5
IG9idGFpbmVkIGZyb20gYW4gZW5jbG9zaW5nIGFuY2VzdG9yLg0KKzwvcD4NCisNCis8cCBzdHls
ZT0idGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTstd2Via2l0LXRleHQtZGVjb3JhdGlvbi1zdHls
ZTpkb3VibGU7IGNvbG9yOmJsdWU7Ij48c3BhbiBzdHlsZT0iLXdlYmtpdC10ZXh0LWRlY29yYXRp
b24tc3R5bGU6d2F2eTsgY29sb3I6Z3JlZW4iPlRoaXMgdGV4dCBzaG91bGQgaGF2ZSBhIGRvdWJs
ZSBibHVlIHVuZGVybGluZS48L3A+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246756</attachid>
            <date>2015-02-17 10:58:23 -0800</date>
            <delta_ts>2015-02-17 11:00:52 -0800</delta_ts>
            <desc>Patch that works on iOS</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>20407</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDE4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE1LTAyLTE2ICBEYXZpZCBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBXcm9uZyBlbGVtZW50J3Mgc3R5bGUg
aXMgdXNlZCBmb3IgdGV4dC1kZWNvcmF0aW9uLXN0eWxlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgZmFzdC90ZXh0L3RleHQtdW5kZXJsaW5l
LXN0eWxlLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHls
ZSk6CisgICAgICAgIEFkZCBhcmd1bWVudHMgZm9yIGZldGNoaW5nIHN0eWxlcy4KKworICAgICAg
ICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZVRleHRCb3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50
RGVjb3JhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guaDoKKyAgICAg
ICAgUmVtb3ZlIHRoZSBwYXNzZWQgaW4gVGV4dERlY29yYXRpb25TdHlsZSBhbmQgaW5zdGVhZCBw
YXRjaCB0aGUgY29kZSB0byBmZXRjaCB0aGUgc3R5bGVzIGluIHRoZSBzYW1lCisgICAgICAgIHdh
eSBpdCBmZXRjaGVzIHRoZSBjb2xvcnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Z2V0VGV4dERlY29yYXRp
b25Db2xvcnNBbmRTdHlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpnZXRU
ZXh0RGVjb3JhdGlvbkNvbG9ycyk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oOgorICAgICAgICBBZGQgc3R5bGUgZmV0Y2hpbmcgdG8gdGhlIHNhbWUgZnVuY3Rp
b24gdGhhdCBmZXRjaGVzIGNvbG9ycyBhbmQgcmVuYW1lIGl0LgorCiAyMDE1LTAyLTE2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0
IGEgY2hhbmdlIGluIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIgY29tbWl0
dGVkIGZvciBmaXhpbmcgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTk2MjY+LgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHJl
dmlzaW9uIDE4MDE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYyLDEw
ICsxNzYyLDkgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZShOUwogICAg
ICAgICAgICAgICAgIAogICAgIGludCBkZWNvciA9IHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZm
ZWN0KCk7CiAgICAgaWYgKChkZWNvciAmIChUZXh0RGVjb3JhdGlvblVuZGVybGluZSB8IFRleHRE
ZWNvcmF0aW9uTGluZVRocm91Z2gpKSAhPSAwKSB7Ci0gICAgICAgIC8vIGZpbmQgY29sb3JzIHVz
aW5nIHF1aXJrIG1vZGUgYXBwcm9hY2ggKHN0cmljdCBtb2RlIHdvdWxkIHVzZSBjdXJyZW50Ci0g
ICAgICAgIC8vIGNvbG9yIGZvciBhbGwgYnV0IHRoZSByb290IGxpbmUgYm94LCB3aGljaCB3b3Vs
ZCB1c2UgZ2V0VGV4dERlY29yYXRpb25Db2xvcnMpCi0gICAgICAgIENvbG9yIHVuZGVybGluZSwg
b3ZlcmxpbmUsIGxpbmV0aHJvdWdoOwotICAgICAgICByZW5kZXJlci0+Z2V0VGV4dERlY29yYXRp
b25Db2xvcnMoZGVjb3IsIHVuZGVybGluZSwgb3ZlcmxpbmUsIGxpbmV0aHJvdWdoKTsKKyAgICAg
ICAgQ29sb3IgdW5kZXJsaW5lQ29sb3IsIG92ZXJsaW5lQ29sb3IsIGxpbmV0aHJvdWdoQ29sb3I7
CisgICAgICAgIFRleHREZWNvcmF0aW9uU3R5bGUgdW5kZXJsaW5lU3R5bGUsIG92ZXJsaW5lU3R5
bGUsIGxpbmV0aHJvdWdoU3R5bGU7CisgICAgICAgIHJlbmRlcmVyLT5nZXRUZXh0RGVjb3JhdGlv
bkNvbG9yc0FuZFN0eWxlcyhkZWNvciwgdW5kZXJsaW5lQ29sb3IsIG92ZXJsaW5lQ29sb3IsIGxp
bmV0aHJvdWdoQ29sb3IsIHVuZGVybGluZVN0eWxlLCBvdmVybGluZVN0eWxlLCBsaW5ldGhyb3Vn
aFN0eWxlKTsKICAgICAgICAgCiAgICAgICAgIGlmIChkZWNvciAmIFRleHREZWNvcmF0aW9uVW5k
ZXJsaW5lKQogICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmlu
ZywgVUlBY2Nlc3NpYmlsaXR5VG9rZW5VbmRlcmxpbmUsIFtOU051bWJlciBudW1iZXJXaXRoQm9v
bDpZRVNdLCByYW5nZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQkocmV2aXNpb24gMTgwMTU0KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTg4MiwxOSArODgyLDE5IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUo
TlMKICAgICB9CiAgICAgCiAgICAgaWYgKChkZWNvciAmIChUZXh0RGVjb3JhdGlvblVuZGVybGlu
ZSB8IFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gpKSAhPSAwKSB7Ci0gICAgICAgIC8vIGZpbmQg
Y29sb3JzIHVzaW5nIHF1aXJrIG1vZGUgYXBwcm9hY2ggKHN0cmljdCBtb2RlIHdvdWxkIHVzZSBj
dXJyZW50Ci0gICAgICAgIC8vIGNvbG9yIGZvciBhbGwgYnV0IHRoZSByb290IGxpbmUgYm94LCB3
aGljaCB3b3VsZCB1c2UgZ2V0VGV4dERlY29yYXRpb25Db2xvcnMpCi0gICAgICAgIENvbG9yIHVu
ZGVybGluZSwgb3ZlcmxpbmUsIGxpbmV0aHJvdWdoOwotICAgICAgICByZW5kZXJlci0+Z2V0VGV4
dERlY29yYXRpb25Db2xvcnMoZGVjb3IsIHVuZGVybGluZSwgb3ZlcmxpbmUsIGxpbmV0aHJvdWdo
KTsKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGUgdW5kZXJsaW5lIHN0eWxlIGJlIHJlcG9y
dGVkIGhlcmU/CisgICAgICAgIENvbG9yIHVuZGVybGluZUNvbG9yLCBvdmVybGluZUNvbG9yLCBs
aW5ldGhyb3VnaENvbG9yOworICAgICAgICBUZXh0RGVjb3JhdGlvblN0eWxlIHVuZGVybGluZVN0
eWxlLCBvdmVybGluZVN0eWxlLCBsaW5ldGhyb3VnaFN0eWxlOworICAgICAgICByZW5kZXJlci0+
Z2V0VGV4dERlY29yYXRpb25Db2xvcnNBbmRTdHlsZXMoZGVjb3IsIHVuZGVybGluZUNvbG9yLCBv
dmVybGluZUNvbG9yLCBsaW5ldGhyb3VnaENvbG9yLCB1bmRlcmxpbmVTdHlsZSwgb3ZlcmxpbmVT
dHlsZSwgbGluZXRocm91Z2hTdHlsZSk7CiAgICAgICAgIAogICAgICAgICBpZiAoKGRlY29yICYg
VGV4dERlY29yYXRpb25VbmRlcmxpbmUpICE9IDApIHsKICAgICAgICAgICAgIEFYQXR0cmlidXRl
U3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVRleHRB
dHRyaWJ1dGUsIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCByYW5nZSk7Ci0gICAgICAg
ICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0
eVVuZGVybGluZUNvbG9yVGV4dEF0dHJpYnV0ZSwgbnNDb2xvcih1bmRlcmxpbmUpLCByYW5nZSk7
CisgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNj
ZXNzaWJpbGl0eVVuZGVybGluZUNvbG9yVGV4dEF0dHJpYnV0ZSwgbnNDb2xvcih1bmRlcmxpbmVD
b2xvciksIHJhbmdlKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKChkZWNvciAm
IFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gpICE9IDApIHsKICAgICAgICAgICAgIEFYQXR0cmli
dXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91
Z2hUZXh0QXR0cmlidXRlLCBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgcmFuZ2UpOwot
ICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vz
c2liaWxpdHlTdHJpa2V0aHJvdWdoQ29sb3JUZXh0QXR0cmlidXRlLCBuc0NvbG9yKGxpbmV0aHJv
dWdoKSwgcmFuZ2UpOworICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRy
U3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoQ29sb3JUZXh0QXR0cmlidXRlLCBu
c0NvbG9yKGxpbmV0aHJvdWdoQ29sb3IpLCByYW5nZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAg
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCShyZXZp
c2lvbiAxODAxNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYyMiw3ICs2MjIsNyBAQCB2b2lkIElubGluZVRleHRCb3g6
OnBhaW50KFBhaW50SW5mbyYgcGFpCiAgICAgICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChjb250
ZXh0LCB0ZXh0UGFpbnRTdHlsZSk7CiAgICAgICAgIGlmIChjb21iaW5lZFRleHQpCiAgICAgICAg
ICAgICBjb250ZXh0LmNvbmNhdENUTShyb3RhdGlvbihib3hSZWN0LCBDbG9ja3dpc2UpKTsKLSAg
ICAgICAgcGFpbnREZWNvcmF0aW9uKGNvbnRleHQsIGJveE9yaWdpbiwgdGV4dERlY29yYXRpb25z
LCBsaW5lU3R5bGUudGV4dERlY29yYXRpb25TdHlsZSgpLCB0ZXh0U2hhZG93LCB0ZXh0UGFpbnRl
cik7CisgICAgICAgIHBhaW50RGVjb3JhdGlvbihjb250ZXh0LCBib3hPcmlnaW4sIHRleHREZWNv
cmF0aW9ucywgdGV4dFNoYWRvdywgdGV4dFBhaW50ZXIpOwogICAgICAgICBpZiAoY29tYmluZWRU
ZXh0KQogICAgICAgICAgICAgY29udGV4dC5jb25jYXRDVE0ocm90YXRpb24oYm94UmVjdCwgQ291
bnRlcmNsb2Nrd2lzZSkpOwogICAgIH0KQEAgLTg5NSw3ICs4OTUsNyBAQCBzdGF0aWMgdm9pZCBz
dHJva2VXYXZ5VGV4dERlY29yYXRpb24oR3JhCiAgICAgY29udGV4dC5zdHJva2VQYXRoKHBhdGgp
OwogfQogCi12b2lkIElubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgVGV4dERlY29yYXRpb24g
ZGVjb3JhdGlvbiwgVGV4dERlY29yYXRpb25TdHlsZSBkZWNvcmF0aW9uU3R5bGUsIGNvbnN0IFNo
YWRvd0RhdGEqIHNoYWRvdywgVGV4dFBhaW50ZXImIHRleHRQYWludGVyKQordm9pZCBJbmxpbmVU
ZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFBvaW50JiBib3hPcmlnaW4sIFRleHREZWNvcmF0aW9uIGRlY29yYXRpb24sIGNvbnN0IFNo
YWRvd0RhdGEqIHNoYWRvdywgVGV4dFBhaW50ZXImIHRleHRQYWludGVyKQogewogI2lmICFFTkFC
TEUoQ1NTM19URVhUX0RFQ09SQVRJT05fU0tJUF9JTkspCiAgICAgVU5VU0VEX1BBUkFNKHRleHRQ
YWludGVyKTsKQEAgLTkxNCwxMCArOTE0LDExIEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRE
ZWNvcmF0aW9uKEdyYXAKICAgICB9CiAgICAgCiAgICAgLy8gR2V0IHRoZSB0ZXh0IGRlY29yYXRp
b24gY29sb3JzLgotICAgIENvbG9yIHVuZGVybGluZSwgb3ZlcmxpbmUsIGxpbmV0aHJvdWdoOwot
ICAgIHJlbmRlcmVyKCkuZ2V0VGV4dERlY29yYXRpb25Db2xvcnMoZGVjb3JhdGlvbiwgdW5kZXJs
aW5lLCBvdmVybGluZSwgbGluZXRocm91Z2gpOworICAgIENvbG9yIHVuZGVybGluZUNvbG9yLCBv
dmVybGluZUNvbG9yLCBsaW5ldGhyb3VnaENvbG9yOworICAgIFRleHREZWNvcmF0aW9uU3R5bGUg
dW5kZXJsaW5lU3R5bGUsIG92ZXJsaW5lU3R5bGUsIGxpbmV0aHJvdWdoU3R5bGU7CisgICAgcmVu
ZGVyZXIoKS5nZXRUZXh0RGVjb3JhdGlvbkNvbG9yc0FuZFN0eWxlcyhkZWNvcmF0aW9uLCB1bmRl
cmxpbmVDb2xvciwgb3ZlcmxpbmVDb2xvciwgbGluZXRocm91Z2hDb2xvciwgdW5kZXJsaW5lU3R5
bGUsIG92ZXJsaW5lU3R5bGUsIGxpbmV0aHJvdWdoU3R5bGUpOwogICAgIGlmIChpc0ZpcnN0TGlu
ZSgpKQotICAgICAgICByZW5kZXJlcigpLmdldFRleHREZWNvcmF0aW9uQ29sb3JzKGRlY29yYXRp
b24sIHVuZGVybGluZSwgb3ZlcmxpbmUsIGxpbmV0aHJvdWdoLCB0cnVlKTsKKyAgICAgICAgcmVu
ZGVyZXIoKS5nZXRUZXh0RGVjb3JhdGlvbkNvbG9yc0FuZFN0eWxlcyhkZWNvcmF0aW9uLCB1bmRl
cmxpbmVDb2xvciwgb3ZlcmxpbmVDb2xvciwgbGluZXRocm91Z2hDb2xvciwgdW5kZXJsaW5lU3R5
bGUsIG92ZXJsaW5lU3R5bGUsIGxpbmV0aHJvdWdoU3R5bGUsIHRydWUpOwogICAgIAogICAgIC8v
IFVzZSBhIHNwZWNpYWwgZnVuY3Rpb24gZm9yIHVuZGVybGluZXMgdG8gZ2V0IHRoZSBwb3NpdGlv
bmluZyBleGFjdGx5IHJpZ2h0LgogICAgIGJvb2wgaXNQcmludGluZyA9IHJlbmRlcmVyKCkuZG9j
dW1lbnQoKS5wcmludGluZygpOwpAQCAtOTI1LDcgKzkyNiw3IEBAIHZvaWQgSW5saW5lVGV4dEJv
eDo6cGFpbnREZWNvcmF0aW9uKEdyYXAKICAgICBmbG9hdCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVz
cyA9IHRleHREZWNvcmF0aW9uU3Ryb2tlVGhpY2tuZXNzKHJlbmRlcmVyKCkuc3R5bGUoKS5mb250
U2l6ZSgpKTsKICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyh0ZXh0RGVjb3JhdGlvblRo
aWNrbmVzcyk7CiAKLSAgICBib29sIGxpbmVzQXJlT3BhcXVlID0gIWlzUHJpbnRpbmcgJiYgKCEo
ZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKSB8fCB1bmRlcmxpbmUuYWxwaGEo
KSA9PSAyNTUpICYmICghKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKSB8fCBv
dmVybGluZS5hbHBoYSgpID09IDI1NSkgJiYgKCEoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9u
TGluZVRocm91Z2gpIHx8IGxpbmV0aHJvdWdoLmFscGhhKCkgPT0gMjU1KTsKKyAgICBib29sIGxp
bmVzQXJlT3BhcXVlID0gIWlzUHJpbnRpbmcgJiYgKCEoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0
aW9uVW5kZXJsaW5lKSB8fCB1bmRlcmxpbmVDb2xvci5hbHBoYSgpID09IDI1NSkgJiYgKCEoZGVj
b3JhdGlvbiAmIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUpIHx8IG92ZXJsaW5lQ29sb3IuYWxwaGEo
KSA9PSAyNTUpICYmICghKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKSB8
fCBsaW5ldGhyb3VnaENvbG9yLmFscGhhKCkgPT0gMjU1KTsKIAogICAgIGNvbnN0IFJlbmRlclN0
eWxlJiBsaW5lU3R5bGUgPSB0aGlzLT5saW5lU3R5bGUoKTsKICAgICBpbnQgYmFzZWxpbmUgPSBs
aW5lU3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoKTsKQEAgLTk3MCwxMyArOTcxLDEzIEBAIHZv
aWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXAKICAgICAgICAgCiAgICAgICAg
IGZsb2F0IHdhdnlPZmZzZXQgPSB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24oKTsKIAotICAgICAg
ICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHRleHREZWNvcmF0aW9uU3R5bGVUb1N0cm9rZVN0eWxl
KGRlY29yYXRpb25TdHlsZSkpOwogICAgICAgICAvLyBUaGVzZSBkZWNvcmF0aW9ucyBzaG91bGQg
bWF0Y2ggdGhlIHZpc3VhbCBvdmVyZmxvd3MgY29tcHV0ZWQgaW4gdmlzdWFsT3ZlcmZsb3dGb3JE
ZWNvcmF0aW9ucygpCiAgICAgICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25VbmRl
cmxpbmUpIHsKLSAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodW5kZXJsaW5lLCBj
b2xvclNwYWNlKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodW5kZXJsaW5l
Q29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZSh0
ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZSh1bmRlcmxpbmVTdHlsZSkpOwogICAgICAg
ICAgICAgY29uc3QgaW50IHVuZGVybGluZU9mZnNldCA9IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQo
bGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBsaW5lU3R5bGUuZm9udE1ldHJpY3Mo
KSwgdGhpcywgdGV4dERlY29yYXRpb25UaGlja25lc3MpOwogCi0gICAgICAgICAgICBzd2l0Y2gg
KGRlY29yYXRpb25TdHlsZSkgeworICAgICAgICAgICAgc3dpdGNoICh1bmRlcmxpbmVTdHlsZSkg
ewogICAgICAgICAgICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlV2F2eTogewogICAgICAgICAg
ICAgICAgIEZsb2F0UG9pbnQgc3RhcnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdpbi55KCkg
KyB1bmRlcmxpbmVPZmZzZXQgKyB3YXZ5T2Zmc2V0KTsKICAgICAgICAgICAgICAgICBGbG9hdFBv
aW50IGVuZChsb2NhbE9yaWdpbi54KCkgKyB3aWR0aCwgbG9jYWxPcmlnaW4ueSgpICsgdW5kZXJs
aW5lT2Zmc2V0ICsgd2F2eU9mZnNldCk7CkBAIC05ODcsMTcgKzk4OCwxOCBAQCB2b2lkIElubGlu
ZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwCiAjaWYgRU5BQkxFKENTUzNfVEVYVF9ERUNP
UkFUSU9OX1NLSVBfSU5LKQogICAgICAgICAgICAgICAgIGlmICgobGluZVN0eWxlLnRleHREZWNv
cmF0aW9uU2tpcCgpID09IFRleHREZWNvcmF0aW9uU2tpcEluayB8fCBsaW5lU3R5bGUudGV4dERl
Y29yYXRpb25Ta2lwKCkgPT0gVGV4dERlY29yYXRpb25Ta2lwQXV0bykgJiYgaXNIb3Jpem9udGFs
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQo
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZHJhd1NraXBJbmtVbmRlcmxpbmUodGV4dFBh
aW50ZXIsIGNvbnRleHQsIGxvY2FsT3JpZ2luLCB1bmRlcmxpbmVPZmZzZXQsIHdpZHRoLCBpc1By
aW50aW5nLCBkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZURvdWJsZSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkcmF3U2tpcElua1VuZGVybGluZSh0ZXh0UGFpbnRlciwg
Y29udGV4dCwgbG9jYWxPcmlnaW4sIHVuZGVybGluZU9mZnNldCwgd2lkdGgsIGlzUHJpbnRpbmcs
IHVuZGVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBOZWVkIHRvIHN1cHBvcnQgdGV4dC1kZWNvcmF0aW9uLXNraXA6IG5vbmUuCiAj
ZW5kaWYgLy8gQ1NTM19URVhUX0RFQ09SQVRJT05fU0tJUF9JTksKLSAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC5kcmF3TGluZUZvclRleHQoRmxvYXRQb2ludChsb2NhbE9yaWdpbi54KCksIGxv
Y2FsT3JpZ2luLnkoKSArIHVuZGVybGluZU9mZnNldCksIHdpZHRoLCBpc1ByaW50aW5nLCBkZWNv
cmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZURvdWJsZSk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQuZHJhd0xpbmVGb3JUZXh0KEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgp
LCBsb2NhbE9yaWdpbi55KCkgKyB1bmRlcmxpbmVPZmZzZXQpLCB3aWR0aCwgaXNQcmludGluZywg
dW5kZXJsaW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZURvdWJsZSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbk92
ZXJsaW5lKSB7Ci0gICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKG92ZXJsaW5lLCBj
b2xvclNwYWNlKTsKLSAgICAgICAgICAgIHN3aXRjaCAoZGVjb3JhdGlvblN0eWxlKSB7CisgICAg
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKG92ZXJsaW5lQ29sb3IsIGNvbG9yU3BhY2Up
OworICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZSh0ZXh0RGVjb3JhdGlvblN0eWxl
VG9TdHJva2VTdHlsZShvdmVybGluZVN0eWxlKSk7CisgICAgICAgICAgICBzd2l0Y2ggKG92ZXJs
aW5lU3R5bGUpIHsKICAgICAgICAgICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZVdhdnk6IHsK
ICAgICAgICAgICAgICAgICBGbG9hdFBvaW50IHN0YXJ0KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxP
cmlnaW4ueSgpIC0gd2F2eU9mZnNldCk7CiAgICAgICAgICAgICAgICAgRmxvYXRQb2ludCBlbmQo
bG9jYWxPcmlnaW4ueCgpICsgd2lkdGgsIGxvY2FsT3JpZ2luLnkoKSAtIHdhdnlPZmZzZXQpOwpA
QCAtMTAwOCwxNiArMTAxMCwxNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlv
bihHcmFwCiAjaWYgRU5BQkxFKENTUzNfVEVYVF9ERUNPUkFUSU9OX1NLSVBfSU5LKQogICAgICAg
ICAgICAgICAgIGlmICgobGluZVN0eWxlLnRleHREZWNvcmF0aW9uU2tpcCgpID09IFRleHREZWNv
cmF0aW9uU2tpcEluayB8fCBsaW5lU3R5bGUudGV4dERlY29yYXRpb25Ta2lwKCkgPT0gVGV4dERl
Y29yYXRpb25Ta2lwQXV0bykgJiYgaXNIb3Jpem9udGFsKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGRyYXdTa2lwSW5rVW5kZXJsaW5lKHRleHRQYWludGVyLCBjb250ZXh0LCBsb2NhbE9yaWdp
biwgMCwgd2lkdGgsIGlzUHJpbnRpbmcsIGRlY29yYXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlv
blN0eWxlRG91YmxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdTa2lwSW5rVW5kZXJs
aW5lKHRleHRQYWludGVyLCBjb250ZXh0LCBsb2NhbE9yaWdpbiwgMCwgd2lkdGgsIGlzUHJpbnRp
bmcsIG92ZXJsaW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZURvdWJsZSk7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN1
cHBvcnQgdGV4dC1kZWNvcmF0aW9uLXNraXA6IG5vbmUuCiAjZW5kaWYgLy8gQ1NTM19URVhUX0RF
Q09SQVRJT05fU0tJUF9JTksKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3TGluZUZv
clRleHQobG9jYWxPcmlnaW4sIHdpZHRoLCBpc1ByaW50aW5nLCBkZWNvcmF0aW9uU3R5bGUgPT0g
VGV4dERlY29yYXRpb25TdHlsZURvdWJsZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQu
ZHJhd0xpbmVGb3JUZXh0KGxvY2FsT3JpZ2luLCB3aWR0aCwgaXNQcmludGluZywgb3ZlcmxpbmVT
dHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlRG91YmxlKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gp
IHsKLSAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IobGluZXRocm91Z2gsIGNvbG9y
U3BhY2UpOwotICAgICAgICAgICAgc3dpdGNoIChkZWNvcmF0aW9uU3R5bGUpIHsKKyAgICAgICAg
ICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IobGluZXRocm91Z2hDb2xvciwgY29sb3JTcGFjZSk7
CisgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHRleHREZWNvcmF0aW9uU3R5bGVU
b1N0cm9rZVN0eWxlKGxpbmV0aHJvdWdoU3R5bGUpKTsKKyAgICAgICAgICAgIHN3aXRjaCAobGlu
ZXRocm91Z2hTdHlsZSkgewogICAgICAgICAgICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlV2F2
eTogewogICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQgc3RhcnQobG9jYWxPcmlnaW4ueCgpLCBs
b2NhbE9yaWdpbi55KCkgKyAyICogYmFzZWxpbmUgLyAzKTsKICAgICAgICAgICAgICAgICBGbG9h
dFBvaW50IGVuZChsb2NhbE9yaWdpbi54KCkgKyB3aWR0aCwgbG9jYWxPcmlnaW4ueSgpICsgMiAq
IGJhc2VsaW5lIC8gMyk7CkBAIC0xMDI1LDcgKzEwMjgsNyBAQCB2b2lkIElubGluZVRleHRCb3g6
OnBhaW50RGVjb3JhdGlvbihHcmFwCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0xp
bmVGb3JUZXh0KEZsb2F0UG9pbnQobG9jYWxPcmlnaW4ueCgpLCBsb2NhbE9yaWdpbi55KCkgKyAy
ICogYmFzZWxpbmUgLyAzKSwgd2lkdGgsIGlzUHJpbnRpbmcsIGRlY29yYXRpb25TdHlsZSA9PSBU
ZXh0RGVjb3JhdGlvblN0eWxlRG91YmxlKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdM
aW5lRm9yVGV4dChGbG9hdFBvaW50KGxvY2FsT3JpZ2luLngoKSwgbG9jYWxPcmlnaW4ueSgpICsg
MiAqIGJhc2VsaW5lIC8gMyksIHdpZHRoLCBpc1ByaW50aW5nLCBsaW5ldGhyb3VnaFN0eWxlID09
IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfSB3aGlsZSAoc2hhZG93KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guaAkocmV2aXNpb24gMTgwMTU0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZVRleHRCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIHBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmUoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBjb25zdCBDb21wb3NpdGlvblVuZGVybGlu
ZSYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgcGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgVGV4dERlY29yYXRpb24sIFRleHREZWNv
cmF0aW9uU3R5bGUsIGNvbnN0IFNoYWRvd0RhdGEqLCBUZXh0UGFpbnRlciYpOworICAgIHZvaWQg
cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9y
aWdpbiwgVGV4dERlY29yYXRpb24sIGNvbnN0IFNoYWRvd0RhdGEqLCBUZXh0UGFpbnRlciYpOwog
ICAgIHZvaWQgcGFpbnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRQb2lu
dCYgYm94T3JpZ2luLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJiwgQ29s
b3IgdGV4dENvbG9yKTsKICAgICB2b2lkIHBhaW50RG9jdW1lbnRNYXJrZXIoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBSZW5kZXJlZERvY3VtZW50TWFya2Vy
JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250Q2FzY2FkZSYsIGJvb2wgZ3JhbW1hcik7
CiAgICAgdm9pZCBwYWludFRleHRNYXRjaE1hcmtlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFBvaW50JiBib3hPcmlnaW4sIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXImLCBjb25zdCBSZW5k
ZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTgwMTU0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMTAsNyAr
MjExMCw4IEBAIHN0YXRpYyBDb2xvciBkZWNvcmF0aW9uQ29sb3IoUmVuZGVyU3R5bGUKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFJlbmRlck9iamVjdDo6Z2V0VGV4dERlY29yYXRpb25D
b2xvcnMoaW50IGRlY29yYXRpb25zLCBDb2xvciYgdW5kZXJsaW5lLCBDb2xvciYgb3ZlcmxpbmUs
IENvbG9yJiBsaW5ldGhyb3VnaCwgYm9vbCBmaXJzdGxpbmVTdHlsZSkKK3ZvaWQgUmVuZGVyT2Jq
ZWN0OjpnZXRUZXh0RGVjb3JhdGlvbkNvbG9yc0FuZFN0eWxlcyhpbnQgZGVjb3JhdGlvbnMsIENv
bG9yJiB1bmRlcmxpbmVDb2xvciwgQ29sb3ImIG92ZXJsaW5lQ29sb3IsIENvbG9yJiBsaW5ldGhy
b3VnaENvbG9yLAorICAgIFRleHREZWNvcmF0aW9uU3R5bGUmIHVuZGVybGluZVN0eWxlLCBUZXh0
RGVjb3JhdGlvblN0eWxlJiBvdmVybGluZVN0eWxlLCBUZXh0RGVjb3JhdGlvblN0eWxlJiBsaW5l
dGhyb3VnaFN0eWxlLCBib29sIGZpcnN0bGluZVN0eWxlKQogewogICAgIFJlbmRlck9iamVjdCog
Y3VycmVudCA9IHRoaXM7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSBudWxscHRyOwpA
QCAtMjEyNCwxNSArMjEyNSwxOCBAQCB2b2lkIFJlbmRlck9iamVjdDo6Z2V0VGV4dERlY29yYXRp
b25Db2xvCiAgICAgICAgIGlmIChjdXJyRGVjcykgewogICAgICAgICAgICAgaWYgKGN1cnJEZWNz
ICYgVGV4dERlY29yYXRpb25VbmRlcmxpbmUpIHsKICAgICAgICAgICAgICAgICBkZWNvcmF0aW9u
cyAmPSB+VGV4dERlY29yYXRpb25VbmRlcmxpbmU7Ci0gICAgICAgICAgICAgICAgdW5kZXJsaW5l
ID0gcmVzdWx0Q29sb3I7CisgICAgICAgICAgICAgICAgdW5kZXJsaW5lQ29sb3IgPSByZXN1bHRD
b2xvcjsKKyAgICAgICAgICAgICAgICB1bmRlcmxpbmVTdHlsZSA9IHN0eWxlVG9Vc2UtPnRleHRE
ZWNvcmF0aW9uU3R5bGUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjdXJyRGVj
cyAmIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUpIHsKICAgICAgICAgICAgICAgICBkZWNvcmF0aW9u
cyAmPSB+VGV4dERlY29yYXRpb25PdmVybGluZTsKLSAgICAgICAgICAgICAgICBvdmVybGluZSA9
IHJlc3VsdENvbG9yOworICAgICAgICAgICAgICAgIG92ZXJsaW5lQ29sb3IgPSByZXN1bHRDb2xv
cjsKKyAgICAgICAgICAgICAgICBvdmVybGluZVN0eWxlID0gc3R5bGVUb1VzZS0+dGV4dERlY29y
YXRpb25TdHlsZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGN1cnJEZWNzICYg
VGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkgewogICAgICAgICAgICAgICAgIGRlY29yYXRpb25z
ICY9IH5UZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoOwotICAgICAgICAgICAgICAgIGxpbmV0aHJv
dWdoID0gcmVzdWx0Q29sb3I7CisgICAgICAgICAgICAgICAgbGluZXRocm91Z2hDb2xvciA9IHJl
c3VsdENvbG9yOworICAgICAgICAgICAgICAgIGxpbmV0aHJvdWdoU3R5bGUgPSBzdHlsZVRvVXNl
LT50ZXh0RGVjb3JhdGlvblN0eWxlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGN1cnJlbnQtPmlzUnVieVRleHQoKSkKQEAgLTIxNDYsMTIgKzIxNTAsMTggQEAgdm9p
ZCBSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9uQ29sbwogICAgIGlmIChkZWNvcmF0aW9u
cyAmJiBjdXJyZW50KSB7CiAgICAgICAgIHN0eWxlVG9Vc2UgPSBmaXJzdGxpbmVTdHlsZSA/ICZj
dXJyZW50LT5maXJzdExpbmVTdHlsZSgpIDogJmN1cnJlbnQtPnN0eWxlKCk7CiAgICAgICAgIHJl
c3VsdENvbG9yID0gZGVjb3JhdGlvbkNvbG9yKHN0eWxlVG9Vc2UpOwotICAgICAgICBpZiAoZGVj
b3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvblVuZGVybGluZSkKLSAgICAgICAgICAgIHVuZGVybGlu
ZSA9IHJlc3VsdENvbG9yOwotICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlv
bk92ZXJsaW5lKQotICAgICAgICAgICAgb3ZlcmxpbmUgPSByZXN1bHRDb2xvcjsKLSAgICAgICAg
aWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkKLSAgICAgICAgICAg
IGxpbmV0aHJvdWdoID0gcmVzdWx0Q29sb3I7CisgICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIFRl
eHREZWNvcmF0aW9uVW5kZXJsaW5lKSB7CisgICAgICAgICAgICB1bmRlcmxpbmVDb2xvciA9IHJl
c3VsdENvbG9yOworICAgICAgICAgICAgdW5kZXJsaW5lU3R5bGUgPSBzdHlsZVRvVXNlLT50ZXh0
RGVjb3JhdGlvblN0eWxlKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlY29yYXRpb25zICYg
VGV4dERlY29yYXRpb25PdmVybGluZSkgeworICAgICAgICAgICAgb3ZlcmxpbmVDb2xvciA9IHJl
c3VsdENvbG9yOworICAgICAgICAgICAgb3ZlcmxpbmVTdHlsZSA9IHN0eWxlVG9Vc2UtPnRleHRE
ZWNvcmF0aW9uU3R5bGUoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBU
ZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKSB7CisgICAgICAgICAgICBsaW5ldGhyb3VnaENvbG9y
ID0gcmVzdWx0Q29sb3I7CisgICAgICAgICAgICBsaW5ldGhyb3VnaFN0eWxlID0gc3R5bGVUb1Vz
ZS0+dGV4dERlY29yYXRpb25TdHlsZSgpOworICAgICAgICB9CiAgICAgfQogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxODAxNTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTcwMyw3ICs3MDMsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBDdXJzb3JEaXJl
Y3RpdmUgZ2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiwgQ3Vyc29yJikgY29uc3Q7CiAKLSAg
ICB2b2lkIGdldFRleHREZWNvcmF0aW9uQ29sb3JzKGludCBkZWNvcmF0aW9ucywgQ29sb3ImIHVu
ZGVybGluZSwgQ29sb3ImIG92ZXJsaW5lLCBDb2xvciYgbGluZXRocm91Z2gsIGJvb2wgZmlyc3Rs
aW5lU3R5bGUgPSBmYWxzZSk7CisgICAgdm9pZCBnZXRUZXh0RGVjb3JhdGlvbkNvbG9yc0FuZFN0
eWxlcyhpbnQgZGVjb3JhdGlvbnMsIENvbG9yJiB1bmRlcmxpbmVDb2xvciwgQ29sb3ImIG92ZXJs
aW5lQ29sb3IsIENvbG9yJiBsaW5ldGhyb3VnaENvbG9yLAorICAgICAgICBUZXh0RGVjb3JhdGlv
blN0eWxlJiB1bmRlcmxpbmVTdHlsZSwgVGV4dERlY29yYXRpb25TdHlsZSYgb3ZlcmxpbmVTdHls
ZSwgVGV4dERlY29yYXRpb25TdHlsZSYgbGluZXRocm91Z2hTdHlsZSwgYm9vbCBmaXJzdGxpbmVT
dHlsZSA9IGZhbHNlKTsKIAogICAgIC8vIFJldHVybiB0aGUgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCBpbiB0aGUgY29udGFpbmVyIGNoYWluIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBwYWludGlu
ZyB0aGlzIG9iamVjdCwgb3IgMAogICAgIC8vIGlmIHBhaW50aW5nIGlzIHJvb3QtcmVsYXRpdmUu
IFRoaXMgaXMgdGhlIGNvbnRhaW5lciB0aGF0IHNob3VsZCBiZSBwYXNzZWQgdG8gdGhlICdmb3JS
ZXBhaW50JwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTgwMTgyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDItMTYgIERhdmlkIEh5
YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorICAgICAgICAKKyAgICAgICAgV3JvbmcgZWxlbWVudCdz
IHN0eWxlIGlzIHVzZWQgZm9yIHRleHQtZGVjb3JhdGlvbi1zdHlsZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTY3MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC90ZXh0L3RleHQtdW5kZXJs
aW5lLXN0eWxlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC90ZXh0
LXVuZGVybGluZS1zdHlsZS5odG1sOiBBZGRlZC4KKwogMjAxNS0wMi0xNiAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBmYXN0L2RvbS97
RWxlbWVudCxSYW5nZX0vZ2V0Q2xpZW50UmVjdHMuaHRtbCBhZnRlciByMTc3Nzc0CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dC11bmRlcmxpbmUtc3R5bGUtZXhwZWN0ZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dC11bmRlcmxpbmUtc3R5bGUt
ZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC90ZXh0
LXVuZGVybGluZS1zdHlsZS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCis8IURPQ1RZUEUg
aHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9y
Zy9UUi94aHRtbDExL0RURC94aHRtbDExLmR0ZCI+DQorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwiIHhtbG5zOmlib29rcz0iaHR0cDovL2FwcGxlLmNvbS9pYm9va3Mv
aHRtbC1leHRlbnNpb25zIiB4bWxuczplcHViPSJodHRwOi8vd3d3LmlkcGYub3JnLzIwMDcvb3Bz
Ij4NCis8Ym9keSBzdHlsZT0ib3ZlcmZsb3c6aGlkZGVuIj4NCis8cD5UZXN0IHRvIG1ha2Ugc3Vy
ZSB0aGUgZG90dGVkIHN0eWxlIGlzIHByb3Blcmx5IG9idGFpbmVkIGZyb20gYW4gZW5jbG9zaW5n
IGFuY2VzdG9yLg0KKzwvcD4NCisNCis8cCBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOnVuZGVybGlu
ZTstd2Via2l0LXRleHQtZGVjb3JhdGlvbi1zdHlsZTpkb3VibGU7IGNvbG9yOmdyZWVuOyAtd2Vi
a2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjpibHVlIj5UaGlzIHRleHQgc2hvdWxkIGhhdmUgYSBk
b3VibGUgYmx1ZSB1bmRlcmxpbmUuPC9wPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC90ZXh0LXVuZGVybGluZS1zdHlsZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC90ZXh0LXVuZGVybGluZS1zdHlsZS5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RleHQtdW5kZXJsaW5lLXN0
eWxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9E
VEQgWEhUTUwgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMTEvRFREL3hodG1s
MTEuZHRkIj4NCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1s
bnM6aWJvb2tzPSJodHRwOi8vYXBwbGUuY29tL2lib29rcy9odG1sLWV4dGVuc2lvbnMiIHhtbG5z
OmVwdWI9Imh0dHA6Ly93d3cuaWRwZi5vcmcvMjAwNy9vcHMiPg0KKzxib2R5IHN0eWxlPSJvdmVy
ZmxvdzpoaWRkZW4iPg0KKzxwPlRlc3QgdG8gbWFrZSBzdXJlIHRoZSBkb3R0ZWQgc3R5bGUgaXMg
cHJvcGVybHkgb2J0YWluZWQgZnJvbSBhbiBlbmNsb3NpbmcgYW5jZXN0b3IuDQorPC9wPg0KKw0K
KzxwIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOy13ZWJraXQtdGV4dC1kZWNvcmF0
aW9uLXN0eWxlOmRvdWJsZTsgY29sb3I6Ymx1ZTsiPjxzcGFuIHN0eWxlPSItd2Via2l0LXRleHQt
ZGVjb3JhdGlvbi1zdHlsZTp3YXZ5OyBjb2xvcjpncmVlbiI+VGhpcyB0ZXh0IHNob3VsZCBoYXZl
IGEgZG91YmxlIGJsdWUgdW5kZXJsaW5lLjwvcD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
Cg==
</data>
<flag name="review"
          id="271707"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>