<?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>116563</bug_id>
          
          <creation_ts>2013-05-21 11:05:59 -0700</creation_ts>
          <short_desc>PDFPlugin: Main-frame PDFPlugin Accessibility</short_desc>
          <delta_ts>2013-05-27 12:52:16 -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>PDF</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rego+ews</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>891902</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-21 11:05:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/13458534&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891960</commentid>
    <comment_count>1</comment_count>
      <attachid>202461</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-21 13:01:28 -0700</bug_when>
    <thetext>Created attachment 202461
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891962</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-21 13:02:38 -0700</bug_when>
    <thetext>Attachment 202461 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/PDFLayerControllerDetails.h&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.h&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/Plugin.h&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginView.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginView.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm&apos;]&quot; exit_code: 1
Source/WebKit2/WebProcess/Plugins/PluginView.cpp:788:  Declaration has space between type name and * in NSObject *PluginView  [whitespace/declaration] [3]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891963</commentid>
    <comment_count>3</comment_count>
      <attachid>202461</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-21 13:03:14 -0700</bug_when>
    <thetext>Comment on attachment 202461
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=202461&amp;action=review

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:110
&gt; +- (id)initWithPDFPlugin:(WebKit::PDFPlugin *)plugin;

Wrong side *.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:120
&gt; +- (id)initWithPDFPlugin:(WebKit::PDFPlugin *)plugin

Ditto.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:397
&gt; +    m_accessibilityObject = adoptNS([[WKPDFPluginAccessibilityObject alloc] initWithPDFPlugin:this]);

This could be above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891964</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-21 13:03:58 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 202461 [details] did not pass style-queue:
&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:788:  Declaration has space between type name and * in NSObject *PluginView  [whitespace/declaration] [3]
&gt; Total errors found: 1 in 13 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

You&apos;re a false positive :\</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891965</commentid>
    <comment_count>5</comment_count>
      <attachid>202461</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-21 13:06:59 -0700</bug_when>
    <thetext>Comment on attachment 202461
patch

Attachment 202461 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/292228</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891969</commentid>
    <comment_count>6</comment_count>
      <attachid>202461</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-05-21 13:16:23 -0700</bug_when>
    <thetext>Comment on attachment 202461
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=202461&amp;action=review

overall looks good. just a few minor nits.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFLayerControllerDetails.h:121
&gt; +- (CPReadingModel*)readingModel;

space before the *

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:217
&gt; +    return [NSArray array];

we should probably expose the NSAccessibilityShowMenuAction
since I believe you can right click on the PDF

&gt; Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.h:148
&gt; +    virtual NSObject *accessibilityObject() const OVERRIDE { return 0; }

is this needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892031</commentid>
    <comment_count>7</comment_count>
      <attachid>202461</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-21 15:25:08 -0700</bug_when>
    <thetext>Comment on attachment 202461
patch

Attachment 202461 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/524273</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892057</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-21 17:07:27 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 202461 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=202461&amp;action=review
&gt; 
&gt; overall looks good. just a few minor nits.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFLayerControllerDetails.h:121
&gt; &gt; +- (CPReadingModel*)readingModel;
&gt; 
&gt; space before the *

Yep.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:217
&gt; &gt; +    return [NSArray array];
&gt; 
&gt; we should probably expose the NSAccessibilityShowMenuAction
&gt; since I believe you can right click on the PDF

Good idea!

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.h:148
&gt; &gt; +    virtual NSObject *accessibilityObject() const OVERRIDE { return 0; }
&gt; 
&gt; is this needed?

Perhaps not!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893396</commentid>
    <comment_count>9</comment_count>
      <attachid>202841</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-24 11:40:31 -0700</bug_when>
    <thetext>Created attachment 202841
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893397</commentid>
    <comment_count>10</comment_count>
      <attachid>202842</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-24 11:42:33 -0700</bug_when>
    <thetext>Created attachment 202842
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893398</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-24 11:43:45 -0700</bug_when>
    <thetext>Attachment 202842 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/PDFLayerControllerDetails.h&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.h&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/Plugin.h&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginView.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginView.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm&apos;]&quot; exit_code: 1
Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h:96:  The parameter name &quot;point&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/PluginView.cpp:523:  Declaration has space between type name and * in NSObject *PluginView  [whitespace/declaration] [3]
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893399</commentid>
    <comment_count>12</comment_count>
      <attachid>202843</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-24 11:44:22 -0700</bug_when>
    <thetext>Created attachment 202843
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893400</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-24 11:46:37 -0700</bug_when>
    <thetext>Attachment 202843 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/PDFLayerControllerDetails.h&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.h&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/Plugin.h&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginView.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginView.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm&apos;]&quot; exit_code: 1
Source/WebKit2/WebProcess/Plugins/PluginView.cpp:523:  Declaration has space between type name and * in NSObject *PluginView  [whitespace/declaration] [3]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893629</commentid>
    <comment_count>14</comment_count>
      <attachid>202843</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-05-25 12:25:41 -0700</bug_when>
    <thetext>Comment on attachment 202843
patch

Can we test this?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893630</commentid>
    <comment_count>15</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-25 12:27:00 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 202843 [details])
&gt; Can we test this?
&gt; 
&gt; r=me

Not yet!

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894128</commentid>
    <comment_count>16</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-27 12:52:16 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/150771</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202461</attachid>
            <date>2013-05-21 13:01:28 -0700</date>
            <delta_ts>2013-05-24 11:40:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pdfaccessibility.diff</filename>
            <type>text/plain</type>
            <size>23983</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZWQxMjI1Yy4uYmZkYTcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDEzLTA1LTIxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIFBERlBsdWdpbjogTWFpbi1mcmFtZSBQREZQbHVnaW4gQWNjZXNzaWJpbGl0eQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2NTYzCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMzQ1ODUzND4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnQgQWZmaW5l
