<?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>118715</bug_id>
          
          <creation_ts>2013-07-15 23:59:31 -0700</creation_ts>
          <short_desc>Web Inspector: InspectorFrontendHost is undefined</short_desc>
          <delta_ts>2013-07-16 17:31:00 -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>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>118676</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Roland Takacs">rtakacs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>seokju</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>908707</commentid>
    <comment_count>0</comment_count>
    <who name="Roland Takacs">rtakacs</who>
    <bug_when>2013-07-15 23:59:31 -0700</bug_when>
    <thetext>It&apos;s needed to copy the InspectorFrontendHostStub.js from the old inspector (WebCore/inspector/front-end) and paste into the Safari inspector UI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908708</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-07-15 23:59:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/14452747&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908712</commentid>
    <comment_count>2</comment_count>
      <attachid>206732</attachid>
    <who name="Roland Takacs">rtakacs</who>
    <bug_when>2013-07-16 00:10:25 -0700</bug_when>
    <thetext>Created attachment 206732
initial patch

Added InspectorFrontendHostStub.js
Added HelpScreen.js / css (from the old inspector) because there are some references in the InspectorFrontendHostStub.js.
Added View.js (from the old inspectror) because HelpScreen uses it.
Added a Preferences variable, because in InspectorFrontendHost uses it in the InspectorFrontendHostStub.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908746</commentid>
    <comment_count>3</comment_count>
    <who name="Seokju Kwon">seokju</who>
    <bug_when>2013-07-16 01:49:44 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=206732&amp;action=review

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:151
&gt; +        setTimeout(WebInspector.fileManager.appendedToURL.bind(WebInspector.fileManager, url), 0);

Is there WebInspector.fileManager in New Inspector?

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:230
&gt; +Preferences.localizeUI = false;

Unused value?

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:275
&gt; +    __proto__: WebInspector.HelpScreen.prototype

I guess that HelpScreen does not exist in New Inspector UI Concept.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908874</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-07-16 06:56:07 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=206732&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:151
&gt; &gt; +        setTimeout(WebInspector.fileManager.appendedToURL.bind(WebInspector.fileManager, url), 0);
&gt; 
&gt; Is there WebInspector.fileManager in New Inspector?

There is not. So you can remove this.

&gt; &gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:230
&gt; &gt; +Preferences.localizeUI = false;
&gt; 
&gt; Unused value?

Yes, remove. We always localize when we can.

&gt; &gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:275
&gt; &gt; +    __proto__: WebInspector.HelpScreen.prototype
&gt; 
&gt; I guess that HelpScreen does not exist in New Inspector UI Concept.

It does not exist, and we don&apos;t want it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908876</commentid>
    <comment_count>5</comment_count>
      <attachid>206732</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-07-16 07:15:09 -0700</bug_when>
    <thetext>Comment on attachment 206732
initial patch

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

Thanks for doing this!

&gt; Source/WebInspectorUI/ChangeLog:12
&gt; +        There are some referenced files that also copied:
&gt; +            * View.js
&gt; +            * HelpScreen.js / css
&gt; +        Added a &apos;Preferences&apos; variable to the Setting.js because the InspectorFrontendHostStub.js uses it.

We want to be very selective when copying code from the deprecated Web Inspector. These things are items we don&apos;t want to bring over. This change should just have the bare minimum needed to add InspectorFrontendHostStub.js. I&apos;ve commented on the patch where you can remove these dependencies and still should get a working Inspector with the minimum required.

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:31
&gt; +if (!window.InspectorFrontendHost) {

You should indent the body of the block.

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:36
&gt; +/**
&gt; + * @constructor
&gt; + * @implements {InspectorFrontendHostAPI}
&gt; + */

We don&apos;t use. Remove.

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:40
&gt; +    this.isStub = true;

We don&apos;t use. Remove.

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:42
&gt; +    WebInspector.documentCopyEventFired = this.documentCopy.bind(this);

Remove.

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:91
&gt; +    setInjectedScriptForOrigin: function(origin, script)
&gt; +    {
&gt; +    },

We don&apos;t use. Remove.

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:104
&gt; +        document.title = WebInspector.UIString(Preferences.applicationTitle, url);

This should not use Preferences. In our UI url is really title. So rename url to title and just set document.title = title;

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:107
&gt; +    documentCopy: function(event)

I don&apos;t think we use this.

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:121
&gt; +            var screen = new WebInspector.ClipboardAccessDeniedScreen();
&gt; +            screen.showModal();

Remove. Just add a console.error.

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:141
&gt; +        setTimeout(WebInspector.fileManager.savedURL.bind(WebInspector.fileManager, url), 0);

We don&apos;t have fileManager. You can remove this.

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:151
&gt; +        setTimeout(WebInspector.fileManager.appendedToURL.bind(WebInspector.fileManager, url), 0);

Ditto.

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:163
&gt; +        var fileNameSuffix = (lastSlashIndex === -1) ? url : url.substring(lastSlashIndex + 1);

Remove () around (lastSlashIndex === -1).

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:165
&gt; +        var blob = new Blob(content, { type: &quot;application/octet-stream&quot; });

Remove spaces inside {} except after :.

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:178
&gt; +    sendMessageToBackend: function(message)
&gt; +    {
&gt; +    },

I don&apos;t like how sendMessageToBackend is replaced dynamically later by the WebSocket code. This function should just know how to use the WebSocket if it exists.

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:190
&gt; +    recordActionTaken: function(actionCode)
&gt; +    {
&gt; +    },
&gt; +
&gt; +    recordPanelShown: function(panelCode)
&gt; +    {
&gt; +    },
&gt; +
&gt; +    recordSettingChanged: function(settingCode)
&gt; +    {
&gt; +    },

We don&apos;t use these user tracking functions. Remove.

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:194
&gt; +        return loadXHR(url);

We don&apos;t have a loadXHR function. Just inline it here.

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:226
&gt; +    supportsFileSystems: function()
&gt; +    {
&gt; +        return false;
&gt; +    },
&gt; +
&gt; +    requestFileSystems: function()
&gt; +    {
&gt; +    },
&gt; +
&gt; +    addFileSystem: function()
&gt; +    {
&gt; +    },
&gt; +
&gt; +    removeFileSystem: function(fileSystemPath)
&gt; +    {
&gt; +    },
&gt; +
&gt; +    isolatedFileSystem: function(fileSystemId, registeredName)
&gt; +    {
&gt; +        return null;
&gt; +    },
&gt; +
&gt; +    setZoomFactor: function(zoom)
&gt; +    {
&gt; +    },
&gt; +
&gt; +    isUnderTest: function()
&gt; +    {
&gt; +        return false;
&gt; +    }

We don&apos;t use, remove.

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:230
&gt; +Preferences.localizeUI = false;

Remove.

&gt; Source/WebInspectorUI/UserInterface/InspectorFrontendHostStub.js:276
&gt; +// Default implementation; platforms will override.
&gt; +WebInspector.clipboardAccessDeniedMessage = function()
&gt; +{
&gt; +    return &quot;&quot;;
&gt; +}
&gt; +
&gt; +/**
&gt; + * @constructor
&gt; + * @extends {WebInspector.HelpScreen}
&gt; + */
&gt; +WebInspector.ClipboardAccessDeniedScreen = function()
&gt; +{
&gt; +    WebInspector.HelpScreen.call(this, WebInspector.UIString(&quot;Clipboard access is denied&quot;));
&gt; +    var platformMessage = WebInspector.clipboardAccessDeniedMessage();
&gt; +    if (platformMessage) {
&gt; +        var p = this.contentElement.createChild(&quot;p&quot;);
&gt; +        p.addStyleClass(&quot;help-section&quot;);
&gt; +        p.textContent = platformMessage;
&gt; +    }
&gt; +}
&gt; +
&gt; +WebInspector.ClipboardAccessDeniedScreen.prototype = {
&gt; +    __proto__: WebInspector.HelpScreen.prototype
&gt; +}
&gt; +
&gt; +}
&gt; +
&gt; +/**
&gt; + * @constructor
&gt; + * @extends {WebInspector.HelpScreen}
&gt; + */
&gt; +WebInspector.RemoteDebuggingTerminatedScreen = function(reason)
&gt; +{
&gt; +    WebInspector.HelpScreen.call(this, WebInspector.UIString(&quot;Detached from the target&quot;));
&gt; +    var p = this.contentElement.createChild(&quot;p&quot;);
&gt; +    p.addStyleClass(&quot;help-section&quot;);
&gt; +    p.createChild(&quot;span&quot;).textContent = &quot;Remote debugging has been terminated with reason: &quot;;
&gt; +    p.createChild(&quot;span&quot;, &quot;error-message&quot;).textContent = reason;
&gt; +    p.createChild(&quot;br&quot;);
&gt; +    p.createChild(&quot;span&quot;).textContent = &quot;Please re-attach to the new target.&quot;;
&gt; +}
&gt; +
&gt; +WebInspector.RemoteDebuggingTerminatedScreen.prototype = {
&gt; +    __proto__: WebInspector.HelpScreen.prototype
&gt; +}

Remove.

&gt; Source/WebInspectorUI/UserInterface/Main.html:119
&gt; +    &lt;link rel=&quot;stylesheet&quot; href=&quot;HelpScreen.css&quot;&gt;

Remove.

&gt; Source/WebInspectorUI/UserInterface/Main.html:147
&gt; +    &lt;script src=&quot;View.js&quot;&gt;&lt;/script&gt;
&gt; +    &lt;script src=&quot;HelpScreen.js&quot;&gt;&lt;/script&gt;

Remove.

&gt; Source/WebInspectorUI/UserInterface/Setting.js:36
&gt; +var Preferences = {
&gt; +    localizeUI: true,
&gt; +    applicationTitle: &quot;Web Inspector - %s&quot;,
&gt; +}
&gt; +

Remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909066</commentid>
    <comment_count>6</comment_count>
      <attachid>206825</attachid>
    <who name="Seokju Kwon">seokju</who>
    <bug_when>2013-07-16 16:35:30 -0700</bug_when>
    <thetext>Created attachment 206825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909081</commentid>
    <comment_count>7</comment_count>
      <attachid>206825</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-16 17:30:58 -0700</bug_when>
    <thetext>Comment on attachment 206825
Patch

Clearing flags on attachment: 206825

Committed r152749: &lt;http://trac.webkit.org/changeset/152749&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909082</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-16 17:31:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206732</attachid>
            <date>2013-07-16 00:10:25 -0700</date>
            <delta_ts>2013-07-16 07:15:09 -0700</delta_ts>
            <desc>initial patch</desc>
            <filename>InspectorFrontendHost.diff</filename>
            <type>text/plain</type>
            <size>52254</size>
            <attacher name="Roland Takacs">rtakacs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDY3MTU4YzAuLjZhNGZiYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OSBAQAorMjAxMy0wNy0xNSAgUm9sYW5kIFRha8Oh
