<?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>128620</bug_id>
          
          <creation_ts>2014-02-11 13:30:09 -0800</creation_ts>
          <short_desc>Web Inspector: DOMStorageView should listen for events from DOMStorageObject</short_desc>
          <delta_ts>2014-02-11 18:47:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>979576</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-11 13:30:09 -0800</bug_when>
    <thetext>There&apos;s a layering violation now; the StorageManager explicitly maintains a map of available views and forwards events to them directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979578</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-11 13:31:10 -0800</bug_when>
    <thetext>&lt;rdar://problem/16040514&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979585</commentid>
    <comment_count>2</comment_count>
      <attachid>223894</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-11 13:45:47 -0800</bug_when>
    <thetext>Created attachment 223894
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979654</commentid>
    <comment_count>3</comment_count>
      <attachid>223894</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-02-11 16:29:26 -0800</bug_when>
    <thetext>Comment on attachment 223894
patch

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

&gt; Source/WebInspectorUI/ChangeLog:8
&gt; +        The storage manager used to have a map of DOMStorageViews and delivered events

Yeah that was gross!

&gt; Source/WebInspectorUI/UserInterface/DOMStorageObserver.js:70
&gt; -        WebInspector.storageManager.domStorageItemsCleared(storageId);
&gt; +        var object = WebInspector.storageManager.domStorageForId(storageId);
&gt; +        object.itemsCleared(storageId);
&gt;      },
&gt;  
&gt;      domStorageItemRemoved: function(storageId, key)
&gt;      {
&gt; -        WebInspector.storageManager.domStorageItemRemoved(storageId, key);
&gt; +        var object = WebInspector.storageManager.domStorageForId(storageId);
&gt; +        object.itemRemoved(storageId, key);
&gt;      },
&gt;  
&gt;      domStorageItemAdded: function(storageId, key, value)
&gt;      {
&gt; -        WebInspector.storageManager.domStorageItemAdded(storageId, key, value);
&gt; +        var object = WebInspector.storageManager.domStorageForId(storageId);
&gt; +        object.itemAdded(storageId, key, value);
&gt;      },
&gt;  
&gt;      domStorageItemUpdated: function(storageId, key, oldValue, value)
&gt;      {
&gt; -        WebInspector.storageManager.domStorageItemUpdated(storageId, key, oldValue, value);
&gt; +        var object = WebInspector.storageManager.domStorageForId(storageId);
&gt; +        object.itemUpdated(storageId, key, oldValue, value);

This differs from other observers. Usually the protocol observers are very thin and do no work other than calling the right manager(s). That way any compatibility work happens in the manager. Not that this way is entirely bad. It would just push down compatibility massaging into the observer.

&gt; Source/WebInspectorUI/UserInterface/StorageManager.js:108
&gt; +    domStorageForId: function(id)

domStorageForIdentifier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979662</commentid>
    <comment_count>4</comment_count>
      <attachid>223894</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-11 16:53:53 -0800</bug_when>
    <thetext>Comment on attachment 223894
patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/DOMStorageObserver.js:70
&gt;&gt; +        object.itemUpdated(storageId, key, oldValue, value);
&gt; 
&gt; This differs from other observers. Usually the protocol observers are very thin and do no work other than calling the right manager(s). That way any compatibility work happens in the manager. Not that this way is entirely bad. It would just push down compatibility massaging into the observer.

I don&apos;t have strong opinions here, except that as written there are 4 fewer dummy functions. But the compatibility argument makes sense to me.

&gt;&gt; Source/WebInspectorUI/UserInterface/StorageManager.js:108
&gt;&gt; +    domStorageForId: function(id)
&gt; 
&gt; domStorageForIdentifier

Oh, I was going to get that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979708</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-11 18:47:15 -0800</bug_when>
    <thetext>Committed r163927: &lt;http://trac.webkit.org/changeset/163927&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223894</attachid>
            <date>2014-02-11 13:45:47 -0800</date>
            <delta_ts>2014-02-11 16:53:53 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-128620-20140211134631.patch</filename>
            <type>text/plain</type>
            <size>16001</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
YTYyNWNlYzI3ZDI4NDljOTk3YTVkMGY2ZjBjMTdkNzlmMTBkNWI3Li42ZmMwM2U0OTc0ODlmOTQx
YzgzOTM5Yjk5YWJmMjRiYzMzN2Y4MmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAxNC0wMi0xMSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBET01TdG9yYWdlVmlldyBzaG91bGQgbGlzdGVuIGZvciBl
dmVudHMgZnJvbSBET01TdG9yYWdlT2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgc3RvcmFnZSBtYW5hZ2VyIHVzZWQgdG8gaGF2ZSBhIG1h
cCBvZiBET01TdG9yYWdlVmlld3MgYW5kIGRlbGl2ZXJlZCBldmVudHMKKyAgICAgICAgZGlyZWN0
bHkgdG8gdGhlbS4gSW5zdGVhZCwgdGhlIERPTVN0b3JhZ2VPYnNlcnZlciBzaG91bGQgdXNlIHRo
ZSBtYW5hZ2VyIHRvCisgICAgICAgIGZpbmQgdGhlIGFwcHJvcHJpYXRlIERPTVN0b3JhZ2VPYmpl
Y3QgYW5kIGRlbGl2ZXIgZXZlbnRzIHRvIGl0LiBET01TdG9yYWdlVmlldworICAgICAgICBsZWFy
bnMgYWJvdXQgc3RvcmFnZSB1cGRhdGVzIGZyb20gRE9NU3RvcmFnZU9iamVjdCBldmVudHMuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0RPTVN0b3JhZ2VDb250ZW50Vmlldy5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcpOiBBZGQgZXZlbnQgbGlzdGVu
ZXJzLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5
cGUucmVzZXQpOiBSZW5hbWVkIGZyb20gdXBkYXRlKCkuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5pdGVtc0NsZWFyZWQpOiBUYWtlIGFuIGV2
ZW50IGFyZ3VtZW50LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmll
dy5wcm90b3R5cGUuaXRlbVJlbW92ZWQpOiBUYWtlIGFuIGV2ZW50IGFyZ3VtZW50LgorICAgICAg
ICBVc2UgZm9yLi5vZiB3aGVuIGl0ZXJhdGluZyBvdmVyIG5vZGVzLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuaXRlbUFkZGVkKTogVGFrZSBh
biBldmVudCBhcmd1bWVudC4KKyAgICAgICAgVXNlIGZvci4ub2Ygd2hlbiBpdGVyYXRpbmcgb3Zl
ciBub2Rlcy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJv
dG90eXBlLml0ZW1VcGRhdGVkKTogVGFrZSBhbiBldmVudCBhcmd1bWVudC4KKyAgICAgICAgVXNl
IGZvci4ub2Ygd2hlbiBpdGVyYXRpbmcgb3ZlciBub2Rlcy4KKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL0RPTVN0b3JhZ2VPYmplY3QuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFn
ZU9iamVjdC5wcm90b3R5cGUucmVtb3ZlSXRlbSk6IE1vdmVkLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VPYmplY3QucHJvdG90eXBlLnNldEl0ZW0pOiBNb3ZlZC4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LnByb3RvdHlwZS5pdGVtc0NsZWFyZWQpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LnByb3RvdHlwZS5p
dGVtUmVtb3ZlZCk6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmpl
Y3QucHJvdG90eXBlLml0ZW1BZGRlZCk6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRP
TVN0b3JhZ2VPYmplY3QucHJvdG90eXBlLml0ZW1VcGRhdGVkKTogQWRkZWQuCisgICAgICAgICog
VXNlckludGVyZmFjZS9ET01TdG9yYWdlT2JzZXJ2ZXIuanM6IExvb2sgdXAgYW5kIG5vdGlmeSB0
aGUgYXNzb2NpYXRlZCBtb2RlbC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2Jz
ZXJ2ZXIucHJvdG90eXBlLmRvbVN0b3JhZ2VJdGVtc0NsZWFyZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2VPYnNlcnZlci5wcm90b3R5cGUuZG9tU3RvcmFnZUl0ZW1SZW1vdmVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JzZXJ2ZXIucHJvdG90eXBlLmRv
bVN0b3JhZ2VJdGVtQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYnNl
cnZlci5wcm90b3R5cGUuZG9tU3RvcmFnZUl0ZW1VcGRhdGVkKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1N0b3JhZ2VNYW5hZ2VyLmpzOiBSZW1vdmUgdmlldyBsb29rdXAgY29kZS4gUmVtb3Zl
CisgICAgICAgIGRpcmVjdCBjYWxscyB0byBET01TdG9yYWdlVmlld3MuCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLmRvbVN0b3JhZ2VXYXNVcGRhdGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUuaW5zcGVjdERP
TVN0b3JhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlw
ZS5kb21TdG9yYWdlRm9ySWQpOiBNYWtlIHB1YmxpYy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
dG9yYWdlTWFuYWdlci5wcm90b3R5cGUuX2FkZERPTVN0b3JhZ2VJZk5lZWRlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLl9kYXRhYmFzZUZvcklkKToK
KwogMjAxNC0wMi0wNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBzaG93IHByb2JlIHNldHMgZm9yIHNjcmlwdCBjb250ZW50IHZpZXdzIGlu
IHRoZSBkZXRhaWxzIHNpZGViYXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0RPTVN0b3JhZ2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0RPTVN0b3JhZ2VDb250ZW50Vmlldy5qcwppbmRleCAzMWJhN2Zh
NWIwMTZjYmNhNDA4YTVhZjA0YjFiNjE3MTY0YjM4ODllLi5mOTU1ZDY4ZWEyZjViNWQ3YjNhMGFi
NWQ4ODNhODQ3NTU0ZTk3MzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9ET01TdG9yYWdlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvRE9NU3RvcmFnZUNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMCwxNyArMzAsMjMgQEAg
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVk
T2JqZWN0KQogCiAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRP
TVN0b3JhZ2VDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSk7CiAKLSAgICB0aGlzLnVwZGF0ZSgp
OworICAgIHJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRP
TVN0b3JhZ2VPYmplY3QuRXZlbnQuSXRlbXNDbGVhcmVkLCB0aGlzLml0ZW1zQ2xlYXJlZCwgdGhp
cyk7CisgICAgcmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
RE9NU3RvcmFnZU9iamVjdC5FdmVudC5JdGVtQWRkZWQsIHRoaXMuaXRlbUFkZGVkLCB0aGlzKTsK
KyAgICByZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01T
dG9yYWdlT2JqZWN0LkV2ZW50Lkl0ZW1SZW1vdmVkLCB0aGlzLml0ZW1SZW1vdmVkLCB0aGlzKTsK
KyAgICByZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01T
dG9yYWdlT2JqZWN0LkV2ZW50Lkl0ZW1VcGRhdGVkLCB0aGlzLml0ZW1VcGRhdGVkLCB0aGlzKTsK
KworICAgIHRoaXMucmVzZXQoKTsKIH07CiAKIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVu
dFZpZXcuU3R5bGVDbGFzc05hbWUgPSAiZG9tLXN0b3JhZ2UiOwogCiBXZWJJbnNwZWN0b3IuRE9N
U3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50VmlldywKKyAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlldy5wcm90b3R5cGUsCiAKICAgICAvLyBQdWJsaWMKIAotICAgIHVwZGF0ZTog
ZnVuY3Rpb24oKQorICAgIHJlc2V0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLnJl
cHJlc2VudGVkT2JqZWN0LmdldEVudHJpZXModGhpcy5fc2hvd0RPTVN0b3JhZ2VFbnRyaWVzLmJp
bmQodGhpcykpOwogICAgIH0sCkBAIC01MiwyNyArNTgsMjggQEAgV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvb2tpZS5ob3N0ID0gdGhp
cy5yZXByZXNlbnRlZE9iamVjdC5ob3N0OwogICAgIH0sCiAKLSAgICBpdGVtc0NsZWFyZWQ6IGZ1
bmN0aW9uKCkKKyAgICBpdGVtc0NsZWFyZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAg
ICAgdGhpcy5fZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5fZGF0YUdy
aWQuYWRkQ3JlYXRpb25Ob2RlKGZhbHNlKTsKICAgICB9LAogCi0gICAgaXRlbVJlbW92ZWQ6IGZ1
bmN0aW9uKGtleSkKKyAgICBpdGVtUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2RhdGFHcmlkLmNoaWxkcmVuLmxlbmd0aDsg
KytpKSB7Ci0gICAgICAgICAgICB2YXIgY2hpbGROb2RlID0gdGhpcy5fZGF0YUdyaWQuY2hpbGRy
ZW5baV07Ci0gICAgICAgICAgICBpZiAoY2hpbGROb2RlLmRhdGFbMF0gPT09IGtleSkgewotICAg
ICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJlbW92ZUNoaWxkKGNoaWxkTm9kZSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICBmb3IgKHZhciBub2Rl
IG9mIHRoaXMuX2RhdGFHcmlkLmNoaWxkcmVuKSB7CisgICAgICAgICAgICBpZiAobm9kZS5kYXRh
WzBdID09PSBldmVudC5kYXRhLmtleSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF0
YUdyaWQucmVtb3ZlQ2hpbGQobm9kZSk7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgaXRlbUFk
ZGVkOiBmdW5jdGlvbihrZXksIHZhbHVlKQorICAgIGl0ZW1BZGRlZDogZnVuY3Rpb24oZXZlbnQp
CiAgICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2RhdGFHcmlkLmNoaWxk
cmVuLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fZGF0YUdyaWQuY2hpbGRy
ZW5baV1bMF0gPT09IGtleSkKKyAgICAgICAgdmFyIGtleSA9IGV2ZW50LmRhdGEua2V5OworICAg
ICAgICB2YXIgdmFsdWUgPSBldmVudC5kYXRhLnZhbHVlOworCisgICAgICAgIC8vIEVuZm9yY2Ug
a2V5IHVuaXF1ZW5lc3MuCisgICAgICAgIGZvciAodmFyIG5vZGUgb2YgdGhpcy5fZGF0YUdyaWQu
Y2hpbGRyZW4pIHsKKyAgICAgICAgICAgIGlmIChub2RlLmRhdGFbMF0gPT09IGtleSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtODcsMTUgKzk0LDE4IEBAIFdlYklu
c3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAg
dGhpcy5fc29ydERhdGFHcmlkKCk7CiAgICAgfSwKIAotICAgIGl0ZW1VcGRhdGVkOiBmdW5jdGlv
bihrZXksIG9sZFZhbHVlLCB2YWx1ZSkKKyAgICBpdGVtVXBkYXRlZDogZnVuY3Rpb24oZXZlbnQp
CiAgICAgeworICAgICAgICB2YXIga2V5ID0gZXZlbnQuZGF0YS5rZXk7CisgICAgICAgIHZhciB2
YWx1ZSA9IGV2ZW50LmRhdGEudmFsdWU7CisKICAgICAgICAgdmFyIGtleUZvdW5kID0gZmFsc2U7
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZGF0YUdyaWQuY2hpbGRyZW4ubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBjaGlsZE5vZGUgPSB0aGlzLl9kYXRhR3JpZC5j
aGlsZHJlbltpXTsKKyAgICAgICAgZm9yICh2YXIgY2hpbGROb2RlIG9mIHRoaXMuX2RhdGFHcmlk
LmNoaWxkcmVuKSB7CiAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLmRhdGFbMF0gPT09IGtleSkg
eworICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBhbnkgcm93cyB0aGF0IGFyZSBub3cgZHVwbGlj
YXRlcy4KICAgICAgICAgICAgICAgICBpZiAoa2V5Rm91bmQpIHsKICAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fZGF0YUdyaWQucmVtb3ZlQ2hpbGQoY2hpbGROb2RlKTsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgICAgICBrZXlGb3VuZCA9IHRydWU7CkBAIC0yMjYsNSArMjM2
LDMgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMudXBkYXRlKCk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkRPTVN0b3Jh
Z2VDb250ZW50Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRW
aWV3LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0RPTVN0b3JhZ2VPYmplY3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9ET01TdG9yYWdlT2JqZWN0LmpzCmluZGV4IGQ2ZmQxZTA0NmQxNWRiN2ExZmFmNjk0
ZTQ2OTQxMDQwMjExNjk1NDkuLmViNjU1ZGUwMmU5YWE3N2VkYjc3NmNjMWEzZmM5ZWM3MzgyYTc3
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RPTVN0
b3JhZ2VPYmplY3QuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
RE9NU3RvcmFnZU9iamVjdC5qcwpAQCAtMzQsOSArMzQsMTcgQEAgV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2VPYmplY3QuVHlwZUlkZW50aWZpZXIgPSAiZG9tLXN0b3JhZ2UiOwogV2ViSW5zcGVjdG9y
LkRPTVN0b3JhZ2VPYmplY3QuSG9zdENvb2tpZUtleSA9ICJkb20tc3RvcmFnZS1vYmplY3QtaG9z
dCI7CiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5Mb2NhbFN0b3JhZ2VDb29raWVLZXkg
PSAiZG9tLXN0b3JhZ2Utb2JqZWN0LWxvY2FsLXN0b3JhZ2UiOwogCitXZWJJbnNwZWN0b3IuRE9N
U3RvcmFnZU9iamVjdC5FdmVudCA9IHsKKyAgICBJdGVtc0NsZWFyZWQ6ICJkb20tc3RvcmFnZS1v
YmplY3QtaXRlbXMtY2xlYXJlZCIsCisgICAgSXRlbUFkZGVkOiAiZG9tLXN0b3JhZ2Utb2JqZWN0
LWl0ZW0tYWRkZWQiLAorICAgIEl0ZW1SZW1vdmVkOiAiZG9tLXN0b3JhZ2Utb2JqZWN0LWl0ZW0t
cmVtb3ZlZCIsCisgICAgSXRlbVVwZGF0ZWQ6ICJkb20tc3RvcmFnZS1vYmplY3QtdXBkYXRlZCIs
Cit9OworCiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAg
Y29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LAotICAgIAorICAgIF9f
cHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisKICAgICBnZXQgaWQoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lkOwpAQCAtNjcsMTMgKzc1LDM0IEBAIFdlYklu
c3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIERPTVN0
b3JhZ2VBZ2VudC5nZXRET01TdG9yYWdlSXRlbXModGhpcy5faWQsIGNhbGxiYWNrKTsKICAgICB9
LAogCi0gICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykKKyAgICByZW1vdmVJ
dGVtOiBmdW5jdGlvbihrZXkpCisgICAgeworICAgICAgICBET01TdG9yYWdlQWdlbnQucmVtb3Zl
RE9NU3RvcmFnZUl0ZW0odGhpcy5faWQsIGtleSk7CisgICAgfSwKKworICAgIHNldEl0ZW06IGZ1
bmN0aW9uKGtleSwgdmFsdWUpCisgICAgeworICAgICAgICBET01TdG9yYWdlQWdlbnQuc2V0RE9N
U3RvcmFnZUl0ZW0odGhpcy5faWQsIGtleSwgdmFsdWUpOworICAgIH0sCisKKyAgICBpdGVtc0Ns
ZWFyZWQ6IGZ1bmN0aW9uKGlkKQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuRXZlbnQuSXRlbXNDbGVhcmVk
LCB7aWQ6IGlkfSk7CisgICAgfSwKKworICAgIGl0ZW1SZW1vdmVkOiBmdW5jdGlvbihpZCwga2V5
KQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VPYmplY3QuRXZlbnQuSXRlbVJlbW92ZWQsIHtpZDogaWQsIGtleToga2V5
fSk7CisgICAgfSwKKworICAgIGl0ZW1BZGRlZDogZnVuY3Rpb24oaWQsIGtleSwgdmFsdWUpCiAg
ICAgewotICAgICAgICBET01TdG9yYWdlQWdlbnQucmVtb3ZlRE9NU3RvcmFnZUl0ZW0odGhpcy5f
aWQsIGtleSwgY2FsbGJhY2spOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5FdmVudC5JdGVtQWRkZWQsIHtpZDogaWQs
IGtleToga2V5LCB2YWx1ZTogdmFsdWV9KTsKICAgICB9LAogCi0gICAgc2V0SXRlbTogZnVuY3Rp
b24oa2V5LCB2YWx1ZSwgY2FsbGJhY2spCisgICAgaXRlbVVwZGF0ZWQ6IGZ1bmN0aW9uKGlkLCBr
ZXksIG9sZFZhbHVlLCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIERPTVN0b3JhZ2VBZ2VudC5zZXRE
T01TdG9yYWdlSXRlbSh0aGlzLl9pZCwga2V5LCB2YWx1ZSwgY2FsbGJhY2spOworICAgICAgICB2
YXIgZGF0YSA9IHtpZDogaWQsIGtleToga2V5LCBvbGRWYWx1ZTogb2xkVmFsdWUsIHZhbHVlOiB2
YWx1ZX07CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5ET01TdG9yYWdlT2JqZWN0LkV2ZW50Lkl0ZW1VcGRhdGVkLCBkYXRhKTsKICAgICB9CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRE9NU3RvcmFn
ZU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRE9NU3Rv
cmFnZU9ic2VydmVyLmpzCmluZGV4IDliMWIxNWQzYTg2MzY3Y2U1OTY3NjQ0ODZjZjNlYjRkMDNm
NjBkYWUuLmM0ZjRkMWVkMTZhMGRlODgzNjFiNjU5MjcxZjMwYmJlMWMxMjdmODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RPTVN0b3JhZ2VPYnNlcnZl
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9ET01TdG9yYWdl
T2JzZXJ2ZXIuanMKQEAgLTQ4LDIyICs0OCwyNiBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9i
c2VydmVyLnByb3RvdHlwZSA9IHsKIAogICAgIGRvbVN0b3JhZ2VJdGVtc0NsZWFyZWQ6IGZ1bmN0
aW9uKHN0b3JhZ2VJZCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdl
ci5kb21TdG9yYWdlSXRlbXNDbGVhcmVkKHN0b3JhZ2VJZCk7CisgICAgICAgIHZhciBvYmplY3Qg
PSBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuZG9tU3RvcmFnZUZvcklkKHN0b3JhZ2VJZCk7
CisgICAgICAgIG9iamVjdC5pdGVtc0NsZWFyZWQoc3RvcmFnZUlkKTsKICAgICB9LAogCiAgICAg
ZG9tU3RvcmFnZUl0ZW1SZW1vdmVkOiBmdW5jdGlvbihzdG9yYWdlSWQsIGtleSkKICAgICB7Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdlci5kb21TdG9yYWdlSXRlbVJlbW92ZWQo
c3RvcmFnZUlkLCBrZXkpOworICAgICAgICB2YXIgb2JqZWN0ID0gV2ViSW5zcGVjdG9yLnN0b3Jh
Z2VNYW5hZ2VyLmRvbVN0b3JhZ2VGb3JJZChzdG9yYWdlSWQpOworICAgICAgICBvYmplY3QuaXRl
bVJlbW92ZWQoc3RvcmFnZUlkLCBrZXkpOwogICAgIH0sCiAKICAgICBkb21TdG9yYWdlSXRlbUFk
ZGVkOiBmdW5jdGlvbihzdG9yYWdlSWQsIGtleSwgdmFsdWUpCiAgICAgewotICAgICAgICBXZWJJ
bnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuZG9tU3RvcmFnZUl0ZW1BZGRlZChzdG9yYWdlSWQsIGtl
eSwgdmFsdWUpOworICAgICAgICB2YXIgb2JqZWN0ID0gV2ViSW5zcGVjdG9yLnN0b3JhZ2VNYW5h
Z2VyLmRvbVN0b3JhZ2VGb3JJZChzdG9yYWdlSWQpOworICAgICAgICBvYmplY3QuaXRlbUFkZGVk
KHN0b3JhZ2VJZCwga2V5LCB2YWx1ZSk7CiAgICAgfSwKIAogICAgIGRvbVN0b3JhZ2VJdGVtVXBk
YXRlZDogZnVuY3Rpb24oc3RvcmFnZUlkLCBrZXksIG9sZFZhbHVlLCB2YWx1ZSkKICAgICB7Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdlci5kb21TdG9yYWdlSXRlbVVwZGF0ZWQo
c3RvcmFnZUlkLCBrZXksIG9sZFZhbHVlLCB2YWx1ZSk7CisgICAgICAgIHZhciBvYmplY3QgPSBX
ZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuZG9tU3RvcmFnZUZvcklkKHN0b3JhZ2VJZCk7Cisg
ICAgICAgIG9iamVjdC5pdGVtVXBkYXRlZChzdG9yYWdlSWQsIGtleSwgb2xkVmFsdWUsIHZhbHVl
KTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9TdG9yYWdlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1N0b3JhZ2VNYW5hZ2VyLmpzCmluZGV4IGZhMGM5NGNlNmVlNjM5ZTYwYmNmNjhkODhl
ZDFkZWE4MTE0NzMwOTIuLmIxYjI3ZWQ5ZTI5MDQzMzVlNTZhMWM1Yzc3M2VjMzE3MDM5ZDU3NGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1N0b3JhZ2VN
YW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1N0b3Jh
Z2VNYW5hZ2VyLmpzCkBAIC01NSw2ICs1NSw3IEBAIFdlYkluc3BlY3Rvci5TdG9yYWdlTWFuYWdl
ci5FdmVudCA9IHsKIAogV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZSA9IHsK
ICAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLAorICAgIF9fcHJv
dG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCiAKICAgICAvLyBQdWJsaWMKIApA
QCAtODMsNTIgKzg0LDcgQEAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZSA9
IHsKIAogICAgIGRvbVN0b3JhZ2VXYXNVcGRhdGVkOiBmdW5jdGlvbihpZCkKICAgICB7Ci0gICAg
ICAgIHZhciBkb21TdG9yYWdlVmlldyA9IHRoaXMuX2RvbVN0b3JhZ2VWaWV3Rm9ySWQoaWQpOwot
ICAgICAgICBpZiAoIWRvbVN0b3JhZ2VWaWV3KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGRvbVN0b3JhZ2VWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LkRPTVN0b3JhZ2VDb250ZW50Vmlldyk7Ci0gICAgICAgIGRvbVN0b3JhZ2VWaWV3LnVwZGF0ZSgp
OwotICAgIH0sCi0KLSAgICBkb21TdG9yYWdlSXRlbXNDbGVhcmVkOiBmdW5jdGlvbihpZCkKLSAg
ICB7Ci0gICAgICAgIHZhciBkb21TdG9yYWdlVmlldyA9IHRoaXMuX2RvbVN0b3JhZ2VWaWV3Rm9y
SWQoaWQpOwotICAgICAgICBpZiAoIWRvbVN0b3JhZ2VWaWV3KQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbVN0b3JhZ2VWaWV3IGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldyk7Ci0gICAgICAgIGRvbVN0b3JhZ2VWaWV3
Lml0ZW1zQ2xlYXJlZCgpOwotICAgIH0sCi0KLSAgICBkb21TdG9yYWdlSXRlbVJlbW92ZWQ6IGZ1
bmN0aW9uKGlkLCBrZXkpCi0gICAgewotICAgICAgICB2YXIgZG9tU3RvcmFnZVZpZXcgPSB0aGlz
Ll9kb21TdG9yYWdlVmlld0ZvcklkKGlkKTsKLSAgICAgICAgaWYgKCFkb21TdG9yYWdlVmlldykK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBjb25zb2xlLmFzc2VydChkb21TdG9yYWdl
VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcpOwotICAg
ICAgICBkb21TdG9yYWdlVmlldy5pdGVtUmVtb3ZlZChrZXkpOwotICAgIH0sCi0KLSAgICBkb21T
dG9yYWdlSXRlbUFkZGVkOiBmdW5jdGlvbihpZCwga2V5LCB2YWx1ZSkKLSAgICB7Ci0gICAgICAg
IHZhciBkb21TdG9yYWdlVmlldyA9IHRoaXMuX2RvbVN0b3JhZ2VWaWV3Rm9ySWQoaWQpOwotICAg
ICAgICBpZiAoIWRvbVN0b3JhZ2VWaWV3KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGRvbVN0b3JhZ2VWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRP
TVN0b3JhZ2VDb250ZW50Vmlldyk7Ci0gICAgICAgIGRvbVN0b3JhZ2VWaWV3Lml0ZW1BZGRlZChr
ZXksIHZhbHVlKTsKLSAgICB9LAotCi0gICAgZG9tU3RvcmFnZUl0ZW1VcGRhdGVkOiBmdW5jdGlv
bihpZCwga2V5LCBvbGRWYWx1ZSwgdmFsdWUpCi0gICAgewotICAgICAgICB2YXIgZG9tU3RvcmFn
ZVZpZXcgPSB0aGlzLl9kb21TdG9yYWdlVmlld0ZvcklkKGlkKTsKLSAgICAgICAgaWYgKCFkb21T
dG9yYWdlVmlldykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBjb25zb2xlLmFzc2Vy
dChkb21TdG9yYWdlVmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVu
dFZpZXcpOwotICAgICAgICBkb21TdG9yYWdlVmlldy5pdGVtVXBkYXRlZChrZXksIG9sZFZhbHVl
LCB2YWx1ZSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5TdG9yYWdlTWFuYWdlci5FdmVudC5ET01TdG9yYWdlV2FzVXBkYXRlZCwgaWQpOwogICAg
IH0sCiAKICAgICBpbnNwZWN0RGF0YWJhc2U6IGZ1bmN0aW9uKGlkKQpAQCAtMTQyLDEzICs5OCwy
NSBAQCBXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlID0gewogCiAgICAgaW5z
cGVjdERPTVN0b3JhZ2U6IGZ1bmN0aW9uKGlkKQogICAgIHsKLSAgICAgICAgdmFyIGRvbVN0b3Jh
Z2UgPSB0aGlzLl9kb21TdG9yYWdlRm9ySWQoaWQpOworICAgICAgICB2YXIgZG9tU3RvcmFnZSA9
IHRoaXMuZG9tU3RvcmFnZUZvcklkKGlkKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZG9tU3Rv
cmFnZSk7CiAgICAgICAgIGlmICghZG9tU3RvcmFnZSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlN0b3JhZ2VN
YW5hZ2VyLkV2ZW50LkRPTVN0b3JhZ2VPYmplY3RXYXNJbnNwZWN0ZWQsIHtkb21TdG9yYWdlOiBk
b21TdG9yYWdlfSk7CiAgICAgfSwKIAorICAgIGRvbVN0b3JhZ2VGb3JJZDogZnVuY3Rpb24oaWQp
CisgICAgeworICAgICAgICBmb3IgKHZhciBzdG9yYWdlT2JqZWN0IG9mIHRoaXMuX2RvbVN0b3Jh
Z2VPYmplY3RzKSB7CisgICAgICAgICAgICAvLyBUaGUgaWQgaXMgYW4gb2JqZWN0LCBzbyB3ZSBu
ZWVkIHRvIGNvbXBhcmUgdGhlIHByb3BlcnRpZXMgdXNpbmcgT2JqZWN0LnNoYWxsb3dFcXVhbC4K
KyAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA2KTogVGhlIGlkIHdhcyBhIHN0cmlu
Zy4gT2JqZWN0LnNoYWxsb3dFcXVhbCB3b3JrcyBmb3IgYm90aC4KKyAgICAgICAgICAgIGlmIChP
YmplY3Quc2hhbGxvd0VxdWFsKHN0b3JhZ2VPYmplY3QuaWQsIGlkKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RvcmFnZU9iamVjdDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxs
OworICAgIH0sCisKICAgICAvLyBQcml2YXRlCiAKICAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdl
OiBmdW5jdGlvbihldmVudCkKQEAgLTE4NCwxMSArMTUyLDExIEBAIFdlYkluc3BlY3Rvci5TdG9y
YWdlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBwYXNz
aW5nIHRoZSBvdGhlciBwYXJ0cyBvZiB0aGUgb3JpZ2luIGFsb25nIHRvIGRvbVN0b3JhZ2VXYXNB
ZGRlZC4KIAogICAgICAgICB2YXIgbG9jYWxTdG9yYWdlSWRlbnRpZmllciA9IHtzZWN1cml0eU9y
aWdpbjogZnJhbWUuc2VjdXJpdHlPcmlnaW4sIGlzTG9jYWxTdG9yYWdlOiB0cnVlfTsKLSAgICAg
ICAgaWYgKCF0aGlzLl9kb21TdG9yYWdlRm9ySWQobG9jYWxTdG9yYWdlSWRlbnRpZmllcikpCisg
ICAgICAgIGlmICghdGhpcy5kb21TdG9yYWdlRm9ySWQobG9jYWxTdG9yYWdlSWRlbnRpZmllcikp
CiAgICAgICAgICAgICB0aGlzLmRvbVN0b3JhZ2VXYXNBZGRlZChsb2NhbFN0b3JhZ2VJZGVudGlm
aWVyLCBmcmFtZS5tYWluUmVzb3VyY2UudXJsQ29tcG9uZW50cy5ob3N0LCB0cnVlKTsKIAogICAg
ICAgICB2YXIgc2Vzc2lvblN0b3JhZ2VJZGVudGlmaWVyID0ge3NlY3VyaXR5T3JpZ2luOiBmcmFt
ZS5zZWN1cml0eU9yaWdpbiwgaXNMb2NhbFN0b3JhZ2U6IGZhbHNlfTsKLSAgICAgICAgaWYgKCF0
aGlzLl9kb21TdG9yYWdlRm9ySWQoc2Vzc2lvblN0b3JhZ2VJZGVudGlmaWVyKSkKKyAgICAgICAg
aWYgKCF0aGlzLmRvbVN0b3JhZ2VGb3JJZChzZXNzaW9uU3RvcmFnZUlkZW50aWZpZXIpKQogICAg
ICAgICAgICAgdGhpcy5kb21TdG9yYWdlV2FzQWRkZWQoc2Vzc2lvblN0b3JhZ2VJZGVudGlmaWVy
LCBmcmFtZS5tYWluUmVzb3VyY2UudXJsQ29tcG9uZW50cy5ob3N0LCBmYWxzZSk7CiAgICAgfSwK
IApAQCAtMjA3LDI4ICsxNzUsNSBAQCBXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIucHJvdG90
eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKLQotICAg
IF9kb21TdG9yYWdlRm9ySWQ6IGZ1bmN0aW9uKGlkKQotICAgIHsKLSAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB0aGlzLl9kb21TdG9yYWdlT2JqZWN0cy5sZW5ndGg7ICsraSkgewotICAgICAg
ICAgICAgLy8gVGhlIGlkIGlzIGFuIG9iamVjdCwgc28gd2UgbmVlZCB0byBjb21wYXJlIHRoZSBw
cm9wZXJ0aWVzIHVzaW5nIE9iamVjdC5zaGFsbG93RXF1YWwuCi0gICAgICAgICAgICAvLyBDT01Q
QVRJQklMSVRZIChpT1MgNik6IFRoZSBpZCB3YXMgYSBzdHJpbmcuIE9iamVjdC5zaGFsbG93RXF1
YWwgd29ya3MgZm9yIGJvdGguCi0gICAgICAgICAgICBpZiAoT2JqZWN0LnNoYWxsb3dFcXVhbCh0
aGlzLl9kb21TdG9yYWdlT2JqZWN0c1tpXS5pZCwgaWQpKQotICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLl9kb21TdG9yYWdlT2JqZWN0c1tpXTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVy
biBudWxsOwotICAgIH0sCi0KLSAgICBfZG9tU3RvcmFnZVZpZXdGb3JJZDogZnVuY3Rpb24oaWQp
Ci0gICAgewotICAgICAgICB2YXIgZG9tU3RvcmFnZSA9IHRoaXMuX2RvbVN0b3JhZ2VGb3JJZChp
ZCk7Ci0gICAgICAgIGlmICghZG9tU3RvcmFnZSkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwot
Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuY29udGVudFZpZXdD
b250YWluZXIuY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChkb21TdG9yYWdlLCB0cnVl
KTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwo=
</data>
<flag name="review"
          id="247961"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>