VHJhbnNmb3JtOjptYXBSZWN0LgorCiAyMDEzLTA1LTIwICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIENsaWVudHMgc2hvdWxkIGhhdmUgYSB3YXkgdG8g
ZXh0ZW5kIHJlbmRlcmluZyBzdXBwcmVzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAyN2My
ZGFlLi44MDY1NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTQzMCw2ICsxNDMwLDcgQEAg
X19aTks3V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtMTJpc0ludmVydGlibGVFdgogX19aTks3V2Vi
Q29yZTE1QWZmaW5lVHJhbnNmb3JtNnhTY2FsZUV2CiBfX1pOSzdXZWJDb3JlMTVBZmZpbmVUcmFu
c2Zvcm02eVNjYWxlRXYKIF9fWk5LN1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTdpbnZlcnNlRXYK
K19fWk5LN1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTdtYXBSZWN0RVJLTlNfOUZsb2F0UmVjdEUK
IF9fWk5LN1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybThtYXBQb2ludEVSS05TXzEwRmxvYXRQb2lu
dEUKIF9fWk5LN1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybThtYXBQb2ludEVSS05TXzhJbnRQb2lu
dEUKIF9fWk5LN1dlYkNvcmUxNUZvY3VzQ29udHJvbGxlcjE4Zm9jdXNlZE9yTWFpbkZyYW1lRXYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkNjRmMzE3Li44MWU0ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzgg
QEAKKzIwMTMtMDUtMjEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBNYWluLWZyYW1lIFBERlBsdWdpbiBBY2Nlc3NpYmlsaXR5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY1NjMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEzNDU4NTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZMYXll
ckNvbnRyb2xsZXJEZXRhaWxzLmg6CisgICAgICAgIEZvcndhcmQtZGVjbGFyZSBhIHZhcmlldHkg
b2YgYWNjZXNzaWJpbGl0eSBtZXRob2RzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgQWRkIGNvbnZlcnRGcm9tUERGVmlld1RvU2NyZWVu
LCBib3VuZHNPblNjcmVlbiwgYWNjZXNzaWJpbGl0eU9iamVjdCwgYW5kCisgICAgICAgIHN0b3Jh
Z2UgZm9yIG91ciBhY2Nlc3NpYmlsaXR5IHdyYXBwZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIEFkZCBXS1BERlBsdWdpbkFjY2Vzc2li
aWxpdHlPYmplY3QuCisKKyAgICAgICAgKC1bV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0
IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRdKToKKyAgICAgICAgV2Ugd2FudCB0byBiZSBpbmNsdWRl
ZCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLgorCisgICAgICAgICgtW1dLUERGUGx1Z2luQWNj
ZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisgICAgICAg
ICgtW1dLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6Zm9yUGFyYW1ldGVyOl0pOgorICAgICAgICBHcmFiIHZhbHVlcyBmb3IgYWNjZXNzaWJp
bGl0eSBhdHRyaWJ1dGVzIGZyb20gdGhlIHJlbGV2YW50IHNvdXJjZXMKKyAgICAgICAgKG1vc3Rs
eSBmcm9tIFBERkxheWVyQ29udHJvbGxlcikuCisKKyAgICAgICAgKC1bV0tQREZQbHVnaW5BY2Nl
c3NpYmlsaXR5T2JqZWN0IHJlYWRpbmdNb2RlbF0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tQREZQ
bHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc10pOgor
ICAgICAgICAoLVtXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lc10pOgorICAgICAgICAoLVtXS1BERlBsdWdpbkFjY2Vz
c2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eUFjdGlvbk5hbWVzXSk6CisgICAgICAgIFJldHVy
biB0aGUgc2V0IG9mIGFjY2Vzc2liaWxpdHkgYXR0cmlidXRlcywgYWN0aW9ucywgYW5kIHBhcmFt
ZXRlcml6ZWQKKyAgICAgICAgYXR0cmlidXRlcyB0aGF0IHdlIHN1cHBvcnQuCisKKyAgICAgICAg
KC1bV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlJc0F0dHJpYnV0
ZVNldHRhYmxlOl0pOgorICAgICAgICAoLVtXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3Qg
YWNjZXNzaWJpbGl0eVNldFZhbHVlOmZvckF0dHJpYnV0ZTpdKToKKyAgICAgICAgRm9yd2FyZCBz
b21lIG90aGVyIGFjY2Vzc2liaWxpdHkgbWV0aG9kcyB0byBQREZMYXllckNvbnRyb2xsZXIuCisK
KyAgICAgICAgKC1bV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlG
b2N1c2VkVUlFbGVtZW50XSk6CisgICAgICAgICgtW1dLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9i
amVjdCBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpdKToKKyAgICAgICAgV2UgaGF2ZSBubyBjaGlsZHJl
biwgc28gaWYgYSBoaXQgdGVzdCBtYWtlcyBpdCB0byB1cywgaXQncyBvdXJzLgorCisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2luKToKKyAgICAgICAgTWFrZSBhIFdLUERGUGx1
Z2luQWNjZXNzaWJpbGl0eU9iamVjdCBhbmQgaG9vayBpdCB1cC4KKyAgICAgICAgW0ZJWE1FOiB0
aGlzIGNvdWxkIHVzZSBzb21lIGRlLWNyYXBpZnlpbmddCisKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpjb252ZXJ0RnJvbVBsdWdpblRvUERGVmlldyk6CisgICAgICAgIFRyYW5zZm9ybSBh
IHBvaW50IGZyb20gcGx1Z2luIHNwYWNlIHRvIFBERkxheWVyQ29udHJvbGxlciBzcGFjZS4KKwor
ICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcp
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvU2NyZWVu
KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4pOgor
ICAgICAgICBSZXR1cm4gdGhlIFBERlBsdWdpbidzIGZyYW1lIGluIHNjcmVlbiBjb29yZGluYXRl
cy4KKworICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmFjY2Vzc2liaWxpdHlPYmplY3QpOgor
ICAgICAgICBSZXR1cm4gb3VyIGFjY2Vzc2liaWxpdHkgd3JhcHBlci4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW46OmFjY2Vzc2li
aWxpdHlPYmplY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6YWNjZXNzaWJpbGl0eU9iamVjdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgQWRkIGFj
Y2Vzc2liaWxpdHlPYmplY3QoKSwgdG8gYWNxdWlyZSBhY2Nlc3NpYmlsaXR5IHdyYXBwZXJzIGZy
b20gcGx1Z2lucy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJQYWdlKTogQWRkIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JNYWluRnJhbWVQbHVn
aW4oKTsKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3QubW06CisgICAgICAgICgtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3Qg
YWNjZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyXSk6CisgICAgICAgIElmIHRoZSBtYWluIGZy
YW1lIGhhcyBhIFBsdWdpbkRvY3VtZW50IHRoYXQgaGFzIGFuIGFjY2Vzc2liaWxpdHlPYmplY3Qs
CisgICAgICAgIHVzZSB0aGF0IG9uZSBpbnN0ZWFkIG9mIHRoZSBXZWJQYWdlJ3MuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlPYmplY3RGb3JNYWluRnJhbWVQbHVnaW4pOgorICAg
ICAgICBSZXR1cm4gdGhlIGFjY2Vzc2liaWxpdHlPYmplY3QgZnJvbSB0aGUgbWFpbi1mcmFtZSBQ
bHVnaW5Eb2N1bWVudCwgaWYKKyAgICAgICAgdGhlcmUgaXMgb25lLgorCiAyMDEzLTA1LTIwICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIENsaWVudHMg
c2hvdWxkIGhhdmUgYSB3YXkgdG8gZXh0ZW5kIHJlbmRlcmluZyBzdXBwcmVzc2lvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZMYXllckNvbnRy
b2xsZXJEZXRhaWxzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RkxheWVyQ29udHJvbGxlckRldGFpbHMuaAppbmRleCA0OGZlNjAzLi5jM2RlODEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxheWVyQ29udHJv
bGxlckRldGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjaW1wb3J0
IDxQREZLaXQvUERGS2l0Lmg+CiAKK0BjbGFzcyBDUFJlYWRpbmdNb2RlbDsKKwogQHByb3RvY29s
IFBERkxheWVyQ29udHJvbGxlckRlbGVnYXRlIDxOU09iamVjdD4KIAogLSAodm9pZCl1cGRhdGVT
Y3JvbGxQb3NpdGlvbjooQ0dQb2ludCluZXdQb3NpdGlvbjsKQEAgLTExNCw0ICsxMTYsMjggQEAK
IAogLSAodm9pZClzZWFyY2hJbkRpY3Rpb25hcnlXaXRoU2VsZWN0aW9uOihQREZTZWxlY3Rpb24g
KilzZWxlY3Rpb247CiAKKy8vIEFjY2Vzc2liaWxpdHkKKworLSAoQ1BSZWFkaW5nTW9kZWwqKXJl
YWRpbmdNb2RlbDsKKy0gKGlkKWFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50OworLSAoTlNB
cnJheSAqKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lczsKKy0gKEJPT0wpYWNjZXNzaWJpbGl0
eUlzQXR0cmlidXRlU2V0dGFibGU6KE5TU3RyaW5nICopYXR0cmlidXRlOworLSAodm9pZClhY2Nl
c3NpYmlsaXR5U2V0VmFsdWU6KGlkKXZhbHVlIGZvckF0dHJpYnV0ZTooTlNTdHJpbmcgKilhdHRy
aWJ1dGU7CistIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVO
YW1lczsKKy0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGU7CistIChOU1N0
cmluZyAqKWFjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGU7CistIChOU1N0cmlu
ZyAqKWFjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZTsKKy0gKEJPT0wpYWNjZXNzaWJpbGl0eUlz
VmFsdWVBdHRyaWJ1dGVTZXR0YWJsZTsKKy0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eVNlbGVj
dGVkVGV4dEF0dHJpYnV0ZTsKKy0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzU2VsZWN0ZWRUZXh0QXR0
cmlidXRlU2V0dGFibGU7CistIChOU1ZhbHVlICopYWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dFJh
bmdlQXR0cmlidXRlOworLSAoTlNOdW1iZXIgKilhY2Nlc3NpYmlsaXR5TnVtYmVyT2ZDaGFyYWN0
ZXJzQXR0cmlidXRlOworLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNOdW1iZXJPZkNoYXJhY3RlcnNB
dHRyaWJ1dGVTZXR0YWJsZTsKKy0gKE5TVmFsdWUgKilhY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJh
Y3RlclJhbmdlQXR0cmlidXRlOworLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNWaXNpYmxlQ2hhcmFj
dGVyUmFuZ2VBdHRyaWJ1dGVTZXR0YWJsZTsKKy0gKE5TTnVtYmVyICopYWNjZXNzaWJpbGl0eUxp
bmVGb3JJbmRleEF0dHJpYnV0ZUZvclBhcmFtZXRlcjooaWQpcGFyYW1ldGVyOworLSAoTlNWYWx1
ZSAqKWFjY2Vzc2liaWxpdHlSYW5nZUZvckxpbmVBdHRyaWJ1dGVGb3JQYXJhbWV0ZXI6KGlkKXBh
cmFtZXRlcjsKKy0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eVN0cmluZ0ZvclJhbmdlQXR0cmli
dXRlRm9yUGFyYW1ldGVyOihpZClwYXJhbWV0ZXI7CistIChOU1ZhbHVlICopYWNjZXNzaWJpbGl0
eUJvdW5kc0ZvclJhbmdlQXR0cmlidXRlRm9yUGFyYW1ldGVyOihpZClwYXJhbWV0ZXI7CisKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5oCmluZGV4IDFkNTU2MTAuLjg3ZDFlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtNDQsNiArNDQsNyBAQCBPQkpDX0NM
QVNTIE5TQXJyYXk7CiBPQkpDX0NMQVNTIFBERkFubm90YXRpb247CiBPQkpDX0NMQVNTIFBERkxh
eWVyQ29udHJvbGxlcjsKIE9CSkNfQ0xBU1MgUERGU2VsZWN0aW9uOworT0JKQ19DTEFTUyBXS1BE
RlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBPQkpDX0NMQVNTIFdLUERGTGF5ZXJDb250cm9s
bGVyRGVsZWdhdGU7CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKQEAgLTg5LDYgKzkwLDkgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBhdHRlbXB0VG9VbmxvY2tQREYoY29uc3QgU3RyaW5nJiBwYXNzd29y
ZCk7CiAKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydEZyb21QREZWaWV3VG9TY3JlZW4o
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgY29uc3Q7CisgICAgV2ViQ29yZTo6SW50UmVjdCBi
b3VuZHNPblNjcmVlbigpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFBERlBsdWdp
bihXZWJGcmFtZSopOwogCkBAIC0xMzIsNiArMTM2LDcgQEAgcHJpdmF0ZToKICAgICBOU0V2ZW50
ICpuc0V2ZW50Rm9yV2ViTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAgICAgV2Vi
Q29yZTo6SW50UG9pbnQgY29udmVydEZyb21QbHVnaW5Ub1BERlZpZXcoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKSBjb25zdDsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0RnJvbVJvb3RW
aWV3VG9QbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdDsKKyAgICBXZWJDb3Jl
OjpJbnRQb2ludCBjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JikgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBzdXBwb3J0c0Zvcm1zKCk7CiAgICAgYm9v
bCBpc0Z1bGxGcmFtZVBsdWdpbigpOwpAQCAtMTQwLDggKzE0NSw2IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGNyZWF0ZVBhc3N3b3JkRW50cnlGb3JtKCk7CiAKLSAgICBXZWJDb3JlOjpJbnRQb2lu
dCBjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikg
Y29uc3Q7Ci0KICAgICB2aXJ0dWFsIE5TRGF0YSAqbGl2ZURhdGEoKSBjb25zdCBPVkVSUklERTsK
IAogICAgIGVudW0gVXBkYXRlQ3Vyc29yTW9kZSB7CkBAIC0xNTYsMTIgKzE1OSwxNSBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCB1cGRhdGVDdXJzb3IoY29uc3QgV2ViTW91c2VFdmVudCYsIFVwZGF0
ZUN1cnNvck1vZGUgPSBVcGRhdGVJZk5lZWRlZCk7CiAKKyAgICB2aXJ0dWFsIE5TT2JqZWN0ICph
Y2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3QgT1ZFUlJJREU7CisKICAgICBSZXRhaW5QdHI8Q0FM
YXllcj4gbV9jb250YWluZXJMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9jb250ZW50
TGF5ZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhckxheWVy
OwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXI7CiAgICAg
UmV0YWluUHRyPENBTGF5ZXI+IG1fc2Nyb2xsQ29ybmVyTGF5ZXI7CiAgICAgUmV0YWluUHRyPFBE
RkxheWVyQ29udHJvbGxlcj4gbV9wZGZMYXllckNvbnRyb2xsZXI7CisgICAgUmV0YWluUHRyPFdL
UERGUGx1Z2luQWNjZXNzaWJpbGl0eU9iamVjdD4gbV9hY2Nlc3NpYmlsaXR5T2JqZWN0OwogICAg
IAogICAgIFJlZlB0cjxQREZQbHVnaW5Bbm5vdGF0aW9uPiBtX2FjdGl2ZUFubm90YXRpb247CiAg
ICAgUmVmUHRyPFBERlBsdWdpblBhc3N3b3JkRmllbGQ+IG1fcGFzc3dvcmRGaWVsZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5k
ZXggZTk5ODllYy4uZTBjYTI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbXBvcnQgIldl
YlBhZ2UuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQ
cm9jZXNzLmgiCisjaW1wb3J0ICJXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0LmgiCiAjaW1w
b3J0IDxQREZLaXQvUERGS2l0Lmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQ3Vyc29yLmg+CkBAIC0xMDAsMTggKzEwMSwxNTkgQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIGFubm90YXRpb25TdHlsZSA9CiAvLyB3aWxsIGp1bXAgdG8gdGhlIG5leHQg
b3IgcHJldmlvdXMgcGFnZSwgdG8gbWF0Y2ggUERGS2l0IGJlaGF2aW9yLgogc3RhdGljIGNvbnN0
IGludCBkZWZhdWx0U2Nyb2xsTWFnbml0dWRlVGhyZXNob2xkRm9yUGFnZUZsaXAgPSAyMDsKIAot
QGludGVyZmFjZSBXS1BERlBsdWdpblNjcm9sbGJhckxheWVyIDogQ0FMYXllcgorQGludGVyZmFj
ZSBXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3QgOiBOU09iamVjdAorCitAcHJvcGVydHko
YXNzaWduKSBQREZMYXllckNvbnRyb2xsZXIgKnBkZkxheWVyQ29udHJvbGxlcjsKK0Bwcm9wZXJ0
eShhc3NpZ24pIE5TT2JqZWN0ICpwYXJlbnQ7CitAcHJvcGVydHkoYXNzaWduKSBXZWJLaXQ6OlBE
RlBsdWdpbiogcGRmUGx1Z2luOworCistIChpZClpbml0V2l0aFBERlBsdWdpbjooV2ViS2l0OjpQ
REZQbHVnaW4gKilwbHVnaW47CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLUERGUGx1Z2lu
QWNjZXNzaWJpbGl0eU9iamVjdAorCitAc3ludGhlc2l6ZSBwZGZMYXllckNvbnRyb2xsZXIgPSBf
cGRmTGF5ZXJDb250cm9sbGVyOworQHN5bnRoZXNpemUgcGFyZW50ID0gX3BhcmVudDsKK0BzeW50
aGVzaXplIHBkZlBsdWdpbiA9IF9wZGZQbHVnaW47CisKKy0gKGlkKWluaXRXaXRoUERGUGx1Z2lu
OihXZWJLaXQ6OlBERlBsdWdpbiAqKXBsdWdpbgogewotICAgIFdlYktpdDo6UERGUGx1Z2luKiBf
cGRmUGx1Z2luOworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1
cm4gbmlsOworCisgICAgX3BkZlBsdWdpbiA9IHBsdWdpbjsKKworICAgIHJldHVybiBzZWxmOwor
fQorCistIChCT09MKWFjY2Vzc2liaWxpdHlJc0lnbm9yZWQKK3sKKyAgICByZXR1cm4gTk87Cit9
CisKKy0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHJpbmcgKilhdHRyaWJ1
dGUKK3sKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
UGFyZW50QXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIF9wYXJlbnQ7CisgICAgZWxzZSBpZiAo
W2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVd
KQorICAgICAgICByZXR1cm4gW19wZGZMYXllckNvbnRyb2xsZXIgYWNjZXNzaWJpbGl0eVZhbHVl
QXR0cmlidXRlXTsKKyAgICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlTZWxlY3RlZFRleHRBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gW19wZGZM
YXllckNvbnRyb2xsZXIgYWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dEF0dHJpYnV0ZV07CisgICAg
ZWxzZSBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0
ZWRUZXh0UmFuZ2VBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gW19wZGZMYXllckNvbnRyb2xs
ZXIgYWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dFJhbmdlQXR0cmlidXRlXTsKKyAgICBlbHNlIGlm
IChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlOdW1iZXJPZkNoYXJh
Y3RlcnNBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gW19wZGZMYXllckNvbnRyb2xsZXIgYWNj
ZXNzaWJpbGl0eU51bWJlck9mQ2hhcmFjdGVyc0F0dHJpYnV0ZV07CisgICAgZWxzZSBpZiAoW2F0
dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3RlclJh
bmdlQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtfcGRmTGF5ZXJDb250cm9sbGVyIGFjY2Vz
c2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdOworICAgIGVsc2UgaWYgKFth
dHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVRvcExldmVsVUlFbGVtZW50
QXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtfcGFyZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJpYnV0ZV07CisgICAg
ZWxzZSBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um9sZUF0
dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbX3BkZkxheWVyQ29udHJvbGxlciBhY2Nlc3NpYmls
aXR5Um9sZUF0dHJpYnV0ZV07CisgICAgZWxzZSBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXSkKKyAgICAgICAgcmV0
dXJuIFtfcGRmTGF5ZXJDb250cm9sbGVyIGFjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRy
aWJ1dGVdOworICAgIGVsc2UgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eVdpbmRvd0F0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbX3BhcmVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRlXTsKKyAg
ICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTaXpl
QXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFNpemU6X3BkZlBs
dWdpbi0+Ym91bmRzT25TY3JlZW4oKS5zaXplKCldOworICAgIGVsc2UgaWYgKFthdHRyaWJ1dGUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGVdKQorICAgICAg
ICByZXR1cm4gW19wYXJlbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eUZvY3VzZWRBdHRyaWJ1dGVdOworICAgIGVsc2UgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4g
W19wYXJlbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUVuYWJs
ZWRBdHRyaWJ1dGVdOworICAgIGVsc2UgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtOU1ZhbHVl
IHZhbHVlV2l0aFBvaW50Ol9wZGZQbHVnaW4tPmJvdW5kc09uU2NyZWVuKCkubG9jYXRpb24oKV07
CisKKyAgICByZXR1cm4gMDsKK30KKworLSAoaWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OihOU1N0cmluZyAqKWF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6KGlkKXBhcmFtZXRlcgoreworICAg
IGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlCb3VuZHNGb3JS
YW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7CisgICAgICAgIE5TUmVjdCBib3VuZHNJblBE
RlZpZXdDb29yZGluYXRlcyA9IFtbX3BkZkxheWVyQ29udHJvbGxlciBhY2Nlc3NpYmlsaXR5Qm91
bmRzRm9yUmFuZ2VBdHRyaWJ1dGVGb3JQYXJhbWV0ZXI6cGFyYW1ldGVyXSByZWN0VmFsdWVdOwor
ICAgICAgICBOU1JlY3QgYm91bmRzSW5TY3JlZW5Db29yZGluYXRlcyA9IF9wZGZQbHVnaW4tPmNv
bnZlcnRGcm9tUERGVmlld1RvU2NyZWVuKGJvdW5kc0luUERGVmlld0Nvb3JkaW5hdGVzKTsKKyAg
ICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6Ym91bmRzSW5TY3JlZW5Db29yZGlu
YXRlc107OworICAgIH0gZWxzZSBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5TGluZUZvckluZGV4UGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pCisgICAgICAgIHJl
dHVybiBbX3BkZkxheWVyQ29udHJvbGxlciBhY2Nlc3NpYmlsaXR5TGluZUZvckluZGV4QXR0cmli
dXRlRm9yUGFyYW1ldGVyOnBhcmFtZXRlcl07CisgICAgZWxzZSBpZiAoW2F0dHJpYnV0ZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UmFuZ2VGb3JMaW5lUGFyYW1ldGVyaXplZEF0dHJp
YnV0ZV0pCisgICAgICAgIHJldHVybiBbX3BkZkxheWVyQ29udHJvbGxlciBhY2Nlc3NpYmlsaXR5
UmFuZ2VGb3JMaW5lQXR0cmlidXRlRm9yUGFyYW1ldGVyOnBhcmFtZXRlcl07CisgICAgZWxzZSBp
ZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U3RyaW5nRm9yUmFu
Z2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtfcGRmTGF5ZXJDb250
cm9sbGVyIGFjY2Vzc2liaWxpdHlTdHJpbmdGb3JSYW5nZUF0dHJpYnV0ZUZvclBhcmFtZXRlcjpw
YXJhbWV0ZXJdOworCisgICAgcmV0dXJuIDA7Cit9CisKKy0gKENQUmVhZGluZ01vZGVsICopcmVh
ZGluZ01vZGVsCit7CisgICAgcmV0dXJuIFtfcGRmTGF5ZXJDb250cm9sbGVyIHJlYWRpbmdNb2Rl
bF07Cit9CisKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXMKK3sKKyAg
ICBzdGF0aWMgTlNBcnJheSAqYXR0cmlidXRlTmFtZXMgPSAwOworCisgICAgaWYgKCFhdHRyaWJ1
dGVOYW1lcykgeworICAgICAgICBhdHRyaWJ1dGVOYW1lcyA9IFtbTlNBcnJheSBhcnJheVdpdGhP
YmplY3RzOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlLAorICAgICAgICAgICAgTlNBY2Nl
c3NpYmlsaXR5U2VsZWN0ZWRUZXh0QXR0cmlidXRlLAorICAgICAgICAgICAgTlNBY2Nlc3NpYmls
aXR5U2VsZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGUsCisgICAgICAgICAgICBOU0FjY2Vzc2liaWxp
dHlOdW1iZXJPZkNoYXJhY3RlcnNBdHRyaWJ1dGUsCisgICAgICAgICAgICBOU0FjY2Vzc2liaWxp
dHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGUsCisgICAgICAgICAgICBOU0FjY2Vzc2li
aWxpdHlQYXJlbnRBdHRyaWJ1dGUsCisgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlSb2xlQXR0
cmlidXRlLAorICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRlLAorICAg
ICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5VG9wTGV2ZWxVSUVsZW1lbnRBdHRyaWJ1dGUsCisgICAg
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGUsCisgICAgICAg
ICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLAorICAgICAgICAgICAgTlNBY2Nlc3Np
YmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZSwKKyAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJs
ZWRBdHRyaWJ1dGUsCisgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0
ZSwKKyAgICAgICAgICAgIG5pbF0gcmV0YWluXTsKKyAgICB9CisKKyAgICByZXR1cm4gYXR0cmli
dXRlTmFtZXM7Cit9CisKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QWN0aW9uTmFtZXMKK3sK
KyAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOworfQorCistIChCT09MKWFjY2Vzc2liaWxpdHlJ
c0F0dHJpYnV0ZVNldHRhYmxlOihOU1N0cmluZyAqKWF0dHJpYnV0ZQoreworICAgIHJldHVybiBb
X3BkZkxheWVyQ29udHJvbGxlciBhY2Nlc3NpYmlsaXR5SXNBdHRyaWJ1dGVTZXR0YWJsZTphdHRy
aWJ1dGVdOworfQorCistICh2b2lkKWFjY2Vzc2liaWxpdHlTZXRWYWx1ZTooaWQpdmFsdWUgZm9y
QXR0cmlidXRlOihOU1N0cmluZyAqKWF0dHJpYnV0ZQoreworICAgIHJldHVybiBbX3BkZkxheWVy
Q29udHJvbGxlciBhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6dmFsdWUgZm9yQXR0cmlidXRlOmF0dHJp
YnV0ZV07Cit9CisKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5UGFyYW1ldGVyaXplZEF0dHJp
YnV0ZU5hbWVzCit7CisgICAgcmV0dXJuIFtfcGRmTGF5ZXJDb250cm9sbGVyIGFjY2Vzc2liaWxp
dHlQYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXNdOworfQorCistIChpZClhY2Nlc3NpYmlsaXR5
Rm9jdXNlZFVJRWxlbWVudAoreworICAgIHJldHVybiBzZWxmOworfQorCistIChpZClhY2Nlc3Np
YmlsaXR5SGl0VGVzdDooTlNQb2ludClwb2ludAoreworICAgIHJldHVybiBzZWxmOwogfQogCitA
ZW5kCisKKworQGludGVyZmFjZSBXS1BERlBsdWdpblNjcm9sbGJhckxheWVyIDogQ0FMYXllcgor
CiBAcHJvcGVydHkoYXNzaWduKSBXZWJLaXQ6OlBERlBsdWdpbiogcGRmUGx1Z2luOwogCiBAZW5k
CiAKIEBpbXBsZW1lbnRhdGlvbiBXS1BERlBsdWdpblNjcm9sbGJhckxheWVyCiAKLUBzeW50aGVz
aXplIHBkZlBsdWdpbj1fcGRmUGx1Z2luOworQHN5bnRoZXNpemUgcGRmUGx1Z2luID0gX3BkZlBs
dWdpbjsKIAogLSAoaWQpaW5pdFdpdGhQREZQbHVnaW46KFdlYktpdDo6UERGUGx1Z2luICopcGx1
Z2luCiB7CkBAIC0yNTIsNiArMzk0LDEwIEBAIFBERlBsdWdpbjo6UERGUGx1Z2luKFdlYkZyYW1l
KiBmcmFtZSkKICAgICAgICAgZG9jdW1lbnQtPmJvZHkoKS0+YXBwZW5kQ2hpbGQobV9hbm5vdGF0
aW9uQ29udGFpbmVyLmdldCgpKTsKICAgICB9CiAKKyAgICBtX2FjY2Vzc2liaWxpdHlPYmplY3Qg
PSBhZG9wdE5TKFtbV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0IGFsbG9jXSBpbml0V2l0
aFBERlBsdWdpbjp0aGlzXSk7CisgICAgbV9hY2Nlc3NpYmlsaXR5T2JqZWN0LmdldCgpLnBkZkxh
eWVyQ29udHJvbGxlciA9IG1fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgpOworICAgIG1fYWNjZXNz
aWJpbGl0eU9iamVjdC5nZXQoKS5wYXJlbnQgPSB3ZWJGcmFtZSgpLT5wYWdlKCktPmFjY2Vzc2li
aWxpdHlSZW1vdGVPYmplY3QoKTsKKwogICAgIFttX2NvbnRhaW5lckxheWVyLmdldCgpIGFkZFN1
YmxheWVyOm1fY29udGVudExheWVyLmdldCgpXTsKICAgICBbbV9jb250YWluZXJMYXllci5nZXQo
KSBhZGRTdWJsYXllcjptX3Njcm9sbENvcm5lckxheWVyLmdldCgpXTsKIH0KQEAgLTQ1NiwxNCAr
NjAyLDQ1IEBAIFBsYXRmb3JtTGF5ZXIqIFBERlBsdWdpbjo6cGx1Z2luTGF5ZXIoKQogICAgIHJl
dHVybiBtX2NvbnRhaW5lckxheWVyLmdldCgpOwogfQogCitJbnRQb2ludCBQREZQbHVnaW46OmNv
bnZlcnRGcm9tUGx1Z2luVG9QREZWaWV3KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK3sK
KyAgICByZXR1cm4gSW50UG9pbnQocG9pbnQueCgpLCBzaXplKCkuaGVpZ2h0KCkgLSBwb2ludC55
KCkpOworfQorCiBJbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUm9vdFZpZXdUb1BsdWdp
bihjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcm9vdFZpZXdU
b1BsdWdpblRyYW5zZm9ybS5tYXBQb2ludChwb2ludCk7CiB9CiAKLUludFBvaW50IFBERlBsdWdp
bjo6Y29udmVydEZyb21QbHVnaW5Ub1BERlZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25z
dAorSW50UG9pbnQgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKLSAgICByZXR1cm4gSW50UG9pbnQocG9pbnQueCgp
LCBzaXplKCkuaGVpZ2h0KCkgLSBwb2ludC55KCkpOworICAgIEludFBvaW50IHBvaW50SW5QbHVn
aW5Db29yZGluYXRlcyhwb2ludC54KCksIHNpemUoKS5oZWlnaHQoKSAtIHBvaW50LnkoKSk7Cisg
ICAgcmV0dXJuIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkubWFwUG9pbnQo
cG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKK30KKworRmxvYXRSZWN0IFBERlBsdWdpbjo6Y29u
dmVydEZyb21QREZWaWV3VG9TY3JlZW4oY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAorewor
ICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gd2ViRnJhbWUoKS0+Y29yZUZyYW1lKCktPnZpZXco
KTsKKworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CisK
KyAgICBGbG9hdFBvaW50IG9yaWdpbkluUGx1Z2luQ29vcmRpbmF0ZXMocmVjdC54KCksIHNpemUo
KS5oZWlnaHQoKSAtIHJlY3QueSgpIC0gcmVjdC5oZWlnaHQoKSk7CisgICAgRmxvYXRSZWN0IHJl
Y3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52
ZXJzZSgpLm1hcFJlY3QoRmxvYXRSZWN0KG9yaWdpbkluUGx1Z2luQ29vcmRpbmF0ZXMsIHJlY3Qu
c2l6ZSgpKSk7CisKKyAgICByZXR1cm4gZnJhbWVWaWV3LT5jb250ZW50c1RvU2NyZWVuKGVuY2xv
c2luZ0ludFJlY3QocmVjdEluUm9vdFZpZXdDb29yZGluYXRlcykpOworfQorCitJbnRSZWN0IFBE
RlBsdWdpbjo6Ym91bmRzT25TY3JlZW4oKSBjb25zdAoreworICAgIEZyYW1lVmlldyogZnJhbWVW
aWV3ID0gd2ViRnJhbWUoKS0+Y29yZUZyYW1lKCktPnZpZXcoKTsKKworICAgIGlmICghZnJhbWVW
aWV3KQorICAgICAgICByZXR1cm4gSW50UmVjdCgpOworCisgICAgRmxvYXRSZWN0IGJvdW5kcyA9
IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoKSk7CisgICAgRmxvYXRSZWN0IHJlY3RJblJv
b3RWaWV3Q29vcmRpbmF0ZXMgPSBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgp
Lm1hcFJlY3QoYm91bmRzKTsKKyAgICByZXR1cm4gZnJhbWVWaWV3LT5jb250ZW50c1RvU2NyZWVu
KGVuY2xvc2luZ0ludFJlY3QocmVjdEluUm9vdFZpZXdDb29yZGluYXRlcykpOwogfQogCiB2b2lk
IFBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwg
Y29uc3QgSW50UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1Ry
YW5zZm9ybSkKQEAgLTkxMSwxMiArMTA4OCw2IEBAIHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0ZW1z
VG9QYXN0ZWJvYXJkKE5TQXJyYXkgKml0ZW1zLCBOU0FycmF5ICp0eXBlcykKICAgICB9CiB9CiAK
LUludFBvaW50IFBERlBsdWdpbjo6Y29udmVydEZyb21QREZWaWV3VG9Sb290Vmlldyhjb25zdCBJ
bnRQb2ludCYgcG9pbnQpIGNvbnN0Ci17Ci0gICAgSW50UG9pbnQgcG9pbnRJblBsdWdpbkNvb3Jk
aW5hdGVzKHBvaW50LngoKSwgc2l6ZSgpLmhlaWdodCgpIC0gcG9pbnQueSgpKTsKLSAgICByZXR1
cm4gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS5tYXBQb2ludChwb2ludElu
UGx1Z2luQ29vcmRpbmF0ZXMpOwotfQotCiB2b2lkIFBERlBsdWdpbjo6c2hvd0RlZmluaXRpb25G
b3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBDR1BvaW50IHBv
aW50KQogewogICAgIERpY3Rpb25hcnlQb3B1cEluZm8gZGljdGlvbmFyeVBvcHVwSW5mbzsKQEAg
LTExMDYsNiArMTI3NywxMSBAQCBOU0RhdGEgKlBERlBsdWdpbjo6bGl2ZURhdGEoKSBjb25zdAog
ICAgIHJldHVybiBTaW1wbGVQREZQbHVnaW46OmxpdmVEYXRhKCk7CiB9CiAKK05TT2JqZWN0ICpQ
REZQbHVnaW46OmFjY2Vzc2liaWxpdHlPYmplY3QoKSBjb25zdAoreworICAgIHJldHVybiBtX2Fj
Y2Vzc2liaWxpdHlPYmplY3QuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
ZW5kaWYgLy8gRU5BQkxFKFBERktJVF9QTFVHSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaAppbmRleCAwOGRhNzVh
Li4wNTdjNzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1NpbXBsZVBERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmgKQEAgLTE0NSw2ICsxNDUsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCk7CiAK
ICAgICB2aXJ0dWFsIFJldGFpblB0cjxQREZEb2N1bWVudD4gcGRmRG9jdW1lbnRGb3JQcmludGlu
ZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fcGRmRG9jdW1lbnQ7IH0KKyAgICB2aXJ0dWFs
IE5TT2JqZWN0ICphY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
MDsgfQogCiAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgbWV0aG9kcy4KICAgICB2aXJ0dWFsIFdlYkNv
cmU6OkludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IGVkYzQyYjAuLjNlNWQ4ZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTM4LDYg
KzM4LDcgQEAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiTGF5ZXJIb3N0aW5nQ29udGV4
dC5oIgogCitPQkpDX0NMQVNTIE5TT2JqZWN0OwogT0JKQ19DTEFTUyBQREZEb2N1bWVudDsKICNl
bmRpZgogCkBAIC0yNTYsNiArMjU3LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIHZpcnR1YWwgUmV0YWluUHRyPFBERkRvY3VtZW50PiBwZGZEb2N1bWVudEZvclByaW50aW5n
KCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTlNPYmplY3QgKmFjY2Vzc2liaWxp
dHlPYmplY3QoKSBjb25zdCB7IHJldHVybiAwOyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdW5z
aWduZWQgY291bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6Rmlu
ZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA0N2Q2ODE5Li4wNzQz
ODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCkBAIC03ODUsNiArNzg1LDE0IEBAIFN0cmluZyBQbHVnaW5WaWV3OjpnZXRTZWxlY3Rp
b25TdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBtX3BsdWdpbi0+Z2V0U2VsZWN0aW9uU3RyaW5n
KCk7CiB9CiAKK05TT2JqZWN0ICpQbHVnaW5WaWV3OjphY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29u
c3QKK3sKKyAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pCisgICAgICAgIHJl
dHVybiAwOworCisgICAgcmV0dXJuIG1fcGx1Z2luLT5hY2Nlc3NpYmlsaXR5T2JqZWN0KCk7Cit9
CisKIFBhc3NPd25QdHI8V2ViRXZlbnQ+IFBsdWdpblZpZXc6OmNyZWF0ZVdlYkV2ZW50KE1vdXNl
RXZlbnQqIGV2ZW50KSBjb25zdAogewogICAgIFdlYkV2ZW50OjpUeXBlIHR5cGUgPSBXZWJFdmVu
dDo6Tm9UeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmgKaW5kZXggYzZjZDU4OC4uZDBhMmE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC03Niw2ICs3Niw3IEBAIHB1YmxpYzoKICAg
ICBib29sIHNlbmRDb21wbGV4VGV4dElucHV0KHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5w
dXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRleHRJbnB1dCk7CiAgICAgdm9pZCBzZXRMYXll
ckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpOwogICAgIFJldGFpblB0cjxQREZEb2N1bWVu
dD4gcGRmRG9jdW1lbnRGb3JQcmludGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luLT5wZGZE
b2N1bWVudEZvclByaW50aW5nKCk7IH0KKyAgICBOU09iamVjdCAqYWNjZXNzaWJpbGl0eU9iamVj
dCgpIGNvbnN0OwogI2VuZGlmCiAKICAgICBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogcGx1
Z2luRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luRWxlbWVudC5nZXQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYWM5NTNiOS4u
YjY1ZGI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CkBAIC00NjUsNiArNDY1LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lk
IHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBDb3JlSVBDOjpEYXRh
UmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgd2lu
ZG93VG9rZW4pOwogICAgIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIGFjY2Vzc2liaWxp
dHlSZW1vdGVPYmplY3QoKTsKKyAgICBOU09iamVjdCAqYWNjZXNzaWJpbGl0eU9iamVjdEZvck1h
aW5GcmFtZVBsdWdpbigpOwogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGFjY2Vzc2li
aWxpdHlQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzaWJpbGl0eVBvc2l0aW9uOyB9
CiAgICAgCiAgICAgdm9pZCBzZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2NF90IHBs
dWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRleHRJbnB1dCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0KaW5kZXggNjcyMWI0MS4u
NjU5ZmQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbQpAQCAt
NDYsNiArNDYsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICBpZiAoIVdlYkNvcmU6
OkFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCiAgICAgICAgIFdlYkNvcmU6
OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsKIAorICAgIE5TT2JqZWN0KiBt
YWluRnJhbWVQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciA9IG1fcGFnZS0+YWNjZXNz
aWJpbGl0eU9iamVjdEZvck1haW5GcmFtZVBsdWdpbigpOworICAgIGlmIChtYWluRnJhbWVQbHVn
aW5BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcikKKyAgICAgICAgcmV0dXJuIG1haW5GcmFtZVBs
dWdpbkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOworCiAgICAgV2ViQ29yZTo6UGFnZSogcGFn
ZSA9IG1fcGFnZS0+Y29yZVBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBu
aWw7CkBAIC0xMTksNyArMTIzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICBpZCB3
cmFwcGVyID0gW3NlbGYgYWNjZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyXTsKICAgICBpZiAo
IXdyYXBwZXIpCiAgICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07Ci0gICAgCisKICAgICBy
ZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OndyYXBwZXJdOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXgg
NjczNWM4Yy4uYzNjMWZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtOTcsNiArOTcsMTggQEAgdm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50ID0g
bW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50OwogfQogCitOU09iamVjdCAqV2ViUGFnZTo6YWNjZXNz
aWJpbGl0eU9iamVjdEZvck1haW5GcmFtZVBsdWdpbigpCit7CisgICAgRnJhbWUqIGZyYW1lID0g
bV9wYWdlLT5tYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIGlmIChQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0gcGx1Z2luVmlld0ZvckZyYW1lKGZy
YW1lKSkKKyAgICAgICAgcmV0dXJuIHBsdWdpblZpZXctPmFjY2Vzc2liaWxpdHlPYmplY3QoKTsK
KworICAgIHJldHVybiAwOworfQorCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtUHJlZmVyZW5jZXNE
aWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiB7CiAgICAgaWYgKFdl
Ykluc3BlY3RvciogaW5zcGVjdG9yID0gdGhpcy0+aW5zcGVjdG9yKCkpCg==
</data>
<flag name="commit-queue"
          id="223877"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202841</attachid>
            <date>2013-05-24 11:40:31 -0700</date>
            <delta_ts>2013-05-24 11:42:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pdfaccessibility.diff</filename>
            <type>text/plain</type>
            <size>25927</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMTBjMDU4Li45YjdjMDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTMtMDUtMjIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBNYWluLWZyYW1lIFBERlBsdWdpbiBBY2Nlc3NpYmlsaXR5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY1NjMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEzNDU4NTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9ydCBBZmZpbmVU