Y3MgIDxydGFrYWNzQGluZi51LXN6ZWdlZC5odT4KKworICAgICAgICBJbnNwZWN0b3JGcm9udGVu
ZEhvc3QgaXMgdW5kZWZpbmVkCisgICAgICAgIE5lZWQgdGhlIGJ1ZyBVUkwgKE9PUFMhKS4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3BpZWQgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcyBmcm9tIHRoZSBvbGQgaW5zcGVjdG9yIGJlY2F1c2Ug
b2YgdGhlIEluc3BlY3RvckZyb250ZW5kSG9zdCBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgVGhl
cmUgYXJlIHNvbWUgcmVmZXJlbmNlZCBmaWxlcyB0aGF0IGFsc28gY29waWVkOgorICAgICAgICAg
ICAgKiBWaWV3LmpzCisgICAgICAgICAgICAqIEhlbHBTY3JlZW4uanMgLyBjc3MKKyAgICAgICAg
QWRkZWQgYSAnUHJlZmVyZW5jZXMnIHZhcmlhYmxlIHRvIHRoZSBTZXR0aW5nLmpzIGJlY2F1c2Ug
dGhlIEluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanMgdXNlcyBpdC4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvSGVscFNjcmVlbi5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVscFNjcmVlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVscFNjcmVlbi5wcm90b3R5cGUu
X2NyZWF0ZUNsb3NlQnV0dG9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWxwU2NyZWVuLnBy
b3RvdHlwZS5zaG93TW9kYWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlbHBTY3JlZW4ucHJv
dG90eXBlLmhpZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlbHBTY3JlZW4ucHJvdG90eXBl
LmlzQ2xvc2luZ0tleSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVscFNjcmVlbi5wcm90b3R5
cGUuX29uS2V5RG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVscFNjcmVlbi5wcm90b3R5
cGUuX29uQmx1cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVscFNjcmVlblVudGlsUmVsb2Fk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWxwU2NyZWVuVW50aWxSZWxvYWQucHJvdG90eXBl
LndpbGxIaWRlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0luc3BlY3RvckZyb250ZW5kSG9z
dFN0dWIuanM6IEFkZGVkLgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVu
ZEhvc3RTdHViKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0
U3R1Yi5wcm90b3R5cGUucGxhdGZvcm0pOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0
b3JGcm9udGVuZEhvc3RTdHViLnByb3RvdHlwZS5wb3J0KToKKyAgICAgICAgKC5XZWJJbnNwZWN0
b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUuYnJpbmdUb0Zyb250KToKKyAg
ICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUu
Y2xvc2VXaW5kb3cpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhv
c3RTdHViLnByb3RvdHlwZS5yZXF1ZXN0U2V0RG9ja1NpZGUpOgorICAgICAgICAoLldlYkluc3Bl
Y3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLnByb3RvdHlwZS5zZXRBdHRhY2hlZFdpbmRv
d0hlaWdodCk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0
dWIucHJvdG90eXBlLnNldEF0dGFjaGVkV2luZG93V2lkdGgpOgorICAgICAgICAoLldlYkluc3Bl
Y3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLnByb3RvdHlwZS5tb3ZlV2luZG93QnkpOgor
ICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLnByb3RvdHlw
ZS5zZXRJbmplY3RlZFNjcmlwdEZvck9yaWdpbik6CisgICAgICAgICguV2ViSW5zcGVjdG9yLklu
c3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlLmxvYWRlZCk6CisgICAgICAgICguV2Vi
SW5zcGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlLmxvY2FsaXplZFN0
cmluZ3NVUkwpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RT
dHViLnByb3RvdHlwZS5pbnNwZWN0ZWRVUkxDaGFuZ2VkKToKKyAgICAgICAgKC5XZWJJbnNwZWN0
b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUuZG9jdW1lbnRDb3B5KToKKyAg
ICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUu
Y29weVRleHQpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RT
dHViLnByb3RvdHlwZS5vcGVuSW5OZXdUYWIpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNw
ZWN0b3JGcm9udGVuZEhvc3RTdHViLnByb3RvdHlwZS5jYW5TYXZlKToKKyAgICAgICAgKC5XZWJJ
bnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUuc2F2ZSk6CisgICAg
ICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlLmFw
cGVuZCk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIu
cHJvdG90eXBlLmNsb3NlLmNsZWFudXApOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0
b3JGcm9udGVuZEhvc3RTdHViLnByb3RvdHlwZS5jbG9zZSk6CisgICAgICAgICguV2ViSW5zcGVj
dG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlLnNlbmRNZXNzYWdlVG9CYWNr
ZW5kKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5w
cm90b3R5cGUucmVjb3JkQWN0aW9uVGFrZW4pOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNw
ZWN0b3JGcm9udGVuZEhvc3RTdHViLnByb3RvdHlwZS5yZWNvcmRQYW5lbFNob3duKToKKyAgICAg
ICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUucmVj
b3JkU2V0dGluZ0NoYW5nZWQpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9u
dGVuZEhvc3RTdHViLnByb3RvdHlwZS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAg
ICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUuc3Vw
cG9ydHNGaWxlU3lzdGVtcyk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckZyb250
ZW5kSG9zdFN0dWIucHJvdG90eXBlLnJlcXVlc3RGaWxlU3lzdGVtcyk6CisgICAgICAgICguV2Vi
SW5zcGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlLmFkZEZpbGVTeXN0
ZW0pOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLnBy
b3RvdHlwZS5yZW1vdmVGaWxlU3lzdGVtKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVj
dG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUuaXNvbGF0ZWRGaWxlU3lzdGVtKToKKyAgICAg
ICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUuc2V0
Wm9vbUZhY3Rvcik6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9z
dFN0dWIucHJvdG90eXBlLmlzVW5kZXJUZXN0KToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuY2xp
cGJvYXJkQWNjZXNzRGVuaWVkTWVzc2FnZSk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkNsaXBi
b2FyZEFjY2Vzc0RlbmllZFNjcmVlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlRGVi
dWdnaW5nVGVybWluYXRlZFNjcmVlbik6CisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0
bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9TZXR0aW5nLmpzOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlldy5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUuc3RhdHVzQmFySXRlbXMpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnN0YXR1c0JhclRleHQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLm1hcmtBc1Jvb3QpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLm1hcmtBc0xheW91dEJvdW5kYXJ5KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5wYXJlbnRWaWV3KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaWV3LnByb3RvdHlwZS5pc1Nob3dpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpZXcucHJvdG90eXBlLnNldEhpZGVPbkRldGFjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Vmlldy5wcm90b3R5cGUuX2luTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aWV3LnByb3RvdHlwZS5fcGFyZW50SXNTaG93aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aWV3LnByb3RvdHlwZS5fY2FsbE9uVmlzaWJsZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaWV3LnByb3RvdHlwZS5fcHJvY2Vzc1dpbGxTaG93KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaWV3LnByb3RvdHlwZS5fcHJvY2Vzc1dhc1Nob3duKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaWV3LnByb3RvdHlwZS5fcHJvY2Vzc1dpbGxIaWRlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaWV3LnByb3RvdHlwZS5fcHJvY2Vzc1dhc0hpZGRlbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlldy5wcm90b3R5cGUuX3Byb2Nlc3NPblJlc2l6ZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlldy5wcm90b3R5cGUuX25vdGlmeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmll
dy5wcm90b3R5cGUud2FzU2hvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90
eXBlLndpbGxIaWRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5vblJl
c2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUuc2hvdyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUuZGV0YWNoKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaWV3LnByb3RvdHlwZS5kZXRhY2hDaGlsZFZpZXdzKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaWV3LnByb3RvdHlwZS5lbGVtZW50c1RvUmVzdG9yZVNjcm9sbFBvc2l0aW9uc0Zv
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUuc3RvcmVTY3JvbGxQb3Np
dGlvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnJlc3RvcmVTY3Jv
bGxQb3NpdGlvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmNhbkhp
Z2hsaWdodExpbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmhpZ2hs
aWdodExpbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmRvUmVzaXpl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5yZWdpc3RlclJlcXVpcmVk
Q1NTKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5fbG9hZENTU0lmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5fZG9Mb2FkQ1NTKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5fZGlzYWJsZUNTU0lmTmVlZGVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5fZG9VbmxvYWRDU1MpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnByaW50Vmlld0hpZXJhcmNoeSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUuX2NvbGxlY3RWaWV3SGllcmFy
Y2h5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5kZWZhdWx0Rm9jdXNl
ZEVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnNldERlZmF1
bHRGb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUu
Zm9jdXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLm1lYXN1cmVQcmVm
ZXJyZWRTaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3Ll9pbmNyZW1lbnRWaWV3Q291
bnRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5fZGVjcmVtZW50Vmlld0NvdW50ZXIp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcuX2Fzc2VydCk6CisgICAgICAgIChFbGVtZW50
LnByb3RvdHlwZS5hcHBlbmRDaGlsZCk6CisgICAgICAgIChFbGVtZW50LnByb3RvdHlwZS5pbnNl
cnRCZWZvcmUpOgorICAgICAgICAoRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQpOgorICAg
ICAgICAoRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW4pOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvaGVscFNjcmVlbi5jc3M6IEFkZGVkLgorICAgICAgICAoLmhlbHAtd2luZG93LW91
dGVyKToKKyAgICAgICAgKC5oZWxwLXdpbmRvdy1tYWluKToKKyAgICAgICAgKC5oZWxwLXdpbmRv
dy1jYXB0aW9uKToKKyAgICAgICAgKC5oZWxwLXdpbmRvdy10aXRsZSk6CisgICAgICAgICguaGVs
cC1jb250ZW50KToKKyAgICAgICAgKC5oZWxwLXdpbmRvdy1tYWluIDo6LXdlYmtpdC1zY3JvbGxi
YXIpOgorICAgICAgICAoLmhlbHAtd2luZG93LW1haW4gOjotd2Via2l0LXJlc2l6ZXIpOgorICAg
ICAgICAoLmhlbHAtd2luZG93LW1haW4gOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjp2ZXJ0aWNh
bCk6CisgICAgICAgICguaGVscC13aW5kb3ctbWFpbiA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1i
OnZlcnRpY2FsOmFjdGl2ZSk6CisgICAgICAgICguaGVscC13aW5kb3ctbWFpbiA6Oi13ZWJraXQt
c2Nyb2xsYmFyLXRyYWNrOnZlcnRpY2FsKToKKyAgICAgICAgKC5oZWxwLWNsb3NlLWJ1dHRvbik6
CisgICAgICAgICgjc2V0dGluZ3Mtc2NyZWVuIC5oZWxwLWNsb3NlLWJ1dHRvbik6CisgICAgICAg
IChib2R5LmRvY2stdG8tYm90dG9tIC5oZWxwLWNvbnRlbnQpOgorICAgICAgICAoLmhlbHAtY2xv
c2UtYnV0dG9uOmhvdmVyKToKKyAgICAgICAgKGJvZHkucGxhdGZvcm0tbWFjIC5oZWxwLXdpbmRv
dy1tYWluIC50YWJiZWQtcGFuZS1oZWFkZXItY29udGVudHMpOgorICAgICAgICAoYm9keS5wbGF0
Zm9ybS1tYWMgLmhlbHAtd2luZG93LW1haW4gLmhlbHAtd2luZG93LXRpdGxlKToKKyAgICAgICAg
KC5oZWxwLWNvbnRhaW5lcik6CisgICAgICAgIChib2R5LnBsYXRmb3JtLW1hYyAuc2V0dGluZ3Mt
dGFiLmhlbHAtY29udGFpbmVyKToKKyAgICAgICAgKGJvZHkucGxhdGZvcm0tbWFjIC5oZWxwLWNv
bnRhaW5lcik6CisgICAgICAgICguaGVscC1ibG9jayk6CisgICAgICAgIChib2R5LnBsYXRmb3Jt
LW1hYyAuc2V0dGluZ3MtdGFiIC5oZWxwLWJsb2NrKToKKyAgICAgICAgKCNkcmF3ZXItY29udGVu
dHMgLnNldHRpbmdzLXRhYik6CisgICAgICAgICguc2V0dGluZ3MtdGFiLmhlbHAtY29udGFpbmVy
KToKKyAgICAgICAgKC5zZXR0aW5ncy10YWIgLmhlbHAtYmxvY2spOgorICAgICAgICAoLmhlbHAt
bGluZSk6CisgICAgICAgICguaGVscC1rZXktY2VsbCk6CisgICAgICAgIChib2R5LnBsYXRmb3Jt
LW1hYyAuaGVscC1rZXktY2VsbCk6CisgICAgICAgICguaGVscC1jZWxsKToKKyAgICAgICAgKC5o
ZWxwLXNlY3Rpb24tdGl0bGUpOgorICAgICAgICAoLmhlbHAta2V5KToKKyAgICAgICAgKGJvZHku
cGxhdGZvcm0tbWFjIC5oZWxwLWtleSk6CisgICAgICAgICguaGVscC1jb21iaW5lLWtleXMsIC5o
ZWxwLWtleS1kZWxpbWl0ZXIpOgorICAgICAgICAoLmhlbHAtY29tYmluZS1rZXlzKToKKyAgICAg
ICAgKC5oZWxwLWtleS1kZWxpbWl0ZXIpOgorICAgICAgICAoLmhlbHAtY29udGVudCBwKToKKyAg
ICAgICAgKC5oZWxwLWNvbnRlbnQgZmllbGRzZXQpOgorICAgICAgICAoYm9keS5wbGF0Zm9ybS1t
YWMgLnNldHRpbmdzLXRhYi5oZWxwLWNvbnRlbnQgZmllbGRzZXQpOgorICAgICAgICAoLmhlbHAt
Y29udGVudCBmaWVsZHNldCBwKToKKyAgICAgICAgKC5oZWxwLWNvbnRlbnQgZmllbGRzZXQgbGFi
ZWwpOgorICAgICAgICAoLmhlbHAtY29udGVudCBwLmhlbHAtc2VjdGlvbik6CisgICAgICAgICgu
c2V0dGluZ3MtZXhwZXJpbWVudHMtd2FybmluZy1zdWJzZWN0aW9uLXdhcm5pbmcpOgorICAgICAg
ICAoLnNldHRpbmdzLWV4cGVyaW1lbnRzLXdhcm5pbmctc3Vic2VjdGlvbi1tZXNzYWdlKToKKyAg
ICAgICAgKCNyZXNvbHV0aW9uLW92ZXJyaWRlLXNlY3Rpb24pOgorICAgICAgICAoLmhlbHAtY29u
dGVudCBpbnB1dFt0eXBlPWNoZWNrYm94XSk6CisgICAgICAgIChib2R5LnBsYXRmb3JtLW1hYyAu
aGVscC1jb250ZW50IGlucHV0W3R5cGU9Y2hlY2tib3hdKToKKyAgICAgICAgKC5oZWxwLWNvbnRl
bnQgaW5wdXRbdHlwZT1yYWRpb10pOgorICAgICAgICAoYm9keS5wbGF0Zm9ybS1tYWMgLmhlbHAt
Y29udGVudCBpbnB1dFt0eXBlPXJhZGlvXSk6CisgICAgICAgICguaGVscC1jb250ZW50IHNlbGVj
dCk6CisgICAgICAgICguaGVscC1jb250ZW50IHNlbGVjdDpkaXNhYmxlZCk6CisgICAgICAgICgu
aGVscC1jb250ZW50IG9wdGlvbik6CisgICAgICAgICgjZHJhd2VyLWNvbnRlbnRzIC5oZWxwLXdp
bmRvdy1tYWluKToKKyAgICAgICAgKCNzZXR0aW5ncy1zY3JlZW4gLmhlbHAtd2luZG93LW1haW4p
OgorICAgICAgICAoI3NldHRpbmdzLXNjcmVlbiAuaGVscC13aW5kb3ctbGFiZWwpOgorICAgICAg
ICAoI2RyYXdlci1jb250ZW50cyAuaGVscC1jb250YWluZXItd3JhcHBlcik6CisgICAgICAgICgu
aGVscC1jb250YWluZXItd3JhcHBlcik6CisgICAgICAgICgjc2V0dGluZ3Mtc2NyZWVuIC50YWJi
ZWQtcGFuZS1oZWFkZXIpOgorICAgICAgICAoI3NldHRpbmdzLXNjcmVlbiAudGFiYmVkLXBhbmUt
aGVhZGVyLWNvbnRlbnRzKToKKyAgICAgICAgKCNzZXR0aW5ncy1zY3JlZW4gLnRhYmJlZC1wYW5l
LWhlYWRlci10YWJzKToKKyAgICAgICAgKCNzZXR0aW5ncy1zY3JlZW4gLnRhYmJlZC1wYW5lLWhl
YWRlci10YWIpOgorICAgICAgICAoI3NldHRpbmdzLXNjcmVlbiAudGFiYmVkLXBhbmUtaGVhZGVy
LXRhYi5zZWxlY3RlZCk6CisgICAgICAgICgjZHJhd2VyLWNvbnRlbnRzIC50YWJiZWQtcGFuZS1j
b250ZW50KToKKyAgICAgICAgKCNzZXR0aW5ncy1zY3JlZW4gLnRhYmJlZC1wYW5lLWNvbnRlbnQp
OgorICAgICAgICAoLnNldHRpbmdzLXRhYi5oZWxwLWNvbnRlbnQpOgorICAgICAgICAoLnNldHRp
bmdzLXRhYiBpbnB1dDpub3QoW3R5cGVdKSwgLnNldHRpbmdzLXRhYiBpbnB1dFt0eXBlPSJ0ZXh0
Il0pOgorICAgICAgICAoLnNldHRpbmdzLXRhYiBpbnB1dC5udW1lcmljKToKKyAgICAgICAgKC5z
ZXR0aW5ncy10YWItY29udGFpbmVyIGhlYWRlcik6CisgICAgICAgICgjZHJhd2VyLWNvbnRlbnRz
IC5zZXR0aW5ncy10YWItY29udGFpbmVyIGhlYWRlcik6CisgICAgICAgICgjdGFiLXNob3J0Y3V0
cyk6CisgICAgICAgICgjZXhwZXJpbWVudHMtdGFiLWNvbnRlbnQgLmhlbHAtY29udGFpbmVyKToK
KyAgICAgICAgKCNleHBlcmltZW50cy10YWItY29udGVudCAuaGVscC1ibG9jayk6CisgICAgICAg
ICguc2V0dGluZ3MtdGFiLWNvbnRhaW5lciBoZWFkZXIgPiBoMyk6CisgICAgICAgICguc2V0dGlu
Z3MtdGFiIC5oZWxwLXNlY3Rpb24tdGl0bGUpOgorICAgICAgICAoLnNldHRpbmdzLXRhYiAuaGVs
cC1ibG9jayBsYWJlbCk6CisgICAgICAgICguc2V0dGluZ3MtdGFiIC5oZWxwLWJsb2NrIGZpZWxk
c2V0Om5vdCgudG9wbGV2ZWwpIGxhYmVsKToKKyAgICAgICAgKC5zZXR0aW5ncy10YWIgLmhlbHAt
YmxvY2sgZmllbGRzZXQudG9wbGV2ZWwgbGFiZWw6aG92ZXIpOgorICAgICAgICAoLnNldHRpbmdz
LXRhYiAuaGVscC1ibG9jayBsYWJlbDpob3Zlcik6CisgICAgICAgICguc2V0dGluZ3MtdGFiIHAp
OgorICAgICAgICAoLnNldHRpbmdzLXRhYiBmaWVsZHNldCBwKToKKyAgICAgICAgKC5zZXR0aW5n
cy10YWIgc2VsZWN0KToKKyAgICAgICAgKC5zZXR0aW5ncy10YWIgc2VsZWN0OmRpc2FibGVkKToK
KyAgICAgICAgKC5zZXR0aW5ncy10YWIgLmZpbGUtc3lzdGVtcy1lZGl0b3IgaW5wdXQuZmlsZS1z
eXN0ZW0tcGF0aCk6CisgICAgICAgICguc2V0dGluZ3MtdGFiIC5maWxlLW1hcHBpbmdzLWVkaXRv
ciAud29ya3NwYWNlLXNldHRpbmdzLXJvdyBpbnB1dCk6CisgICAgICAgICguc2V0dGluZ3MtdGFi
IC5maWxlLW1hcHBpbmdzLWVkaXRvciAud29ya3NwYWNlLXNldHRpbmdzLXJvdyBpbnB1dC5maWxl
LW1hcHBpbmctdXJsKToKKyAgICAgICAgKCN3b3Jrc3BhY2UtdGFiLWNvbnRlbnQgLmJ1dHRvbjpo
b3Zlcik6CisgICAgICAgICgjd29ya3NwYWNlLXRhYi1jb250ZW50IC53b3Jrc3BhY2Utc2V0dGlu
Z3Mtcm93OmhvdmVyIC5idXR0b24pOgorICAgICAgICAoI3dvcmtzcGFjZS10YWItY29udGVudCAu
d29ya3NwYWNlLXNldHRpbmdzLXJvdyAuYnV0dG9uKToKKyAgICAgICAgKCN3b3Jrc3BhY2UtdGFi
LWNvbnRlbnQgLndvcmtzcGFjZS1zZXR0aW5ncy1yb3cgLnJlbW92ZS1idXR0b24pOgorICAgICAg
ICAoI3dvcmtzcGFjZS10YWItY29udGVudCAud29ya3NwYWNlLXNldHRpbmdzLXJvdyAuYWRkLWJ1
dHRvbik6CisgICAgICAgICgjd29ya3NwYWNlLXRhYi1jb250ZW50IC53b3Jrc3BhY2Utc2V0dGlu
Z3Mtcm93IC5maWxlLXN5c3RlbS1hZGQtYnV0dG9uKToKKyAgICAgICAgKCN3b3Jrc3BhY2UtdGFi
LWNvbnRlbnQgLndvcmtzcGFjZS1zZXR0aW5ncy1yb3cgLmZpbGUtc3lzdGVtLWFkZC1idXR0b246
aG92ZXIpOgorCiAyMDEzLTA3LTE0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTUyNTk4LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSGVscFNjcmVlbi5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0hlbHBTY3JlZW4uanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkyM2M1MgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0hlbHBTY3JlZW4uanMKQEAgLTAs
MCArMSwxNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJpbmc9fSB0aXRs
ZQorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQorICovCitXZWJJbnNwZWN0b3IuSGVs
cFNjcmVlbiA9IGZ1bmN0aW9uKHRpdGxlKQoreworICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwo
dGhpcyk7CisgICAgdGhpcy5tYXJrQXNSb290KCk7CisgICAgdGhpcy5yZWdpc3RlclJlcXVpcmVk
Q1NTKCJoZWxwU2NyZWVuLmNzcyIpOworCisgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJo
ZWxwLXdpbmRvdy1vdXRlciI7CisgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtl
eWRvd24iLCB0aGlzLl9vbktleURvd24uYmluZCh0aGlzKSwgZmFsc2UpOworICAgIHRoaXMuZWxl
bWVudC50YWJJbmRleCA9IDA7CisgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZv
Y3VzIiwgdGhpcy5fb25CbHVyLmJpbmQodGhpcyksIGZhbHNlKTsKKworICAgIGlmICh0aXRsZSkg
eworICAgICAgICB2YXIgbWFpbldpbmRvdyA9IHRoaXMuZWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2
IiwgImhlbHAtd2luZG93LW1haW4iKTsKKyAgICAgICAgdmFyIGNhcHRpb25XaW5kb3cgPSBtYWlu
V2luZG93LmNyZWF0ZUNoaWxkKCJkaXYiLCAiaGVscC13aW5kb3ctY2FwdGlvbiIpOworICAgICAg
ICBjYXB0aW9uV2luZG93LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNsb3NlQnV0dG9uKCkpOwor
ICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50ID0gbWFpbldpbmRvdy5jcmVhdGVDaGlsZCgiZGl2
IiwgImhlbHAtY29udGVudCIpOworICAgICAgICBjYXB0aW9uV2luZG93LmNyZWF0ZUNoaWxkKCJo
MSIsICJoZWxwLXdpbmRvdy10aXRsZSIpLnRleHRDb250ZW50ID0gdGl0bGU7CisgICAgfQorfQor
CisvKioKKyAqIEB0eXBlIHtXZWJJbnNwZWN0b3IuSGVscFNjcmVlbn0KKyAqLworV2ViSW5zcGVj
dG9yLkhlbHBTY3JlZW4uX3Zpc2libGVTY3JlZW4gPSBudWxsOworCitXZWJJbnNwZWN0b3IuSGVs
cFNjcmVlbi5wcm90b3R5cGUgPSB7CisgICAgX2NyZWF0ZUNsb3NlQnV0dG9uOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB2YXIgY2xvc2VCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJidXR0b24iKTsKKyAgICAgICAgY2xvc2VCdXR0b24uY2xhc3NOYW1lID0gImhlbHAtY2xvc2Ut
YnV0dG9uIjsKKyAgICAgICAgY2xvc2VCdXR0b24udGV4dENvbnRlbnQgPSAiXHUyNzE2IjsgLy8g
Q29kZSBzdGFuZHMgZm9yIEhFQVZZIE1VTFRJUExJQ0FUSU9OIFguCisgICAgICAgIGNsb3NlQnV0
dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5oaWRlLmJpbmQodGhpcyksIGZhbHNl
KTsKKyAgICAgICAgcmV0dXJuIGNsb3NlQnV0dG9uOworICAgIH0sCisKKyAgICBzaG93TW9kYWw6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciB2aXNpYmxlSGVscFNjcmVlbiA9IFdlYklu
c3BlY3Rvci5IZWxwU2NyZWVuLl92aXNpYmxlU2NyZWVuOworICAgICAgICBpZiAodmlzaWJsZUhl
bHBTY3JlZW4gPT09IHRoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHZp
c2libGVIZWxwU2NyZWVuKQorICAgICAgICAgICAgdmlzaWJsZUhlbHBTY3JlZW4uaGlkZSgpOwor
ICAgICAgICBXZWJJbnNwZWN0b3IuSGVscFNjcmVlbi5fdmlzaWJsZVNjcmVlbiA9IHRoaXM7Cisg
ICAgICAgIHRoaXMuc2hvdyhkb2N1bWVudC5ib2R5KTsKKyAgICAgICAgdGhpcy5mb2N1cygpOwor
ICAgIH0sCisKKyAgICBoaWRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMu
aXNTaG93aW5nKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgV2ViSW5zcGVjdG9y
LkhlbHBTY3JlZW4uX3Zpc2libGVTY3JlZW4gPSBudWxsOworCisgICAgICAgIFdlYkluc3BlY3Rv
ci5yZXN0b3JlRm9jdXNGcm9tRWxlbWVudCh0aGlzLmVsZW1lbnQpOworICAgICAgICB0aGlzLmRl
dGFjaCgpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0ga2V5Q29k
ZQorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgaXNDbG9zaW5nS2V5OiBm
dW5jdGlvbihrZXlDb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFsKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuRW50ZXIuY29kZSwKKyAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuRXNjLmNvZGUsCisgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlzLlNwYWNlLmNvZGUsCisgICAgICAg
IF0uaW5kZXhPZihrZXlDb2RlKSA+PSAwOworICAgIH0sCisKKyAgICBfb25LZXlEb3duOiBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmlzU2hvd2luZygpICYmIHRoaXMu
aXNDbG9zaW5nS2V5KGV2ZW50LmtleUNvZGUpKSB7CisgICAgICAgICAgICB0aGlzLmhpZGUoKTsK
KyAgICAgICAgICAgIGV2ZW50LmNvbnN1bWUoKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBf
b25CbHVyOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIC8vIFByZXRlbmQgd2UncmUg
bW9kYWwsIGdyYWIgZm9jdXMgYmFjayBpZiB3ZSdyZSBzdGlsbCBzaG93bi4KKyAgICAgICAgaWYg
KHRoaXMuaXNTaG93aW5nKCkgJiYgIXRoaXMuZWxlbWVudC5pc1NlbGZPckFuY2VzdG9yKGV2ZW50
LnRhcmdldCkpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0Q3VycmVudEZvY3VzRWxlbWVu
dCh0aGlzLmVsZW1lbnQpOworICAgIH0sCisKKyAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5W
aWV3LnByb3RvdHlwZQorfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJp
bmc9fSB0aXRsZQorICogQHBhcmFtIHtzdHJpbmc9fSBtZXNzYWdlCisgKiBAZXh0ZW5kcyB7V2Vi
SW5zcGVjdG9yLkhlbHBTY3JlZW59CisgKi8KK1dlYkluc3BlY3Rvci5IZWxwU2NyZWVuVW50aWxS
ZWxvYWQgPSBmdW5jdGlvbih0aXRsZSwgbWVzc2FnZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuSGVs
cFNjcmVlbi5jYWxsKHRoaXMsIHRpdGxlKTsKKyAgICB2YXIgcCA9IHRoaXMuY29udGVudEVsZW1l
bnQuY3JlYXRlQ2hpbGQoInAiKTsKKyAgICBwLmFkZFN0eWxlQ2xhc3MoImhlbHAtc2VjdGlvbiIp
OworICAgIHAudGV4dENvbnRlbnQgPSBtZXNzYWdlOworICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dl
ck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRz
Lkdsb2JhbE9iamVjdENsZWFyZWQsIHRoaXMuaGlkZSwgdGhpcyk7Cit9CisKK1dlYkluc3BlY3Rv
ci5IZWxwU2NyZWVuVW50aWxSZWxvYWQucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBv
dmVycmlkZQorICAgICAqLworICAgIHdpbGxIaWRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5HbG9iYWxPYmplY3RDbGVhcmVkLCB0aGlzLmhpZGUs
IHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuSGVscFNjcmVlbi5wcm90b3R5cGUud2lsbEhp
ZGUuY2FsbCh0aGlzKTsKKyAgICB9LAorCisgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuSGVs
cFNjcmVlbi5wcm90b3R5cGUKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZhN2JjNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3BlY3RvckZyb250ZW5k
SG9zdFN0dWIuanMKQEAgLTAsMCArMSwyNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitpZiAoIXdpbmRvdy5JbnNwZWN0b3JGcm9udGVu
ZEhvc3QpIHsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBpbXBsZW1lbnRzIHtJbnNwZWN0
b3JGcm9udGVuZEhvc3RBUEl9CisgKi8KK1dlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhv
c3RTdHViID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX2F0dGFjaGVkV2luZG93SGVpZ2h0ID0g
MDsKKyAgICB0aGlzLmlzU3R1YiA9IHRydWU7CisgICAgdGhpcy5fZmlsZUJ1ZmZlcnMgPSB7fTsK
KyAgICBXZWJJbnNwZWN0b3IuZG9jdW1lbnRDb3B5RXZlbnRGaXJlZCA9IHRoaXMuZG9jdW1lbnRD
b3B5LmJpbmQodGhpcyk7Cit9CisKK1dlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RT
dHViLnByb3RvdHlwZSA9IHsKKyAgICBwbGF0Zm9ybTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdmFyIG1hdGNoID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvV2luZG93cyBOVC8pOwor
ICAgICAgICBpZiAobWF0Y2gpCisgICAgICAgICAgICByZXR1cm4gIndpbmRvd3MiOworICAgICAg
ICBtYXRjaCA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL01hYyBPUyBYLyk7CisgICAgICAg
IGlmIChtYXRjaCkKKyAgICAgICAgICAgIHJldHVybiAibWFjIjsKKyAgICAgICAgcmV0dXJuICJs
aW51eCI7CisgICAgfSwKKworICAgIHBvcnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiAidW5rbm93biI7CisgICAgfSwKKworICAgIGJyaW5nVG9Gcm9udDogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fd2luZG93VmlzaWJsZSA9IHRydWU7CisgICAgfSwKKworICAg
IGNsb3NlV2luZG93OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl93aW5kb3dWaXNp
YmxlID0gZmFsc2U7CisgICAgfSwKKworICAgIHJlcXVlc3RTZXREb2NrU2lkZTogZnVuY3Rpb24o
c2lkZSkKKyAgICB7CisgICAgICAgIEluc3BlY3RvckZyb250ZW5kQVBJLnNldERvY2tTaWRlKHNp
ZGUpOworICAgIH0sCisKKyAgICBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodDogZnVuY3Rpb24oaGVp
Z2h0KQorICAgIHsKKyAgICB9LAorCisgICAgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aDogZnVuY3Rp
b24od2lkdGgpCisgICAgeworICAgIH0sCisKKyAgICBtb3ZlV2luZG93Qnk6IGZ1bmN0aW9uKHgs
IHkpCisgICAgeworICAgIH0sCisKKyAgICBzZXRJbmplY3RlZFNjcmlwdEZvck9yaWdpbjogZnVu
Y3Rpb24ob3JpZ2luLCBzY3JpcHQpCisgICAgeworICAgIH0sCisKKyAgICBsb2FkZWQ6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgfSwKKworICAgIGxvY2FsaXplZFN0cmluZ3NVUkw6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgfSwKKworICAgIGluc3Bl
Y3RlZFVSTENoYW5nZWQ6IGZ1bmN0aW9uKHVybCkKKyAgICB7CisgICAgICAgIGRvY3VtZW50LnRp
dGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKFByZWZlcmVuY2VzLmFwcGxpY2F0aW9uVGl0bGUs
IHVybCk7CisgICAgfSwKKworICAgIGRvY3VtZW50Q29weTogZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuX3RleHRUb0NvcHkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGV2ZW50LmNsaXBib2FyZERhdGEuc2V0RGF0YSgidGV4dCIsIHRoaXMuX3RleHRUb0Nv
cHkpOworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICBkZWxldGUgdGhp
cy5fdGV4dFRvQ29weTsKKyAgICB9LAorCisgICAgY29weVRleHQ6IGZ1bmN0aW9uKHRleHQpCisg
ICAgeworICAgICAgICB0aGlzLl90ZXh0VG9Db3B5ID0gdGV4dDsKKyAgICAgICAgaWYgKCFkb2N1
bWVudC5leGVjQ29tbWFuZCgiY29weSIpKSB7CisgICAgICAgICAgICB2YXIgc2NyZWVuID0gbmV3
IFdlYkluc3BlY3Rvci5DbGlwYm9hcmRBY2Nlc3NEZW5pZWRTY3JlZW4oKTsKKyAgICAgICAgICAg
IHNjcmVlbi5zaG93TW9kYWwoKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBvcGVuSW5OZXdU
YWI6IGZ1bmN0aW9uKHVybCkKKyAgICB7CisgICAgICAgIHdpbmRvdy5vcGVuKHVybCwgIl9ibGFu
ayIpOworICAgIH0sCisKKyAgICBjYW5TYXZlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgc2F2ZTogZnVuY3Rpb24odXJsLCBjb250ZW50LCBm
b3JjZVNhdmVBcykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9maWxlQnVmZmVyc1t1cmxdKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDb25jdXJyZW50IGZpbGUgbW9kaWZpY2F0aW9u
IGRlbmllZC4iKTsKKworICAgICAgICB0aGlzLl9maWxlQnVmZmVyc1t1cmxdID0gW2NvbnRlbnRd
OworICAgICAgICBzZXRUaW1lb3V0KFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5zYXZlZFVSTC5i
aW5kKFdlYkluc3BlY3Rvci5maWxlTWFuYWdlciwgdXJsKSwgMCk7CisgICAgfSwKKworICAgIGFw
cGVuZDogZnVuY3Rpb24odXJsLCBjb250ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGJ1ZmZlciA9
IHRoaXMuX2ZpbGVCdWZmZXJzW3VybF07CisgICAgICAgIGlmICghYnVmZmVyKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJGaWxlIGlzIG5vdCBvcGVuIGZvciB3cml0ZSB5ZXQuIik7CisK
KyAgICAgICAgYnVmZmVyLnB1c2goY29udGVudCk7CisgICAgICAgIHNldFRpbWVvdXQoV2ViSW5z
cGVjdG9yLmZpbGVNYW5hZ2VyLmFwcGVuZGVkVG9VUkwuYmluZChXZWJJbnNwZWN0b3IuZmlsZU1h
bmFnZXIsIHVybCksIDApOworICAgIH0sCisKKyAgICBjbG9zZTogZnVuY3Rpb24odXJsKQorICAg
IHsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9maWxlQnVmZmVyc1t1cmxdOworICAgICAg
ICBkZWxldGUgdGhpcy5fZmlsZUJ1ZmZlcnNbdXJsXTsKKworICAgICAgICBpZiAoIWNvbnRlbnQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGxhc3RTbGFzaEluZGV4ID0gdXJs
Lmxhc3RJbmRleE9mKCIvIik7CisgICAgICAgIHZhciBmaWxlTmFtZVN1ZmZpeCA9IChsYXN0U2xh
c2hJbmRleCA9PT0gLTEpID8gdXJsIDogdXJsLnN1YnN0cmluZyhsYXN0U2xhc2hJbmRleCArIDEp
OworCisgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoY29udGVudCwgeyB0eXBlOiAiYXBwbGlj
YXRpb24vb2N0ZXQtc3RyZWFtIiB9KTsKKyAgICAgICAgdmFyIG9iamVjdFVybCA9IHdpbmRvdy5V
UkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOworICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBvYmpl
Y3RVcmwgKyAiIyIgKyBmaWxlTmFtZVN1ZmZpeDsKKworICAgICAgICBmdW5jdGlvbiBjbGVhbnVw
KCkKKyAgICAgICAgeworICAgICAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwob2Jq
ZWN0VXJsKTsKKyAgICAgICAgfQorICAgICAgICBzZXRUaW1lb3V0KGNsZWFudXAsIDApOworICAg
IH0sCisKKyAgICBzZW5kTWVzc2FnZVRvQmFja2VuZDogZnVuY3Rpb24obWVzc2FnZSkKKyAgICB7
CisgICAgfSwKKworICAgIHJlY29yZEFjdGlvblRha2VuOiBmdW5jdGlvbihhY3Rpb25Db2RlKQor
ICAgIHsKKyAgICB9LAorCisgICAgcmVjb3JkUGFuZWxTaG93bjogZnVuY3Rpb24ocGFuZWxDb2Rl
KQorICAgIHsKKyAgICB9LAorCisgICAgcmVjb3JkU2V0dGluZ0NoYW5nZWQ6IGZ1bmN0aW9uKHNl
dHRpbmdDb2RlKQorICAgIHsKKyAgICB9LAorCisgICAgbG9hZFJlc291cmNlU3luY2hyb25vdXNs
eTogZnVuY3Rpb24odXJsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGxvYWRYSFIodXJsKTsKKyAg
ICB9LAorCisgICAgc3VwcG9ydHNGaWxlU3lzdGVtczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0sCisKKyAgICByZXF1ZXN0RmlsZVN5c3RlbXM6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgfSwKKworICAgIGFkZEZpbGVTeXN0ZW06IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgfSwKKworICAgIHJlbW92ZUZpbGVTeXN0ZW06IGZ1bmN0aW9uKGZpbGVTeXN0ZW1Q
YXRoKQorICAgIHsKKyAgICB9LAorCisgICAgaXNvbGF0ZWRGaWxlU3lzdGVtOiBmdW5jdGlvbihm
aWxlU3lzdGVtSWQsIHJlZ2lzdGVyZWROYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG51bGw7
CisgICAgfSwKKworICAgIHNldFpvb21GYWN0b3I6IGZ1bmN0aW9uKHpvb20pCisgICAgeworICAg
IH0sCisKKyAgICBpc1VuZGVyVGVzdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KK30KKworSW5zcGVjdG9yRnJvbnRlbmRIb3N0ID0gbmV3IFdlYkluc3Bl
Y3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViKCk7CitQcmVmZXJlbmNlcy5sb2NhbGl6ZVVJ
ID0gZmFsc2U7CisKKy8vIERlZmF1bHQgaW1wbGVtZW50YXRpb247IHBsYXRmb3JtcyB3aWxsIG92
ZXJyaWRlLgorV2ViSW5zcGVjdG9yLmNsaXBib2FyZEFjY2Vzc0RlbmllZE1lc3NhZ2UgPSBmdW5j
dGlvbigpCit7CisgICAgcmV0dXJuICIiOworfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICog
QGV4dGVuZHMge1dlYkluc3BlY3Rvci5IZWxwU2NyZWVufQorICovCitXZWJJbnNwZWN0b3IuQ2xp
cGJvYXJkQWNjZXNzRGVuaWVkU2NyZWVuID0gZnVuY3Rpb24oKQoreworICAgIFdlYkluc3BlY3Rv
ci5IZWxwU2NyZWVuLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbGlwYm9hcmQg
YWNjZXNzIGlzIGRlbmllZCIpKTsKKyAgICB2YXIgcGxhdGZvcm1NZXNzYWdlID0gV2ViSW5zcGVj
dG9yLmNsaXBib2FyZEFjY2Vzc0RlbmllZE1lc3NhZ2UoKTsKKyAgICBpZiAocGxhdGZvcm1NZXNz
YWdlKSB7CisgICAgICAgIHZhciBwID0gdGhpcy5jb250ZW50RWxlbWVudC5jcmVhdGVDaGlsZCgi
cCIpOworICAgICAgICBwLmFkZFN0eWxlQ2xhc3MoImhlbHAtc2VjdGlvbiIpOworICAgICAgICBw
LnRleHRDb250ZW50ID0gcGxhdGZvcm1NZXNzYWdlOworICAgIH0KK30KKworV2ViSW5zcGVjdG9y
LkNsaXBib2FyZEFjY2Vzc0RlbmllZFNjcmVlbi5wcm90b3R5cGUgPSB7CisgICAgX19wcm90b19f
OiBXZWJJbnNwZWN0b3IuSGVscFNjcmVlbi5wcm90b3R5cGUKK30KKworfQorCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5IZWxwU2NyZWVufQorICovCitX
ZWJJbnNwZWN0b3IuUmVtb3RlRGVidWdnaW5nVGVybWluYXRlZFNjcmVlbiA9IGZ1bmN0aW9uKHJl
YXNvbikKK3sKKyAgICBXZWJJbnNwZWN0b3IuSGVscFNjcmVlbi5jYWxsKHRoaXMsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRGV0YWNoZWQgZnJvbSB0aGUgdGFyZ2V0IikpOworICAgIHZhciBwID0g
dGhpcy5jb250ZW50RWxlbWVudC5jcmVhdGVDaGlsZCgicCIpOworICAgIHAuYWRkU3R5bGVDbGFz
cygiaGVscC1zZWN0aW9uIik7CisgICAgcC5jcmVhdGVDaGlsZCgic3BhbiIpLnRleHRDb250ZW50
ID0gIlJlbW90ZSBkZWJ1Z2dpbmcgaGFzIGJlZW4gdGVybWluYXRlZCB3aXRoIHJlYXNvbjogIjsK
KyAgICBwLmNyZWF0ZUNoaWxkKCJzcGFuIiwgImVycm9yLW1lc3NhZ2UiKS50ZXh0Q29udGVudCA9
IHJlYXNvbjsKKyAgICBwLmNyZWF0ZUNoaWxkKCJiciIpOworICAgIHAuY3JlYXRlQ2hpbGQoInNw
YW4iKS50ZXh0Q29udGVudCA9ICJQbGVhc2UgcmUtYXR0YWNoIHRvIHRoZSBuZXcgdGFyZ2V0LiI7
Cit9CisKK1dlYkluc3BlY3Rvci5SZW1vdGVEZWJ1Z2dpbmdUZXJtaW5hdGVkU2NyZWVuLnByb3Rv
dHlwZSA9IHsKKyAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5IZWxwU2NyZWVuLnByb3RvdHlw
ZQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFp
bi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmlu
ZGV4IGFhNDRiMTIuLjA4ODc5ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9NYWluLmh0bWwKQEAgLTExNiw2ICsxMTYsNyBAQAogICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iQ29kZU1pcnJvck92ZXJyaWRlcy5jc3MiPgogICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iQ29uc29sZVByb21wdC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iQ1NTQ29sb3JQaWNrZXIuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9IkhlbHBTY3JlZW4uY3NzIj4KIAogICAgIDxzY3JpcHQgc3JjPSJFeHRlcm5h
bC9Db2RlTWlycm9yL2NvZGVtaXJyb3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJF
eHRlcm5hbC9Db2RlTWlycm9yL2NvbW1lbnQuanMiPjwvc2NyaXB0PgpAQCAtMTQyLDYgKzE0Myw5
IEBACiAgICAgPHNjcmlwdCBzcmM9IkNvZGVNaXJyb3JBZGRpdGlvbnMuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJTZXR0aW5nLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
SW5zcGVjdG9yQmFja2VuZC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXcuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJIZWxwU2NyZWVuLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IkxvYWRJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJJbnNwZWN0b3JGcm9udGVuZEFQSS5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IkNvbnRleHRNZW51LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1NldHRpbmcuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9TZXR0aW5nLmpzCmluZGV4IDc5YTgwMTEuLmQ1YzI0
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1NldHRp
bmcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU2V0dGluZy5q
cwpAQCAtMjksNiArMjksMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAordmFyIFByZWZlcmVu
Y2VzID0geworICAgIGxvY2FsaXplVUk6IHRydWUsCisgICAgYXBwbGljYXRpb25UaXRsZTogIldl
YiBJbnNwZWN0b3IgLSAlcyIsCit9CisKIFdlYkluc3BlY3Rvci5TZXR0aW5nID0gZnVuY3Rpb24o
bmFtZSwgZGVmYXVsdFZhbHVlKQogewogICAgIHRoaXMuX25hbWUgPSBuYW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYzNiODE0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXcuanMKQEAgLTAsMCArMSw1MTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGNvbnN0cnVjdG9y
CisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0KKyAqLworV2ViSW5zcGVjdG9yLlZp
ZXcgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgdGhpcy5lbGVtZW50Ll9fdmlldyA9IHRoaXM7CisgICAgdGhpcy5f
dmlzaWJsZSA9IHRydWU7CisgICAgdGhpcy5faXNSb290ID0gZmFsc2U7CisgICAgdGhpcy5faXNT
aG93aW5nID0gZmFsc2U7CisgICAgdGhpcy5fY2hpbGRyZW4gPSBbXTsKKyAgICB0aGlzLl9oaWRl
T25EZXRhY2ggPSBmYWxzZTsKKyAgICB0aGlzLl9jc3NGaWxlcyA9IFtdOworICAgIHRoaXMuX25v
dGlmaWNhdGlvbkRlcHRoID0gMDsKK30KKworV2ViSW5zcGVjdG9yLlZpZXcuX2Nzc0ZpbGVUb1Zp
c2libGVWaWV3Q291bnQgPSB7fTsKK1dlYkluc3BlY3Rvci5WaWV3Ll9jc3NGaWxlVG9TdHlsZUVs
ZW1lbnQgPSB7fTsKKworV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlID0geworICAgICAvKioK
KyAgICAgICogQHJldHVybiB7QXJyYXkuPEVsZW1lbnQ+fQorICAgICAgKi8KKyAgICAgc3RhdHVz
QmFySXRlbXM6IGZ1bmN0aW9uKCkKKyAgICAgeworICAgICAgICAgcmV0dXJuIFtdOworICAgICB9
LAorCisgICAgIC8qKgorICAgICAqIEByZXR1cm4gez9FbGVtZW50fQorICAgICAqLworICAgIHN0
YXR1c0JhclRleHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBudWxsOworICAg
IH0sCisKKyAgICBtYXJrQXNSb290OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNw
ZWN0b3IuVmlldy5fYXNzZXJ0KCF0aGlzLmVsZW1lbnQucGFyZW50RWxlbWVudCwgIkF0dGVtcHQg
dG8gbWFyayBhcyByb290IGF0dGFjaGVkIG5vZGUiKTsKKyAgICAgICAgdGhpcy5faXNSb290ID0g
dHJ1ZTsKKyAgICB9LAorCisgICAgbWFya0FzTGF5b3V0Qm91bmRhcnk6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJsYXlvdXQtYm91bmRhcnki
KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7P1dlYkluc3BlY3Rvci5WaWV3
fQorICAgICAqLworICAgIHBhcmVudFZpZXc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9wYXJlbnRWaWV3OworICAgIH0sCisKKyAgICBpc1Nob3dpbmc6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9pc1Nob3dpbmc7CisgICAgfSwKKworICAg
IHNldEhpZGVPbkRldGFjaDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5faGlkZU9u
RGV0YWNoID0gdHJ1ZTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9vbGVh
bn0gCisgICAgICovCisgICAgX2luTm90aWZpY2F0aW9uOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICByZXR1cm4gISF0aGlzLl9ub3RpZmljYXRpb25EZXB0aCB8fCAodGhpcy5fcGFyZW50Vmll
dyAmJiB0aGlzLl9wYXJlbnRWaWV3Ll9pbk5vdGlmaWNhdGlvbigpKTsKKyAgICB9LAorCisgICAg
X3BhcmVudElzU2hvd2luZzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2lz
Um9vdCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gdGhpcy5fcGFy
ZW50VmlldyAmJiB0aGlzLl9wYXJlbnRWaWV3LmlzU2hvd2luZygpOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHRoaXM6V2ViSW5zcGVjdG9yLlZpZXcpfSBtZXRo
b2QKKyAgICAgKi8KKyAgICBfY2FsbE9uVmlzaWJsZUNoaWxkcmVuOiBmdW5jdGlvbihtZXRob2Qp
CisgICAgeworICAgICAgICB2YXIgY29weSA9IHRoaXMuX2NoaWxkcmVuLnNsaWNlKCk7CisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29weS5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAg
aWYgKGNvcHlbaV0uX3BhcmVudFZpZXcgPT09IHRoaXMgJiYgY29weVtpXS5fdmlzaWJsZSkKKyAg
ICAgICAgICAgICAgICBtZXRob2QuY2FsbChjb3B5W2ldKTsKKyAgICAgICAgfQorICAgIH0sCisK
KyAgICBfcHJvY2Vzc1dpbGxTaG93OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9s
b2FkQ1NTSWZOZWVkZWQoKTsKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5oYXNTdHlsZUNsYXNz
KCJsYXlvdXQtYm91bmRhcnkiKSkKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5yZW1v
dmVQcm9wZXJ0eSgiaGVpZ2h0Iik7CisgICAgICAgIHRoaXMuX2NhbGxPblZpc2libGVDaGlsZHJl
bih0aGlzLl9wcm9jZXNzV2lsbFNob3cpOworICAgIH0sCisKKyAgICBfcHJvY2Vzc1dhc1Nob3du
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5faW5Ob3RpZmljYXRpb24oKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5faXNTaG93aW5nID0gdHJ1ZTsKKyAg
ICAgICAgdGhpcy5yZXN0b3JlU2Nyb2xsUG9zaXRpb25zKCk7CisgICAgICAgIHRoaXMuX25vdGlm
eSh0aGlzLndhc1Nob3duKTsKKyAgICAgICAgdGhpcy5fbm90aWZ5KHRoaXMub25SZXNpemUpOwor
ICAgICAgICB0aGlzLl9jYWxsT25WaXNpYmxlQ2hpbGRyZW4odGhpcy5fcHJvY2Vzc1dhc1Nob3du
KTsKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5oYXNTdHlsZUNsYXNzKCJsYXlvdXQtYm91bmRh
cnkiKSkKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmVsZW1l
bnQub2Zmc2V0SGVpZ2h0ICsgInB4IjsKKyAgICB9LAorCisgICAgX3Byb2Nlc3NXaWxsSGlkZTog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2luTm90aWZpY2F0aW9uKCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuc3RvcmVTY3JvbGxQb3NpdGlvbnMoKTsK
KworICAgICAgICB0aGlzLl9jYWxsT25WaXNpYmxlQ2hpbGRyZW4odGhpcy5fcHJvY2Vzc1dpbGxI
aWRlKTsKKyAgICAgICAgdGhpcy5fbm90aWZ5KHRoaXMud2lsbEhpZGUpOworICAgICAgICB0aGlz
Ll9pc1Nob3dpbmcgPSBmYWxzZTsKKyAgICB9LAorCisgICAgX3Byb2Nlc3NXYXNIaWRkZW46IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2Rpc2FibGVDU1NJZk5lZWRlZCgpOworICAg
ICAgICB0aGlzLl9jYWxsT25WaXNpYmxlQ2hpbGRyZW4odGhpcy5fcHJvY2Vzc1dhc0hpZGRlbik7
CisgICAgfSwKKworICAgIF9wcm9jZXNzT25SZXNpemU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLl9pbk5vdGlmaWNhdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBpZiAoIXRoaXMuaXNTaG93aW5nKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGlmICh0aGlzLmVsZW1lbnQuaGFzU3R5bGVDbGFzcygibGF5b3V0LWJvdW5kYXJ5IikpCisgICAg
ICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoImhlaWdodCIpOworICAg
ICAgICB0aGlzLl9ub3RpZnkodGhpcy5vblJlc2l6ZSk7CisgICAgICAgIHRoaXMuX2NhbGxPblZp
c2libGVDaGlsZHJlbih0aGlzLl9wcm9jZXNzT25SZXNpemUpOworICAgICAgICBpZiAodGhpcy5l
bGVtZW50Lmhhc1N0eWxlQ2xhc3MoImxheW91dC1ib3VuZGFyeSIpKQorICAgICAgICAgICAgdGhp
cy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQgKyAicHgi
OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHRoaXM6V2ViSW5z
cGVjdG9yLlZpZXcpfSBub3RpZmljYXRpb24KKyAgICAgKi8KKyAgICBfbm90aWZ5OiBmdW5jdGlv
bihub3RpZmljYXRpb24pCisgICAgeworICAgICAgICArK3RoaXMuX25vdGlmaWNhdGlvbkRlcHRo
OworICAgICAgICB0cnkgeworICAgICAgICAgICAgbm90aWZpY2F0aW9uLmNhbGwodGhpcyk7Cisg
ICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAtLXRoaXMuX25vdGlmaWNhdGlvbkRlcHRo
OworICAgICAgICB9CisgICAgfSwKKworICAgIHdhc1Nob3duOiBmdW5jdGlvbigpCisgICAgewor
ICAgIH0sCisKKyAgICB3aWxsSGlkZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9LAorCisgICAg
b25SZXNpemU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7RWxlbWVudH0gcGFyZW50RWxlbWVudAorICAgICAqIEBwYXJhbSB7RWxlbWVudD19IGlu
c2VydEJlZm9yZQorICAgICAqLworICAgIHNob3c6IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQsIGlu
c2VydEJlZm9yZSkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5WaWV3Ll9hc3NlcnQocGFy
ZW50RWxlbWVudCwgIkF0dGVtcHQgdG8gYXR0YWNoIHZpZXcgd2l0aCBubyBwYXJlbnQgZWxlbWVu
dCIpOworCisgICAgICAgIC8vIFVwZGF0ZSB2aWV3IGhpZXJhcmNoeQorICAgICAgICBpZiAodGhp
cy5lbGVtZW50LnBhcmVudEVsZW1lbnQgIT09IHBhcmVudEVsZW1lbnQpIHsKKyAgICAgICAgICAg
IGlmICh0aGlzLmVsZW1lbnQucGFyZW50RWxlbWVudCkKKyAgICAgICAgICAgICAgICB0aGlzLmRl
dGFjaCgpOworCisgICAgICAgICAgICB2YXIgY3VycmVudFBhcmVudCA9IHBhcmVudEVsZW1lbnQ7
CisgICAgICAgICAgICB3aGlsZSAoY3VycmVudFBhcmVudCAmJiAhY3VycmVudFBhcmVudC5fX3Zp
ZXcpCisgICAgICAgICAgICAgICAgY3VycmVudFBhcmVudCA9IGN1cnJlbnRQYXJlbnQucGFyZW50
RWxlbWVudDsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICB0aGlzLl9wYXJlbnRWaWV3ID0gY3VycmVudFBhcmVudC5fX3ZpZXc7CisgICAgICAgICAg
ICAgICAgdGhpcy5fcGFyZW50Vmlldy5fY2hpbGRyZW4ucHVzaCh0aGlzKTsKKyAgICAgICAgICAg
ICAgICB0aGlzLl9pc1Jvb3QgPSBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5WaWV3Ll9hc3NlcnQodGhpcy5faXNSb290LCAiQXR0ZW1wdCB0
byBhdHRhY2ggdmlldyB0byBvcnBoYW4gbm9kZSIpOworICAgICAgICB9IGVsc2UgaWYgKHRoaXMu
X3Zpc2libGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fdmlzaWJsZSA9
IHRydWU7CisKKyAgICAgICAgaWYgKHRoaXMuX3BhcmVudElzU2hvd2luZygpKQorICAgICAgICAg
ICAgdGhpcy5fcHJvY2Vzc1dpbGxTaG93KCk7CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZFN0
eWxlQ2xhc3MoInZpc2libGUiKTsKKworICAgICAgICAvLyBSZXBhcmVudAorICAgICAgICBpZiAo
dGhpcy5lbGVtZW50LnBhcmVudEVsZW1lbnQgIT09IHBhcmVudEVsZW1lbnQpIHsKKyAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5WaWV3Ll9pbmNyZW1lbnRWaWV3Q291bnRlcihwYXJlbnRFbGVtZW50
LCB0aGlzLmVsZW1lbnQpOworICAgICAgICAgICAgaWYgKGluc2VydEJlZm9yZSkKKyAgICAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuVmlldy5fb3JpZ2luYWxJbnNlcnRCZWZvcmUuY2FsbChwYXJl
bnRFbGVtZW50LCB0aGlzLmVsZW1lbnQsIGluc2VydEJlZm9yZSk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlZpZXcuX29yaWdpbmFsQXBwZW5kQ2hpbGQu
Y2FsbChwYXJlbnRFbGVtZW50LCB0aGlzLmVsZW1lbnQpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHRoaXMuX3BhcmVudElzU2hvd2luZygpKQorICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc1dh
c1Nob3duKCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IG92
ZXJyaWRlSGlkZU9uRGV0YWNoCisgICAgICovCisgICAgZGV0YWNoOiBmdW5jdGlvbihvdmVycmlk
ZUhpZGVPbkRldGFjaCkKKyAgICB7CisgICAgICAgIHZhciBwYXJlbnRFbGVtZW50ID0gdGhpcy5l
bGVtZW50LnBhcmVudEVsZW1lbnQ7CisgICAgICAgIGlmICghcGFyZW50RWxlbWVudCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGhpcy5fcGFyZW50SXNTaG93aW5nKCkpCisg
ICAgICAgICAgICB0aGlzLl9wcm9jZXNzV2lsbEhpZGUoKTsKKworICAgICAgICBpZiAodGhpcy5f
aGlkZU9uRGV0YWNoICYmICFvdmVycmlkZUhpZGVPbkRldGFjaCkgeworICAgICAgICAgICAgdGhp
cy5lbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoInZpc2libGUiKTsKKyAgICAgICAgICAgIHRoaXMu
X3Zpc2libGUgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9wYXJlbnRJc1Nob3dpbmco
KSkKKyAgICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzV2FzSGlkZGVuKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBGb3JjZSBsZWdhbCByZW1vdmFsCisg
ICAgICAgIFdlYkluc3BlY3Rvci5WaWV3Ll9kZWNyZW1lbnRWaWV3Q291bnRlcihwYXJlbnRFbGVt
ZW50LCB0aGlzLmVsZW1lbnQpOworICAgICAgICBXZWJJbnNwZWN0b3IuVmlldy5fb3JpZ2luYWxS
ZW1vdmVDaGlsZC5jYWxsKHBhcmVudEVsZW1lbnQsIHRoaXMuZWxlbWVudCk7CisKKyAgICAgICAg
dGhpcy5fdmlzaWJsZSA9IGZhbHNlOworICAgICAgICBpZiAodGhpcy5fcGFyZW50SXNTaG93aW5n
KCkpCisgICAgICAgICAgICB0aGlzLl9wcm9jZXNzV2FzSGlkZGVuKCk7CisKKyAgICAgICAgLy8g
VXBkYXRlIHZpZXcgaGllcmFyY2h5CisgICAgICAgIGlmICh0aGlzLl9wYXJlbnRWaWV3KSB7Cisg
ICAgICAgICAgICB2YXIgY2hpbGRJbmRleCA9IHRoaXMuX3BhcmVudFZpZXcuX2NoaWxkcmVuLmlu
ZGV4T2YodGhpcyk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuVmlldy5fYXNzZXJ0KGNoaWxk
SW5kZXggPj0gMCwgIkF0dGVtcHQgdG8gcmVtb3ZlIG5vbi1jaGlsZCB2aWV3Iik7CisgICAgICAg
ICAgICB0aGlzLl9wYXJlbnRWaWV3Ll9jaGlsZHJlbi5zcGxpY2UoY2hpbGRJbmRleCwgMSk7Cisg
ICAgICAgICAgICB0aGlzLl9wYXJlbnRWaWV3ID0gbnVsbDsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuVmlldy5fYXNzZXJ0KHRoaXMuX2lzUm9vdCwgIlJlbW92aW5n
IG5vbi1yb290IHZpZXcgZnJvbSBET00iKTsKKyAgICB9LAorCisgICAgZGV0YWNoQ2hpbGRWaWV3
czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5fY2hpbGRy
ZW4uc2xpY2UoKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7
ICsraSkKKyAgICAgICAgICAgIGNoaWxkcmVuW2ldLmRldGFjaCgpOworICAgIH0sCisKKyAgICBl
bGVtZW50c1RvUmVzdG9yZVNjcm9sbFBvc2l0aW9uc0ZvcjogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFt0aGlzLmVsZW1lbnRdOworICAgIH0sCisKKyAgICBzdG9yZVNjcm9sbFBv
c2l0aW9uczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGVsZW1lbnRzID0gdGhpcy5l
bGVtZW50c1RvUmVzdG9yZVNjcm9sbFBvc2l0aW9uc0ZvcigpOworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgY29udGFp
bmVyID0gZWxlbWVudHNbaV07CisgICAgICAgICAgICBjb250YWluZXIuX3Njcm9sbFRvcCA9IGNv
bnRhaW5lci5zY3JvbGxUb3A7CisgICAgICAgICAgICBjb250YWluZXIuX3Njcm9sbExlZnQgPSBj
b250YWluZXIuc2Nyb2xsTGVmdDsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICByZXN0b3JlU2Ny
b2xsUG9zaXRpb25zOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgZWxlbWVudHMgPSB0
aGlzLmVsZW1lbnRzVG9SZXN0b3JlU2Nyb2xsUG9zaXRpb25zRm9yKCk7CisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBj
b250YWluZXIgPSBlbGVtZW50c1tpXTsKKyAgICAgICAgICAgIGlmIChjb250YWluZXIuX3Njcm9s
bFRvcCkKKyAgICAgICAgICAgICAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gY29udGFpbmVyLl9z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAoY29udGFpbmVyLl9zY3JvbGxMZWZ0KQorICAgICAg
ICAgICAgICAgIGNvbnRhaW5lci5zY3JvbGxMZWZ0ID0gY29udGFpbmVyLl9zY3JvbGxMZWZ0Owor
ICAgICAgICB9CisgICAgfSwKKworICAgIGNhbkhpZ2hsaWdodExpbmU6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LAorCisgICAgaGlnaGxpZ2h0TGluZTog
ZnVuY3Rpb24obGluZSkKKyAgICB7CisgICAgfSwKKworICAgIGRvUmVzaXplOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB0aGlzLl9wcm9jZXNzT25SZXNpemUoKTsKKyAgICB9LAorCisgICAg
cmVnaXN0ZXJSZXF1aXJlZENTUzogZnVuY3Rpb24oY3NzRmlsZSkKKyAgICB7CisgICAgICAgIGlm
ICh3aW5kb3cuZmxhdHRlbkltcG9ydHMpCisgICAgICAgICAgICBjc3NGaWxlID0gY3NzRmlsZS5z
cGxpdCgiLyIpLnJldmVyc2UoKVswXTsKKyAgICAgICAgdGhpcy5fY3NzRmlsZXMucHVzaChjc3NG
aWxlKTsKKyAgICB9LAorCisgICAgX2xvYWRDU1NJZk5lZWRlZDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jc3NGaWxlcy5sZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgdmFyIGNzc0ZpbGUgPSB0aGlzLl9jc3NGaWxlc1tpXTsKKworICAgICAg
ICAgICAgdmFyIHZpZXdzV2l0aENTU0ZpbGUgPSBXZWJJbnNwZWN0b3IuVmlldy5fY3NzRmlsZVRv
VmlzaWJsZVZpZXdDb3VudFtjc3NGaWxlXTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5WaWV3
Ll9jc3NGaWxlVG9WaXNpYmxlVmlld0NvdW50W2Nzc0ZpbGVdID0gKHZpZXdzV2l0aENTU0ZpbGUg
fHwgMCkgKyAxOworICAgICAgICAgICAgaWYgKCF2aWV3c1dpdGhDU1NGaWxlKQorICAgICAgICAg
ICAgICAgIHRoaXMuX2RvTG9hZENTUyhjc3NGaWxlKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAg
ICBfZG9Mb2FkQ1NTOiBmdW5jdGlvbihjc3NGaWxlKQorICAgIHsKKyAgICAgICAgdmFyIHN0eWxl
RWxlbWVudCA9IFdlYkluc3BlY3Rvci5WaWV3Ll9jc3NGaWxlVG9TdHlsZUVsZW1lbnRbY3NzRmls
ZV07CisgICAgICAgIGlmIChzdHlsZUVsZW1lbnQpIHsKKyAgICAgICAgICAgIHN0eWxlRWxlbWVu
dC5kaXNhYmxlZCA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKHdpbmRvdy5kZWJ1Z0NTUykgeyAvKiBkZWJ1Z2dpbmcgc3VwcG9ydCAqLworICAg
ICAgICAgICAgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpOwor
ICAgICAgICAgICAgc3R5bGVFbGVtZW50LnJlbCA9ICJzdHlsZXNoZWV0IjsKKyAgICAgICAgICAg
IHN0eWxlRWxlbWVudC50eXBlID0gInRleHQvY3NzIjsKKyAgICAgICAgICAgIHN0eWxlRWxlbWVu
dC5ocmVmID0gY3NzRmlsZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICAgICAgICAgIHhoci5vcGVuKCJHRVQiLCBjc3NG
aWxlLCBmYWxzZSk7CisgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKKworICAgICAgICAgICAg
c3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgICAgICAg
ICAgIHN0eWxlRWxlbWVudC50eXBlID0gInRleHQvY3NzIjsKKyAgICAgICAgICAgIHN0eWxlRWxl
bWVudC50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CisgICAgICAgIH0KKyAgICAgICAg
ZG9jdW1lbnQuaGVhZC5pbnNlcnRCZWZvcmUoc3R5bGVFbGVtZW50LCBkb2N1bWVudC5oZWFkLmZp
cnN0Q2hpbGQpOworCisgICAgICAgIFdlYkluc3BlY3Rvci5WaWV3Ll9jc3NGaWxlVG9TdHlsZUVs
ZW1lbnRbY3NzRmlsZV0gPSBzdHlsZUVsZW1lbnQ7CisgICAgfSwKKworICAgIF9kaXNhYmxlQ1NT
SWZOZWVkZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGhpcy5fY3NzRmlsZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBjc3NGaWxlID0g
dGhpcy5fY3NzRmlsZXNbaV07CisKKyAgICAgICAgICAgIHZhciB2aWV3c1dpdGhDU1NGaWxlID0g
V2ViSW5zcGVjdG9yLlZpZXcuX2Nzc0ZpbGVUb1Zpc2libGVWaWV3Q291bnRbY3NzRmlsZV07Cisg
ICAgICAgICAgICB2aWV3c1dpdGhDU1NGaWxlLS07CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
Vmlldy5fY3NzRmlsZVRvVmlzaWJsZVZpZXdDb3VudFtjc3NGaWxlXSA9IHZpZXdzV2l0aENTU0Zp
bGU7CisKKyAgICAgICAgICAgIGlmICghdmlld3NXaXRoQ1NTRmlsZSkKKyAgICAgICAgICAgICAg
ICB0aGlzLl9kb1VubG9hZENTUyhjc3NGaWxlKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBf
ZG9VbmxvYWRDU1M6IGZ1bmN0aW9uKGNzc0ZpbGUpCisgICAgeworICAgICAgICB2YXIgc3R5bGVF
bGVtZW50ID0gV2ViSW5zcGVjdG9yLlZpZXcuX2Nzc0ZpbGVUb1N0eWxlRWxlbWVudFtjc3NGaWxl
XTsKKyAgICAgICAgc3R5bGVFbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgICB9LAorCisgICAg
cHJpbnRWaWV3SGllcmFyY2h5OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgbGluZXMg
PSBbXTsKKyAgICAgICAgdGhpcy5fY29sbGVjdFZpZXdIaWVyYXJjaHkoIiIsIGxpbmVzKTsKKyAg
ICAgICAgY29uc29sZS5sb2cobGluZXMuam9pbigiXG4iKSk7CisgICAgfSwKKworICAgIF9jb2xs
ZWN0Vmlld0hpZXJhcmNoeTogZnVuY3Rpb24ocHJlZml4LCBsaW5lcykKKyAgICB7CisgICAgICAg
IGxpbmVzLnB1c2gocHJlZml4ICsgIlsiICsgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSArICJdIiAr
ICh0aGlzLl9jaGlsZHJlbi5sZW5ndGggPyAiIHsiIDogIiIpKTsKKworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHRoaXMuX2NoaWxkcmVuLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhp
cy5fY2hpbGRyZW5baV0uX2NvbGxlY3RWaWV3SGllcmFyY2h5KHByZWZpeCArICIgICAgIiwgbGlu
ZXMpOworCisgICAgICAgIGlmICh0aGlzLl9jaGlsZHJlbi5sZW5ndGgpCisgICAgICAgICAgICBs
aW5lcy5wdXNoKHByZWZpeCArICJ9Iik7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1
cm4ge0VsZW1lbnR9CisgICAgICovCisgICAgZGVmYXVsdEZvY3VzZWRFbGVtZW50OiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdEZvY3VzZWRFbGVtZW50IHx8
IHRoaXMuZWxlbWVudDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtFbGVtZW50
fSBlbGVtZW50CisgICAgICovCisgICAgc2V0RGVmYXVsdEZvY3VzZWRFbGVtZW50OiBmdW5jdGlv
bihlbGVtZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fZGVmYXVsdEZvY3VzZWRFbGVtZW50ID0g
ZWxlbWVudDsKKyAgICB9LAorCisgICAgZm9jdXM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHZhciBlbGVtZW50ID0gdGhpcy5kZWZhdWx0Rm9jdXNlZEVsZW1lbnQoKTsKKyAgICAgICAgaWYg
KCFlbGVtZW50IHx8IGVsZW1lbnQuaXNBbmNlc3Rvcihkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0Q3VycmVudEZv
Y3VzRWxlbWVudChlbGVtZW50KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7
U2l6ZX0KKyAgICAgKi8KKyAgICBtZWFzdXJlUHJlZmVycmVkU2l6ZTogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgdGhpcy5fbG9hZENTU0lmTmVlZGVkKCk7CisgICAgICAgIFdlYkluc3BlY3Rv
ci5WaWV3Ll9vcmlnaW5hbEFwcGVuZENoaWxkLmNhbGwoZG9jdW1lbnQuYm9keSwgdGhpcy5lbGVt
ZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LnBvc2l0aW9uQXQoMCwgMCk7CisgICAgICAgIHZh
ciByZXN1bHQgPSBuZXcgU2l6ZSh0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGgsIHRoaXMuZWxlbWVu
dC5vZmZzZXRIZWlnaHQpOworICAgICAgICB0aGlzLmVsZW1lbnQucG9zaXRpb25BdCh1bmRlZmlu
ZWQsIHVuZGVmaW5lZCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5WaWV3Ll9vcmlnaW5hbFJlbW92
ZUNoaWxkLmNhbGwoZG9jdW1lbnQuYm9keSwgdGhpcy5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5f
ZGlzYWJsZUNTU0lmTmVlZGVkKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKwor
ICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUKK30KKworV2ViSW5z
cGVjdG9yLlZpZXcuX29yaWdpbmFsQXBwZW5kQ2hpbGQgPSBFbGVtZW50LnByb3RvdHlwZS5hcHBl
bmRDaGlsZDsKK1dlYkluc3BlY3Rvci5WaWV3Ll9vcmlnaW5hbEluc2VydEJlZm9yZSA9IEVsZW1l
bnQucHJvdG90eXBlLmluc2VydEJlZm9yZTsKK1dlYkluc3BlY3Rvci5WaWV3Ll9vcmlnaW5hbFJl
bW92ZUNoaWxkID0gRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ7CitXZWJJbnNwZWN0b3Iu
Vmlldy5fb3JpZ2luYWxSZW1vdmVDaGlsZHJlbiA9IEVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNo
aWxkcmVuOworCitXZWJJbnNwZWN0b3IuVmlldy5faW5jcmVtZW50Vmlld0NvdW50ZXIgPSBmdW5j
dGlvbihwYXJlbnRFbGVtZW50LCBjaGlsZEVsZW1lbnQpCit7CisgICAgdmFyIGNvdW50ID0gKGNo
aWxkRWxlbWVudC5fX3ZpZXdDb3VudGVyIHx8IDApICsgKGNoaWxkRWxlbWVudC5fX3ZpZXcgPyAx
IDogMCk7CisgICAgaWYgKCFjb3VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2hpbGUgKHBh
cmVudEVsZW1lbnQpIHsKKyAgICAgICAgcGFyZW50RWxlbWVudC5fX3ZpZXdDb3VudGVyID0gKHBh
cmVudEVsZW1lbnQuX192aWV3Q291bnRlciB8fCAwKSArIGNvdW50OworICAgICAgICBwYXJlbnRF
bGVtZW50ID0gcGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50OworICAgIH0KK30KKworV2ViSW5z
cGVjdG9yLlZpZXcuX2RlY3JlbWVudFZpZXdDb3VudGVyID0gZnVuY3Rpb24ocGFyZW50RWxlbWVu
dCwgY2hpbGRFbGVtZW50KQoreworICAgIHZhciBjb3VudCA9IChjaGlsZEVsZW1lbnQuX192aWV3
Q291bnRlciB8fCAwKSArIChjaGlsZEVsZW1lbnQuX192aWV3ID8gMSA6IDApOworICAgIGlmICgh
Y291bnQpCisgICAgICAgIHJldHVybjsKKworICAgIHdoaWxlIChwYXJlbnRFbGVtZW50KSB7Cisg
ICAgICAgIHBhcmVudEVsZW1lbnQuX192aWV3Q291bnRlciAtPSBjb3VudDsKKyAgICAgICAgcGFy
ZW50RWxlbWVudCA9IHBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudDsKKyAgICB9Cit9CisKK1dl
Ykluc3BlY3Rvci5WaWV3Ll9hc3NlcnQgPSBmdW5jdGlvbihjb25kaXRpb24sIG1lc3NhZ2UpCit7
CisgICAgaWYgKCFjb25kaXRpb24pIHsKKyAgICAgICAgY29uc29sZS50cmFjZSgpOworICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7CisgICAgfQorfQorCitFbGVtZW50LnByb3RvdHlw
ZS5hcHBlbmRDaGlsZCA9IGZ1bmN0aW9uKGNoaWxkKQoreworICAgIFdlYkluc3BlY3Rvci5WaWV3
Ll9hc3NlcnQoIWNoaWxkLl9fdmlldywgIkF0dGVtcHQgdG8gYWRkIHZpZXcgdmlhIHJlZ3VsYXIg
RE9NIG9wZXJhdGlvbi4iKTsKKyAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlZpZXcuX29yaWdpbmFs
QXBwZW5kQ2hpbGQuY2FsbCh0aGlzLCBjaGlsZCk7Cit9CisKK0VsZW1lbnQucHJvdG90eXBlLmlu
c2VydEJlZm9yZSA9IGZ1bmN0aW9uKGNoaWxkLCBhbmNob3IpCit7CisgICAgV2ViSW5zcGVjdG9y
LlZpZXcuX2Fzc2VydCghY2hpbGQuX192aWV3LCAiQXR0ZW1wdCB0byBhZGQgdmlldyB2aWEgcmVn
dWxhciBET00gb3BlcmF0aW9uLiIpOworICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVmlldy5fb3Jp
Z2luYWxJbnNlcnRCZWZvcmUuY2FsbCh0aGlzLCBjaGlsZCwgYW5jaG9yKTsKK30KKworCitFbGVt
ZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZCA9IGZ1bmN0aW9uKGNoaWxkKQoreworICAgIFdlYklu
c3BlY3Rvci5WaWV3Ll9hc3NlcnQoIWNoaWxkLl9fdmlld0NvdW50ZXIgJiYgIWNoaWxkLl9fdmll
dywgIkF0dGVtcHQgdG8gcmVtb3ZlIGVsZW1lbnQgY29udGFpbmluZyB2aWV3IHZpYSByZWd1bGFy
IERPTSBvcGVyYXRpb24iKTsKKyAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlZpZXcuX29yaWdpbmFs
UmVtb3ZlQ2hpbGQuY2FsbCh0aGlzLCBjaGlsZCk7Cit9CisKK0VsZW1lbnQucHJvdG90eXBlLnJl
bW92ZUNoaWxkcmVuID0gZnVuY3Rpb24oKQoreworICAgIFdlYkluc3BlY3Rvci5WaWV3Ll9hc3Nl
cnQoIXRoaXMuX192aWV3Q291bnRlciwgIkF0dGVtcHQgdG8gcmVtb3ZlIGVsZW1lbnQgY29udGFp
bmluZyB2aWV3IHZpYSByZWd1bGFyIERPTSBvcGVyYXRpb24iKTsKKyAgICBXZWJJbnNwZWN0b3Iu
Vmlldy5fb3JpZ2luYWxSZW1vdmVDaGlsZHJlbi5jYWxsKHRoaXMpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvaGVscFNjcmVlbi5jc3MgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9oZWxwU2NyZWVuLmNzcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzRlMmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvaGVscFNjcmVlbi5jc3MKQEAgLTAsMCAr
MSw0OTIgQEAKKy5oZWxwLXdpbmRvdy1vdXRlciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIHJpZ2h0OiAwOworICAgIGJvdHRvbTogMDsK
KyAgICB6LWluZGV4OiAyMDAwOworfQorCisuaGVscC13aW5kb3ctbWFpbiB7CisgICAgbWF4LWhl
aWdodDogMTAwJTsKKyAgICBjb2xvcjogd2hpdGU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdi
YSgxNywgMTcsIDE3LCAwLjg1KTsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CisgICAgLXdl
YmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uOworICAgIGJvcmRlci10b3Atd2lkdGg6IDA7Cisg
ICAgYm9yZGVyLXJhZGl1czogMTBweDsKK30KKworLmhlbHAtd2luZG93LWNhcHRpb24geworICAg
IGJvcmRlci1ib3R0b206IHNvbGlkIDFweCByZ2IoMTUzLCAxNTMsIDE1Myk7CisgICAgbWFyZ2lu
OiAwIDhweDsKKyAgICBwYWRkaW5nOiAwIDJweDsKKyAgICBsaW5lLWhlaWdodDogMjhweDsKK30K
KworLmhlbHAtd2luZG93LXRpdGxlIHsKKyAgICBmb250LXNpemU6IDE2cHg7CisgICAgbWFyZ2lu
OiAwOworICAgIHBhZGRpbmctdG9wOiAxcHg7CisgICAgbWFyZ2luLWJvdHRvbTogLTFweDsKK30K
KworLmhlbHAtY29udGVudCB7CisgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICBvdmVyZmxvdy14
OiBoaWRkZW47CisgICAgc2Nyb2xsYmFyLXdpZHRoOiAxMXB4OworICAgIC13ZWJraXQtZmxleDog
MTsKKyAgICBtYXJnaW46IDhweDsKKyAgICBwYWRkaW5nOiAwIDRweDsKKyAgICBmb250LXNpemU6
IDEzcHg7Cit9CisKKy5oZWxwLXdpbmRvdy1tYWluIDo6LXdlYmtpdC1zY3JvbGxiYXIgeworICAg
IHdpZHRoOiAxMXB4OworfQorCisuaGVscC13aW5kb3ctbWFpbiA6Oi13ZWJraXQtc2Nyb2xsYmFy
LWNvcm5lciwKKy5oZWxwLXdpbmRvdy1tYWluIDo6LXdlYmtpdC1yZXNpemVyIHsKKyAgICBkaXNw
bGF5OiBub25lOworfQorCisuaGVscC13aW5kb3ctbWFpbiA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRo
dW1iOnZlcnRpY2FsIHsKKyAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwg
bGVmdCB0b3AsIHJpZ2h0IHRvcCwgZnJvbShyZ2IoMTI4LCAxMjgsIDEyOCkpLCB0byhyZ2IoMTI4
LCAxMjgsIDEyOCkpLCBjb2xvci1zdG9wKDQwJSwgcmdiKDk2LCA5NiwgOTYpKSk7CisgICAgYm9y
ZGVyLXJhZGl1czogNXB4OworICAgIG1pbi1oZWlnaHQ6IDIwcHg7Cit9CisKKy5oZWxwLXdpbmRv
dy1tYWluIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6dmVydGljYWw6aG92ZXIsCisuaGVscC13
aW5kb3ctbWFpbiA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOnZlcnRpY2FsOmFjdGl2ZSB7Cisg
ICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCByaWdodCB0
b3AsIGZyb20ocmdiKDE3NiwgMTc2LCAxNzYpKSwgdG8ocmdiKDE3NiwgMTc2LCAxNzYpKSwgY29s
b3Itc3RvcCg0MCUsIHJnYigxNDQsIDE0NCwgMTQ0KSkpOworfQorCisuaGVscC13aW5kb3ctbWFp
biA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrOnZlcnRpY2FsIHsKKyAgICBiYWNrZ3JvdW5kOiAt
d2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIHJpZ2h0IHRvcCwgZnJvbShyZ2IoMTAs
IDEwLCAxMCkpLCB0byhyZ2IoMzIsIDMyLCAzMikpLCBjb2xvci1zdG9wKDI1JSwgcmdiKDMyLCAz
MiwgMzIpKSk7CisgICAgYm9yZGVyLXJhZGl1czogNXB4OworfQorCisuaGVscC1jbG9zZS1idXR0
b24geworICAgIGJvcmRlcjogMDsKKyAgICBwYWRkaW5nOiAwOworICAgIGZvbnQtc2l6ZTogMTRw
eDsKKyAgICBjb2xvcjogcmdiKDIyMiwgMjIyLCAyMjIpOworICAgIGJhY2tncm91bmQ6IC13ZWJr
aXQtZ3JhZGllbnQocmFkaWFsLCAzMCUgMzAlLCAxLCA1MCUgNTAlLCA4LCBmcm9tKHJnYigxNDQs
IDE0NCwgMTQ0KSksIHRvKHJnYig5NiwgOTYsIDk2KSkpOworICAgIGJvcmRlci1yYWRpdXM6IDhw
eDsKKyAgICBoZWlnaHQ6IDE2cHg7CisgICAgd2lkdGg6IDE2cHg7CisgICAgbGluZS1oZWlnaHQ6
IDEycHg7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogNnB4OworICAgIHJpZ2h0
OiA2cHg7Cit9CisKKyNzZXR0aW5ncy1zY3JlZW4gLmhlbHAtY2xvc2UtYnV0dG9uIHsKKyAgICB0
b3A6IDhweDsKKyAgICByaWdodDogOHB4OworfQorCitib2R5LmRvY2stdG8tYm90dG9tIC5oZWxw
LWNvbnRlbnQgeworICAgIG1hcmdpbi1ib3R0b206IDhweDsKK30KKworLmhlbHAtY2xvc2UtYnV0
dG9uOmhvdmVyIHsKKyAgICBjb2xvcjogd2hpdGU7Cit9CisKK2JvZHkucGxhdGZvcm0tbWFjIC5o
ZWxwLXdpbmRvdy1tYWluIC50YWJiZWQtcGFuZS1oZWFkZXItY29udGVudHMgeworICAgIG1hcmdp
bi1sZWZ0OiAyN3B4OworfQorCitib2R5LnBsYXRmb3JtLW1hYyAuaGVscC13aW5kb3ctbWFpbiAu
aGVscC13aW5kb3ctdGl0bGUgeworICAgIG1hcmdpbi1sZWZ0OiAxOHB4OworfQorCisuaGVscC1j
b250YWluZXIgeworICAgIHdpZHRoOiAxMDAlOworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IGF1
dG87CisgICAgLXdlYmtpdC1jb2x1bW4td2lkdGg6IDQ3MHB4OworfQorCitib2R5LnBsYXRmb3Jt
LW1hYyAuc2V0dGluZ3MtdGFiLmhlbHAtY29udGFpbmVyIHsKKyAgICAtd2Via2l0LWNvbHVtbi13
aWR0aDogNDMwcHg7Cit9CisKK2JvZHkucGxhdGZvcm0tbWFjIC5oZWxwLWNvbnRhaW5lciB7Cisg
ICAgLXdlYmtpdC1jb2x1bW4td2lkdGg6IDMzMHB4OworfQorCisuaGVscC1ibG9jayB7CisgICAg
ZGlzcGxheTogYmxvY2s7CisgICAgcGFkZGluZy1ib3R0b206IDlweDsKKyAgICB3aWR0aDogNDcw
cHg7CisgICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdm9pZDsKK30KKworYm9keS5w
bGF0Zm9ybS1tYWMgLnNldHRpbmdzLXRhYiAuaGVscC1ibG9jayB7CisgICAgd2lkdGg6IDQzMHB4
OworfQorCisjZHJhd2VyLWNvbnRlbnRzIC5zZXR0aW5ncy10YWIgeworICAgIHBhZGRpbmctbGVm
dDogMTJweDsKK30KKworLnNldHRpbmdzLXRhYi5oZWxwLWNvbnRhaW5lciB7CisgICAgLXdlYmtp
dC1jb2x1bW4td2lkdGg6IDQxMHB4OworfQorCisuc2V0dGluZ3MtdGFiIC5oZWxwLWJsb2NrIHsK
KyAgICB3aWR0aDogNDEwcHg7Cit9CisKKy5oZWxwLWxpbmUgeworICAgIHBhZGRpbmctYm90dG9t
OiAzcHg7Cit9CisKKy5oZWxwLWtleS1jZWxsIHsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgd2lkdGg6IDI3MHB4OworICAgIHRleHQtYWxpZ246IHJpZ2h0OworfQorCitib2R5LnBs
YXRmb3JtLW1hYyAuaGVscC1rZXktY2VsbCB7CisgICAgd2lkdGg6IDEyMHB4OworfQorCisuaGVs
cC1jZWxsIHsKKyAgICBkaXNwbGF5OiBpbmxpbmU7Cit9CisKKy5oZWxwLXNlY3Rpb24tdGl0bGUg
eworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgIGNvbG9yOiBpbmhlcml0OworfQorCisuaGVs
cC1rZXkgeworICAgIGNvbG9yOiBibGFjazsKKyAgICBmb250LXdlaWdodDogYm9sZDsKK30KKwor
Ym9keS5wbGF0Zm9ybS1tYWMgLmhlbHAta2V5IHsKKyAgICBmb250LWZhbWlseTogTHVjaWRhIEdy
YW5kZSwgc2Fucy1zZXJpZjsKK30KKworLmhlbHAtY29tYmluZS1rZXlzLCAuaGVscC1rZXktZGVs
aW1pdGVyIHsKKyAgICBjb2xvcjogYmxhY2s7CisgICAgZm9udC1zaXplOiA5cHg7Cit9CisKKy5o
ZWxwLWNvbWJpbmUta2V5cyB7CisgICAgbWFyZ2luOiAwIDAuM2VtOworfQorCisuaGVscC1rZXkt
ZGVsaW1pdGVyIHsKKyAgICBtYXJnaW46IDAgMC41ZW07Cit9CisKKy5oZWxwLWNvbnRlbnQgcCB7
CisgICAgbWFyZ2luOiAzcHggMDsKK30KKworLmhlbHAtY29udGVudCBmaWVsZHNldCB7CisgICAg
Ym9yZGVyOiBub25lOworICAgIG1hcmdpbi1sZWZ0OiA3cHg7Cit9CisKK2JvZHkucGxhdGZvcm0t
bWFjIC5zZXR0aW5ncy10YWIuaGVscC1jb250ZW50IGZpZWxkc2V0IHsKKyAgICBtYXJnaW4tbGVm
dDogMTBweDsKK30KKworLmhlbHAtY29udGVudCBmaWVsZHNldCBwIHsKKyAgICBib3JkZXItbGVm
dDogMXB4IHNvbGlkIHJnYigxMjgsMTI4LDEyOCk7CisgICAgbWFyZ2luOiAwIDAgMCA2cHg7Cisg
ICAgcGFkZGluZy1sZWZ0OiAzcHg7Cit9CisKKy5oZWxwLWNvbnRlbnQgZmllbGRzZXQgbGFiZWwg
eworICAgIHBhZGRpbmctcmlnaHQ6IDRweDsKK30KKworLmhlbHAtY29udGVudCBwLmhlbHAtc2Vj
dGlvbiB7CisgICAgbWFyZ2luOiAwIDAgMTVweCAwOworfQorCisuc2V0dGluZ3MtZXhwZXJpbWVu
dHMtd2FybmluZy1zdWJzZWN0aW9uLXdhcm5pbmcgeworICAgIGNvbG9yOiByZ2IoMjAwLCAwLCAw
KTsKK30KKworLnNldHRpbmdzLWV4cGVyaW1lbnRzLXdhcm5pbmctc3Vic2VjdGlvbi1tZXNzYWdl
IHsKKyAgICBjb2xvcjogaW5oZXJpdDsKK30KKworI3Jlc29sdXRpb24tb3ZlcnJpZGUtc2VjdGlv
biB7CisgICAgbWFyZ2luLWxlZnQ6IDEzcHg7Cit9CisKKy5oZWxwLWNvbnRlbnQgaW5wdXRbdHlw
ZT1jaGVja2JveF0geworICAgIGhlaWdodDogMTNweDsKKyAgICB3aWR0aDogMTNweDsKKyAgICBt
YXJnaW46IDAgN3B4IDAgMDsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogLTJweDsKK30KKworYm9keS5w
bGF0Zm9ybS1tYWMgLmhlbHAtY29udGVudCBpbnB1dFt0eXBlPWNoZWNrYm94XSB7CisgICAgdmVy
dGljYWwtYWxpZ246IC0xcHg7Cit9CisKKy5oZWxwLWNvbnRlbnQgaW5wdXRbdHlwZT1yYWRpb10g
eworICAgIHZlcnRpY2FsLWFsaWduOiAtMnB4OworfQorCitib2R5LnBsYXRmb3JtLW1hYyAuaGVs
cC1jb250ZW50IGlucHV0W3R5cGU9cmFkaW9dIHsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogLTFweDsK
K30KKworLmhlbHAtY29udGVudCBzZWxlY3QgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYig2
NCwgNjQsIDY0KTsKKyAgICBjb2xvcjogd2hpdGU7CisgICAgYm9yZGVyLWNvbG9yOiBibGFjazsK
KyAgICBwYWRkaW5nOiAwIDRweDsKK30KKworLmhlbHAtY29udGVudCBzZWxlY3Q6ZGlzYWJsZWQg
eworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigzMiwgMzIsIDMyKTsKKyAgICBjb2xvcjogZ3Jh
eXRleHQ7Cit9CisKKy5oZWxwLWNvbnRlbnQgb3B0aW9uIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiAjRUVFRUVFOworICAgIGNvbG9yOiBibGFjazsKK30KKworI3NldHRpbmdzLXNjcmVlbiAuaGVs
cC13aW5kb3ctbWFpbiwKKyNkcmF3ZXItY29udGVudHMgLmhlbHAtd2luZG93LW1haW4geworICAg
IGNvbG9yOiByZ2IoNDgsIDU3LCA2Nik7CisgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Cisg
ICAgYm9yZGVyLXJhZGl1czogMDsKK30KKworI3NldHRpbmdzLXNjcmVlbiAuaGVscC13aW5kb3ct
bWFpbiB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMTBweDsKKyAgICByaWdo
dDogMTBweDsKKyAgICBib3R0b206IDEwcHg7CisgICAgbGVmdDogMTBweDsKKyAgICBoZWlnaHQ6
IGluaXRpYWw7CisgICAgcGFkZGluZzogMjFweCAwIDAgMjFweDsKKyAgICBib3gtc2hhZG93OiAx
cHggMXB4IDVweCAycHggcmdiYSgxMjgsIDEyOCwgMTI4LCAwLjcpOworfQorCisjc2V0dGluZ3Mt
c2NyZWVuIC5oZWxwLXdpbmRvdy1sYWJlbCB7CisgICAgZm9udC1zaXplOiAxOHB4OworICAgIGNv
bG9yOiBpbmhlcml0OworICAgIHBhZGRpbmctdG9wOiAxcHg7Cit9CisKKyNkcmF3ZXItY29udGVu
dHMgLmhlbHAtY29udGFpbmVyLXdyYXBwZXIgeworICAgIHRvcDogMzJweDsKK30KKworLmhlbHAt
Y29udGFpbmVyLXdyYXBwZXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDYw
cHg7CisgICAgbGVmdDogNXB4OworICAgIHJpZ2h0OiAwOworICAgIGJvdHRvbTogMDsKKyAgICBv
dmVyZmxvdzogYXV0bzsKK30KKworI3NldHRpbmdzLXNjcmVlbiAudGFiYmVkLXBhbmUtaGVhZGVy
IHsKKyAgICBib3JkZXI6IG5vbmUgdHJhbnNwYXJlbnQ7CisgICAgaGVpZ2h0OiBhdXRvOworICAg
IHdpZHRoOiAxMTBweDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgdG9wOiAxNHB4Owor
fQorCisjc2V0dGluZ3Mtc2NyZWVuIC50YWJiZWQtcGFuZS1oZWFkZXItY29udGVudHMgeworICAg
IG1hcmdpbjogMDsKK30KKworI3NldHRpbmdzLXNjcmVlbiAudGFiYmVkLXBhbmUtaGVhZGVyLXRh
YnMgeworICAgIHBhZGRpbmctdG9wOiA1cHg7CisgICAgd2lkdGg6IDEwMHB4OworfQorCisjc2V0
dGluZ3Mtc2NyZWVuIC50YWJiZWQtcGFuZS1oZWFkZXItdGFiIHsKKyAgICBiYWNrZ3JvdW5kLWNv
bG9yOiB0cmFuc3BhcmVudDsKKyAgICBib3JkZXI6IG5vbmUgdHJhbnNwYXJlbnQ7CisgICAgY3Vy
c29yOiBwb2ludGVyOworICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgICAgdGV4dC1zaGFkb3c6
IG5vbmU7CisgICAgY29sb3I6ICM5OTk5OTk7CisgICAgaGVpZ2h0OiAyMnB4OworICAgIGZvbnQt
c2l6ZTogMTNweDsKKyAgICBwYWRkaW5nLWxlZnQ6IDA7Cit9CisKKyNzZXR0aW5ncy1zY3JlZW4g
LnRhYmJlZC1wYW5lLWhlYWRlci10YWIuc2VsZWN0ZWQgeworICAgIGNvbG9yOiBpbmhlcml0Owor
fQorCisjc2V0dGluZ3Mtc2NyZWVuIC50YWJiZWQtcGFuZS1jb250ZW50LAorI2RyYXdlci1jb250
ZW50cyAudGFiYmVkLXBhbmUtY29udGVudCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IHRvcDogMDsKKyAgICByaWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgbWFyZ2luOiA4cHg7
Cit9CisKKyNkcmF3ZXItY29udGVudHMgLnRhYmJlZC1wYW5lLWNvbnRlbnQgeworICAgIHBhZGRp
bmc6IDAgNHB4OworfQorCisjc2V0dGluZ3Mtc2NyZWVuIC50YWJiZWQtcGFuZS1jb250ZW50IHsK
KyAgICBsZWZ0OiAxMjBweDsKK30KKworI2RyYXdlci1jb250ZW50cyAudGFiYmVkLXBhbmUtY29u
dGVudCB7CisgICAgbGVmdDogMDsKK30KKworLnNldHRpbmdzLXRhYi5oZWxwLWNvbnRlbnQgewor
ICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwOworfQorCisuc2V0dGluZ3MtdGFiIGlucHV0
Om5vdChbdHlwZV0pLCAuc2V0dGluZ3MtdGFiIGlucHV0W3R5cGU9InRleHQiXSB7CisgICAgYm9y
ZGVyOiAxcHggc29saWQgcmdiKDIxMywgMjEzLCAyMTMpOworICAgIGJvcmRlci1yYWRpdXM6IDJw
eDsKKyAgICBjb2xvcjogIzQ0NDQ0NDsKKyAgICBmb250OiBpbmhlcml0OworICAgIHBhZGRpbmc6
IDNweDsKK30KKworLnNldHRpbmdzLXRhYiBpbnB1dC5udW1lcmljIHsKKyAgICB0ZXh0LWFsaWdu
OiByaWdodDsKK30KKworLnNldHRpbmdzLXRhYi1jb250YWluZXIgaGVhZGVyIHsKKyAgICBwYWRk
aW5nOiAxNHB4IDA7CisgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNFRUVFRUU7Cit9CisK
KyNkcmF3ZXItY29udGVudHMgLnNldHRpbmdzLXRhYi1jb250YWluZXIgaGVhZGVyIHsKKyAgICBw
YWRkaW5nOiAwOworfQorCisjdGFiLXNob3J0Y3V0cyB7CisgICAgbWFyZ2luLXRvcDogMjVweCAh
aW1wb3J0YW50OworfQorCisjZXhwZXJpbWVudHMtdGFiLWNvbnRlbnQgLmhlbHAtY29udGFpbmVy
IHsKKyAgICAtd2Via2l0LWNvbHVtbi13aWR0aDogNDcwcHg7Cit9CisKKyNleHBlcmltZW50cy10
YWItY29udGVudCAuaGVscC1ibG9jayB7CisgICAgd2lkdGg6IDQ3MHB4OworfQorCisuc2V0dGlu
Z3MtdGFiLWNvbnRhaW5lciBoZWFkZXIgPiBoMyB7CisgICAgZm9udC1zaXplOiAxOHB4OworICAg
IGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmctYm90dG9t
OiAzcHg7Cit9CisKKy5zZXR0aW5ncy10YWIgLmhlbHAtc2VjdGlvbi10aXRsZSB7CisgICAgY29s
b3I6IGJsYWNrOworfQorCisuc2V0dGluZ3MtdGFiIC5oZWxwLWJsb2NrIGxhYmVsIHsKKyAgICBm
b250LXNpemU6IDE0cHg7Cit9CisKKy5zZXR0aW5ncy10YWIgLmhlbHAtYmxvY2sgZmllbGRzZXQ6
bm90KC50b3BsZXZlbCkgbGFiZWwgeworICAgIGZvbnQtc2l6ZTogMTNweDsKK30KKworLnNldHRp
bmdzLXRhYiAuaGVscC1ibG9jayBmaWVsZHNldDpkaXNhYmxlZCBsYWJlbDpob3ZlciwKKy5zZXR0
aW5ncy10YWIgLmhlbHAtYmxvY2sgZmllbGRzZXQudG9wbGV2ZWwgbGFiZWw6aG92ZXIgeworICAg
IGNvbG9yOiBpbmhlcml0OworfQorCisuc2V0dGluZ3MtdGFiIC5oZWxwLWJsb2NrIGxhYmVsOmhv
dmVyIHsKKyAgICBjb2xvcjogYmxhY2s7Cit9CisKKy5zZXR0aW5ncy10YWIgcCB7CisgICAgbWFy
Z2luOiAxMHB4IDA7Cit9CisKKy5zZXR0aW5ncy10YWIgZmllbGRzZXQgcCB7CisgICAgYm9yZGVy
LWxlZnQ6IG5vbmUgdHJhbnNwYXJlbnQ7CisgICAgcGFkZGluZzogMnB4IDAgMnB4IDNweDsKK30K
KworLnNldHRpbmdzLXRhYiBzZWxlY3QgeworICAgIGJhY2tncm91bmQtY29sb3I6ICNGQUZBRkE7
CisgICAgYm9yZGVyLWNvbG9yOiByZ2IoMjEzLCAyMTMsIDIxMyk7CisgICAgYm9yZGVyLXJhZGl1
czogMnB4OworICAgIGNvbG9yOiBpbmhlcml0OworICAgIHBhZGRpbmc6IDAgNHB4OworfQorCisu
c2V0dGluZ3MtdGFiIHNlbGVjdDpkaXNhYmxlZCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdi
KDIyMSwgMjIxLCAyMjEpOworfQorCisKKworLnNldHRpbmdzLXRhYiAuZmlsZS1zeXN0ZW1zLWVk
aXRvciBpbnB1dC5maWxlLXN5c3RlbS1wYXRoIHsKKyAgICB3aWR0aDogMzgzcHg7Cit9CisKKy5z
ZXR0aW5ncy10YWIgLmZpbGUtbWFwcGluZ3MtZWRpdG9yIC53b3Jrc3BhY2Utc2V0dGluZ3Mtcm93
IGlucHV0IHsKKyAgICB3aWR0aDogMTkwcHg7Cit9CisKKy5zZXR0aW5ncy10YWIgLmZpbGUtbWFw
cGluZ3MtZWRpdG9yIC53b3Jrc3BhY2Utc2V0dGluZ3Mtcm93IGlucHV0LmZpbGUtbWFwcGluZy11
cmwgeworICAgIG1hcmdpbi1yaWdodDogM3B4OworfQorCisjd29ya3NwYWNlLXRhYi1jb250ZW50
IC5idXR0b246aG92ZXIgeworICAgIG9wYWNpdHk6IDEuMCAhaW1wb3J0YW50OworfQorCisjd29y
a3NwYWNlLXRhYi1jb250ZW50IC53b3Jrc3BhY2Utc2V0dGluZ3Mtcm93OmhvdmVyIC5idXR0b24g
eworICAgIHZpc2liaWxpdHk6IHZpc2libGU7CisgICAgb3BhY2l0eTogMC40OworfQorCisjd29y
a3NwYWNlLXRhYi1jb250ZW50IC53b3Jrc3BhY2Utc2V0dGluZ3Mtcm93IC5idXR0b24geworICAg
IHdpZHRoOiAxMHB4OworICAgIGhlaWdodDogMTBweDsKKyAgICBib3JkZXI6IG5vbmU7CisgICAg
LXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFy
ZW50OworICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBj
ZW50ZXI7CisgICAgbWFyZ2luOiAwIDAgMCA0cHg7Cit9CisKKyN3b3Jrc3BhY2UtdGFiLWNvbnRl
bnQgLndvcmtzcGFjZS1zZXR0aW5ncy1yb3cgLnJlbW92ZS1idXR0b24geworICAgIGJhY2tncm91
bmQtaW1hZ2U6IHVybChJbWFnZXMvZGVsZXRlSWNvbi5wbmcpOworfQorCisjd29ya3NwYWNlLXRh
Yi1jb250ZW50IC53b3Jrc3BhY2Utc2V0dGluZ3Mtcm93IC5hZGQtYnV0dG9uIHsKKyAgICBiYWNr
Z3JvdW5kLWltYWdlOiB1cmwoSW1hZ2VzL2FkZEljb24ucG5nKTsKK30KKworI3dvcmtzcGFjZS10
YWItY29udGVudCAud29ya3NwYWNlLXNldHRpbmdzLXJvdyAuZmlsZS1zeXN0ZW0tYWRkLWJ1dHRv
biB7CisgICAgY29sb3I6IGdyYXk7CisgICAgYm9yZGVyOiBub25lOworICAgIGJvcmRlci1ib3R0
b206IDFweCB0cmFuc3BhcmVudCBzb2xpZDsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7
CisgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cit9CisKKyN3b3Jrc3BhY2UtdGFiLWNvbnRl
bnQgLndvcmtzcGFjZS1zZXR0aW5ncy1yb3cgLmZpbGUtc3lzdGVtLWFkZC1idXR0b246aG92ZXIg
eworICAgIGJvcmRlci1ib3R0b206IDFweCBncmF5IGRhc2hlZDsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206825</attachid>
            <date>2013-07-16 16:35:30 -0700</date>
            <delta_ts>2013-07-16 17:30:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118715-20130717083529.patch</filename>
            <type>text/plain</type>
            <size>8771</size>
            <attacher name="Seokju Kwon">seokju</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyNzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA5
MGUzYTU3NGRlZTU3MDJjMTBjYTU2ZmQ3YzVmNjk1MDcxNWM3MjhiLi5lNjhjNDg0OTc2Y2ViMmUx
NTQ0NzYyNDMzNDFiZDMyNGJjZTVmZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxMy0wNy0xNiAgU2Vva2p1IEt3b24gIDxzZW9ranUua3dvbkBnbWFpbC5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yRnJvbnRlbmRIb3N0IGlzIHVu
ZGVmaW5lZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTE4NzE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIEluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanMgdG8gTmV3IEluc3BlY3RvciBiZWNhdXNl
IG9mIHRoZSBJbnNwZWN0b3JGcm9udGVuZEhvc3QgaW5pdGlhbGl6YXRpb24uCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0luc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanM6IEFkZGVkLgorICAg
ICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViKToKKyAgICAgICAg
KC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUucGxhdGZv
cm0pOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLnBy
b3RvdHlwZS5wb3J0KToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRI
b3N0U3R1Yi5wcm90b3R5cGUuYnJpbmdUb0Zyb250KToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3Iu
SW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUuY2xvc2VXaW5kb3cpOgorICAgICAg
ICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLnByb3RvdHlwZS5yZXF1
ZXN0U2V0RG9ja1NpZGUpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVu
ZEhvc3RTdHViLnByb3RvdHlwZS5zZXRBdHRhY2hlZFdpbmRvd0hlaWdodCk6CisgICAgICAgICgu
V2ViSW5zcGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlLnNldEF0dGFj
aGVkV2luZG93V2lkdGgpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVu
ZEhvc3RTdHViLnByb3RvdHlwZS5zZXRUb29sYmFySGVpZ2h0KToKKyAgICAgICAgKC5XZWJJbnNw
ZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUubW92ZVdpbmRvd0J5KToK
KyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5
cGUubG9hZGVkKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0
U3R1Yi5wcm90b3R5cGUubG9jYWxpemVkU3RyaW5nc1VSTCk6CisgICAgICAgICguV2ViSW5zcGVj
dG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlLmluc3BlY3RlZFVSTENoYW5n
ZWQpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLnBy
b3RvdHlwZS5jb3B5VGV4dCk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckZyb250
ZW5kSG9zdFN0dWIucHJvdG90eXBlLm9wZW5Jbk5ld1RhYik6CisgICAgICAgICguV2ViSW5zcGVj
dG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlLmNhblNhdmUpOgorICAgICAg
ICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLnByb3RvdHlwZS5zYXZl
KToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90
b3R5cGUuYXBwZW5kKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRI
b3N0U3R1Yi5wcm90b3R5cGUuY2xvc2UuY2xlYW51cCk6CisgICAgICAgICguV2ViSW5zcGVjdG9y
Lkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlLmNsb3NlKToKKyAgICAgICAgKC5X
ZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUuc2VuZE1lc3Nh
Z2VUb0JhY2tlbmQpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhv
c3RTdHViLnByb3RvdHlwZS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL01haW4uaHRtbDoKKwogMjAxMy0wNy0xNSAgU2Vva2p1IEt3b24gIDxzZW9r
anUua3dvbkBnbWFpbC5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVtb3ZlIHVudXNl
ZCBjb2x1bW5zIGZyb20gc2VsZWN0IHF1ZXJ5IGluIEltYWdlVXRpbGl0aWVzLmpzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnNwZWN0b3JGcm9udGVu
ZEhvc3RTdHViLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0U3R1Yi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGZkODQzZGNiNTcwN2RjOTMwZGNj
NzcxZjFlMDY0NzI4Y2NlNDg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcwpAQCAtMCwwICsx
LDE3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNlb2tqdSBLd29uIChzZW9ranUua3dv
bkBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworaWYgKCF3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0KSB7CisKKyAgICBXZWJJ
bnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1YiA9IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2F0dGFjaGVkV2luZG93SGVpZ2h0ID0gMDsKKyAgICAgICAgdGhpcy5fZmls
ZUJ1ZmZlcnMgPSB7fTsKKyAgICB9CisKKyAgICBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRl
bmRIb3N0U3R1Yi5wcm90b3R5cGUgPSB7CisgICAgICAgIHBsYXRmb3JtOiBmdW5jdGlvbigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBtYXRjaCA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0
Y2goL1dpbmRvd3MgTlQvKTsKKyAgICAgICAgICAgIGlmIChtYXRjaCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gIndpbmRvd3MiOworICAgICAgICAgICAgbWF0Y2ggPSBuYXZpZ2F0b3IudXNlckFn
ZW50Lm1hdGNoKC9NYWMgT1MgWC8pOworICAgICAgICAgICAgaWYgKG1hdGNoKQorICAgICAgICAg
ICAgICAgIHJldHVybiAibWFjIjsKKyAgICAgICAgICAgIHJldHVybiAibGludXgiOworICAgICAg
ICB9LAorCisgICAgICAgIHBvcnQ6IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuICJ1bmtub3duIjsKKyAgICAgICAgfSwKKworICAgICAgICBicmluZ1RvRnJvbnQ6IGZ1
bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fd2luZG93VmlzaWJsZSA9IHRy
dWU7CisgICAgICAgIH0sCisKKyAgICAgICAgY2xvc2VXaW5kb3c6IGZ1bmN0aW9uKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdGhpcy5fd2luZG93VmlzaWJsZSA9IGZhbHNlOworICAgICAgICB9
LAorCisgICAgICAgIHJlcXVlc3RTZXREb2NrU2lkZTogZnVuY3Rpb24oc2lkZSkKKyAgICAgICAg
eworICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2V0RG9ja1NpZGUoc2lkZSk7Cisg
ICAgICAgIH0sCisKKyAgICAgICAgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQ6IGZ1bmN0aW9uKGhl
aWdodCkKKyAgICAgICAgeworICAgICAgICB9LAorCisgICAgICAgIHNldEF0dGFjaGVkV2luZG93
V2lkdGg6IGZ1bmN0aW9uKHdpZHRoKQorICAgICAgICB7CisgICAgICAgIH0sCisKKyAgICAgICAg
c2V0VG9vbGJhckhlaWdodDogZnVuY3Rpb24od2lkdGgpCisgICAgICAgIHsKKyAgICAgICAgfSwK
KworICAgICAgICBtb3ZlV2luZG93Qnk6IGZ1bmN0aW9uKHgsIHkpCisgICAgICAgIHsKKyAgICAg
ICAgfSwKKworICAgICAgICBsb2FkZWQ6IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICB9
LAorCisgICAgICAgIGxvY2FsaXplZFN0cmluZ3NVUkw6IGZ1bmN0aW9uKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgfSwKKworICAgICAgICBpbnNw
ZWN0ZWRVUkxDaGFuZ2VkOiBmdW5jdGlvbih0aXRsZSkKKyAgICAgICAgeworICAgICAgICAgICAg
ZG9jdW1lbnQudGl0bGUgPSB0aXRsZTsKKyAgICAgICAgfSwKKworICAgICAgICBjb3B5VGV4dDog
ZnVuY3Rpb24odGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fdGV4dFRvQ29weSA9
IHRleHQ7CisgICAgICAgICAgICBpZiAoIWRvY3VtZW50LmV4ZWNDb21tYW5kKCJjb3B5IikpCisg
ICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiQ2xpcGJvYXJkIGFjY2VzcyBpcyBkZW5pZWQi
KTsKKyAgICAgICAgfSwKKworICAgICAgICBvcGVuSW5OZXdUYWI6IGZ1bmN0aW9uKHVybCkKKyAg
ICAgICAgeworICAgICAgICAgICAgd2luZG93Lm9wZW4odXJsLCAiX2JsYW5rIik7CisgICAgICAg
IH0sCisKKyAgICAgICAgY2FuU2F2ZTogZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSwKKworICAgICAgICBzYXZlOiBmdW5jdGlvbih1cmws
IGNvbnRlbnQsIGZvcmNlU2F2ZUFzKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodGhpcy5f
ZmlsZUJ1ZmZlcnNbdXJsXSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNvbmN1
cnJlbnQgZmlsZSBtb2RpZmljYXRpb24gZGVuaWVkLiIpOworCisgICAgICAgICAgICB0aGlzLl9m
aWxlQnVmZmVyc1t1cmxdID0gW2NvbnRlbnRdOworICAgICAgICB9LAorCisgICAgICAgIGFwcGVu
ZDogZnVuY3Rpb24odXJsLCBjb250ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgYnVm
ZmVyID0gdGhpcy5fZmlsZUJ1ZmZlcnNbdXJsXTsKKyAgICAgICAgICAgIGlmICghYnVmZmVyKQor
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRmlsZSBpcyBub3Qgb3BlbiBmb3Igd3Jp
dGUgeWV0LiIpOworCisgICAgICAgICAgICBidWZmZXIucHVzaChjb250ZW50KTsKKyAgICAgICAg
fSwKKworICAgICAgICBjbG9zZTogZnVuY3Rpb24odXJsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgY29udGVudCA9IHRoaXMuX2ZpbGVCdWZmZXJzW3VybF07CisgICAgICAgICAgICBkZWxl
dGUgdGhpcy5fZmlsZUJ1ZmZlcnNbdXJsXTsKKworICAgICAgICAgICAgaWYgKCFjb250ZW50KQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgdmFyIGxhc3RTbGFzaEluZGV4
ID0gdXJsLmxhc3RJbmRleE9mKCIvIik7CisgICAgICAgICAgICB2YXIgZmlsZU5hbWVTdWZmaXgg
PSBsYXN0U2xhc2hJbmRleCA9PT0gLTEgPyB1cmwgOiB1cmwuc3Vic3RyaW5nKGxhc3RTbGFzaElu
ZGV4ICsgMSk7CisKKyAgICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoY29udGVudCwge3R5
cGU6ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifSk7CisgICAgICAgICAgICB2YXIgb2JqZWN0
VXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7CisgICAgICAgICAgICB3aW5k
b3cubG9jYXRpb24gPSBvYmplY3RVcmwgKyAiIyIgKyBmaWxlTmFtZVN1ZmZpeDsKKworICAgICAg
ICAgICAgZnVuY3Rpb24gY2xlYW51cCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
d2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwob2JqZWN0VXJsKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoY2xlYW51cCwgMCk7CisgICAgICAgIH0sCisKKyAgICAgICAg
c2VuZE1lc3NhZ2VUb0JhY2tlbmQ6IGZ1bmN0aW9uKG1lc3NhZ2UpCisgICAgICAgIHsKKyAgICAg
ICAgfSwKKworICAgICAgICBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBmdW5jdGlvbih1cmwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsK
KyAgICAgICAgICAgIHhoci5vcGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsKKyAgICAgICAgICAgIHho
ci5zZW5kKG51bGwpOworCisgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwKQorICAg
ICAgICAgICAgICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0OworICAgICAgICAgICAgcmV0dXJu
IG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QgPSBu
ZXcgV2ViSW5zcGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIoKTsKK30KKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IGFhNDRiMTJk
OTRlMDllZjMxMWYyMjBkZjcyZjYxOWM2ZGFhNGVhMTkuLmUwYmYyOTdmZDE2ZmQ3MDhhZTYyNTYy
YWNiMTIzYWRkNmZkZDc2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwKQEAgLTE0Miw2ICsxNDIsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJDb2Rl
TWlycm9yQWRkaXRpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iU2V0dGluZy5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ikluc3BlY3RvckJhY2tlbmQuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJJbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTG9hZEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ikluc3BlY3RvckZyb250ZW5kQVBJLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udGV4dE1lbnUuanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>