cmFuc2Zvcm06Om1hcFJlY3QuCisKIDIwMTMtMDUtMjEgIEh1Z28gUGFyZW50ZSBMaW1hICA8aHVn
by5saW1hQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW0VGTF0gQWRkIG1pc3NpbmcgI2lmIGd1
YXJkcyBvbiBkcmFnIHN1cHBvcnQgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBmNDNj
ZGY5Li41NDhlNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTQyOSw2ICsxNDI5LDcgQEAg
X19aTks3V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtMTJpc0ludmVydGlibGVFdgogX19aTks3V2Vi
Q29yZTE1QWZmaW5lVHJhbnNmb3JtNnhTY2FsZUV2CiBfX1pOSzdXZWJDb3JlMTVBZmZpbmVUcmFu
c2Zvcm02eVNjYWxlRXYKIF9fWk5LN1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTdpbnZlcnNlRXYK
K19fWk5LN1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTdtYXBSZWN0RVJLTlNfOUZsb2F0UmVjdEUK
IF9fWk5LN1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybThtYXBQb2ludEVSS05TXzEwRmxvYXRQb2lu
dEUKIF9fWk5LN1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybThtYXBQb2ludEVSS05TXzhJbnRQb2lu
dEUKIF9fWk5LN1dlYkNvcmUxNUZvY3VzQ29udHJvbGxlcjE4Zm9jdXNlZE9yTWFpbkZyYW1lRXYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxZDA5YmE3Li5lMzcyZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzgg
QEAKKzIwMTMtMDUtMjIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBNYWluLWZyYW1lIFBERlBsdWdpbiBBY2Nlc3NpYmlsaXR5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY1NjMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEzNDU4NTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZMYXll
ckNvbnRyb2xsZXJEZXRhaWxzLmg6CisgICAgICAgIEZvcndhcmQtZGVjbGFyZSBhIHZhcmlldHkg
b2YgYWNjZXNzaWJpbGl0eSBtZXRob2RzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgQWRkIGNvbnZlcnRGcm9tUERGVmlld1RvU2NyZWVu
LCBib3VuZHNPblNjcmVlbiwgYWNjZXNzaWJpbGl0eU9iamVjdCwgYW5kCisgICAgICAgIHN0b3Jh
Z2UgZm9yIG91ciBhY2Nlc3NpYmlsaXR5IHdyYXBwZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIEFkZCBXS1BERlBsdWdpbkFjY2Vzc2li
aWxpdHlPYmplY3QuCisKKyAgICAgICAgKC1bV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0
IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRdKToKKyAgICAgICAgV2Ugd2FudCB0byBiZSBpbmNsdWRl
ZCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLgorCisgICAgICAgICgtW1dLUERGUGx1Z2luQWNj
ZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisgICAgICAg
ICgtW1dLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6Zm9yUGFyYW1ldGVyOl0pOgorICAgICAgICBHcmFiIHZhbHVlcyBmb3IgYWNjZXNzaWJp
bGl0eSBhdHRyaWJ1dGVzIGZyb20gdGhlIHJlbGV2YW50IHNvdXJjZXMKKyAgICAgICAgKG1vc3Rs
eSBmcm9tIFBERkxheWVyQ29udHJvbGxlcikuCisKKyAgICAgICAgKC1bV0tQREZQbHVnaW5BY2Nl
c3NpYmlsaXR5T2JqZWN0IHJlYWRpbmdNb2RlbF0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tQREZQ
bHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc10pOgor
ICAgICAgICAoLVtXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lc10pOgorICAgICAgICAoLVtXS1BERlBsdWdpbkFjY2Vz
c2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eUFjdGlvbk5hbWVzXSk6CisgICAgICAgIFJldHVy
biB0aGUgc2V0IG9mIGFjY2Vzc2liaWxpdHkgYXR0cmlidXRlcywgYWN0aW9ucywgYW5kIHBhcmFt
ZXRlcml6ZWQKKyAgICAgICAgYXR0cmlidXRlcyB0aGF0IHdlIHN1cHBvcnQuCisKKyAgICAgICAg
KC1bV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlJc0F0dHJpYnV0
ZVNldHRhYmxlOl0pOgorICAgICAgICAoLVtXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3Qg
YWNjZXNzaWJpbGl0eVNldFZhbHVlOmZvckF0dHJpYnV0ZTpdKToKKyAgICAgICAgRm9yd2FyZCBz
b21lIG90aGVyIGFjY2Vzc2liaWxpdHkgbWV0aG9kcyB0byBQREZMYXllckNvbnRyb2xsZXIuCisK
KyAgICAgICAgKC1bV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlG
b2N1c2VkVUlFbGVtZW50XSk6CisgICAgICAgICgtW1dLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9i
amVjdCBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpdKToKKyAgICAgICAgV2UgaGF2ZSBubyBjaGlsZHJl
biwgc28gaWYgYSBoaXQgdGVzdCBtYWtlcyBpdCB0byB1cywgaXQncyBvdXJzLgorCisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2luKToKKyAgICAgICAgTWFrZSBhIFdLUERGUGx1
Z2luQWNjZXNzaWJpbGl0eU9iamVjdCBhbmQgaG9vayBpdCB1cC4KKyAgICAgICAgW0ZJWE1FOiB0
aGlzIGNvdWxkIHVzZSBzb21lIGRlLWNyYXBpZnlpbmddCisKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpjb252ZXJ0RnJvbVBsdWdpblRvUERGVmlldyk6CisgICAgICAgIFRyYW5zZm9ybSBh
IHBvaW50IGZyb20gcGx1Z2luIHNwYWNlIHRvIFBERkxheWVyQ29udHJvbGxlciBzcGFjZS4KKwor
ICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcp
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvU2NyZWVu
KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4pOgor
ICAgICAgICBSZXR1cm4gdGhlIFBERlBsdWdpbidzIGZyYW1lIGluIHNjcmVlbiBjb29yZGluYXRl
cy4KKworICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmFjY2Vzc2liaWxpdHlPYmplY3QpOgor
ICAgICAgICBSZXR1cm4gb3VyIGFjY2Vzc2liaWxpdHkgd3JhcHBlci4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW46OmFjY2Vzc2li
aWxpdHlPYmplY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6YWNjZXNzaWJpbGl0eU9iamVjdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgQWRkIGFj
Y2Vzc2liaWxpdHlPYmplY3QoKSwgdG8gYWNxdWlyZSBhY2Nlc3NpYmlsaXR5IHdyYXBwZXJzIGZy
b20gcGx1Z2lucy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJQYWdlKTogQWRkIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JNYWluRnJhbWVQbHVn
aW4oKTsKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3QubW06CisgICAgICAgICgtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3Qg
YWNjZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyXSk6CisgICAgICAgIElmIHRoZSBtYWluIGZy
YW1lIGhhcyBhIFBsdWdpbkRvY3VtZW50IHRoYXQgaGFzIGFuIGFjY2Vzc2liaWxpdHlPYmplY3Qs
CisgICAgICAgIHVzZSB0aGF0IG9uZSBpbnN0ZWFkIG9mIHRoZSBXZWJQYWdlJ3MuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlPYmplY3RGb3JNYWluRnJhbWVQbHVnaW4pOgorICAg
ICAgICBSZXR1cm4gdGhlIGFjY2Vzc2liaWxpdHlPYmplY3QgZnJvbSB0aGUgbWFpbi1mcmFtZSBQ
bHVnaW5Eb2N1bWVudCwgaWYKKyAgICAgICAgdGhlcmUgaXMgb25lLgorCiAyMDEzLTA1LTIxICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZM
YXllckNvbnRyb2xsZXJEZXRhaWxzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaAppbmRleCA0OGZlNjAzLi5hMWQ0YWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxh
eWVyQ29udHJvbGxlckRldGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaApAQCAtMjUsNiArMjUsOCBAQAog
CiAjaW1wb3J0IDxQREZLaXQvUERGS2l0Lmg+CiAKK0BjbGFzcyBDUFJlYWRpbmdNb2RlbDsKKwog
QHByb3RvY29sIFBERkxheWVyQ29udHJvbGxlckRlbGVnYXRlIDxOU09iamVjdD4KIAogLSAodm9p
ZCl1cGRhdGVTY3JvbGxQb3NpdGlvbjooQ0dQb2ludCluZXdQb3NpdGlvbjsKQEAgLTExNCw0ICsx
MTYsMjggQEAKIAogLSAodm9pZClzZWFyY2hJbkRpY3Rpb25hcnlXaXRoU2VsZWN0aW9uOihQREZT
ZWxlY3Rpb24gKilzZWxlY3Rpb247CiAKKy8vIEFjY2Vzc2liaWxpdHkKKworLSAoQ1BSZWFkaW5n
TW9kZWwgKilyZWFkaW5nTW9kZWw7CistIChpZClhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVu
dDsKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXM7CistIChCT09MKWFj
Y2Vzc2liaWxpdHlJc0F0dHJpYnV0ZVNldHRhYmxlOihOU1N0cmluZyAqKWF0dHJpYnV0ZTsKKy0g
KHZvaWQpYWNjZXNzaWJpbGl0eVNldFZhbHVlOihpZCl2YWx1ZSBmb3JBdHRyaWJ1dGU6KE5TU3Ry
aW5nICopYXR0cmlidXRlOworLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVk
QXR0cmlidXRlTmFtZXM7CistIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRl
OworLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlOwor
LSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGU7CistIChCT09MKWFjY2Vz
c2liaWxpdHlJc1ZhbHVlQXR0cmlidXRlU2V0dGFibGU7CistIChOU1N0cmluZyAqKWFjY2Vzc2li
aWxpdHlTZWxlY3RlZFRleHRBdHRyaWJ1dGU7CistIChCT09MKWFjY2Vzc2liaWxpdHlJc1NlbGVj
dGVkVGV4dEF0dHJpYnV0ZVNldHRhYmxlOworLSAoTlNWYWx1ZSAqKWFjY2Vzc2liaWxpdHlTZWxl
Y3RlZFRleHRSYW5nZUF0dHJpYnV0ZTsKKy0gKE5TTnVtYmVyICopYWNjZXNzaWJpbGl0eU51bWJl
ck9mQ2hhcmFjdGVyc0F0dHJpYnV0ZTsKKy0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzTnVtYmVyT2ZD
aGFyYWN0ZXJzQXR0cmlidXRlU2V0dGFibGU7CistIChOU1ZhbHVlICopYWNjZXNzaWJpbGl0eVZp
c2libGVDaGFyYWN0ZXJSYW5nZUF0dHJpYnV0ZTsKKy0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzVmlz
aWJsZUNoYXJhY3RlclJhbmdlQXR0cmlidXRlU2V0dGFibGU7CistIChOU051bWJlciAqKWFjY2Vz
c2liaWxpdHlMaW5lRm9ySW5kZXhBdHRyaWJ1dGVGb3JQYXJhbWV0ZXI6KGlkKXBhcmFtZXRlcjsK
Ky0gKE5TVmFsdWUgKilhY2Nlc3NpYmlsaXR5UmFuZ2VGb3JMaW5lQXR0cmlidXRlRm9yUGFyYW1l
dGVyOihpZClwYXJhbWV0ZXI7CistIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlTdHJpbmdGb3JS
YW5nZUF0dHJpYnV0ZUZvclBhcmFtZXRlcjooaWQpcGFyYW1ldGVyOworLSAoTlNWYWx1ZSAqKWFj
Y2Vzc2liaWxpdHlCb3VuZHNGb3JSYW5nZUF0dHJpYnV0ZUZvclBhcmFtZXRlcjooaWQpcGFyYW1l
dGVyOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4uaAppbmRleCAxZDU1NjEwLi40ZTIyYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTQ0LDYgKzQ0LDcg
QEAgT0JKQ19DTEFTUyBOU0FycmF5OwogT0JKQ19DTEFTUyBQREZBbm5vdGF0aW9uOwogT0JKQ19D
TEFTUyBQREZMYXllckNvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFBERlNlbGVjdGlvbjsKK09CSkNf
Q0xBU1MgV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0OwogT0JKQ19DTEFTUyBXS1BERkxh
eWVyQ29udHJvbGxlckRlbGVnYXRlOwogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CkBAIC04OSw2ICs5
MCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGF0dGVtcHRUb1VubG9ja1BERihjb25zdCBTdHJp
bmcmIHBhc3N3b3JkKTsKIAorICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0RnJvbVBERlZp
ZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBjb25zdDsKKyAgICBXZWJDb3Jl
OjpJbnRSZWN0IGJvdW5kc09uU2NyZWVuKCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBzaG93Q29u
dGV4dE1lbnVBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCk7CisKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgUERGUGx1Z2luKFdlYkZyYW1lKik7CiAKQEAgLTEzMiw2ICsxMzgs
NyBAQCBwcml2YXRlOgogICAgIE5TRXZlbnQgKm5zRXZlbnRGb3JXZWJNb3VzZUV2ZW50KGNvbnN0
IFdlYk1vdXNlRXZlbnQmKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0RnJvbVBsdWdp
blRvUERGVmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0OwogICAgIFdlYkNvcmU6
OkludFBvaW50IGNvbnZlcnRGcm9tUm9vdFZpZXdUb1BsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYpIGNvbnN0OworICAgIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRGcm9tUERGVmlld1Rv
Um9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdDsKICAgICAKICAgICBib29s
IHN1cHBvcnRzRm9ybXMoKTsKICAgICBib29sIGlzRnVsbEZyYW1lUGx1Z2luKCk7CkBAIC0xNDAs
OCArMTQ3LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY3JlYXRlUGFzc3dvcmRFbnRyeUZvcm0o
KTsKIAotICAgIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXco
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdDsKLQogICAgIHZpcnR1YWwgTlNEYXRhICps
aXZlRGF0YSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgZW51bSBVcGRhdGVDdXJzb3JNb2RlIHsK
QEAgLTE1NiwxMiArMTYxLDE1IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZUN1cnNvcihj
b25zdCBXZWJNb3VzZUV2ZW50JiwgVXBkYXRlQ3Vyc29yTW9kZSA9IFVwZGF0ZUlmTmVlZGVkKTsK
IAorICAgIHZpcnR1YWwgTlNPYmplY3QgKmFjY2Vzc2liaWxpdHlPYmplY3QoKSBjb25zdCBPVkVS
UklERTsKKwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2NvbnRhaW5lckxheWVyOwogICAgIFJl
dGFpblB0cjxDQUxheWVyPiBtX2NvbnRlbnRMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4g
bV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fdmVy
dGljYWxTY3JvbGxiYXJMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxDb3Ju
ZXJMYXllcjsKICAgICBSZXRhaW5QdHI8UERGTGF5ZXJDb250cm9sbGVyPiBtX3BkZkxheWVyQ29u
dHJvbGxlcjsKKyAgICBSZXRhaW5QdHI8V0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0PiBt
X2FjY2Vzc2liaWxpdHlPYmplY3Q7CiAgICAgCiAgICAgUmVmUHRyPFBERlBsdWdpbkFubm90YXRp
b24+IG1fYWN0aXZlQW5ub3RhdGlvbjsKICAgICBSZWZQdHI8UERGUGx1Z2luUGFzc3dvcmRGaWVs
ZD4gbV9wYXNzd29yZEZpZWxkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBlOTk4OWVjLi4wNmIzNDlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAt
NDUsNiArNDUsNyBAQAogI2ltcG9ydCAiV2ViUGFnZS5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5
TWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKKyNpbXBvcnQgIldLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3QuaCIKICNpbXBvcnQgPFBERktpdC9QREZLaXQuaD4KICNpbXBvcnQg
PFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KQEAg
LTY0LDYgKzY1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyVGhlbWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVVVJRC5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Cisj
aW1wb3J0IDx3dGYvQ3VycmVudFRpbWUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
QEAgLTEwMCwxOCArMTAyLDE2OSBAQCBzdGF0aWMgY29uc3QgY2hhciogYW5ub3RhdGlvblN0eWxl
ID0KIC8vIHdpbGwganVtcCB0byB0aGUgbmV4dCBvciBwcmV2aW91cyBwYWdlLCB0byBtYXRjaCBQ
REZLaXQgYmVoYXZpb3IuCiBzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRTY3JvbGxNYWduaXR1ZGVU
aHJlc2hvbGRGb3JQYWdlRmxpcCA9IDIwOwogCi1AaW50ZXJmYWNlIFdLUERGUGx1Z2luU2Nyb2xs
YmFyTGF5ZXIgOiBDQUxheWVyCitAaW50ZXJmYWNlIFdLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9i
amVjdCA6IE5TT2JqZWN0CisKK0Bwcm9wZXJ0eShhc3NpZ24pIFBERkxheWVyQ29udHJvbGxlciAq
cGRmTGF5ZXJDb250cm9sbGVyOworQHByb3BlcnR5KGFzc2lnbikgTlNPYmplY3QgKnBhcmVudDsK
K0Bwcm9wZXJ0eShhc3NpZ24pIFdlYktpdDo6UERGUGx1Z2luKiBwZGZQbHVnaW47CisKKy0gKGlk
KWluaXRXaXRoUERGUGx1Z2luOihXZWJLaXQ6OlBERlBsdWdpbiAqKXBsdWdpbjsKKworQGVuZAor
CitAaW1wbGVtZW50YXRpb24gV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0CisKK0BzeW50
aGVzaXplIHBkZkxheWVyQ29udHJvbGxlciA9IF9wZGZMYXllckNvbnRyb2xsZXI7CitAc3ludGhl
c2l6ZSBwYXJlbnQgPSBfcGFyZW50OworQHN5bnRoZXNpemUgcGRmUGx1Z2luID0gX3BkZlBsdWdp
bjsKKworLSAoaWQpaW5pdFdpdGhQREZQbHVnaW46KFdlYktpdDo6UERGUGx1Z2luICopcGx1Z2lu
CiB7Ci0gICAgV2ViS2l0OjpQREZQbHVnaW4qIF9wZGZQbHVnaW47CisgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfcGRmUGx1Z2luID0g
cGx1Z2luOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKEJPT0wpYWNjZXNzaWJpbGl0eUlz
SWdub3JlZAoreworICAgIHJldHVybiBOTzsKK30KKworLSAoaWQpYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOihOU1N0cmluZyAqKWF0dHJpYnV0ZQoreworICAgIGlmIChbYXR0cmlidXRlIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGVdKQorICAgICAgICBy
ZXR1cm4gX3BhcmVudDsKKyAgICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbX3BkZkxheWVy
Q29udHJvbGxlciBhY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdOworICAgIGVsc2UgaWYgKFth
dHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dEF0dHJp
YnV0ZV0pCisgICAgICAgIHJldHVybiBbX3BkZkxheWVyQ29udHJvbGxlciBhY2Nlc3NpYmlsaXR5
U2VsZWN0ZWRUZXh0QXR0cmlidXRlXTsKKyAgICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRSYW5nZUF0dHJpYnV0ZV0pCisgICAg
ICAgIHJldHVybiBbX3BkZkxheWVyQ29udHJvbGxlciBhY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0
UmFuZ2VBdHRyaWJ1dGVdOworICAgIGVsc2UgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eU51bWJlck9mQ2hhcmFjdGVyc0F0dHJpYnV0ZV0pCisgICAgICAgIHJl
dHVybiBbX3BkZkxheWVyQ29udHJvbGxlciBhY2Nlc3NpYmlsaXR5TnVtYmVyT2ZDaGFyYWN0ZXJz
QXR0cmlidXRlXTsKKyAgICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKQorICAgICAgICByZXR1
cm4gW19wZGZMYXllckNvbnRyb2xsZXIgYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5n
ZUF0dHJpYnV0ZV07CisgICAgZWxzZSBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5VG9wTGV2ZWxVSUVsZW1lbnRBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4g
W19wYXJlbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRvcExl
dmVsVUlFbGVtZW50QXR0cmlidXRlXTsKKyAgICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtf
cGRmTGF5ZXJDb250cm9sbGVyIGFjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXTsKKyAgICBlbHNl
IGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3Jp
cHRpb25BdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gW19wZGZMYXllckNvbnRyb2xsZXIgYWNj
ZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CisgICAgZWxzZSBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRlXSkKKyAg
ICAgICAgcmV0dXJuIFtfcGFyZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlXaW5kb3dBdHRyaWJ1dGVdOworICAgIGVsc2UgaWYgKFthdHRyaWJ1dGUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4g
W05TVmFsdWUgdmFsdWVXaXRoU2l6ZTpfcGRmUGx1Z2luLT5ib3VuZHNPblNjcmVlbigpLnNpemUo
KV07CisgICAgZWxzZSBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5Rm9jdXNlZEF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbX3BhcmVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZV07CisgICAg
ZWxzZSBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RW5hYmxl
ZEF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbX3BhcmVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZV07CisgICAgZWxzZSBpZiAo
W2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1
dGVdKQorICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6X3BkZlBsdWdpbi0+
Ym91bmRzT25TY3JlZW4oKS5sb2NhdGlvbigpXTsKKworICAgIHJldHVybiAwOworfQorCistIChp
ZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyaW5nICopYXR0cmlidXRlIGZvclBh
cmFtZXRlcjooaWQpcGFyYW1ldGVyCit7CisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eUJvdW5kc0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0p
IHsKKyAgICAgICAgTlNSZWN0IGJvdW5kc0luUERGVmlld0Nvb3JkaW5hdGVzID0gW1tfcGRmTGF5
ZXJDb250cm9sbGVyIGFjY2Vzc2liaWxpdHlCb3VuZHNGb3JSYW5nZUF0dHJpYnV0ZUZvclBhcmFt
ZXRlcjpwYXJhbWV0ZXJdIHJlY3RWYWx1ZV07CisgICAgICAgIE5TUmVjdCBib3VuZHNJblNjcmVl
bkNvb3JkaW5hdGVzID0gX3BkZlBsdWdpbi0+Y29udmVydEZyb21QREZWaWV3VG9TY3JlZW4oYm91
bmRzSW5QREZWaWV3Q29vcmRpbmF0ZXMpOworICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVX
aXRoUmVjdDpib3VuZHNJblNjcmVlbkNvb3JkaW5hdGVzXTs7CisgICAgfSBlbHNlIGlmIChbYXR0
cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlMaW5lRm9ySW5kZXhQYXJhbWV0
ZXJpemVkQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtfcGRmTGF5ZXJDb250cm9sbGVyIGFj
Y2Vzc2liaWxpdHlMaW5lRm9ySW5kZXhBdHRyaWJ1dGVGb3JQYXJhbWV0ZXI6cGFyYW1ldGVyXTsK
KyAgICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlS
YW5nZUZvckxpbmVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtfcGRm
TGF5ZXJDb250cm9sbGVyIGFjY2Vzc2liaWxpdHlSYW5nZUZvckxpbmVBdHRyaWJ1dGVGb3JQYXJh
bWV0ZXI6cGFyYW1ldGVyXTsKKyAgICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlTdHJpbmdGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKQor
ICAgICAgICByZXR1cm4gW19wZGZMYXllckNvbnRyb2xsZXIgYWNjZXNzaWJpbGl0eVN0cmluZ0Zv
clJhbmdlQXR0cmlidXRlRm9yUGFyYW1ldGVyOnBhcmFtZXRlcl07CisKKyAgICByZXR1cm4gMDsK
K30KKworLSAoQ1BSZWFkaW5nTW9kZWwgKilyZWFkaW5nTW9kZWwKK3sKKyAgICByZXR1cm4gW19w
ZGZMYXllckNvbnRyb2xsZXIgcmVhZGluZ01vZGVsXTsKK30KKworLSAoTlNBcnJheSAqKWFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVOYW1lcworeworICAgIHN0YXRpYyBOU0FycmF5ICphdHRyaWJ1dGVO
YW1lcyA9IDA7CisKKyAgICBpZiAoIWF0dHJpYnV0ZU5hbWVzKQorICAgICAgICBhdHRyaWJ1dGVO
YW1lcyA9IFtbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0
cmlidXRlLAorICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0QXR0cmlidXRl
LAorICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGUs
CisgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlOdW1iZXJPZkNoYXJhY3RlcnNBdHRyaWJ1dGUs
CisgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1
dGUsCisgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGUsCisgICAgICAg
ICAgICBOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlLAorICAgICAgICAgICAgTlNBY2Nlc3Np
YmlsaXR5V2luZG93QXR0cmlidXRlLAorICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5VG9wTGV2
ZWxVSUVsZW1lbnRBdHRyaWJ1dGUsCisgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlSb2xlRGVz
Y3JpcHRpb25BdHRyaWJ1dGUsCisgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmli
dXRlLAorICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZSwKKyAgICAg
ICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGUsCisgICAgICAgICAgICBOU0Fj
Y2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSwKKyAgICAgICAgICAgIG5pbF0gcmV0YWluXTsK
KworICAgIHJldHVybiBhdHRyaWJ1dGVOYW1lczsKK30KKworLSAoTlNBcnJheSAqKWFjY2Vzc2li
aWxpdHlBY3Rpb25OYW1lcworeworICAgIHN0YXRpYyBOU0FycmF5ICphY3Rpb25OYW1lcyA9IDA7
CisgICAgCisgICAgaWYgKCFhY3Rpb25OYW1lcykKKyAgICAgICAgYWN0aW9uTmFtZXMgPSBbW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNob3dNZW51QWN0aW9uXSByZXRh
aW5dOworICAgIAorICAgIHJldHVybiBhY3Rpb25OYW1lczsKK30KKworLSAodm9pZClhY2Nlc3Np
YmlsaXR5UGVyZm9ybUFjdGlvbjooTlNTdHJpbmcgKilhY3Rpb24KK3sKKyAgICBpZiAoW2FjdGlv
biBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2hvd01lbnVBY3Rpb25dKQorICAgICAg
ICBfcGRmUGx1Z2luLT5zaG93Q29udGV4dE1lbnVBdFBvaW50KEludFJlY3QoSW50UG9pbnQoKSwg
X3BkZlBsdWdpbi0+c2l6ZSgpKS5jZW50ZXIoKSk7Cit9CisKKy0gKEJPT0wpYWNjZXNzaWJpbGl0
eUlzQXR0cmlidXRlU2V0dGFibGU6KE5TU3RyaW5nICopYXR0cmlidXRlCit7CisgICAgcmV0dXJu
IFtfcGRmTGF5ZXJDb250cm9sbGVyIGFjY2Vzc2liaWxpdHlJc0F0dHJpYnV0ZVNldHRhYmxlOmF0
dHJpYnV0ZV07Cit9CisKKy0gKHZvaWQpYWNjZXNzaWJpbGl0eVNldFZhbHVlOihpZCl2YWx1ZSBm
b3JBdHRyaWJ1dGU6KE5TU3RyaW5nICopYXR0cmlidXRlCit7CisgICAgcmV0dXJuIFtfcGRmTGF5
ZXJDb250cm9sbGVyIGFjY2Vzc2liaWxpdHlTZXRWYWx1ZTp2YWx1ZSBmb3JBdHRyaWJ1dGU6YXR0
cmlidXRlXTsKK30KKworLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVkQXR0
cmlidXRlTmFtZXMKK3sKKyAgICByZXR1cm4gW19wZGZMYXllckNvbnRyb2xsZXIgYWNjZXNzaWJp
bGl0eVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lc107CiB9CiAKKy0gKGlkKWFjY2Vzc2liaWxp
dHlGb2N1c2VkVUlFbGVtZW50Cit7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKGlkKWFjY2Vz
c2liaWxpdHlIaXRUZXN0OihOU1BvaW50KXBvaW50Cit7CisgICAgcmV0dXJuIHNlbGY7Cit9CisK
K0BlbmQKKworCitAaW50ZXJmYWNlIFdLUERGUGx1Z2luU2Nyb2xsYmFyTGF5ZXIgOiBDQUxheWVy
CisKIEBwcm9wZXJ0eShhc3NpZ24pIFdlYktpdDo6UERGUGx1Z2luKiBwZGZQbHVnaW47CiAKIEBl
bmQKIAogQGltcGxlbWVudGF0aW9uIFdLUERGUGx1Z2luU2Nyb2xsYmFyTGF5ZXIKIAotQHN5bnRo
ZXNpemUgcGRmUGx1Z2luPV9wZGZQbHVnaW47CitAc3ludGhlc2l6ZSBwZGZQbHVnaW4gPSBfcGRm
UGx1Z2luOwogCiAtIChpZClpbml0V2l0aFBERlBsdWdpbjooV2ViS2l0OjpQREZQbHVnaW4gKilw
bHVnaW4KIHsKQEAgLTI1Miw2ICs0MDUsMTAgQEAgUERGUGx1Z2luOjpQREZQbHVnaW4oV2ViRnJh
bWUqIGZyYW1lKQogICAgICAgICBkb2N1bWVudC0+Ym9keSgpLT5hcHBlbmRDaGlsZChtX2Fubm90
YXRpb25Db250YWluZXIuZ2V0KCkpOwogICAgIH0KIAorICAgIG1fYWNjZXNzaWJpbGl0eU9iamVj
dCA9IGFkb3B0TlMoW1tXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3QgYWxsb2NdIGluaXRX
aXRoUERGUGx1Z2luOnRoaXNdKTsKKyAgICBtX2FjY2Vzc2liaWxpdHlPYmplY3QuZ2V0KCkucGRm
TGF5ZXJDb250cm9sbGVyID0gbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCk7CisgICAgbV9hY2Nl
c3NpYmlsaXR5T2JqZWN0LmdldCgpLnBhcmVudCA9IHdlYkZyYW1lKCktPnBhZ2UoKS0+YWNjZXNz
aWJpbGl0eVJlbW90ZU9iamVjdCgpOworCiAgICAgW21fY29udGFpbmVyTGF5ZXIuZ2V0KCkgYWRk
U3VibGF5ZXI6bV9jb250ZW50TGF5ZXIuZ2V0KCldOwogICAgIFttX2NvbnRhaW5lckxheWVyLmdl
dCgpIGFkZFN1YmxheWVyOm1fc2Nyb2xsQ29ybmVyTGF5ZXIuZ2V0KCldOwogfQpAQCAtNDU2LDE0
ICs2MTMsNDUgQEAgUGxhdGZvcm1MYXllciogUERGUGx1Z2luOjpwbHVnaW5MYXllcigpCiAgICAg
cmV0dXJuIG1fY29udGFpbmVyTGF5ZXIuZ2V0KCk7CiB9CiAKK0ludFBvaW50IFBERlBsdWdpbjo6
Y29udmVydEZyb21QbHVnaW5Ub1BERlZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAor
eworICAgIHJldHVybiBJbnRQb2ludChwb2ludC54KCksIHNpemUoKS5oZWlnaHQoKSAtIHBvaW50
LnkoKSk7Cit9CisKIEludFBvaW50IFBERlBsdWdpbjo6Y29udmVydEZyb21Sb290Vmlld1RvUGx1
Z2luKGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yb290Vmll
d1RvUGx1Z2luVHJhbnNmb3JtLm1hcFBvaW50KHBvaW50KTsKIH0KIAotSW50UG9pbnQgUERGUGx1
Z2luOjpjb252ZXJ0RnJvbVBsdWdpblRvUERGVmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNv
bnN0CitJbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcoY29u
c3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIHJldHVybiBJbnRQb2ludChwb2ludC54
KCksIHNpemUoKS5oZWlnaHQoKSAtIHBvaW50LnkoKSk7CisgICAgSW50UG9pbnQgcG9pbnRJblBs
dWdpbkNvb3JkaW5hdGVzKHBvaW50LngoKSwgc2l6ZSgpLmhlaWdodCgpIC0gcG9pbnQueSgpKTsK
KyAgICByZXR1cm4gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS5tYXBQb2lu
dChwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMpOworfQorCitGbG9hdFJlY3QgUERGUGx1Z2luOjpj
b252ZXJ0RnJvbVBERlZpZXdUb1NjcmVlbihjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0Cit7
CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmll
dygpOworCisgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsK
KworICAgIEZsb2F0UG9pbnQgb3JpZ2luSW5QbHVnaW5Db29yZGluYXRlcyhyZWN0LngoKSwgc2l6
ZSgpLmhlaWdodCgpIC0gcmVjdC55KCkgLSByZWN0LmhlaWdodCgpKTsKKyAgICBGbG9hdFJlY3Qg
cmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5p
bnZlcnNlKCkubWFwUmVjdChGbG9hdFJlY3Qob3JpZ2luSW5QbHVnaW5Db29yZGluYXRlcywgcmVj
dC5zaXplKCkpKTsKKworICAgIHJldHVybiBmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3JlZW4oZW5j
bG9zaW5nSW50UmVjdChyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKSk7Cit9CisKK0ludFJlY3Qg
UERGUGx1Z2luOjpib3VuZHNPblNjcmVlbigpIGNvbnN0Cit7CisgICAgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmlldygpOworCisgICAgaWYgKCFmcmFt
ZVZpZXcpCisgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisKKyAgICBGbG9hdFJlY3QgYm91bmRz
ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKTsKKyAgICBGbG9hdFJlY3QgcmVjdElu
Um9vdFZpZXdDb29yZGluYXRlcyA9IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNl
KCkubWFwUmVjdChib3VuZHMpOworICAgIHJldHVybiBmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3Jl
ZW4oZW5jbG9zaW5nSW50UmVjdChyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKSk7CiB9CiAKIHZv
aWQgUERGUGx1Z2luOjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXpl
LCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3
VHJhbnNmb3JtKQpAQCAtNzAwLDEzICs4ODgsMjEgQEAgYm9vbCBQREZQbHVnaW46OmhhbmRsZU1v
dXNlTGVhdmVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JikKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAgICAgCi1ib29sIFBERlBsdWdpbjo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChjb25zdCBXZWJN
b3VzZUV2ZW50JiBldmVudCkKK2Jvb2wgUERGUGx1Z2luOjpzaG93Q29udGV4dE1lbnVBdFBvaW50
KGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKLSAgICBOU01lbnUgKm5zTWVudSA9IFttX3BkZkxh
eWVyQ29udHJvbGxlci5nZXQoKSBtZW51Rm9yRXZlbnQ6bnNFdmVudEZvcldlYk1vdXNlRXZlbnQo
ZXZlbnQpXTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHdlYkZyYW1lKCktPmNvcmVGcmFt
ZSgpLT52aWV3KCk7CisgICAgSW50UG9pbnQgY29udGVudHNQb2ludCA9IGZyYW1lVmlldy0+Y29u
dGVudHNUb1Jvb3RWaWV3KHBvaW50KTsKKyAgICBJbnRQb2ludCBzY3JlZW5Qb2ludCA9IGZyYW1l
Vmlldy0+Y29udGVudHNUb1NjcmVlbihwb2ludCk7CisgICAgV2ViTW91c2VFdmVudCBldmVudChX
ZWJFdmVudDo6TW91c2VEb3duLCBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbiwgY29udGVudHNQ
b2ludCwgc2NyZWVuUG9pbnQsIDAsIDAsIDAsIDEsIHN0YXRpY19jYXN0PFdlYkV2ZW50OjpNb2Rp
ZmllcnM+KDApLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7CisgICAgcmV0dXJuIGhh
bmRsZUNvbnRleHRNZW51RXZlbnQoZXZlbnQpOworfQogCitib29sIFBERlBsdWdpbjo6aGFuZGxl
Q29udGV4dE1lbnVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKK3sKICAgICBGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpLT52aWV3KCk7CiAgICAg
SW50UG9pbnQgcG9pbnQgPSBmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3JlZW4oSW50UmVjdChmcmFt
ZVZpZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSksIEludFNpemUoKSkpLmxv
Y2F0aW9uKCk7Ci0gICAgaWYgKG5zTWVudSkgeworICAgIAorICAgIGlmIChOU01lbnUgKm5zTWVu
dSA9IFttX3BkZkxheWVyQ29udHJvbGxlci5nZXQoKSBtZW51Rm9yRXZlbnQ6bnNFdmVudEZvcldl
Yk1vdXNlRXZlbnQoZXZlbnQpXSkgewogICAgICAgICBXS1BvcHVwQ29udGV4dE1lbnUobnNNZW51
LCBwb2ludCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTkxMSwxMiArMTEwNyw2
IEBAIHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKE5TQXJyYXkgKml0ZW1z
LCBOU0FycmF5ICp0eXBlcykKICAgICB9CiB9CiAKLUludFBvaW50IFBERlBsdWdpbjo6Y29udmVy
dEZyb21QREZWaWV3VG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0Ci17Ci0g
ICAgSW50UG9pbnQgcG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKHBvaW50LngoKSwgc2l6ZSgpLmhl
aWdodCgpIC0gcG9pbnQueSgpKTsKLSAgICByZXR1cm4gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNm
b3JtLmludmVyc2UoKS5tYXBQb2ludChwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMpOwotfQotCiB2
b2lkIFBERlBsdWdpbjo6c2hvd0RlZmluaXRpb25Gb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmli
dXRlZFN0cmluZyAqc3RyaW5nLCBDR1BvaW50IHBvaW50KQogewogICAgIERpY3Rpb25hcnlQb3B1
cEluZm8gZGljdGlvbmFyeVBvcHVwSW5mbzsKQEAgLTExMDYsNiArMTI5NiwxMSBAQCBOU0RhdGEg
KlBERlBsdWdpbjo6bGl2ZURhdGEoKSBjb25zdAogICAgIHJldHVybiBTaW1wbGVQREZQbHVnaW46
OmxpdmVEYXRhKCk7CiB9CiAKK05TT2JqZWN0ICpQREZQbHVnaW46OmFjY2Vzc2liaWxpdHlPYmpl
Y3QoKSBjb25zdAoreworICAgIHJldHVybiBtX2FjY2Vzc2liaWxpdHlPYmplY3QuZ2V0KCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFBERktJVF9QTFVH
SU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1Np
bXBsZVBERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9T
aW1wbGVQREZQbHVnaW4uaAppbmRleCAwOGRhNzVhLi40YjZlZDQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmgK
QEAgLTU2LDEzICs1NiwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQmVpbmdBc3lu
Y2hyb25vdXNseUluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZv
aWQgZGlkTXV0YXRlUERGRG9jdW1lbnQoKSB7IG1fcGRmRG9jdW1lbnRXYXNNdXRhdGVkID0gdHJ1
ZTsgfQorICAgIAorICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgU2ltcGxlUERGUGx1Z2luKFdlYkZy
YW1lKik7CiAKICAgICBXZWJGcmFtZSogd2ViRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1l
OyB9CiAKLSAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7
IH0KICAgICB2b2lkIHNldFNpemUoV2ViQ29yZTo6SW50U2l6ZSBzaXplKSB7IG1fc2l6ZSA9IHNp
emU7IH0KIAogICAgIFJldGFpblB0cjxQREZEb2N1bWVudD4gcGRmRG9jdW1lbnQoKSBjb25zdCB7
IHJldHVybiBtX3BkZkRvY3VtZW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luLmgKaW5kZXggZWRjNDJiMC4uM2U1ZDhlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMzgsNiArMzgsNyBAQAogI2lmIFBMQVRGT1JN
KE1BQykKICNpbmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAKK09CSkNfQ0xBU1MgTlNP
YmplY3Q7CiBPQkpDX0NMQVNTIFBERkRvY3VtZW50OwogI2VuZGlmCiAKQEAgLTI1Niw2ICsyNTcs
NyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdmlydHVhbCBSZXRhaW5QdHI8
UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50Rm9yUHJpbnRpbmcoKSBjb25zdCB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBOU09iamVjdCAqYWNjZXNzaWJpbGl0eU9iamVjdCgpIGNvbnN0IHsgcmV0
dXJuIDA7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBjb3VudEZpbmRNYXRjaGVz
KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBXZWJDb3JlOjpGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4
TWF0Y2hDb3VudCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCmluZGV4IDQ3ZDY4MTkuLmNkM2U4YjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTUxOSw3ICs1MTks
MTQgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01v
ZGUgbGF5ZXJIb3N0aW5nTW9kZSkKIAogICAgIG1fcGx1Z2luLT5zZXRMYXllckhvc3RpbmdNb2Rl
KGxheWVySG9zdGluZ01vZGUpOwogfQotCisgICAgCitOU09iamVjdCAqUGx1Z2luVmlldzo6YWNj
ZXNzaWJpbGl0eU9iamVjdCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwg
IW1fcGx1Z2luKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4gbV9wbHVnaW4t
PmFjY2Vzc2liaWxpdHlPYmplY3QoKTsKK30KICNlbmRpZgogCiB2b2lkIFBsdWdpblZpZXc6Omlu
aXRpYWxpemVQbHVnaW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmgKaW5kZXggYzZjZDU4OC4uZDBhMmE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC03Niw2ICs3Niw3IEBAIHB1Ymxp
YzoKICAgICBib29sIHNlbmRDb21wbGV4VGV4dElucHV0KHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhU
ZXh0SW5wdXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRleHRJbnB1dCk7CiAgICAgdm9pZCBz
ZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpOwogICAgIFJldGFpblB0cjxQREZE
b2N1bWVudD4gcGRmRG9jdW1lbnRGb3JQcmludGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2lu
LT5wZGZEb2N1bWVudEZvclByaW50aW5nKCk7IH0KKyAgICBOU09iamVjdCAqYWNjZXNzaWJpbGl0
eU9iamVjdCgpIGNvbnN0OwogI2VuZGlmCiAKICAgICBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVu
dCogcGx1Z2luRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luRWxlbWVudC5nZXQoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYWM5
NTNiOS4uYjY1ZGI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC00NjUsNiArNDY1LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBDb3JlSVBD
OjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5j
ZSYgd2luZG93VG9rZW4pOwogICAgIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIGFjY2Vz
c2liaWxpdHlSZW1vdGVPYmplY3QoKTsKKyAgICBOU09iamVjdCAqYWNjZXNzaWJpbGl0eU9iamVj
dEZvck1haW5GcmFtZVBsdWdpbigpOwogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGFj
Y2Vzc2liaWxpdHlQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzaWJpbGl0eVBvc2l0
aW9uOyB9CiAgICAgCiAgICAgdm9pZCBzZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2
NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRleHRJ
bnB1dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0KaW5kZXggNjcy
MWI0MS4uNjU5ZmQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5t
bQpAQCAtNDYsNiArNDYsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICBpZiAoIVdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCiAgICAgICAgIFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsKIAorICAgIE5TT2Jq
ZWN0KiBtYWluRnJhbWVQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciA9IG1fcGFnZS0+
YWNjZXNzaWJpbGl0eU9iamVjdEZvck1haW5GcmFtZVBsdWdpbigpOworICAgIGlmIChtYWluRnJh
bWVQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcikKKyAgICAgICAgcmV0dXJuIG1haW5G
cmFtZVBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOworCiAgICAgV2ViQ29yZTo6UGFn
ZSogcGFnZSA9IG1fcGFnZS0+Y29yZVBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJl
dHVybiBuaWw7CkBAIC0xMTksNyArMTIzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAg
ICBpZCB3cmFwcGVyID0gW3NlbGYgYWNjZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyXTsKICAg
ICBpZiAoIXdyYXBwZXIpCiAgICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07Ci0gICAgCisK
ICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OndyYXBwZXJdOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
aW5kZXggNjczNWM4Yy4uYzNjMWZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtOTcsNiArOTcsMTggQEAgdm9pZCBX
ZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIG1fbW9ja0FjY2Vzc2liaWxpdHlFbGVt
ZW50ID0gbW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50OwogfQogCitOU09iamVjdCAqV2ViUGFnZTo6
YWNjZXNzaWJpbGl0eU9iamVjdEZvck1haW5GcmFtZVBsdWdpbigpCit7CisgICAgRnJhbWUqIGZy
YW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIGlmIChQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0gcGx1Z2luVmlld0ZvckZy
YW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIHBsdWdpblZpZXctPmFjY2Vzc2liaWxpdHlPYmpl
Y3QoKTsKKworICAgIHJldHVybiAwOworfQorCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtUHJlZmVy
ZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiB7CiAgICAg
aWYgKFdlYkluc3BlY3RvciogaW5zcGVjdG9yID0gdGhpcy0+aW5zcGVjdG9yKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202842</attachid>
            <date>2013-05-24 11:42:33 -0700</date>
            <delta_ts>2013-05-24 11:44:22 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pdfaccessibility.diff</filename>
            <type>text/plain</type>
            <size>25865</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMTBjMDU4Li45YjdjMDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTMtMDUtMjIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBNYWluLWZyYW1lIFBERlBsdWdpbiBBY2Nlc3NpYmlsaXR5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY1NjMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEzNDU4NTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9ydCBBZmZpbmVU
cmFuc2Zvcm06Om1hcFJlY3QuCisKIDIwMTMtMDUtMjEgIEh1Z28gUGFyZW50ZSBMaW1hICA8aHVn
by5saW1hQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW0VGTF0gQWRkIG1pc3NpbmcgI2lmIGd1
YXJkcyBvbiBkcmFnIHN1cHBvcnQgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBmNDNj
ZGY5Li41NDhlNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTQyOSw2ICsxNDI5LDcgQEAg
X19aTks3V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtMTJpc0ludmVydGlibGVFdgogX19aTks3V2Vi
Q29yZTE1QWZmaW5lVHJhbnNmb3JtNnhTY2FsZUV2CiBfX1pOSzdXZWJDb3JlMTVBZmZpbmVUcmFu
c2Zvcm02eVNjYWxlRXYKIF9fWk5LN1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTdpbnZlcnNlRXYK
K19fWk5LN1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTdtYXBSZWN0RVJLTlNfOUZsb2F0UmVjdEUK
IF9fWk5LN1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybThtYXBQb2ludEVSS05TXzEwRmxvYXRQb2lu
dEUKIF9fWk5LN1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybThtYXBQb2ludEVSS05TXzhJbnRQb2lu
dEUKIF9fWk5LN1dlYkNvcmUxNUZvY3VzQ29udHJvbGxlcjE4Zm9jdXNlZE9yTWFpbkZyYW1lRXYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxZDA5YmE3Li5lMzcyZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzgg
QEAKKzIwMTMtMDUtMjIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBNYWluLWZyYW1lIFBERlBsdWdpbiBBY2Nlc3NpYmlsaXR5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY1NjMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEzNDU4NTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZMYXll
ckNvbnRyb2xsZXJEZXRhaWxzLmg6CisgICAgICAgIEZvcndhcmQtZGVjbGFyZSBhIHZhcmlldHkg
b2YgYWNjZXNzaWJpbGl0eSBtZXRob2RzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgQWRkIGNvbnZlcnRGcm9tUERGVmlld1RvU2NyZWVu
LCBib3VuZHNPblNjcmVlbiwgYWNjZXNzaWJpbGl0eU9iamVjdCwgYW5kCisgICAgICAgIHN0b3Jh
Z2UgZm9yIG91ciBhY2Nlc3NpYmlsaXR5IHdyYXBwZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIEFkZCBXS1BERlBsdWdpbkFjY2Vzc2li
aWxpdHlPYmplY3QuCisKKyAgICAgICAgKC1bV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0
IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRdKToKKyAgICAgICAgV2Ugd2FudCB0byBiZSBpbmNsdWRl
ZCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLgorCisgICAgICAgICgtW1dLUERGUGx1Z2luQWNj
ZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisgICAgICAg
ICgtW1dLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6Zm9yUGFyYW1ldGVyOl0pOgorICAgICAgICBHcmFiIHZhbHVlcyBmb3IgYWNjZXNzaWJp
bGl0eSBhdHRyaWJ1dGVzIGZyb20gdGhlIHJlbGV2YW50IHNvdXJjZXMKKyAgICAgICAgKG1vc3Rs
eSBmcm9tIFBERkxheWVyQ29udHJvbGxlcikuCisKKyAgICAgICAgKC1bV0tQREZQbHVnaW5BY2Nl
c3NpYmlsaXR5T2JqZWN0IHJlYWRpbmdNb2RlbF0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tQREZQ
bHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc10pOgor
ICAgICAgICAoLVtXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lc10pOgorICAgICAgICAoLVtXS1BERlBsdWdpbkFjY2Vz
c2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eUFjdGlvbk5hbWVzXSk6CisgICAgICAgIFJldHVy
biB0aGUgc2V0IG9mIGFjY2Vzc2liaWxpdHkgYXR0cmlidXRlcywgYWN0aW9ucywgYW5kIHBhcmFt
ZXRlcml6ZWQKKyAgICAgICAgYXR0cmlidXRlcyB0aGF0IHdlIHN1cHBvcnQuCisKKyAgICAgICAg
KC1bV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlJc0F0dHJpYnV0
ZVNldHRhYmxlOl0pOgorICAgICAgICAoLVtXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3Qg
YWNjZXNzaWJpbGl0eVNldFZhbHVlOmZvckF0dHJpYnV0ZTpdKToKKyAgICAgICAgRm9yd2FyZCBz
b21lIG90aGVyIGFjY2Vzc2liaWxpdHkgbWV0aG9kcyB0byBQREZMYXllckNvbnRyb2xsZXIuCisK
KyAgICAgICAgKC1bV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlG
b2N1c2VkVUlFbGVtZW50XSk6CisgICAgICAgICgtW1dLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9i
amVjdCBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpdKToKKyAgICAgICAgV2UgaGF2ZSBubyBjaGlsZHJl
biwgc28gaWYgYSBoaXQgdGVzdCBtYWtlcyBpdCB0byB1cywgaXQncyBvdXJzLgorCisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2luKToKKyAgICAgICAgTWFrZSBhIFdLUERGUGx1
Z2luQWNjZXNzaWJpbGl0eU9iamVjdCBhbmQgaG9vayBpdCB1cC4KKyAgICAgICAgW0ZJWE1FOiB0
aGlzIGNvdWxkIHVzZSBzb21lIGRlLWNyYXBpZnlpbmddCisKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpjb252ZXJ0RnJvbVBsdWdpblRvUERGVmlldyk6CisgICAgICAgIFRyYW5zZm9ybSBh
IHBvaW50IGZyb20gcGx1Z2luIHNwYWNlIHRvIFBERkxheWVyQ29udHJvbGxlciBzcGFjZS4KKwor
ICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcp
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvU2NyZWVu
KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4pOgor
ICAgICAgICBSZXR1cm4gdGhlIFBERlBsdWdpbidzIGZyYW1lIGluIHNjcmVlbiBjb29yZGluYXRl
cy4KKworICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmFjY2Vzc2liaWxpdHlPYmplY3QpOgor
ICAgICAgICBSZXR1cm4gb3VyIGFjY2Vzc2liaWxpdHkgd3JhcHBlci4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW46OmFjY2Vzc2li
aWxpdHlPYmplY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6YWNjZXNzaWJpbGl0eU9iamVjdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgQWRkIGFj
Y2Vzc2liaWxpdHlPYmplY3QoKSwgdG8gYWNxdWlyZSBhY2Nlc3NpYmlsaXR5IHdyYXBwZXJzIGZy
b20gcGx1Z2lucy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJQYWdlKTogQWRkIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JNYWluRnJhbWVQbHVn
aW4oKTsKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3QubW06CisgICAgICAgICgtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3Qg
YWNjZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyXSk6CisgICAgICAgIElmIHRoZSBtYWluIGZy
YW1lIGhhcyBhIFBsdWdpbkRvY3VtZW50IHRoYXQgaGFzIGFuIGFjY2Vzc2liaWxpdHlPYmplY3Qs
CisgICAgICAgIHVzZSB0aGF0IG9uZSBpbnN0ZWFkIG9mIHRoZSBXZWJQYWdlJ3MuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlPYmplY3RGb3JNYWluRnJhbWVQbHVnaW4pOgorICAg
ICAgICBSZXR1cm4gdGhlIGFjY2Vzc2liaWxpdHlPYmplY3QgZnJvbSB0aGUgbWFpbi1mcmFtZSBQ
bHVnaW5Eb2N1bWVudCwgaWYKKyAgICAgICAgdGhlcmUgaXMgb25lLgorCiAyMDEzLTA1LTIxICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZM
YXllckNvbnRyb2xsZXJEZXRhaWxzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaAppbmRleCA0OGZlNjAzLi5hMWQ0YWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxh
eWVyQ29udHJvbGxlckRldGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaApAQCAtMjUsNiArMjUsOCBAQAog
CiAjaW1wb3J0IDxQREZLaXQvUERGS2l0Lmg+CiAKK0BjbGFzcyBDUFJlYWRpbmdNb2RlbDsKKwog
QHByb3RvY29sIFBERkxheWVyQ29udHJvbGxlckRlbGVnYXRlIDxOU09iamVjdD4KIAogLSAodm9p
ZCl1cGRhdGVTY3JvbGxQb3NpdGlvbjooQ0dQb2ludCluZXdQb3NpdGlvbjsKQEAgLTExNCw0ICsx
MTYsMjggQEAKIAogLSAodm9pZClzZWFyY2hJbkRpY3Rpb25hcnlXaXRoU2VsZWN0aW9uOihQREZT
ZWxlY3Rpb24gKilzZWxlY3Rpb247CiAKKy8vIEFjY2Vzc2liaWxpdHkKKworLSAoQ1BSZWFkaW5n
TW9kZWwgKilyZWFkaW5nTW9kZWw7CistIChpZClhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVu
dDsKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXM7CistIChCT09MKWFj
Y2Vzc2liaWxpdHlJc0F0dHJpYnV0ZVNldHRhYmxlOihOU1N0cmluZyAqKWF0dHJpYnV0ZTsKKy0g
KHZvaWQpYWNjZXNzaWJpbGl0eVNldFZhbHVlOihpZCl2YWx1ZSBmb3JBdHRyaWJ1dGU6KE5TU3Ry
aW5nICopYXR0cmlidXRlOworLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVk
QXR0cmlidXRlTmFtZXM7CistIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRl
OworLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlOwor
LSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGU7CistIChCT09MKWFjY2Vz
c2liaWxpdHlJc1ZhbHVlQXR0cmlidXRlU2V0dGFibGU7CistIChOU1N0cmluZyAqKWFjY2Vzc2li
aWxpdHlTZWxlY3RlZFRleHRBdHRyaWJ1dGU7CistIChCT09MKWFjY2Vzc2liaWxpdHlJc1NlbGVj
dGVkVGV4dEF0dHJpYnV0ZVNldHRhYmxlOworLSAoTlNWYWx1ZSAqKWFjY2Vzc2liaWxpdHlTZWxl
Y3RlZFRleHRSYW5nZUF0dHJpYnV0ZTsKKy0gKE5TTnVtYmVyICopYWNjZXNzaWJpbGl0eU51bWJl
ck9mQ2hhcmFjdGVyc0F0dHJpYnV0ZTsKKy0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzTnVtYmVyT2ZD
aGFyYWN0ZXJzQXR0cmlidXRlU2V0dGFibGU7CistIChOU1ZhbHVlICopYWNjZXNzaWJpbGl0eVZp
c2libGVDaGFyYWN0ZXJSYW5nZUF0dHJpYnV0ZTsKKy0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzVmlz
aWJsZUNoYXJhY3RlclJhbmdlQXR0cmlidXRlU2V0dGFibGU7CistIChOU051bWJlciAqKWFjY2Vz
c2liaWxpdHlMaW5lRm9ySW5kZXhBdHRyaWJ1dGVGb3JQYXJhbWV0ZXI6KGlkKXBhcmFtZXRlcjsK
Ky0gKE5TVmFsdWUgKilhY2Nlc3NpYmlsaXR5UmFuZ2VGb3JMaW5lQXR0cmlidXRlRm9yUGFyYW1l
dGVyOihpZClwYXJhbWV0ZXI7CistIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlTdHJpbmdGb3JS
YW5nZUF0dHJpYnV0ZUZvclBhcmFtZXRlcjooaWQpcGFyYW1ldGVyOworLSAoTlNWYWx1ZSAqKWFj
Y2Vzc2liaWxpdHlCb3VuZHNGb3JSYW5nZUF0dHJpYnV0ZUZvclBhcmFtZXRlcjooaWQpcGFyYW1l
dGVyOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4uaAppbmRleCAxZDU1NjEwLi40ZTIyYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTQ0LDYgKzQ0LDcg
QEAgT0JKQ19DTEFTUyBOU0FycmF5OwogT0JKQ19DTEFTUyBQREZBbm5vdGF0aW9uOwogT0JKQ19D
TEFTUyBQREZMYXllckNvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFBERlNlbGVjdGlvbjsKK09CSkNf
Q0xBU1MgV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0OwogT0JKQ19DTEFTUyBXS1BERkxh
eWVyQ29udHJvbGxlckRlbGVnYXRlOwogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CkBAIC04OSw2ICs5
MCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGF0dGVtcHRUb1VubG9ja1BERihjb25zdCBTdHJp
bmcmIHBhc3N3b3JkKTsKIAorICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0RnJvbVBERlZp
ZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBjb25zdDsKKyAgICBXZWJDb3Jl
OjpJbnRSZWN0IGJvdW5kc09uU2NyZWVuKCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBzaG93Q29u
dGV4dE1lbnVBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCk7CisKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgUERGUGx1Z2luKFdlYkZyYW1lKik7CiAKQEAgLTEzMiw2ICsxMzgs
NyBAQCBwcml2YXRlOgogICAgIE5TRXZlbnQgKm5zRXZlbnRGb3JXZWJNb3VzZUV2ZW50KGNvbnN0
IFdlYk1vdXNlRXZlbnQmKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0RnJvbVBsdWdp
blRvUERGVmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0OwogICAgIFdlYkNvcmU6
OkludFBvaW50IGNvbnZlcnRGcm9tUm9vdFZpZXdUb1BsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYpIGNvbnN0OworICAgIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRGcm9tUERGVmlld1Rv
Um9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdDsKICAgICAKICAgICBib29s
IHN1cHBvcnRzRm9ybXMoKTsKICAgICBib29sIGlzRnVsbEZyYW1lUGx1Z2luKCk7CkBAIC0xNDAs
OCArMTQ3LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY3JlYXRlUGFzc3dvcmRFbnRyeUZvcm0o
KTsKIAotICAgIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXco
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdDsKLQogICAgIHZpcnR1YWwgTlNEYXRhICps
aXZlRGF0YSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgZW51bSBVcGRhdGVDdXJzb3JNb2RlIHsK
QEAgLTE1NiwxMiArMTYxLDE1IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZUN1cnNvcihj
b25zdCBXZWJNb3VzZUV2ZW50JiwgVXBkYXRlQ3Vyc29yTW9kZSA9IFVwZGF0ZUlmTmVlZGVkKTsK
IAorICAgIHZpcnR1YWwgTlNPYmplY3QgKmFjY2Vzc2liaWxpdHlPYmplY3QoKSBjb25zdCBPVkVS
UklERTsKKwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2NvbnRhaW5lckxheWVyOwogICAgIFJl
dGFpblB0cjxDQUxheWVyPiBtX2NvbnRlbnRMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4g
bV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fdmVy
dGljYWxTY3JvbGxiYXJMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxDb3Ju
ZXJMYXllcjsKICAgICBSZXRhaW5QdHI8UERGTGF5ZXJDb250cm9sbGVyPiBtX3BkZkxheWVyQ29u
dHJvbGxlcjsKKyAgICBSZXRhaW5QdHI8V0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0PiBt
X2FjY2Vzc2liaWxpdHlPYmplY3Q7CiAgICAgCiAgICAgUmVmUHRyPFBERlBsdWdpbkFubm90YXRp
b24+IG1fYWN0aXZlQW5ub3RhdGlvbjsKICAgICBSZWZQdHI8UERGUGx1Z2luUGFzc3dvcmRGaWVs
ZD4gbV9wYXNzd29yZEZpZWxkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBlOTk4OWVjLi43NzAzNjQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAt
NDUsNiArNDUsNyBAQAogI2ltcG9ydCAiV2ViUGFnZS5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5
TWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKKyNpbXBvcnQgIldLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3QuaCIKICNpbXBvcnQgPFBERktpdC9QREZLaXQuaD4KICNpbXBvcnQg
PFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KQEAg
LTY0LDYgKzY1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyVGhlbWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVVVJRC5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Cisj
aW1wb3J0IDx3dGYvQ3VycmVudFRpbWUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
QEAgLTEwMCwxOCArMTAyLDE2OSBAQCBzdGF0aWMgY29uc3QgY2hhciogYW5ub3RhdGlvblN0eWxl
ID0KIC8vIHdpbGwganVtcCB0byB0aGUgbmV4dCBvciBwcmV2aW91cyBwYWdlLCB0byBtYXRjaCBQ
REZLaXQgYmVoYXZpb3IuCiBzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRTY3JvbGxNYWduaXR1ZGVU
aHJlc2hvbGRGb3JQYWdlRmxpcCA9IDIwOwogCi1AaW50ZXJmYWNlIFdLUERGUGx1Z2luU2Nyb2xs
YmFyTGF5ZXIgOiBDQUxheWVyCitAaW50ZXJmYWNlIFdLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9i
amVjdCA6IE5TT2JqZWN0CisKK0Bwcm9wZXJ0eShhc3NpZ24pIFBERkxheWVyQ29udHJvbGxlciAq
cGRmTGF5ZXJDb250cm9sbGVyOworQHByb3BlcnR5KGFzc2lnbikgTlNPYmplY3QgKnBhcmVudDsK
K0Bwcm9wZXJ0eShhc3NpZ24pIFdlYktpdDo6UERGUGx1Z2luKiBwZGZQbHVnaW47CisKKy0gKGlk
KWluaXRXaXRoUERGUGx1Z2luOihXZWJLaXQ6OlBERlBsdWdpbiAqKXBsdWdpbjsKKworQGVuZAor
CitAaW1wbGVtZW50YXRpb24gV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0CisKK0BzeW50
aGVzaXplIHBkZkxheWVyQ29udHJvbGxlciA9IF9wZGZMYXllckNvbnRyb2xsZXI7CitAc3ludGhl
c2l6ZSBwYXJlbnQgPSBfcGFyZW50OworQHN5bnRoZXNpemUgcGRmUGx1Z2luID0gX3BkZlBsdWdp
bjsKKworLSAoaWQpaW5pdFdpdGhQREZQbHVnaW46KFdlYktpdDo6UERGUGx1Z2luICopcGx1Z2lu
CiB7Ci0gICAgV2ViS2l0OjpQREZQbHVnaW4qIF9wZGZQbHVnaW47CisgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfcGRmUGx1Z2luID0g
cGx1Z2luOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKEJPT0wpYWNjZXNzaWJpbGl0eUlz
SWdub3JlZAoreworICAgIHJldHVybiBOTzsKK30KKworLSAoaWQpYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOihOU1N0cmluZyAqKWF0dHJpYnV0ZQoreworICAgIGlmIChbYXR0cmlidXRlIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGVdKQorICAgICAgICBy
ZXR1cm4gX3BhcmVudDsKKyAgICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbX3BkZkxheWVy
Q29udHJvbGxlciBhY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdOworICAgIGVsc2UgaWYgKFth
dHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dEF0dHJp
YnV0ZV0pCisgICAgICAgIHJldHVybiBbX3BkZkxheWVyQ29udHJvbGxlciBhY2Nlc3NpYmlsaXR5
U2VsZWN0ZWRUZXh0QXR0cmlidXRlXTsKKyAgICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRSYW5nZUF0dHJpYnV0ZV0pCisgICAg
ICAgIHJldHVybiBbX3BkZkxheWVyQ29udHJvbGxlciBhY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0
UmFuZ2VBdHRyaWJ1dGVdOworICAgIGVsc2UgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eU51bWJlck9mQ2hhcmFjdGVyc0F0dHJpYnV0ZV0pCisgICAgICAgIHJl
dHVybiBbX3BkZkxheWVyQ29udHJvbGxlciBhY2Nlc3NpYmlsaXR5TnVtYmVyT2ZDaGFyYWN0ZXJz
QXR0cmlidXRlXTsKKyAgICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKQorICAgICAgICByZXR1
cm4gW19wZGZMYXllckNvbnRyb2xsZXIgYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5n
ZUF0dHJpYnV0ZV07CisgICAgZWxzZSBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5VG9wTGV2ZWxVSUVsZW1lbnRBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4g
W19wYXJlbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRvcExl
dmVsVUlFbGVtZW50QXR0cmlidXRlXTsKKyAgICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtf
cGRmTGF5ZXJDb250cm9sbGVyIGFjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXTsKKyAgICBlbHNl
IGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3Jp
cHRpb25BdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gW19wZGZMYXllckNvbnRyb2xsZXIgYWNj
ZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CisgICAgZWxzZSBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRlXSkKKyAg
ICAgICAgcmV0dXJuIFtfcGFyZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlXaW5kb3dBdHRyaWJ1dGVdOworICAgIGVsc2UgaWYgKFthdHRyaWJ1dGUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4g
W05TVmFsdWUgdmFsdWVXaXRoU2l6ZTpfcGRmUGx1Z2luLT5ib3VuZHNPblNjcmVlbigpLnNpemUo
KV07CisgICAgZWxzZSBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5Rm9jdXNlZEF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbX3BhcmVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZV07CisgICAg
ZWxzZSBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RW5hYmxl
ZEF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbX3BhcmVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZV07CisgICAgZWxzZSBpZiAo
W2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1
dGVdKQorICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6X3BkZlBsdWdpbi0+
Ym91bmRzT25TY3JlZW4oKS5sb2NhdGlvbigpXTsKKworICAgIHJldHVybiAwOworfQorCistIChp
ZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyaW5nICopYXR0cmlidXRlIGZvclBh
cmFtZXRlcjooaWQpcGFyYW1ldGVyCit7CisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eUJvdW5kc0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0p
IHsKKyAgICAgICAgTlNSZWN0IGJvdW5kc0luUERGVmlld0Nvb3JkaW5hdGVzID0gW1tfcGRmTGF5
ZXJDb250cm9sbGVyIGFjY2Vzc2liaWxpdHlCb3VuZHNGb3JSYW5nZUF0dHJpYnV0ZUZvclBhcmFt
ZXRlcjpwYXJhbWV0ZXJdIHJlY3RWYWx1ZV07CisgICAgICAgIE5TUmVjdCBib3VuZHNJblNjcmVl
bkNvb3JkaW5hdGVzID0gX3BkZlBsdWdpbi0+Y29udmVydEZyb21QREZWaWV3VG9TY3JlZW4oYm91
bmRzSW5QREZWaWV3Q29vcmRpbmF0ZXMpOworICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVX
aXRoUmVjdDpib3VuZHNJblNjcmVlbkNvb3JkaW5hdGVzXTs7CisgICAgfSBlbHNlIGlmIChbYXR0
cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlMaW5lRm9ySW5kZXhQYXJhbWV0
ZXJpemVkQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtfcGRmTGF5ZXJDb250cm9sbGVyIGFj
Y2Vzc2liaWxpdHlMaW5lRm9ySW5kZXhBdHRyaWJ1dGVGb3JQYXJhbWV0ZXI6cGFyYW1ldGVyXTsK
KyAgICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlS
YW5nZUZvckxpbmVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtfcGRm
TGF5ZXJDb250cm9sbGVyIGFjY2Vzc2liaWxpdHlSYW5nZUZvckxpbmVBdHRyaWJ1dGVGb3JQYXJh
bWV0ZXI6cGFyYW1ldGVyXTsKKyAgICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlTdHJpbmdGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKQor
ICAgICAgICByZXR1cm4gW19wZGZMYXllckNvbnRyb2xsZXIgYWNjZXNzaWJpbGl0eVN0cmluZ0Zv
clJhbmdlQXR0cmlidXRlRm9yUGFyYW1ldGVyOnBhcmFtZXRlcl07CisKKyAgICByZXR1cm4gMDsK
K30KKworLSAoQ1BSZWFkaW5nTW9kZWwgKilyZWFkaW5nTW9kZWwKK3sKKyAgICByZXR1cm4gW19w
ZGZMYXllckNvbnRyb2xsZXIgcmVhZGluZ01vZGVsXTsKK30KKworLSAoTlNBcnJheSAqKWFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVOYW1lcworeworICAgIHN0YXRpYyBOU0FycmF5ICphdHRyaWJ1dGVO
YW1lcyA9IDA7CisKKyAgICBpZiAoIWF0dHJpYnV0ZU5hbWVzKQorICAgICAgICBhdHRyaWJ1dGVO
YW1lcyA9IFtbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0
cmlidXRlLAorICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0QXR0cmlidXRl
LAorICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGUs
CisgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlOdW1iZXJPZkNoYXJhY3RlcnNBdHRyaWJ1dGUs
CisgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1
dGUsCisgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGUsCisgICAgICAg
ICAgICBOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlLAorICAgICAgICAgICAgTlNBY2Nlc3Np
YmlsaXR5V2luZG93QXR0cmlidXRlLAorICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5VG9wTGV2
ZWxVSUVsZW1lbnRBdHRyaWJ1dGUsCisgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlSb2xlRGVz
Y3JpcHRpb25BdHRyaWJ1dGUsCisgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmli
dXRlLAorICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZSwKKyAgICAg
ICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGUsCisgICAgICAgICAgICBOU0Fj
Y2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSwKKyAgICAgICAgICAgIG5pbF0gcmV0YWluXTsK
KworICAgIHJldHVybiBhdHRyaWJ1dGVOYW1lczsKK30KKworLSAoTlNBcnJheSAqKWFjY2Vzc2li
aWxpdHlBY3Rpb25OYW1lcworeworICAgIHN0YXRpYyBOU0FycmF5ICphY3Rpb25OYW1lcyA9IDA7
CisgICAgCisgICAgaWYgKCFhY3Rpb25OYW1lcykKKyAgICAgICAgYWN0aW9uTmFtZXMgPSBbW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNob3dNZW51QWN0aW9uXSByZXRh
aW5dOworICAgIAorICAgIHJldHVybiBhY3Rpb25OYW1lczsKK30KKworLSAodm9pZClhY2Nlc3Np
YmlsaXR5UGVyZm9ybUFjdGlvbjooTlNTdHJpbmcgKilhY3Rpb24KK3sKKyAgICBpZiAoW2FjdGlv
biBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2hvd01lbnVBY3Rpb25dKQorICAgICAg
ICBfcGRmUGx1Z2luLT5zaG93Q29udGV4dE1lbnVBdFBvaW50KEludFJlY3QoSW50UG9pbnQoKSwg
X3BkZlBsdWdpbi0+c2l6ZSgpKS5jZW50ZXIoKSk7Cit9CisKKy0gKEJPT0wpYWNjZXNzaWJpbGl0
eUlzQXR0cmlidXRlU2V0dGFibGU6KE5TU3RyaW5nICopYXR0cmlidXRlCit7CisgICAgcmV0dXJu
IFtfcGRmTGF5ZXJDb250cm9sbGVyIGFjY2Vzc2liaWxpdHlJc0F0dHJpYnV0ZVNldHRhYmxlOmF0
dHJpYnV0ZV07Cit9CisKKy0gKHZvaWQpYWNjZXNzaWJpbGl0eVNldFZhbHVlOihpZCl2YWx1ZSBm
b3JBdHRyaWJ1dGU6KE5TU3RyaW5nICopYXR0cmlidXRlCit7CisgICAgcmV0dXJuIFtfcGRmTGF5
ZXJDb250cm9sbGVyIGFjY2Vzc2liaWxpdHlTZXRWYWx1ZTp2YWx1ZSBmb3JBdHRyaWJ1dGU6YXR0
cmlidXRlXTsKK30KKworLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVkQXR0
cmlidXRlTmFtZXMKK3sKKyAgICByZXR1cm4gW19wZGZMYXllckNvbnRyb2xsZXIgYWNjZXNzaWJp
bGl0eVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lc107CiB9CiAKKy0gKGlkKWFjY2Vzc2liaWxp
dHlGb2N1c2VkVUlFbGVtZW50Cit7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKGlkKWFjY2Vz
c2liaWxpdHlIaXRUZXN0OihOU1BvaW50KXBvaW50Cit7CisgICAgcmV0dXJuIHNlbGY7Cit9CisK
K0BlbmQKKworCitAaW50ZXJmYWNlIFdLUERGUGx1Z2luU2Nyb2xsYmFyTGF5ZXIgOiBDQUxheWVy
CisKIEBwcm9wZXJ0eShhc3NpZ24pIFdlYktpdDo6UERGUGx1Z2luKiBwZGZQbHVnaW47CiAKIEBl
bmQKIAogQGltcGxlbWVudGF0aW9uIFdLUERGUGx1Z2luU2Nyb2xsYmFyTGF5ZXIKIAotQHN5bnRo
ZXNpemUgcGRmUGx1Z2luPV9wZGZQbHVnaW47CitAc3ludGhlc2l6ZSBwZGZQbHVnaW4gPSBfcGRm
UGx1Z2luOwogCiAtIChpZClpbml0V2l0aFBERlBsdWdpbjooV2ViS2l0OjpQREZQbHVnaW4gKilw
bHVnaW4KIHsKQEAgLTI1Miw2ICs0MDUsMTAgQEAgUERGUGx1Z2luOjpQREZQbHVnaW4oV2ViRnJh
bWUqIGZyYW1lKQogICAgICAgICBkb2N1bWVudC0+Ym9keSgpLT5hcHBlbmRDaGlsZChtX2Fubm90
YXRpb25Db250YWluZXIuZ2V0KCkpOwogICAgIH0KIAorICAgIG1fYWNjZXNzaWJpbGl0eU9iamVj
dCA9IGFkb3B0TlMoW1tXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3QgYWxsb2NdIGluaXRX
aXRoUERGUGx1Z2luOnRoaXNdKTsKKyAgICBtX2FjY2Vzc2liaWxpdHlPYmplY3QuZ2V0KCkucGRm
TGF5ZXJDb250cm9sbGVyID0gbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCk7CisgICAgbV9hY2Nl
c3NpYmlsaXR5T2JqZWN0LmdldCgpLnBhcmVudCA9IHdlYkZyYW1lKCktPnBhZ2UoKS0+YWNjZXNz
aWJpbGl0eVJlbW90ZU9iamVjdCgpOworCiAgICAgW21fY29udGFpbmVyTGF5ZXIuZ2V0KCkgYWRk
U3VibGF5ZXI6bV9jb250ZW50TGF5ZXIuZ2V0KCldOwogICAgIFttX2NvbnRhaW5lckxheWVyLmdl
dCgpIGFkZFN1YmxheWVyOm1fc2Nyb2xsQ29ybmVyTGF5ZXIuZ2V0KCldOwogfQpAQCAtNDU2LDE0
ICs2MTMsNDUgQEAgUGxhdGZvcm1MYXllciogUERGUGx1Z2luOjpwbHVnaW5MYXllcigpCiAgICAg
cmV0dXJuIG1fY29udGFpbmVyTGF5ZXIuZ2V0KCk7CiB9CiAKK0ludFBvaW50IFBERlBsdWdpbjo6
Y29udmVydEZyb21QbHVnaW5Ub1BERlZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAor
eworICAgIHJldHVybiBJbnRQb2ludChwb2ludC54KCksIHNpemUoKS5oZWlnaHQoKSAtIHBvaW50
LnkoKSk7Cit9CisKIEludFBvaW50IFBERlBsdWdpbjo6Y29udmVydEZyb21Sb290Vmlld1RvUGx1
Z2luKGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yb290Vmll
d1RvUGx1Z2luVHJhbnNmb3JtLm1hcFBvaW50KHBvaW50KTsKIH0KIAotSW50UG9pbnQgUERGUGx1
Z2luOjpjb252ZXJ0RnJvbVBsdWdpblRvUERGVmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNv
bnN0CitJbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcoY29u
c3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIHJldHVybiBJbnRQb2ludChwb2ludC54
KCksIHNpemUoKS5oZWlnaHQoKSAtIHBvaW50LnkoKSk7CisgICAgSW50UG9pbnQgcG9pbnRJblBs
dWdpbkNvb3JkaW5hdGVzKHBvaW50LngoKSwgc2l6ZSgpLmhlaWdodCgpIC0gcG9pbnQueSgpKTsK
KyAgICByZXR1cm4gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS5tYXBQb2lu
dChwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMpOworfQorCitGbG9hdFJlY3QgUERGUGx1Z2luOjpj
b252ZXJ0RnJvbVBERlZpZXdUb1NjcmVlbihjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0Cit7
CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmll
dygpOworCisgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsK
KworICAgIEZsb2F0UG9pbnQgb3JpZ2luSW5QbHVnaW5Db29yZGluYXRlcyhyZWN0LngoKSwgc2l6
ZSgpLmhlaWdodCgpIC0gcmVjdC55KCkgLSByZWN0LmhlaWdodCgpKTsKKyAgICBGbG9hdFJlY3Qg
cmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5p
bnZlcnNlKCkubWFwUmVjdChGbG9hdFJlY3Qob3JpZ2luSW5QbHVnaW5Db29yZGluYXRlcywgcmVj
dC5zaXplKCkpKTsKKworICAgIHJldHVybiBmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3JlZW4oZW5j
bG9zaW5nSW50UmVjdChyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKSk7Cit9CisKK0ludFJlY3Qg
UERGUGx1Z2luOjpib3VuZHNPblNjcmVlbigpIGNvbnN0Cit7CisgICAgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmlldygpOworCisgICAgaWYgKCFmcmFt
ZVZpZXcpCisgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisKKyAgICBGbG9hdFJlY3QgYm91bmRz
ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKTsKKyAgICBGbG9hdFJlY3QgcmVjdElu
Um9vdFZpZXdDb29yZGluYXRlcyA9IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNl
KCkubWFwUmVjdChib3VuZHMpOworICAgIHJldHVybiBmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3Jl
ZW4oZW5jbG9zaW5nSW50UmVjdChyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKSk7CiB9CiAKIHZv
aWQgUERGUGx1Z2luOjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXpl
LCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3
VHJhbnNmb3JtKQpAQCAtNzAwLDEzICs4ODgsMjAgQEAgYm9vbCBQREZQbHVnaW46OmhhbmRsZU1v
dXNlTGVhdmVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JikKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAgICAgCi1ib29sIFBERlBsdWdpbjo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChjb25zdCBXZWJN
b3VzZUV2ZW50JiBldmVudCkKK2Jvb2wgUERGUGx1Z2luOjpzaG93Q29udGV4dE1lbnVBdFBvaW50
KGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKLSAgICBOU01lbnUgKm5zTWVudSA9IFttX3BkZkxh
eWVyQ29udHJvbGxlci5nZXQoKSBtZW51Rm9yRXZlbnQ6bnNFdmVudEZvcldlYk1vdXNlRXZlbnQo
ZXZlbnQpXTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHdlYkZyYW1lKCktPmNvcmVGcmFt
ZSgpLT52aWV3KCk7CisgICAgSW50UG9pbnQgY29udGVudHNQb2ludCA9IGZyYW1lVmlldy0+Y29u
dGVudHNUb1Jvb3RWaWV3KHBvaW50KTsKKyAgICBXZWJNb3VzZUV2ZW50IGV2ZW50KFdlYkV2ZW50
OjpNb3VzZURvd24sIFdlYk1vdXNlRXZlbnQ6OlJpZ2h0QnV0dG9uLCBjb250ZW50c1BvaW50LCBj
b250ZW50c1BvaW50LCAwLCAwLCAwLCAxLCBzdGF0aWNfY2FzdDxXZWJFdmVudDo6TW9kaWZpZXJz
PigwKSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOworICAgIHJldHVybiBoYW5kbGVD
b250ZXh0TWVudUV2ZW50KGV2ZW50KTsKK30KIAorYm9vbCBQREZQbHVnaW46OmhhbmRsZUNvbnRl
eHRNZW51RXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCit7CiAgICAgRnJhbWVWaWV3
KiBmcmFtZVZpZXcgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmlldygpOwogICAgIEludFBv
aW50IHBvaW50ID0gZnJhbWVWaWV3LT5jb250ZW50c1RvU2NyZWVuKEludFJlY3QoZnJhbWVWaWV3
LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpLCBJbnRTaXplKCkpKS5sb2NhdGlv
bigpOwotICAgIGlmIChuc01lbnUpIHsKKyAgICAKKyAgICBpZiAoTlNNZW51ICpuc01lbnUgPSBb
bV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgbWVudUZvckV2ZW50Om5zRXZlbnRGb3JXZWJNb3Vz
ZUV2ZW50KGV2ZW50KV0pIHsKICAgICAgICAgV0tQb3B1cENvbnRleHRNZW51KG5zTWVudSwgcG9p
bnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC05MTEsMTIgKzExMDYsNiBAQCB2
b2lkIFBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZChOU0FycmF5ICppdGVtcywgTlNB
cnJheSAqdHlwZXMpCiAgICAgfQogfQogCi1JbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9t
UERGVmlld1RvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAotewotICAgIElu
dFBvaW50IHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyhwb2ludC54KCksIHNpemUoKS5oZWlnaHQo
KSAtIHBvaW50LnkoKSk7Ci0gICAgcmV0dXJuIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5p
bnZlcnNlKCkubWFwUG9pbnQocG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKLX0KLQogdm9pZCBQ
REZQbHVnaW46OnNob3dEZWZpbml0aW9uRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRT
dHJpbmcgKnN0cmluZywgQ0dQb2ludCBwb2ludCkKIHsKICAgICBEaWN0aW9uYXJ5UG9wdXBJbmZv
IGRpY3Rpb25hcnlQb3B1cEluZm87CkBAIC0xMTA2LDYgKzEyOTUsMTEgQEAgTlNEYXRhICpQREZQ
bHVnaW46OmxpdmVEYXRhKCkgY29uc3QKICAgICByZXR1cm4gU2ltcGxlUERGUGx1Z2luOjpsaXZl
RGF0YSgpOwogfQogCitOU09iamVjdCAqUERGUGx1Z2luOjphY2Nlc3NpYmlsaXR5T2JqZWN0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9hY2Nlc3NpYmlsaXR5T2JqZWN0LmdldCgpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShQREZLSVRfUExVR0lOKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQ
REZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxl
UERGUGx1Z2luLmgKaW5kZXggMDhkYTc1YS4uNGI2ZWQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5oCkBAIC01
NiwxMyArNTYsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0JlaW5nQXN5bmNocm9u
b3VzbHlJbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2b2lkIGRp
ZE11dGF0ZVBERkRvY3VtZW50KCkgeyBtX3BkZkRvY3VtZW50V2FzTXV0YXRlZCA9IHRydWU7IH0K
KyAgICAKKyAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7
IH0KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNpbXBsZVBERlBsdWdpbihXZWJGcmFtZSop
OwogCiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQog
Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAg
ICAgdm9pZCBzZXRTaXplKFdlYkNvcmU6OkludFNpemUgc2l6ZSkgeyBtX3NpemUgPSBzaXplOyB9
CiAKICAgICBSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9wZGZEb2N1bWVudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbi5oCmluZGV4IGVkYzQyYjAuLjNlNWQ4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTM4LDYgKzM4LDcgQEAKICNpZiBQTEFURk9STShNQUMp
CiAjaW5jbHVkZSAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogCitPQkpDX0NMQVNTIE5TT2JqZWN0
OwogT0JKQ19DTEFTUyBQREZEb2N1bWVudDsKICNlbmRpZgogCkBAIC0yNTYsNiArMjU3LDcgQEAg
cHVibGljOgogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZpcnR1YWwgUmV0YWluUHRyPFBERkRv
Y3VtZW50PiBwZGZEb2N1bWVudEZvclByaW50aW5nKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAg
IHZpcnR1YWwgTlNPYmplY3QgKmFjY2Vzc2liaWxpdHlPYmplY3QoKSBjb25zdCB7IHJldHVybiAw
OyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgY291bnRGaW5kTWF0Y2hlcyhjb25z
dCBTdHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNo
Q291bnQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAppbmRleCA0N2Q2ODE5Li5jZDNlOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC01MTksNyArNTE5LDE0IEBA
IHZvaWQgUGx1Z2luVmlldzo6c2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlIGxh
eWVySG9zdGluZ01vZGUpCiAKICAgICBtX3BsdWdpbi0+c2V0TGF5ZXJIb3N0aW5nTW9kZShsYXll
ckhvc3RpbmdNb2RlKTsKIH0KLQorICAgIAorTlNPYmplY3QgKlBsdWdpblZpZXc6OmFjY2Vzc2li
aWxpdHlPYmplY3QoKSBjb25zdAoreworICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3Bs
dWdpbikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIG1fcGx1Z2luLT5hY2Nl
c3NpYmlsaXR5T2JqZWN0KCk7Cit9CiAjZW5kaWYKIAogdm9pZCBQbHVnaW5WaWV3Ojppbml0aWFs
aXplUGx1Z2luKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCmluZGV4IGM2Y2Q1ODguLmQwYTJhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNzYsNiArNzYsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBzZW5kQ29tcGxleFRleHRJbnB1dCh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElu
cHV0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0ZXh0SW5wdXQpOwogICAgIHZvaWQgc2V0TGF5
ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKTsKICAgICBSZXRhaW5QdHI8UERGRG9jdW1l
bnQ+IHBkZkRvY3VtZW50Rm9yUHJpbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbi0+cGRm
RG9jdW1lbnRGb3JQcmludGluZygpOyB9CisgICAgTlNPYmplY3QgKmFjY2Vzc2liaWxpdHlPYmpl
Y3QoKSBjb25zdDsKICNlbmRpZgogCiAgICAgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIHBs
dWdpbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkVsZW1lbnQuZ2V0KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGFjOTUzYjku
LmI2NWRiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtNDY1LDYgKzQ2NSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9p
ZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgQ29yZUlQQzo6RGF0
YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIHdp
bmRvd1Rva2VuKTsKICAgICBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0KiBhY2Nlc3NpYmls
aXR5UmVtb3RlT2JqZWN0KCk7CisgICAgTlNPYmplY3QgKmFjY2Vzc2liaWxpdHlPYmplY3RGb3JN
YWluRnJhbWVQbHVnaW4oKTsKICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBhY2Nlc3Np
YmlsaXR5UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FjY2Vzc2liaWxpdHlQb3NpdGlvbjsg
fQogICAgIAogICAgIHZvaWQgc2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbih1aW50NjRfdCBw
bHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0ZXh0SW5wdXQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tCmluZGV4IDY3MjFiNDEu
LjY1OWZkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0KQEAg
LTQ2LDYgKzQ2LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgaWYgKCFXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQogICAgICAgICBXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5KCk7CiAKKyAgICBOU09iamVjdCog
bWFpbkZyYW1lUGx1Z2luQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgPSBtX3BhZ2UtPmFjY2Vz
c2liaWxpdHlPYmplY3RGb3JNYWluRnJhbWVQbHVnaW4oKTsKKyAgICBpZiAobWFpbkZyYW1lUGx1
Z2luQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIpCisgICAgICAgIHJldHVybiBtYWluRnJhbWVQ
bHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjsKKwogICAgIFdlYkNvcmU6OlBhZ2UqIHBh
Z2UgPSBtX3BhZ2UtPmNvcmVQYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4g
bmlsOwpAQCAtMTE5LDcgKzEyMyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgaWQg
d3JhcHBlciA9IFtzZWxmIGFjY2Vzc2liaWxpdHlSb290T2JqZWN0V3JhcHBlcl07CiAgICAgaWYg
KCF3cmFwcGVyKQogICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOwotICAgIAorCiAgICAg
cmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDp3cmFwcGVyXTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4
IDY3MzVjOGMuLmMzYzFmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTk3LDYgKzk3LDE4IEBAIHZvaWQgV2ViUGFn
ZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBtX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9
IG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudDsKIH0KIAorTlNPYmplY3QgKldlYlBhZ2U6OmFjY2Vz
c2liaWxpdHlPYmplY3RGb3JNYWluRnJhbWVQbHVnaW4oKQoreworICAgIEZyYW1lKiBmcmFtZSA9
IG1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZpZXdGb3JGcmFtZShm
cmFtZSkpCisgICAgICAgIHJldHVybiBwbHVnaW5WaWV3LT5hY2Nlc3NpYmlsaXR5T2JqZWN0KCk7
CisKKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVByZWZlcmVuY2Vz
RGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogewogICAgIGlmIChX
ZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9IHRoaXMtPmluc3BlY3RvcigpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202843</attachid>
            <date>2013-05-24 11:44:22 -0700</date>
            <delta_ts>2013-05-25 12:25:41 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pdfaccessibility.diff</filename>
            <type>text/plain</type>
            <size>25859</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMTBjMDU4Li45YjdjMDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTMtMDUtMjIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBNYWluLWZyYW1lIFBERlBsdWdpbiBBY2Nlc3NpYmlsaXR5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY1NjMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEzNDU4NTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9ydCBBZmZpbmVU
cmFuc2Zvcm06Om1hcFJlY3QuCisKIDIwMTMtMDUtMjEgIEh1Z28gUGFyZW50ZSBMaW1hICA8aHVn
by5saW1hQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW0VGTF0gQWRkIG1pc3NpbmcgI2lmIGd1
YXJkcyBvbiBkcmFnIHN1cHBvcnQgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBmNDNj
ZGY5Li41NDhlNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTQyOSw2ICsxNDI5LDcgQEAg
X19aTks3V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtMTJpc0ludmVydGlibGVFdgogX19aTks3V2Vi
Q29yZTE1QWZmaW5lVHJhbnNmb3JtNnhTY2FsZUV2CiBfX1pOSzdXZWJDb3JlMTVBZmZpbmVUcmFu
c2Zvcm02eVNjYWxlRXYKIF9fWk5LN1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTdpbnZlcnNlRXYK
K19fWk5LN1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTdtYXBSZWN0RVJLTlNfOUZsb2F0UmVjdEUK
IF9fWk5LN1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybThtYXBQb2ludEVSS05TXzEwRmxvYXRQb2lu
dEUKIF9fWk5LN1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybThtYXBQb2ludEVSS05TXzhJbnRQb2lu
dEUKIF9fWk5LN1dlYkNvcmUxNUZvY3VzQ29udHJvbGxlcjE4Zm9jdXNlZE9yTWFpbkZyYW1lRXYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxZDA5YmE3Li5lMzcyZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzgg
QEAKKzIwMTMtMDUtMjIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBNYWluLWZyYW1lIFBERlBsdWdpbiBBY2Nlc3NpYmlsaXR5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY1NjMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEzNDU4NTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZMYXll
ckNvbnRyb2xsZXJEZXRhaWxzLmg6CisgICAgICAgIEZvcndhcmQtZGVjbGFyZSBhIHZhcmlldHkg
b2YgYWNjZXNzaWJpbGl0eSBtZXRob2RzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgQWRkIGNvbnZlcnRGcm9tUERGVmlld1RvU2NyZWVu
LCBib3VuZHNPblNjcmVlbiwgYWNjZXNzaWJpbGl0eU9iamVjdCwgYW5kCisgICAgICAgIHN0b3Jh
Z2UgZm9yIG91ciBhY2Nlc3NpYmlsaXR5IHdyYXBwZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIEFkZCBXS1BERlBsdWdpbkFjY2Vzc2li
aWxpdHlPYmplY3QuCisKKyAgICAgICAgKC1bV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0
IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRdKToKKyAgICAgICAgV2Ugd2FudCB0byBiZSBpbmNsdWRl
ZCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLgorCisgICAgICAgICgtW1dLUERGUGx1Z2luQWNj
ZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisgICAgICAg
ICgtW1dLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6Zm9yUGFyYW1ldGVyOl0pOgorICAgICAgICBHcmFiIHZhbHVlcyBmb3IgYWNjZXNzaWJp
bGl0eSBhdHRyaWJ1dGVzIGZyb20gdGhlIHJlbGV2YW50IHNvdXJjZXMKKyAgICAgICAgKG1vc3Rs
eSBmcm9tIFBERkxheWVyQ29udHJvbGxlcikuCisKKyAgICAgICAgKC1bV0tQREZQbHVnaW5BY2Nl
c3NpYmlsaXR5T2JqZWN0IHJlYWRpbmdNb2RlbF0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tQREZQ
bHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc10pOgor
ICAgICAgICAoLVtXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lc10pOgorICAgICAgICAoLVtXS1BERlBsdWdpbkFjY2Vz
c2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eUFjdGlvbk5hbWVzXSk6CisgICAgICAgIFJldHVy
biB0aGUgc2V0IG9mIGFjY2Vzc2liaWxpdHkgYXR0cmlidXRlcywgYWN0aW9ucywgYW5kIHBhcmFt
ZXRlcml6ZWQKKyAgICAgICAgYXR0cmlidXRlcyB0aGF0IHdlIHN1cHBvcnQuCisKKyAgICAgICAg
KC1bV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlJc0F0dHJpYnV0
ZVNldHRhYmxlOl0pOgorICAgICAgICAoLVtXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3Qg
YWNjZXNzaWJpbGl0eVNldFZhbHVlOmZvckF0dHJpYnV0ZTpdKToKKyAgICAgICAgRm9yd2FyZCBz
b21lIG90aGVyIGFjY2Vzc2liaWxpdHkgbWV0aG9kcyB0byBQREZMYXllckNvbnRyb2xsZXIuCisK
KyAgICAgICAgKC1bV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2liaWxpdHlG
b2N1c2VkVUlFbGVtZW50XSk6CisgICAgICAgICgtW1dLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9i
amVjdCBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpdKToKKyAgICAgICAgV2UgaGF2ZSBubyBjaGlsZHJl
biwgc28gaWYgYSBoaXQgdGVzdCBtYWtlcyBpdCB0byB1cywgaXQncyBvdXJzLgorCisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2luKToKKyAgICAgICAgTWFrZSBhIFdLUERGUGx1
Z2luQWNjZXNzaWJpbGl0eU9iamVjdCBhbmQgaG9vayBpdCB1cC4KKyAgICAgICAgW0ZJWE1FOiB0
aGlzIGNvdWxkIHVzZSBzb21lIGRlLWNyYXBpZnlpbmddCisKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpjb252ZXJ0RnJvbVBsdWdpblRvUERGVmlldyk6CisgICAgICAgIFRyYW5zZm9ybSBh
IHBvaW50IGZyb20gcGx1Z2luIHNwYWNlIHRvIFBERkxheWVyQ29udHJvbGxlciBzcGFjZS4KKwor
ICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcp
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvU2NyZWVu
KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4pOgor
ICAgICAgICBSZXR1cm4gdGhlIFBERlBsdWdpbidzIGZyYW1lIGluIHNjcmVlbiBjb29yZGluYXRl
cy4KKworICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmFjY2Vzc2liaWxpdHlPYmplY3QpOgor
ICAgICAgICBSZXR1cm4gb3VyIGFjY2Vzc2liaWxpdHkgd3JhcHBlci4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW46OmFjY2Vzc2li
aWxpdHlPYmplY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6YWNjZXNzaWJpbGl0eU9iamVjdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgQWRkIGFj
Y2Vzc2liaWxpdHlPYmplY3QoKSwgdG8gYWNxdWlyZSBhY2Nlc3NpYmlsaXR5IHdyYXBwZXJzIGZy
b20gcGx1Z2lucy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJQYWdlKTogQWRkIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JNYWluRnJhbWVQbHVn
aW4oKTsKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3QubW06CisgICAgICAgICgtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3Qg
YWNjZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyXSk6CisgICAgICAgIElmIHRoZSBtYWluIGZy
YW1lIGhhcyBhIFBsdWdpbkRvY3VtZW50IHRoYXQgaGFzIGFuIGFjY2Vzc2liaWxpdHlPYmplY3Qs
CisgICAgICAgIHVzZSB0aGF0IG9uZSBpbnN0ZWFkIG9mIHRoZSBXZWJQYWdlJ3MuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlPYmplY3RGb3JNYWluRnJhbWVQbHVnaW4pOgorICAg
ICAgICBSZXR1cm4gdGhlIGFjY2Vzc2liaWxpdHlPYmplY3QgZnJvbSB0aGUgbWFpbi1mcmFtZSBQ
bHVnaW5Eb2N1bWVudCwgaWYKKyAgICAgICAgdGhlcmUgaXMgb25lLgorCiAyMDEzLTA1LTIxICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZM
YXllckNvbnRyb2xsZXJEZXRhaWxzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaAppbmRleCA0OGZlNjAzLi5hMWQ0YWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxh
eWVyQ29udHJvbGxlckRldGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaApAQCAtMjUsNiArMjUsOCBAQAog
CiAjaW1wb3J0IDxQREZLaXQvUERGS2l0Lmg+CiAKK0BjbGFzcyBDUFJlYWRpbmdNb2RlbDsKKwog
QHByb3RvY29sIFBERkxheWVyQ29udHJvbGxlckRlbGVnYXRlIDxOU09iamVjdD4KIAogLSAodm9p
ZCl1cGRhdGVTY3JvbGxQb3NpdGlvbjooQ0dQb2ludCluZXdQb3NpdGlvbjsKQEAgLTExNCw0ICsx
MTYsMjggQEAKIAogLSAodm9pZClzZWFyY2hJbkRpY3Rpb25hcnlXaXRoU2VsZWN0aW9uOihQREZT
ZWxlY3Rpb24gKilzZWxlY3Rpb247CiAKKy8vIEFjY2Vzc2liaWxpdHkKKworLSAoQ1BSZWFkaW5n
TW9kZWwgKilyZWFkaW5nTW9kZWw7CistIChpZClhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVu
dDsKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXM7CistIChCT09MKWFj
Y2Vzc2liaWxpdHlJc0F0dHJpYnV0ZVNldHRhYmxlOihOU1N0cmluZyAqKWF0dHJpYnV0ZTsKKy0g
KHZvaWQpYWNjZXNzaWJpbGl0eVNldFZhbHVlOihpZCl2YWx1ZSBmb3JBdHRyaWJ1dGU6KE5TU3Ry
aW5nICopYXR0cmlidXRlOworLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVk
QXR0cmlidXRlTmFtZXM7CistIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRl
OworLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlOwor
LSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGU7CistIChCT09MKWFjY2Vz
c2liaWxpdHlJc1ZhbHVlQXR0cmlidXRlU2V0dGFibGU7CistIChOU1N0cmluZyAqKWFjY2Vzc2li
aWxpdHlTZWxlY3RlZFRleHRBdHRyaWJ1dGU7CistIChCT09MKWFjY2Vzc2liaWxpdHlJc1NlbGVj
dGVkVGV4dEF0dHJpYnV0ZVNldHRhYmxlOworLSAoTlNWYWx1ZSAqKWFjY2Vzc2liaWxpdHlTZWxl
Y3RlZFRleHRSYW5nZUF0dHJpYnV0ZTsKKy0gKE5TTnVtYmVyICopYWNjZXNzaWJpbGl0eU51bWJl
ck9mQ2hhcmFjdGVyc0F0dHJpYnV0ZTsKKy0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzTnVtYmVyT2ZD
aGFyYWN0ZXJzQXR0cmlidXRlU2V0dGFibGU7CistIChOU1ZhbHVlICopYWNjZXNzaWJpbGl0eVZp
c2libGVDaGFyYWN0ZXJSYW5nZUF0dHJpYnV0ZTsKKy0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzVmlz
aWJsZUNoYXJhY3RlclJhbmdlQXR0cmlidXRlU2V0dGFibGU7CistIChOU051bWJlciAqKWFjY2Vz
c2liaWxpdHlMaW5lRm9ySW5kZXhBdHRyaWJ1dGVGb3JQYXJhbWV0ZXI6KGlkKXBhcmFtZXRlcjsK
Ky0gKE5TVmFsdWUgKilhY2Nlc3NpYmlsaXR5UmFuZ2VGb3JMaW5lQXR0cmlidXRlRm9yUGFyYW1l
dGVyOihpZClwYXJhbWV0ZXI7CistIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlTdHJpbmdGb3JS
YW5nZUF0dHJpYnV0ZUZvclBhcmFtZXRlcjooaWQpcGFyYW1ldGVyOworLSAoTlNWYWx1ZSAqKWFj
Y2Vzc2liaWxpdHlCb3VuZHNGb3JSYW5nZUF0dHJpYnV0ZUZvclBhcmFtZXRlcjooaWQpcGFyYW1l
dGVyOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4uaAppbmRleCAxZDU1NjEwLi4yNzkxODY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTQ0LDYgKzQ0LDcg
QEAgT0JKQ19DTEFTUyBOU0FycmF5OwogT0JKQ19DTEFTUyBQREZBbm5vdGF0aW9uOwogT0JKQ19D
TEFTUyBQREZMYXllckNvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFBERlNlbGVjdGlvbjsKK09CSkNf
Q0xBU1MgV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0OwogT0JKQ19DTEFTUyBXS1BERkxh
eWVyQ29udHJvbGxlckRlbGVnYXRlOwogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CkBAIC04OSw2ICs5
MCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGF0dGVtcHRUb1VubG9ja1BERihjb25zdCBTdHJp
bmcmIHBhc3N3b3JkKTsKIAorICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0RnJvbVBERlZp
ZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBjb25zdDsKKyAgICBXZWJDb3Jl
OjpJbnRSZWN0IGJvdW5kc09uU2NyZWVuKCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBzaG93Q29u
dGV4dE1lbnVBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgUERGUGx1Z2luKFdlYkZyYW1lKik7CiAKQEAgLTEzMiw2ICsxMzgsNyBAQCBw
cml2YXRlOgogICAgIE5TRXZlbnQgKm5zRXZlbnRGb3JXZWJNb3VzZUV2ZW50KGNvbnN0IFdlYk1v
dXNlRXZlbnQmKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0RnJvbVBsdWdpblRvUERG
Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0OwogICAgIFdlYkNvcmU6OkludFBv
aW50IGNvbnZlcnRGcm9tUm9vdFZpZXdUb1BsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
IGNvbnN0OworICAgIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZp
ZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdDsKICAgICAKICAgICBib29sIHN1cHBv
cnRzRm9ybXMoKTsKICAgICBib29sIGlzRnVsbEZyYW1lUGx1Z2luKCk7CkBAIC0xNDAsOCArMTQ3
LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY3JlYXRlUGFzc3dvcmRFbnRyeUZvcm0oKTsKIAot
ICAgIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdDsKLQogICAgIHZpcnR1YWwgTlNEYXRhICpsaXZlRGF0
YSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgZW51bSBVcGRhdGVDdXJzb3JNb2RlIHsKQEAgLTE1
NiwxMiArMTYxLDE1IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZUN1cnNvcihjb25zdCBX
ZWJNb3VzZUV2ZW50JiwgVXBkYXRlQ3Vyc29yTW9kZSA9IFVwZGF0ZUlmTmVlZGVkKTsKIAorICAg
IHZpcnR1YWwgTlNPYmplY3QgKmFjY2Vzc2liaWxpdHlPYmplY3QoKSBjb25zdCBPVkVSUklERTsK
KwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2NvbnRhaW5lckxheWVyOwogICAgIFJldGFpblB0
cjxDQUxheWVyPiBtX2NvbnRlbnRMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9ob3Jp
em9udGFsU2Nyb2xsYmFyTGF5ZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fdmVydGljYWxT
Y3JvbGxiYXJMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxDb3JuZXJMYXll
cjsKICAgICBSZXRhaW5QdHI8UERGTGF5ZXJDb250cm9sbGVyPiBtX3BkZkxheWVyQ29udHJvbGxl
cjsKKyAgICBSZXRhaW5QdHI8V0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0PiBtX2FjY2Vz
c2liaWxpdHlPYmplY3Q7CiAgICAgCiAgICAgUmVmUHRyPFBERlBsdWdpbkFubm90YXRpb24+IG1f
YWN0aXZlQW5ub3RhdGlvbjsKICAgICBSZWZQdHI8UERGUGx1Z2luUGFzc3dvcmRGaWVsZD4gbV9w
YXNzd29yZEZpZWxkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5tbQppbmRleCBlOTk4OWVjLi43NzAzNjQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtNDUsNiAr
NDUsNyBAQAogI2ltcG9ydCAiV2ViUGFnZS5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5TWVzc2Fn
ZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKKyNpbXBvcnQgIldLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3QuaCIKICNpbXBvcnQgPFBERktpdC9QREZLaXQuaD4KICNpbXBvcnQgPFF1YXJ0
ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KQEAgLTY0LDYg
KzY1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyVGhlbWUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVVVJRC5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjaW1wb3J0
IDx3dGYvQ3VycmVudFRpbWUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEw
MCwxOCArMTAyLDE2OSBAQCBzdGF0aWMgY29uc3QgY2hhciogYW5ub3RhdGlvblN0eWxlID0KIC8v
IHdpbGwganVtcCB0byB0aGUgbmV4dCBvciBwcmV2aW91cyBwYWdlLCB0byBtYXRjaCBQREZLaXQg
YmVoYXZpb3IuCiBzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRTY3JvbGxNYWduaXR1ZGVUaHJlc2hv
bGRGb3JQYWdlRmxpcCA9IDIwOwogCi1AaW50ZXJmYWNlIFdLUERGUGx1Z2luU2Nyb2xsYmFyTGF5
ZXIgOiBDQUxheWVyCitAaW50ZXJmYWNlIFdLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9iamVjdCA6
IE5TT2JqZWN0CisKK0Bwcm9wZXJ0eShhc3NpZ24pIFBERkxheWVyQ29udHJvbGxlciAqcGRmTGF5
ZXJDb250cm9sbGVyOworQHByb3BlcnR5KGFzc2lnbikgTlNPYmplY3QgKnBhcmVudDsKK0Bwcm9w
ZXJ0eShhc3NpZ24pIFdlYktpdDo6UERGUGx1Z2luKiBwZGZQbHVnaW47CisKKy0gKGlkKWluaXRX
aXRoUERGUGx1Z2luOihXZWJLaXQ6OlBERlBsdWdpbiAqKXBsdWdpbjsKKworQGVuZAorCitAaW1w
bGVtZW50YXRpb24gV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0CisKK0BzeW50aGVzaXpl
IHBkZkxheWVyQ29udHJvbGxlciA9IF9wZGZMYXllckNvbnRyb2xsZXI7CitAc3ludGhlc2l6ZSBw
YXJlbnQgPSBfcGFyZW50OworQHN5bnRoZXNpemUgcGRmUGx1Z2luID0gX3BkZlBsdWdpbjsKKwor
LSAoaWQpaW5pdFdpdGhQREZQbHVnaW46KFdlYktpdDo6UERGUGx1Z2luICopcGx1Z2luCiB7Ci0g
ICAgV2ViS2l0OjpQREZQbHVnaW4qIF9wZGZQbHVnaW47CisgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfcGRmUGx1Z2luID0gcGx1Z2lu
OworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzSWdub3Jl
ZAoreworICAgIHJldHVybiBOTzsKK30KKworLSAoaWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOihOU1N0cmluZyAqKWF0dHJpYnV0ZQoreworICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4g
X3BhcmVudDsKKyAgICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbX3BkZkxheWVyQ29udHJv
bGxlciBhY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdOworICAgIGVsc2UgaWYgKFthdHRyaWJ1
dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dEF0dHJpYnV0ZV0p
CisgICAgICAgIHJldHVybiBbX3BkZkxheWVyQ29udHJvbGxlciBhY2Nlc3NpYmlsaXR5U2VsZWN0
ZWRUZXh0QXR0cmlidXRlXTsKKyAgICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRSYW5nZUF0dHJpYnV0ZV0pCisgICAgICAgIHJl
dHVybiBbX3BkZkxheWVyQ29udHJvbGxlciBhY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFuZ2VB
dHRyaWJ1dGVdOworICAgIGVsc2UgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eU51bWJlck9mQ2hhcmFjdGVyc0F0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBb
X3BkZkxheWVyQ29udHJvbGxlciBhY2Nlc3NpYmlsaXR5TnVtYmVyT2ZDaGFyYWN0ZXJzQXR0cmli
dXRlXTsKKyAgICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gW19w
ZGZMYXllckNvbnRyb2xsZXIgYWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZUF0dHJp
YnV0ZV07CisgICAgZWxzZSBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5VG9wTGV2ZWxVSUVsZW1lbnRBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gW19wYXJl
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRvcExldmVsVUlF
bGVtZW50QXR0cmlidXRlXTsKKyAgICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtfcGRmTGF5
ZXJDb250cm9sbGVyIGFjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlXTsKKyAgICBlbHNlIGlmIChb
YXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25B
dHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gW19wZGZMYXllckNvbnRyb2xsZXIgYWNjZXNzaWJp
bGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CisgICAgZWxzZSBpZiAoW2F0dHJpYnV0ZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRlXSkKKyAgICAgICAg
cmV0dXJuIFtfcGFyZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlXaW5kb3dBdHRyaWJ1dGVdOworICAgIGVsc2UgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gW05TVmFs
dWUgdmFsdWVXaXRoU2l6ZTpfcGRmUGx1Z2luLT5ib3VuZHNPblNjcmVlbigpLnNpemUoKV07Cisg
ICAgZWxzZSBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Rm9j
dXNlZEF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbX3BhcmVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZV07CisgICAgZWxzZSBp
ZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJp
YnV0ZV0pCisgICAgICAgIHJldHVybiBbX3BhcmVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZV07CisgICAgZWxzZSBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGVdKQor
ICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6X3BkZlBsdWdpbi0+Ym91bmRz
T25TY3JlZW4oKS5sb2NhdGlvbigpXTsKKworICAgIHJldHVybiAwOworfQorCistIChpZClhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyaW5nICopYXR0cmlidXRlIGZvclBhcmFtZXRl
cjooaWQpcGFyYW1ldGVyCit7CisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eUJvdW5kc0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKKyAg
ICAgICAgTlNSZWN0IGJvdW5kc0luUERGVmlld0Nvb3JkaW5hdGVzID0gW1tfcGRmTGF5ZXJDb250
cm9sbGVyIGFjY2Vzc2liaWxpdHlCb3VuZHNGb3JSYW5nZUF0dHJpYnV0ZUZvclBhcmFtZXRlcjpw
YXJhbWV0ZXJdIHJlY3RWYWx1ZV07CisgICAgICAgIE5TUmVjdCBib3VuZHNJblNjcmVlbkNvb3Jk
aW5hdGVzID0gX3BkZlBsdWdpbi0+Y29udmVydEZyb21QREZWaWV3VG9TY3JlZW4oYm91bmRzSW5Q
REZWaWV3Q29vcmRpbmF0ZXMpOworICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmVj
dDpib3VuZHNJblNjcmVlbkNvb3JkaW5hdGVzXTs7CisgICAgfSBlbHNlIGlmIChbYXR0cmlidXRl
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlMaW5lRm9ySW5kZXhQYXJhbWV0ZXJpemVk
QXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtfcGRmTGF5ZXJDb250cm9sbGVyIGFjY2Vzc2li
aWxpdHlMaW5lRm9ySW5kZXhBdHRyaWJ1dGVGb3JQYXJhbWV0ZXI6cGFyYW1ldGVyXTsKKyAgICBl
bHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSYW5nZUZv
ckxpbmVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtfcGRmTGF5ZXJD
b250cm9sbGVyIGFjY2Vzc2liaWxpdHlSYW5nZUZvckxpbmVBdHRyaWJ1dGVGb3JQYXJhbWV0ZXI6
cGFyYW1ldGVyXTsKKyAgICBlbHNlIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlTdHJpbmdGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKQorICAgICAg
ICByZXR1cm4gW19wZGZMYXllckNvbnRyb2xsZXIgYWNjZXNzaWJpbGl0eVN0cmluZ0ZvclJhbmdl
QXR0cmlidXRlRm9yUGFyYW1ldGVyOnBhcmFtZXRlcl07CisKKyAgICByZXR1cm4gMDsKK30KKwor
LSAoQ1BSZWFkaW5nTW9kZWwgKilyZWFkaW5nTW9kZWwKK3sKKyAgICByZXR1cm4gW19wZGZMYXll
ckNvbnRyb2xsZXIgcmVhZGluZ01vZGVsXTsKK30KKworLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVOYW1lcworeworICAgIHN0YXRpYyBOU0FycmF5ICphdHRyaWJ1dGVOYW1lcyA9
IDA7CisKKyAgICBpZiAoIWF0dHJpYnV0ZU5hbWVzKQorICAgICAgICBhdHRyaWJ1dGVOYW1lcyA9
IFtbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRl
LAorICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0QXR0cmlidXRlLAorICAg
ICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGUsCisgICAg
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlOdW1iZXJPZkNoYXJhY3RlcnNBdHRyaWJ1dGUsCisgICAg
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGUsCisg
ICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGUsCisgICAgICAgICAgICBO
U0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlLAorICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5
V2luZG93QXR0cmlidXRlLAorICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5VG9wTGV2ZWxVSUVs
ZW1lbnRBdHRyaWJ1dGUsCisgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRp
b25BdHRyaWJ1dGUsCisgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLAor
ICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZSwKKyAgICAgICAgICAg
IE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGUsCisgICAgICAgICAgICBOU0FjY2Vzc2li
aWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSwKKyAgICAgICAgICAgIG5pbF0gcmV0YWluXTsKKworICAg
IHJldHVybiBhdHRyaWJ1dGVOYW1lczsKK30KKworLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlB
Y3Rpb25OYW1lcworeworICAgIHN0YXRpYyBOU0FycmF5ICphY3Rpb25OYW1lcyA9IDA7CisgICAg
CisgICAgaWYgKCFhY3Rpb25OYW1lcykKKyAgICAgICAgYWN0aW9uTmFtZXMgPSBbW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNob3dNZW51QWN0aW9uXSByZXRhaW5dOwor
ICAgIAorICAgIHJldHVybiBhY3Rpb25OYW1lczsKK30KKworLSAodm9pZClhY2Nlc3NpYmlsaXR5
UGVyZm9ybUFjdGlvbjooTlNTdHJpbmcgKilhY3Rpb24KK3sKKyAgICBpZiAoW2FjdGlvbiBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2hvd01lbnVBY3Rpb25dKQorICAgICAgICBfcGRm
UGx1Z2luLT5zaG93Q29udGV4dE1lbnVBdFBvaW50KEludFJlY3QoSW50UG9pbnQoKSwgX3BkZlBs
dWdpbi0+c2l6ZSgpKS5jZW50ZXIoKSk7Cit9CisKKy0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzQXR0
cmlidXRlU2V0dGFibGU6KE5TU3RyaW5nICopYXR0cmlidXRlCit7CisgICAgcmV0dXJuIFtfcGRm
TGF5ZXJDb250cm9sbGVyIGFjY2Vzc2liaWxpdHlJc0F0dHJpYnV0ZVNldHRhYmxlOmF0dHJpYnV0
ZV07Cit9CisKKy0gKHZvaWQpYWNjZXNzaWJpbGl0eVNldFZhbHVlOihpZCl2YWx1ZSBmb3JBdHRy
aWJ1dGU6KE5TU3RyaW5nICopYXR0cmlidXRlCit7CisgICAgcmV0dXJuIFtfcGRmTGF5ZXJDb250
cm9sbGVyIGFjY2Vzc2liaWxpdHlTZXRWYWx1ZTp2YWx1ZSBmb3JBdHRyaWJ1dGU6YXR0cmlidXRl
XTsKK30KKworLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVkQXR0cmlidXRl
TmFtZXMKK3sKKyAgICByZXR1cm4gW19wZGZMYXllckNvbnRyb2xsZXIgYWNjZXNzaWJpbGl0eVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lc107CiB9CiAKKy0gKGlkKWFjY2Vzc2liaWxpdHlGb2N1
c2VkVUlFbGVtZW50Cit7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKGlkKWFjY2Vzc2liaWxp
dHlIaXRUZXN0OihOU1BvaW50KXBvaW50Cit7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BlbmQK
KworCitAaW50ZXJmYWNlIFdLUERGUGx1Z2luU2Nyb2xsYmFyTGF5ZXIgOiBDQUxheWVyCisKIEBw
cm9wZXJ0eShhc3NpZ24pIFdlYktpdDo6UERGUGx1Z2luKiBwZGZQbHVnaW47CiAKIEBlbmQKIAog
QGltcGxlbWVudGF0aW9uIFdLUERGUGx1Z2luU2Nyb2xsYmFyTGF5ZXIKIAotQHN5bnRoZXNpemUg
cGRmUGx1Z2luPV9wZGZQbHVnaW47CitAc3ludGhlc2l6ZSBwZGZQbHVnaW4gPSBfcGRmUGx1Z2lu
OwogCiAtIChpZClpbml0V2l0aFBERlBsdWdpbjooV2ViS2l0OjpQREZQbHVnaW4gKilwbHVnaW4K
IHsKQEAgLTI1Miw2ICs0MDUsMTAgQEAgUERGUGx1Z2luOjpQREZQbHVnaW4oV2ViRnJhbWUqIGZy
YW1lKQogICAgICAgICBkb2N1bWVudC0+Ym9keSgpLT5hcHBlbmRDaGlsZChtX2Fubm90YXRpb25D
b250YWluZXIuZ2V0KCkpOwogICAgIH0KIAorICAgIG1fYWNjZXNzaWJpbGl0eU9iamVjdCA9IGFk
b3B0TlMoW1tXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3QgYWxsb2NdIGluaXRXaXRoUERG
UGx1Z2luOnRoaXNdKTsKKyAgICBtX2FjY2Vzc2liaWxpdHlPYmplY3QuZ2V0KCkucGRmTGF5ZXJD
b250cm9sbGVyID0gbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCk7CisgICAgbV9hY2Nlc3NpYmls
aXR5T2JqZWN0LmdldCgpLnBhcmVudCA9IHdlYkZyYW1lKCktPnBhZ2UoKS0+YWNjZXNzaWJpbGl0
eVJlbW90ZU9iamVjdCgpOworCiAgICAgW21fY29udGFpbmVyTGF5ZXIuZ2V0KCkgYWRkU3VibGF5
ZXI6bV9jb250ZW50TGF5ZXIuZ2V0KCldOwogICAgIFttX2NvbnRhaW5lckxheWVyLmdldCgpIGFk
ZFN1YmxheWVyOm1fc2Nyb2xsQ29ybmVyTGF5ZXIuZ2V0KCldOwogfQpAQCAtNDU2LDE0ICs2MTMs
NDUgQEAgUGxhdGZvcm1MYXllciogUERGUGx1Z2luOjpwbHVnaW5MYXllcigpCiAgICAgcmV0dXJu
IG1fY29udGFpbmVyTGF5ZXIuZ2V0KCk7CiB9CiAKK0ludFBvaW50IFBERlBsdWdpbjo6Y29udmVy
dEZyb21QbHVnaW5Ub1BERlZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAoreworICAg
IHJldHVybiBJbnRQb2ludChwb2ludC54KCksIHNpemUoKS5oZWlnaHQoKSAtIHBvaW50LnkoKSk7
Cit9CisKIEludFBvaW50IFBERlBsdWdpbjo6Y29udmVydEZyb21Sb290Vmlld1RvUGx1Z2luKGNv
bnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yb290Vmlld1RvUGx1
Z2luVHJhbnNmb3JtLm1hcFBvaW50KHBvaW50KTsKIH0KIAotSW50UG9pbnQgUERGUGx1Z2luOjpj
b252ZXJ0RnJvbVBsdWdpblRvUERGVmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitJ
bnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIHJldHVybiBJbnRQb2ludChwb2ludC54KCksIHNp
emUoKS5oZWlnaHQoKSAtIHBvaW50LnkoKSk7CisgICAgSW50UG9pbnQgcG9pbnRJblBsdWdpbkNv
b3JkaW5hdGVzKHBvaW50LngoKSwgc2l6ZSgpLmhlaWdodCgpIC0gcG9pbnQueSgpKTsKKyAgICBy
ZXR1cm4gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS5tYXBQb2ludChwb2lu
dEluUGx1Z2luQ29vcmRpbmF0ZXMpOworfQorCitGbG9hdFJlY3QgUERGUGx1Z2luOjpjb252ZXJ0
RnJvbVBERlZpZXdUb1NjcmVlbihjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0Cit7CisgICAg
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmlldygpOwor
CisgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKKworICAg
IEZsb2F0UG9pbnQgb3JpZ2luSW5QbHVnaW5Db29yZGluYXRlcyhyZWN0LngoKSwgc2l6ZSgpLmhl
aWdodCgpIC0gcmVjdC55KCkgLSByZWN0LmhlaWdodCgpKTsKKyAgICBGbG9hdFJlY3QgcmVjdElu
Um9vdFZpZXdDb29yZGluYXRlcyA9IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNl
KCkubWFwUmVjdChGbG9hdFJlY3Qob3JpZ2luSW5QbHVnaW5Db29yZGluYXRlcywgcmVjdC5zaXpl
KCkpKTsKKworICAgIHJldHVybiBmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3JlZW4oZW5jbG9zaW5n
SW50UmVjdChyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKSk7Cit9CisKK0ludFJlY3QgUERGUGx1
Z2luOjpib3VuZHNPblNjcmVlbigpIGNvbnN0Cit7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcg
PSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmlldygpOworCisgICAgaWYgKCFmcmFtZVZpZXcp
CisgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisKKyAgICBGbG9hdFJlY3QgYm91bmRzID0gRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKTsKKyAgICBGbG9hdFJlY3QgcmVjdEluUm9vdFZp
ZXdDb29yZGluYXRlcyA9IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkubWFw
UmVjdChib3VuZHMpOworICAgIHJldHVybiBmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3JlZW4oZW5j
bG9zaW5nSW50UmVjdChyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKSk7CiB9CiAKIHZvaWQgUERG
UGx1Z2luOjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25z
dCBJbnRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNm
b3JtKQpAQCAtNzAwLDEzICs4ODgsMjAgQEAgYm9vbCBQREZQbHVnaW46OmhhbmRsZU1vdXNlTGVh
dmVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAgICAg
Ci1ib29sIFBERlBsdWdpbjo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChjb25zdCBXZWJNb3VzZUV2
ZW50JiBldmVudCkKK2Jvb2wgUERGUGx1Z2luOjpzaG93Q29udGV4dE1lbnVBdFBvaW50KGNvbnN0
IEludFBvaW50JiBwb2ludCkKIHsKLSAgICBOU01lbnUgKm5zTWVudSA9IFttX3BkZkxheWVyQ29u
dHJvbGxlci5nZXQoKSBtZW51Rm9yRXZlbnQ6bnNFdmVudEZvcldlYk1vdXNlRXZlbnQoZXZlbnQp
XTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpLT52
aWV3KCk7CisgICAgSW50UG9pbnQgY29udGVudHNQb2ludCA9IGZyYW1lVmlldy0+Y29udGVudHNU
b1Jvb3RWaWV3KHBvaW50KTsKKyAgICBXZWJNb3VzZUV2ZW50IGV2ZW50KFdlYkV2ZW50OjpNb3Vz
ZURvd24sIFdlYk1vdXNlRXZlbnQ6OlJpZ2h0QnV0dG9uLCBjb250ZW50c1BvaW50LCBjb250ZW50
c1BvaW50LCAwLCAwLCAwLCAxLCBzdGF0aWNfY2FzdDxXZWJFdmVudDo6TW9kaWZpZXJzPigwKSwg
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOworICAgIHJldHVybiBoYW5kbGVDb250ZXh0
TWVudUV2ZW50KGV2ZW50KTsKK30KIAorYm9vbCBQREZQbHVnaW46OmhhbmRsZUNvbnRleHRNZW51
RXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCit7CiAgICAgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmlldygpOwogICAgIEludFBvaW50IHBv
aW50ID0gZnJhbWVWaWV3LT5jb250ZW50c1RvU2NyZWVuKEludFJlY3QoZnJhbWVWaWV3LT53aW5k
b3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpLCBJbnRTaXplKCkpKS5sb2NhdGlvbigpOwot
ICAgIGlmIChuc01lbnUpIHsKKyAgICAKKyAgICBpZiAoTlNNZW51ICpuc01lbnUgPSBbbV9wZGZM
YXllckNvbnRyb2xsZXIuZ2V0KCkgbWVudUZvckV2ZW50Om5zRXZlbnRGb3JXZWJNb3VzZUV2ZW50
KGV2ZW50KV0pIHsKICAgICAgICAgV0tQb3B1cENvbnRleHRNZW51KG5zTWVudSwgcG9pbnQpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC05MTEsMTIgKzExMDYsNiBAQCB2b2lkIFBE
RlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZChOU0FycmF5ICppdGVtcywgTlNBcnJheSAq
dHlwZXMpCiAgICAgfQogfQogCi1JbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmll
d1RvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAotewotICAgIEludFBvaW50
IHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyhwb2ludC54KCksIHNpemUoKS5oZWlnaHQoKSAtIHBv
aW50LnkoKSk7Ci0gICAgcmV0dXJuIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNl
KCkubWFwUG9pbnQocG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKLX0KLQogdm9pZCBQREZQbHVn
aW46OnNob3dEZWZpbml0aW9uRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcg
KnN0cmluZywgQ0dQb2ludCBwb2ludCkKIHsKICAgICBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rp
b25hcnlQb3B1cEluZm87CkBAIC0xMTA2LDYgKzEyOTUsMTEgQEAgTlNEYXRhICpQREZQbHVnaW46
OmxpdmVEYXRhKCkgY29uc3QKICAgICByZXR1cm4gU2ltcGxlUERGUGx1Z2luOjpsaXZlRGF0YSgp
OwogfQogCitOU09iamVjdCAqUERGUGx1Z2luOjphY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9hY2Nlc3NpYmlsaXR5T2JqZWN0LmdldCgpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShQREZLSVRfUExVR0lOKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVn
aW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1
Z2luLmgKaW5kZXggMDhkYTc1YS4uNGI2ZWQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5oCkBAIC01NiwxMyAr
NTYsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0JlaW5nQXN5bmNocm9ub3VzbHlJ
bml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2b2lkIGRpZE11dGF0
ZVBERkRvY3VtZW50KCkgeyBtX3BkZkRvY3VtZW50V2FzTXV0YXRlZCA9IHRydWU7IH0KKyAgICAK
KyAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAog
cHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNpbXBsZVBERlBsdWdpbihXZWJGcmFtZSopOwogCiAg
ICAgV2ViRnJhbWUqIHdlYkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQogCi0gICAg
V2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgdm9p
ZCBzZXRTaXplKFdlYkNvcmU6OkludFNpemUgc2l6ZSkgeyBtX3NpemUgPSBzaXplOyB9CiAKICAg
ICBSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9w
ZGZEb2N1bWVudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5o
CmluZGV4IGVkYzQyYjAuLjNlNWQ4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmgKQEAgLTM4LDYgKzM4LDcgQEAKICNpZiBQTEFURk9STShNQUMpCiAjaW5j
bHVkZSAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogCitPQkpDX0NMQVNTIE5TT2JqZWN0OwogT0JK
Q19DTEFTUyBQREZEb2N1bWVudDsKICNlbmRpZgogCkBAIC0yNTYsNiArMjU3LDcgQEAgcHVibGlj
OgogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZpcnR1YWwgUmV0YWluUHRyPFBERkRvY3VtZW50
PiBwZGZEb2N1bWVudEZvclByaW50aW5nKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1
YWwgTlNPYmplY3QgKmFjY2Vzc2liaWxpdHlPYmplY3QoKSBjb25zdCB7IHJldHVybiAwOyB9CiAj
ZW5kaWYKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgY291bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJp
bmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAppbmRleCA0N2Q2ODE5Li5jZDNlOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC01MTksNyArNTE5LDE0IEBAIHZvaWQg
UGx1Z2luVmlldzo6c2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlIGxheWVySG9z
dGluZ01vZGUpCiAKICAgICBtX3BsdWdpbi0+c2V0TGF5ZXJIb3N0aW5nTW9kZShsYXllckhvc3Rp
bmdNb2RlKTsKIH0KLQorICAgIAorTlNPYmplY3QgKlBsdWdpblZpZXc6OmFjY2Vzc2liaWxpdHlP
YmplY3QoKSBjb25zdAoreworICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIG1fcGx1Z2luLT5hY2Nlc3NpYmls
aXR5T2JqZWN0KCk7Cit9CiAjZW5kaWYKIAogdm9pZCBQbHVnaW5WaWV3Ojppbml0aWFsaXplUGx1
Z2luKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
CmluZGV4IGM2Y2Q1ODguLmQwYTJhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNzYsNiArNzYsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzZW5kQ29tcGxleFRleHRJbnB1dCh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiB0ZXh0SW5wdXQpOwogICAgIHZvaWQgc2V0TGF5ZXJIb3N0
aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKTsKICAgICBSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBk
ZkRvY3VtZW50Rm9yUHJpbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbi0+cGRmRG9jdW1l
bnRGb3JQcmludGluZygpOyB9CisgICAgTlNPYmplY3QgKmFjY2Vzc2liaWxpdHlPYmplY3QoKSBj
b25zdDsKICNlbmRpZgogCiAgICAgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbkVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkVsZW1lbnQuZ2V0KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGFjOTUzYjkuLmI2NWRi
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
NDY1LDYgKzQ2NSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCByZWdp
c3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVy
ZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rv
a2VuKTsKICAgICBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5UmVt
b3RlT2JqZWN0KCk7CisgICAgTlNPYmplY3QgKmFjY2Vzc2liaWxpdHlPYmplY3RGb3JNYWluRnJh
bWVQbHVnaW4oKTsKICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBhY2Nlc3NpYmlsaXR5
UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FjY2Vzc2liaWxpdHlQb3NpdGlvbjsgfQogICAg
IAogICAgIHZvaWQgc2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbih1aW50NjRfdCBwbHVnaW5D
b21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0ZXh0SW5wdXQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tCmluZGV4IDY3MjFiNDEuLjY1OWZk
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tB
Y2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0KQEAgLTQ2LDYg
KzQ2LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgaWYgKCFXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQogICAgICAgICBXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5KCk7CiAKKyAgICBOU09iamVjdCogbWFpbkZy
YW1lUGx1Z2luQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgPSBtX3BhZ2UtPmFjY2Vzc2liaWxp
dHlPYmplY3RGb3JNYWluRnJhbWVQbHVnaW4oKTsKKyAgICBpZiAobWFpbkZyYW1lUGx1Z2luQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIpCisgICAgICAgIHJldHVybiBtYWluRnJhbWVQbHVnaW5B
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjsKKwogICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSBt
X3BhZ2UtPmNvcmVQYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gbmlsOwpA
QCAtMTE5LDcgKzEyMyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgaWQgd3JhcHBl
ciA9IFtzZWxmIGFjY2Vzc2liaWxpdHlSb290T2JqZWN0V3JhcHBlcl07CiAgICAgaWYgKCF3cmFw
cGVyKQogICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOwotICAgIAorCiAgICAgcmV0dXJu
IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDp3cmFwcGVyXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDY3MzVj
OGMuLmMzYzFmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTk3LDYgKzk3LDE4IEBAIHZvaWQgV2ViUGFnZTo6cGxh
dGZvcm1Jbml0aWFsaXplKCkKICAgICBtX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IG1vY2tB
Y2Nlc3NpYmlsaXR5RWxlbWVudDsKIH0KIAorTlNPYmplY3QgKldlYlBhZ2U6OmFjY2Vzc2liaWxp
dHlPYmplY3RGb3JNYWluRnJhbWVQbHVnaW4oKQoreworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFn
ZS0+bWFpbkZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZpZXdGb3JGcmFtZShmcmFtZSkp
CisgICAgICAgIHJldHVybiBwbHVnaW5WaWV3LT5hY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CisKKyAg
ICByZXR1cm4gMDsKK30KKwogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hh
bmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogewogICAgIGlmIChXZWJJbnNw
ZWN0b3IqIGluc3BlY3RvciA9IHRoaXMtPmluc3BlY3RvcigpKQo=
</data>
<flag name="review"
          id="224241"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>