From jenkins at ovirt.org Sat Nov 30 19:03:48 2013 Content-Type: multipart/mixed; boundary="===============2206721847772105036==" MIME-Version: 1.0 From: Jenkins ci oVirt Server To: devel at ovirt.org Subject: [Engine-devel] [oVirt jenkins] Weekly report on open tasks for ovirt-engine Date: Sun, 01 Dec 2013 00:03:34 +0000 Message-ID: <925402032.5306.1385856226434.JavaMail.jenkins@jenkins.ovirt.org> --===============2206721847772105036== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ------=3D_Part_5305_987499901.1385856217394 Content-Type: text/html; charset=3DUTF-8 Content-Transfer-Encoding: 7bit Files scanned: '**/*.java, **/*.py'.
Strings searched: FIXME | TODO | @deprecated

Report: http://jenkins.ovirt.org/job/ovirt_engine_scan_open_tasks/14/tasksR= esult/? ------=3D_Part_5305_987499901.1385856217394-- --===============2206721847772105036== Content-Type: multipart/mixed MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS0tLS0tPV9QYXJ0XzUzMDVfOTg3NDk5OTAxLjEzODU4NTYyMTczOTQKQ29udGVudC1UeXBlOiB0 ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdAoK PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PjxiPkZpbGVzIHNjYW5uZWQ6ICcqKi8qLmphdmEsICoq LyoucHknLiA8L2I+PGJyIC8+CjxiPlN0cmluZ3Mgc2VhcmNoZWQ6IEZJWE1FIHwgVE9ETyB8IEBk ZXByZWNhdGVkIDwvYj4KCiA8YnIgLz48YnIgLz4KClJlcG9ydDogaHR0cDovL2plbmtpbnMub3Zp cnQub3JnL2pvYi9vdmlydF9lbmdpbmVfc2Nhbl9vcGVuX3Rhc2tzLzE0L3Rhc2tzUmVzdWx0Lz88 L2JvZHk+PC9odG1sPgotLS0tLS09X1BhcnRfNTMwNV85ODc0OTk5MDEuMTM4NTg1NjIxNzM5NC0t Cg== --===============2206721847772105036==-- From mkolesni at redhat.com Sun Dec 1 01:08:44 2013 Content-Type: multipart/mixed; boundary="===============2928159518935397180==" MIME-Version: 1.0 From: Mike Kolesnik To: devel at ovirt.org Subject: Re: [Engine-devel] Using config values Date: Sun, 01 Dec 2013 01:08:42 -0500 Message-ID: <1643824061.43195741.1385878122949.JavaMail.root@redhat.com> In-Reply-To: 52984D48.1070009@redhat.com --===============2928159518935397180== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ------=3D_Part_43195740_1618344988.1385878122945 Content-Type: text/plain; charset=3Dutf-8 Content-Transfer-Encoding: 7bit ----- Original Message ----- > Hi All, Hi Kanagaraj, = > The are some issues arising in configurations whenever we move up on the > versions(3.3 =3D> 3.4), because of the way we store and interpret them. > Whenever there is a new cluster level, you will need to add a new entry f= or > all(most) of the configuration. Mostly a copy paste if you see from 3.2 to > 3.3, except some CPU/PM type related configurations. > Better option would be to have the defaul config value in ConfigValues.ja= va > and the overrides will go to config.sql. In this approach you don't need a > new entries to config.sql when there is a new cluster level. > Lets take an exmaple, "SupportForceCreateVG" - This is supported from 3.1 > onwards, > If you look at config.sql, you will see following entries > select fn_db_add_config_value('SupportForceCreateVG','false','3.0'); > select fn_db_add_config_value('SupportForceCreateVG','true','3.1'); > select fn_db_add_config_value('SupportForceCreateVG','true','3.2'); > select fn_db_add_config_value('SupportForceCreateVG','true','3.3'); > And in ConfigValues.java > @TypeConverterAttribute(Boolean.class) > @DefaultValueAttribute("false") > SupportForceCreateVG, > Now if there is 3.4 and 3.5, the user needs to add 2 more entries, which i > feel is redundant. > Instead we can make > @TypeConverterAttribute(Boolean.class) > @DefaultValueAttribute("true") > SupportForceCreateVG, > and have only the following in config.sql > select fn_db_add_config_value('SupportForceCreateVG','false','3.0'); > if a particular value(for a specific cluster level) is not found in > Config.sql, the fallback is to use the value available in ConfigValues.ja= va. This has already been implemented, there are many "feature supported" confi= gurations working like this (for example GlusterSupport). = I think a more interesting approach would be to move these out of the DB si= nce these values don't really hav e a reson to be there. = Since the entire thing is abstracted by "Gluster/FeatureSupported" classes = then we can easily change mechanism (of course whatever code is not using i= t can be easily converted to use the mechanism) = For example a simple enum could do the trick: = ------------------------------------- EXAMPLE -----------------------------= -------- = /** = * Convenience class to check if a gluster feature is supported or not in an= y given version.
= * Methods should be named by feature and accept version to check against. = */ = public class GlusterFeatureSupported { = /** = * @param version = * Compatibility version to check for. = * @return true if gluster support is enabled, false if it's not. = */ = public static boolean gluster(Version version) { = return SupportedFeatures.GLUSTER.isSupportedOn(version); = } = /** = * @param version = * Compatibility version to check for. = * @return true if gluster heavyweight refresh is enabled, false if it's not. = */ = public static boolean refreshHeavyWeight(Version version) { = return SupportedFeatures.REFRESH_HEAVYWEIGHT.isSupportedOn(version); = } = /* More methods... */ = enum SupportedFeatures { = GLUSTER(Version.v3_0), = REFRESH_HEAVYWEIGHT(Version.v3_0, Version.v3_1), = /* More members */; = private Set unsupportedVersions =3D new HashSet(); = private SupportedFeatures(Version... versions) { = unsupportedVersions.addAll(Arrays.asList(versions)); = } = public boolean isSupportedOn(Version version) { = return !unsupportedVersions.contains(version); = } = } = ------------------------------------- END EXAMPLE -------------------------= ------------ = Thoughts? = Regards, = Mike = > Please share your thoughts on this. > Thanks, > Kanagaraj ------=3D_Part_43195740_1618344988.1385878122945 Content-Type: text/html; charset=3Dutf-8 Content-Transfer-Encoding: quoted-printable

=3D20 =3D20 =3D20 =3D20 Hi All,

Hi Kanagaraj,

The are some issues arising in configurations whenever we move up on the versions(3.3 =3D3D> 3.4), because of the way we store and interpret them.

Whenever there is a new cluster level, you will need to add a new entry for all(most) of the configuration. Mostly a copy paste if you see from 3.2 to 3.3, except some CPU/PM type related configurations. Better option would be to have the defaul config value in ConfigValues.java and the overrides will go to config.sql. In this approach you don't need a new entries to config.sql when there is a new cluster level.

Lets take an exmaple, "SupportForceCreateVG" - This is supported from 3.1 onwards,

If you look at config.sql, you will see following entries
select fn_db_add_config_value('SupportForceCreateVG','false','3.0');
select fn_db_add_config_value('SupportForceCreateVG','true','3.1');
select fn_db_add_config_value('SupportForceCreateVG','true','3.2');
select fn_db_add_config_value('SupportForceCreateVG','true','3.3');
= =3D
And in ConfigValues.java

    @TypeConverterAttribute(Boolean.class)
    @DefaultValueAttribute("false")
    SupportForceCreateVG,

Now if there is 3.4 and 3.5, the user needs to add 2 more entries, which i feel is redundant.

Instead we can make

    @TypeConverterAttribute(Boolean.class)
    @DefaultValueAttribute("true")
    SupportForceCreateVG,

and have only the following in config.sql
select fn_db_add_config_value('SupportForceCreateVG','false','3.0');
if a particular value(for a specific cluster level) is not found in Config.sql, the fallback is to use the value available in ConfigValues.java.

This has already bee= =3D n implemented, there are many "feature supported" configurations working li= =3D ke this (for example GlusterSupport).

I think = =3D a more interesting approach would be to move these out of the DB since thes= =3D e values don't really hav e a reson to be there.
Since the en= =3D tire thing is abstracted by "Gluster/FeatureSupported" classes then we can = =3D easily change mechanism (of course whatever code is not using it can be eas= =3D ily converted to use the mechanism)

For exampl= =3D e a simple enum could do the trick:
-------------------------= =3D ------------ EXAMPLE -------------------------------------
/*= =3D *
 * Convenience class to check if a gluster feature is supported o= =3D r not in any given version.<br>
 * Methods should be named by= =3D feature and accept version to check against.
 */
public class G= =3D lusterFeatureSupported {
    /**
  &n= =3D bsp;  * @param version
     *   = =3D          Compatibility version to c= =3D heck for.
     * @return <code>true</code&g= =3D t; if gluster support is enabled, <code>false</code> if it's no= =3D t.
     */
    public static boole= =3D an gluster(Version version) {
       = =3D return SupportedFeatures.GLUSTER.isSupportedOn(version);
  &n= =3D bsp; }

    /**
     * @param v= =3D ersion
     *      &nb= =3D sp;     Compatibility version to check for.
 &n= =3D bsp;   * @return <code>true</code> if gluster heavywe= =3D ight refresh is enabled, <code>false</code> if it's not.
&nb= =3D sp;    */
    public static boolean refres= =3D hHeavyWeight(Version version) {
      &nbs= =3D p; return SupportedFeatures.REFRESH_HEAVYWEIGHT.isSupportedOn(version);
= =3D     }

    /* Mor= =3D e methods... */

    enum SupportedFeatures {        GLUSTER(Version.v3_0),
&nbs= =3D p;       REFRESH_HEAVYWEIGHT(Version.v3_0, Ve= =3D rsion.v3_1),
        /* More m= =3D embers */;

        private Set<= =3D ;Version> unsupportedVersions =3D3D new HashSet<Version>();
&=3D nbsp;       private SupportedFeatures(Version= =3D ... versions) {
         &n= =3D bsp;  unsupportedVersions.addAll(Arrays.asList(versions));
 &n= =3D bsp;      }

     &= =3D nbsp;  public boolean isSupportedOn(Version version) {
  = =3D           return !unsupportedV= =3D ersions.contains(version);
        }<= =3D br>    }
------------------------------------- END= =3D EXAMPLE -------------------------------------

Tho= =3D ughts?

Regards,
Mike

Please share your thoughts on this.

Thanks,
Kanagaraj

------=3D_Part_43195740_1618344988.1385878122945-- --===============2928159518935397180== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS0tLS0tPV9QYXJ0XzQzMTk1NzQwXzE2MTgzNDQ5ODguMTM4NTg3ODEyMjk0NQpDb250ZW50LVR5 cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog N2JpdAoKLS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAtLS0tLQoKPiBIaSBBbGwsCkhpIEthbmFnYXJh aiwgCgo+IFRoZSBhcmUgc29tZSBpc3N1ZXMgYXJpc2luZyBpbiBjb25maWd1cmF0aW9ucyB3aGVu ZXZlciB3ZSBtb3ZlIHVwIG9uIHRoZQo+IHZlcnNpb25zKDMuMyA9PiAzLjQpLCBiZWNhdXNlIG9m IHRoZSB3YXkgd2Ugc3RvcmUgYW5kIGludGVycHJldCB0aGVtLgoKPiBXaGVuZXZlciB0aGVyZSBp cyBhIG5ldyBjbHVzdGVyIGxldmVsLCB5b3Ugd2lsbCBuZWVkIHRvIGFkZCBhIG5ldyBlbnRyeSBm b3IKPiBhbGwobW9zdCkgb2YgdGhlIGNvbmZpZ3VyYXRpb24uIE1vc3RseSBhIGNvcHkgcGFzdGUg aWYgeW91IHNlZSBmcm9tIDMuMiB0bwo+IDMuMywgZXhjZXB0IHNvbWUgQ1BVL1BNIHR5cGUgcmVs YXRlZCBjb25maWd1cmF0aW9ucy4KPiBCZXR0ZXIgb3B0aW9uIHdvdWxkIGJlIHRvIGhhdmUgdGhl IGRlZmF1bCBjb25maWcgdmFsdWUgaW4gQ29uZmlnVmFsdWVzLmphdmEKPiBhbmQgdGhlIG92ZXJy aWRlcyB3aWxsIGdvIHRvIGNvbmZpZy5zcWwuIEluIHRoaXMgYXBwcm9hY2ggeW91IGRvbid0IG5l ZWQgYQo+IG5ldyBlbnRyaWVzIHRvIGNvbmZpZy5zcWwgd2hlbiB0aGVyZSBpcyBhIG5ldyBjbHVz dGVyIGxldmVsLgoKPiBMZXRzIHRha2UgYW4gZXhtYXBsZSwgIlN1cHBvcnRGb3JjZUNyZWF0ZVZH IiAtIFRoaXMgaXMgc3VwcG9ydGVkIGZyb20gMy4xCj4gb253YXJkcywKCj4gSWYgeW91IGxvb2sg YXQgY29uZmlnLnNxbCwgeW91IHdpbGwgc2VlIGZvbGxvd2luZyBlbnRyaWVzCj4gc2VsZWN0IGZu X2RiX2FkZF9jb25maWdfdmFsdWUoJ1N1cHBvcnRGb3JjZUNyZWF0ZVZHJywnZmFsc2UnLCczLjAn KTsKPiBzZWxlY3QgZm5fZGJfYWRkX2NvbmZpZ192YWx1ZSgnU3VwcG9ydEZvcmNlQ3JlYXRlVkcn LCd0cnVlJywnMy4xJyk7Cj4gc2VsZWN0IGZuX2RiX2FkZF9jb25maWdfdmFsdWUoJ1N1cHBvcnRG b3JjZUNyZWF0ZVZHJywndHJ1ZScsJzMuMicpOwo+IHNlbGVjdCBmbl9kYl9hZGRfY29uZmlnX3Zh bHVlKCdTdXBwb3J0Rm9yY2VDcmVhdGVWRycsJ3RydWUnLCczLjMnKTsKCj4gQW5kIGluIENvbmZp Z1ZhbHVlcy5qYXZhCgo+IEBUeXBlQ29udmVydGVyQXR0cmlidXRlKEJvb2xlYW4uY2xhc3MpCj4g QERlZmF1bHRWYWx1ZUF0dHJpYnV0ZSgiZmFsc2UiKQo+IFN1cHBvcnRGb3JjZUNyZWF0ZVZHLAoK PiBOb3cgaWYgdGhlcmUgaXMgMy40IGFuZCAzLjUsIHRoZSB1c2VyIG5lZWRzIHRvIGFkZCAyIG1v cmUgZW50cmllcywgd2hpY2ggaQo+IGZlZWwgaXMgcmVkdW5kYW50LgoKPiBJbnN0ZWFkIHdlIGNh biBtYWtlCgo+IEBUeXBlQ29udmVydGVyQXR0cmlidXRlKEJvb2xlYW4uY2xhc3MpCj4gQERlZmF1 bHRWYWx1ZUF0dHJpYnV0ZSgidHJ1ZSIpCj4gU3VwcG9ydEZvcmNlQ3JlYXRlVkcsCgo+IGFuZCBo YXZlIG9ubHkgdGhlIGZvbGxvd2luZyBpbiBjb25maWcuc3FsCj4gc2VsZWN0IGZuX2RiX2FkZF9j b25maWdfdmFsdWUoJ1N1cHBvcnRGb3JjZUNyZWF0ZVZHJywnZmFsc2UnLCczLjAnKTsKCj4gaWYg YSBwYXJ0aWN1bGFyIHZhbHVlKGZvciBhIHNwZWNpZmljIGNsdXN0ZXIgbGV2ZWwpIGlzIG5vdCBm b3VuZCBpbgo+IENvbmZpZy5zcWwsIHRoZSBmYWxsYmFjayBpcyB0byB1c2UgdGhlIHZhbHVlIGF2 YWlsYWJsZSBpbiBDb25maWdWYWx1ZXMuamF2YS4KVGhpcyBoYXMgYWxyZWFkeSBiZWVuIGltcGxl bWVudGVkLCB0aGVyZSBhcmUgbWFueSAiZmVhdHVyZSBzdXBwb3J0ZWQiIGNvbmZpZ3VyYXRpb25z IHdvcmtpbmcgbGlrZSB0aGlzIChmb3IgZXhhbXBsZSBHbHVzdGVyU3VwcG9ydCkuIAoKSSB0aGlu ayBhIG1vcmUgaW50ZXJlc3RpbmcgYXBwcm9hY2ggd291bGQgYmUgdG8gbW92ZSB0aGVzZSBvdXQg b2YgdGhlIERCIHNpbmNlIHRoZXNlIHZhbHVlcyBkb24ndCByZWFsbHkgaGF2IGUgYSByZXNvbiB0 byBiZSB0aGVyZS4gClNpbmNlIHRoZSBlbnRpcmUgdGhpbmcgaXMgYWJzdHJhY3RlZCBieSAiR2x1 c3Rlci9GZWF0dXJlU3VwcG9ydGVkIiBjbGFzc2VzIHRoZW4gd2UgY2FuIGVhc2lseSBjaGFuZ2Ug bWVjaGFuaXNtIChvZiBjb3Vyc2Ugd2hhdGV2ZXIgY29kZSBpcyBub3QgdXNpbmcgaXQgY2FuIGJl IGVhc2lseSBjb252ZXJ0ZWQgdG8gdXNlIHRoZSBtZWNoYW5pc20pIAoKRm9yIGV4YW1wbGUgYSBz aW1wbGUgZW51bSBjb3VsZCBkbyB0aGUgdHJpY2s6IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tIEVYQU1QTEUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSAKLyoqIAoqIENvbnZlbmllbmNlIGNsYXNzIHRvIGNoZWNrIGlmIGEgZ2x1c3RlciBmZWF0dXJl IGlzIHN1cHBvcnRlZCBvciBub3QgaW4gYW55IGdpdmVuIHZlcnNpb24uPGJyPiAKKiBNZXRob2Rz IHNob3VsZCBiZSBuYW1lZCBieSBmZWF0dXJlIGFuZCBhY2NlcHQgdmVyc2lvbiB0byBjaGVjayBh Z2FpbnN0LiAKKi8gCnB1YmxpYyBjbGFzcyBHbHVzdGVyRmVhdHVyZVN1cHBvcnRlZCB7IAovKiog CiogQHBhcmFtIHZlcnNpb24gCiogQ29tcGF0aWJpbGl0eSB2ZXJzaW9uIHRvIGNoZWNrIGZvci4g CiogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiBnbHVzdGVyIHN1cHBvcnQgaXMgZW5hYmxl ZCwgPGNvZGU+ZmFsc2U8L2NvZGU+IGlmIGl0J3Mgbm90LiAKKi8gCnB1YmxpYyBzdGF0aWMgYm9v bGVhbiBnbHVzdGVyKFZlcnNpb24gdmVyc2lvbikgeyAKcmV0dXJuIFN1cHBvcnRlZEZlYXR1cmVz LkdMVVNURVIuaXNTdXBwb3J0ZWRPbih2ZXJzaW9uKTsgCn0gCgovKiogCiogQHBhcmFtIHZlcnNp b24gCiogQ29tcGF0aWJpbGl0eSB2ZXJzaW9uIHRvIGNoZWNrIGZvci4gCiogQHJldHVybiA8Y29k ZT50cnVlPC9jb2RlPiBpZiBnbHVzdGVyIGhlYXZ5d2VpZ2h0IHJlZnJlc2ggaXMgZW5hYmxlZCwg PGNvZGU+ZmFsc2U8L2NvZGU+IGlmIGl0J3Mgbm90LiAKKi8gCnB1YmxpYyBzdGF0aWMgYm9vbGVh biByZWZyZXNoSGVhdnlXZWlnaHQoVmVyc2lvbiB2ZXJzaW9uKSB7IApyZXR1cm4gU3VwcG9ydGVk RmVhdHVyZXMuUkVGUkVTSF9IRUFWWVdFSUdIVC5pc1N1cHBvcnRlZE9uKHZlcnNpb24pOyAKfSAK Ci8qIE1vcmUgbWV0aG9kcy4uLiAqLyAKCmVudW0gU3VwcG9ydGVkRmVhdHVyZXMgeyAKR0xVU1RF UihWZXJzaW9uLnYzXzApLCAKUkVGUkVTSF9IRUFWWVdFSUdIVChWZXJzaW9uLnYzXzAsIFZlcnNp b24udjNfMSksIAovKiBNb3JlIG1lbWJlcnMgKi87IAoKcHJpdmF0ZSBTZXQ8VmVyc2lvbj4gdW5z dXBwb3J0ZWRWZXJzaW9ucyA9IG5ldyBIYXNoU2V0PFZlcnNpb24+KCk7IAoKcHJpdmF0ZSBTdXBw b3J0ZWRGZWF0dXJlcyhWZXJzaW9uLi4uIHZlcnNpb25zKSB7IAp1bnN1cHBvcnRlZFZlcnNpb25z LmFkZEFsbChBcnJheXMuYXNMaXN0KHZlcnNpb25zKSk7IAp9IAoKcHVibGljIGJvb2xlYW4gaXNT dXBwb3J0ZWRPbihWZXJzaW9uIHZlcnNpb24pIHsgCnJldHVybiAhdW5zdXBwb3J0ZWRWZXJzaW9u cy5jb250YWlucyh2ZXJzaW9uKTsgCn0gCn0gCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0gRU5EIEVYQU1QTEUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSAKClRob3VnaHRzPyAKClJlZ2FyZHMsIApNaWtlIAoKPiBQbGVhc2Ugc2hhcmUgeW91ciB0aG91 Z2h0cyBvbiB0aGlzLgoKPiBUaGFua3MsCj4gS2FuYWdhcmFqCgotLS0tLS09X1BhcnRfNDMxOTU3 NDBfMTYxODM0NDk4OC4xMzg1ODc4MTIyOTQ1CkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFy c2V0PXV0Zi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKCjxo dG1sPjxib2R5PjxkaXYgc3R5bGU9M0QiZm9udC1mYW1pbHk6IHRpbWVzIG5ldyByb21hbiwgbmV3 IHlvcmssIHRpbWVzLCBzZT0KcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiAjMDAwMDAwIj48 aHIgaWQ9M0QiendjaHIiPjxibG9ja3F1b3RlIHN0eWxlPTNEPQoiYm9yZGVyLWxlZnQ6MnB4IHNv bGlkICMxMDEwRkY7bWFyZ2luLWxlZnQ6NXB4O3BhZGRpbmctbGVmdDo1cHg7Y29sb3I6IzAwMDs9 CmZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1hbDt0ZXh0LWRlY29yYXRpb246bm9u ZTtmb250LWZhbWlseTpIZWx2ZT0KdGljYSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB0 OyI+CiA9MjAKCiAgID0yMAogPTIwCiA9MjAKICAgIEhpIEFsbCw8L2Jsb2NrcXVvdGU+PGRpdj48 YnI+PC9kaXY+PGRpdj5IaSBLYW5hZ2FyYWosPGJyPjwvZGl2PjxkaXY+PGJyPQo+PC9kaXY+PGJs b2NrcXVvdGUgc3R5bGU9M0QiYm9yZGVyLWxlZnQ6MnB4IHNvbGlkICMxMDEwRkY7bWFyZ2luLWxl ZnQ6NXB4O3A9CmFkZGluZy1sZWZ0OjVweDtjb2xvcjojMDAwO2ZvbnQtd2VpZ2h0Om5vcm1hbDtm b250LXN0eWxlOm5vcm1hbDt0ZXh0LWRlY29yYT0KdGlvbjpub25lO2ZvbnQtZmFtaWx5OkhlbHZl dGljYSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB0OyI+PGJyPgogICAgVGhlIGFyZSBz b21lIGlzc3VlcyBhcmlzaW5nIGluIGNvbmZpZ3VyYXRpb25zIHdoZW5ldmVyIHdlIG1vdmUgdXAg b24KICAgIHRoZSB2ZXJzaW9ucygzLjMgPTNEJmd0OyAzLjQpLCBiZWNhdXNlIG9mIHRoZSB3YXkg d2Ugc3RvcmUgYW5kCiAgICBpbnRlcnByZXQgdGhlbS48YnI+PGJyPgogICAgV2hlbmV2ZXIgdGhl cmUgaXMgYSBuZXcgY2x1c3RlciBsZXZlbCwgeW91IHdpbGwgbmVlZCB0byBhZGQgYSBuZXcKICAg IGVudHJ5IGZvciBhbGwobW9zdCkgb2YgdGhlIGNvbmZpZ3VyYXRpb24uIE1vc3RseSBhIGNvcHkg cGFzdGUgaWYgeW91CiAgICBzZWUgZnJvbSAzLjIgdG8gMy4zLCBleGNlcHQgc29tZSBDUFUvUE0g dHlwZSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLjxicj0KPgogICAgQmV0dGVyIG9wdGlvbiB3b3Vs ZCBiZSB0byBoYXZlIHRoZSBkZWZhdWwgY29uZmlnIHZhbHVlIGluCiAgICBDb25maWdWYWx1ZXMu amF2YSBhbmQgdGhlIG92ZXJyaWRlcyB3aWxsIGdvIHRvIGNvbmZpZy5zcWwuIEluIHRoaXMKICAg IGFwcHJvYWNoIHlvdSBkb24ndCBuZWVkIGEgbmV3IGVudHJpZXMgdG8gY29uZmlnLnNxbCB3aGVu IHRoZXJlIGlzIGEKICAgIG5ldyBjbHVzdGVyIGxldmVsLjxicj48YnI+CiAgICBMZXRzIHRha2Ug YW4gZXhtYXBsZSwgIlN1cHBvcnRGb3JjZUNyZWF0ZVZHIiAtIFRoaXMgaXMgc3VwcG9ydGVkCiAg ICBmcm9tIDMuMSBvbndhcmRzLDxicj48YnI+CiAgICBJZiB5b3UgbG9vayBhdCBjb25maWcuc3Fs LCB5b3Ugd2lsbCBzZWUgZm9sbG93aW5nIGVudHJpZXMgPGJyPgogICAgc2VsZWN0IGZuX2RiX2Fk ZF9jb25maWdfdmFsdWUoJ1N1cHBvcnRGb3JjZUNyZWF0ZVZHJywnZmFsc2UnLCczLjAnKTsKICAg IDxicj4KICAgIHNlbGVjdCBmbl9kYl9hZGRfY29uZmlnX3ZhbHVlKCdTdXBwb3J0Rm9yY2VDcmVh dGVWRycsJ3RydWUnLCczLjEnKTsKICAgIDxicj4KICAgIHNlbGVjdCBmbl9kYl9hZGRfY29uZmln X3ZhbHVlKCdTdXBwb3J0Rm9yY2VDcmVhdGVWRycsJ3RydWUnLCczLjInKTsKICAgIDxicj4KICAg IHNlbGVjdCBmbl9kYl9hZGRfY29uZmlnX3ZhbHVlKCdTdXBwb3J0Rm9yY2VDcmVhdGVWRycsJ3Ry dWUnLCczLjMnKTs8YnI+PQo8YnI+CiAgICBBbmQgaW4gQ29uZmlnVmFsdWVzLmphdmE8YnI+PGJy PgogICAgJm5ic3A7Jm5ic3A7Jm5ic3A7IEBUeXBlQ29udmVydGVyQXR0cmlidXRlKEJvb2xlYW4u Y2xhc3MpPGJyPgogICAgJm5ic3A7Jm5ic3A7Jm5ic3A7IEBEZWZhdWx0VmFsdWVBdHRyaWJ1dGUo ImZhbHNlIik8YnI+CiAgICAmbmJzcDsmbmJzcDsmbmJzcDsgU3VwcG9ydEZvcmNlQ3JlYXRlVkcs PGJyPjxicj4KICAgIE5vdyBpZiB0aGVyZSBpcyAzLjQgYW5kIDMuNSwgdGhlIHVzZXIgbmVlZHMg dG8gYWRkIDIgbW9yZSBlbnRyaWVzLAogICAgd2hpY2ggaSBmZWVsIGlzIHJlZHVuZGFudC48YnI+ PGJyPgogICAgSW5zdGVhZCB3ZSBjYW4gbWFrZSA8YnI+PGJyPgogICAgJm5ic3A7Jm5ic3A7Jm5i c3A7IEBUeXBlQ29udmVydGVyQXR0cmlidXRlKEJvb2xlYW4uY2xhc3MpPGJyPgogICAgJm5ic3A7 Jm5ic3A7Jm5ic3A7IEBEZWZhdWx0VmFsdWVBdHRyaWJ1dGUoInRydWUiKTxicj4KICAgICZuYnNw OyZuYnNwOyZuYnNwOyBTdXBwb3J0Rm9yY2VDcmVhdGVWRyw8YnI+PGJyPgogICAgYW5kIGhhdmUg b25seSB0aGUgZm9sbG93aW5nIGluIGNvbmZpZy5zcWw8YnI+CiAgICBzZWxlY3QgZm5fZGJfYWRk X2NvbmZpZ192YWx1ZSgnU3VwcG9ydEZvcmNlQ3JlYXRlVkcnLCdmYWxzZScsJzMuMCcpOzxicj0K Pjxicj4KICAgIGlmIGEgcGFydGljdWxhciB2YWx1ZShmb3IgYSBzcGVjaWZpYyBjbHVzdGVyIGxl dmVsKSBpcyBub3QgZm91bmQgaW4KICAgIENvbmZpZy5zcWwsIHRoZSBmYWxsYmFjayBpcyB0byB1 c2UgdGhlIHZhbHVlIGF2YWlsYWJsZSBpbgogICAgQ29uZmlnVmFsdWVzLmphdmEuPC9ibG9ja3F1 b3RlPjxkaXY+PGJyPjwvZGl2PjxkaXY+VGhpcyBoYXMgYWxyZWFkeSBiZWU9Cm4gaW1wbGVtZW50 ZWQsIHRoZXJlIGFyZSBtYW55ICJmZWF0dXJlIHN1cHBvcnRlZCIgY29uZmlndXJhdGlvbnMgd29y a2luZyBsaT0Ka2UgdGhpcyAoZm9yIGV4YW1wbGUgR2x1c3RlclN1cHBvcnQpLjxicj48L2Rpdj48 ZGl2Pjxicj48L2Rpdj48ZGl2PkkgdGhpbmsgPQphIG1vcmUgaW50ZXJlc3RpbmcgYXBwcm9hY2gg d291bGQgYmUgdG8gbW92ZSB0aGVzZSBvdXQgb2YgdGhlIERCIHNpbmNlIHRoZXM9CmUgdmFsdWVz IGRvbid0IHJlYWxseSBoYXYgZSBhIHJlc29uIHRvIGJlIHRoZXJlLjxicj48L2Rpdj48ZGl2PlNp bmNlIHRoZSBlbj0KdGlyZSB0aGluZyBpcyBhYnN0cmFjdGVkIGJ5ICJHbHVzdGVyL0ZlYXR1cmVT dXBwb3J0ZWQiIGNsYXNzZXMgdGhlbiB3ZSBjYW4gPQplYXNpbHkgY2hhbmdlIG1lY2hhbmlzbSAo b2YgY291cnNlIHdoYXRldmVyIGNvZGUgaXMgbm90IHVzaW5nIGl0IGNhbiBiZSBlYXM9CmlseSBj b252ZXJ0ZWQgdG8gdXNlIHRoZSBtZWNoYW5pc20pPGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxk aXY+Rm9yIGV4YW1wbD0KZSBhIHNpbXBsZSBlbnVtIGNvdWxkIGRvIHRoZSB0cmljazo8YnI+PC9k aXY+PGRpdj4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPQotLS0tLS0tLS0tLS0gRVhBTVBMRSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyPjwvZGl2PjxkaXY+Lyo9Cio8 YnI+Jm5ic3A7KiBDb252ZW5pZW5jZSBjbGFzcyB0byBjaGVjayBpZiBhIGdsdXN0ZXIgZmVhdHVy ZSBpcyBzdXBwb3J0ZWQgbz0KciBub3QgaW4gYW55IGdpdmVuIHZlcnNpb24uJmx0O2JyJmd0Ozxi cj4mbmJzcDsqIE1ldGhvZHMgc2hvdWxkIGJlIG5hbWVkIGJ5PQogZmVhdHVyZSBhbmQgYWNjZXB0 IHZlcnNpb24gdG8gY2hlY2sgYWdhaW5zdC48YnI+Jm5ic3A7Ki88YnI+cHVibGljIGNsYXNzIEc9 Cmx1c3RlckZlYXR1cmVTdXBwb3J0ZWQgezwvZGl2PjxkaXY+Jm5ic3A7Jm5ic3A7Jm5ic3A7IC8q Kjxicj4mbmJzcDsmbmJzcDsmbj0KYnNwOyZuYnNwOyAqIEBwYXJhbSB2ZXJzaW9uPGJyPiZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyAqJm5ic3A7Jm5ic3A7Jm5ic3A7PQombmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgQ29tcGF0aWJpbGl0eSB2ZXJzaW9uIHRv IGM9CmhlY2sgZm9yLjxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKiBAcmV0dXJuICZsdDtj b2RlJmd0O3RydWUmbHQ7L2NvZGUmZz0KdDsgaWYgZ2x1c3RlciBzdXBwb3J0IGlzIGVuYWJsZWQs ICZsdDtjb2RlJmd0O2ZhbHNlJmx0Oy9jb2RlJmd0OyBpZiBpdCdzIG5vPQp0Ljxicj4mbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgKi88YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IHB1YmxpYyBzdGF0aWMg Ym9vbGU9CmFuIGdsdXN0ZXIoVmVyc2lvbiB2ZXJzaW9uKSB7PGJyPiZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOz0KIHJldHVybiBTdXBwb3J0ZWRGZWF0dXJlcy5HTFVT VEVSLmlzU3VwcG9ydGVkT24odmVyc2lvbik7PGJyPiZuYnNwOyZuYnNwOyZuPQpic3A7IH08YnI+ PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyAvKio8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICog QHBhcmFtIHY9CmVyc2lvbjxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKiZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYj0Kc3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 IENvbXBhdGliaWxpdHkgdmVyc2lvbiB0byBjaGVjayBmb3IuPGJyPiZuYnNwOyZuPQpic3A7Jm5i c3A7Jm5ic3A7ICogQHJldHVybiAmbHQ7Y29kZSZndDt0cnVlJmx0Oy9jb2RlJmd0OyBpZiBnbHVz dGVyIGhlYXZ5d2U9CmlnaHQgcmVmcmVzaCBpcyBlbmFibGVkLCAmbHQ7Y29kZSZndDtmYWxzZSZs dDsvY29kZSZndDsgaWYgaXQncyBub3QuPGJyPiZuYj0Kc3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICov PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyBwdWJsaWMgc3RhdGljIGJvb2xlYW4gcmVmcmVzPQpoSGVh dnlXZWlnaHQoVmVyc2lvbiB2ZXJzaW9uKSB7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnM9CnA7IHJldHVybiBTdXBwb3J0ZWRGZWF0dXJlcy5SRUZSRVNIX0hFQVZZ V0VJR0hULmlzU3VwcG9ydGVkT24odmVyc2lvbik7PGJyPj0KJm5ic3A7Jm5ic3A7Jm5ic3A7IH08 YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4mbmJzcDsmbmJzcDsmbmJzcDsgLyogTW9yPQpl IG1ldGhvZHMuLi4gKi88L2Rpdj48ZGl2Pjxicj4mbmJzcDsmbmJzcDsmbmJzcDsgZW51bSBTdXBw b3J0ZWRGZWF0dXJlcyB7PGI9CnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7IEdMVVNURVIoVmVyc2lvbi52M18wKSw8YnI+Jm5icz0KcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgUkVGUkVTSF9IRUFWWVdFSUdIVChWZXJzaW9uLnYzXzAsIFZl PQpyc2lvbi52M18xKSw8L2Rpdj48ZGl2PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyAvKiBNb3JlIG09CmVtYmVycyAqLzs8YnI+PGJyPiZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBwcml2YXRlIFNldCZsdD0KO1ZlcnNpb24mZ3Q7IHVu c3VwcG9ydGVkVmVyc2lvbnMgPTNEIG5ldyBIYXNoU2V0Jmx0O1ZlcnNpb24mZ3Q7KCk7PGJyPjxi cj4mPQpuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBwcml2YXRlIFN1 cHBvcnRlZEZlYXR1cmVzKFZlcnNpb249Ci4uLiB2ZXJzaW9ucykgezxicj4mbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbj0KYnNwOyZuYnNwOyB1 bnN1cHBvcnRlZFZlcnNpb25zLmFkZEFsbChBcnJheXMuYXNMaXN0KHZlcnNpb25zKSk7PGJyPiZu YnNwOyZuPQpic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IH08YnI+PGJyPiZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyY9Cm5ic3A7Jm5ic3A7IHB1YmxpYyBib29sZWFuIGlz U3VwcG9ydGVkT24oVmVyc2lvbiB2ZXJzaW9uKSB7PGJyPiZuYnNwOyZuYnNwOz0KJm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJldHVybiAhdW5z dXBwb3J0ZWRWPQplcnNpb25zLmNvbnRhaW5zKHZlcnNpb24pOzxicj4mbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfTw9CmJyPiZuYnNwOyZuYnNwOyZuYnNwOyB9PC9k aXY+PGRpdj4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEVORD0KIEVYQU1Q TEUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvZGl2PjxkaXY+PGJyPjwv ZGl2PjxkaXY+VGhvPQp1Z2h0cz88YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5SZWdhcmRz LDxicj48L2Rpdj48ZGl2Pk1pa2U8YnI+PC9kaXY+PGI9CmxvY2txdW90ZSBzdHlsZT0zRCJib3Jk ZXItbGVmdDoycHggc29saWQgIzEwMTBGRjttYXJnaW4tbGVmdDo1cHg7cGFkZGluZy1sZT0KZnQ6 NXB4O2NvbG9yOiMwMDA7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQt ZGVjb3JhdGlvbjpub25lPQo7Zm9udC1mYW1pbHk6SGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7 Zm9udC1zaXplOjEycHQ7Ij48YnI+CiAgICBQbGVhc2Ugc2hhcmUgeW91ciB0aG91Z2h0cyBvbiB0 aGlzLjxicj48YnI+CiAgICBUaGFua3MsPGJyPgogICAgS2FuYWdhcmFqPGJyPjxicj48L2Jsb2Nr cXVvdGU+PC9kaXY+PC9ib2R5PjwvaHRtbD4KLS0tLS0tPV9QYXJ0XzQzMTk1NzQwXzE2MTgzNDQ5 ODguMTM4NTg3ODEyMjk0NS0tCg== --===============2928159518935397180==-- From mpastern at redhat.com Sun Dec 1 02:02:07 2013 Content-Type: multipart/mixed; boundary="===============8980632068142733073==" MIME-Version: 1.0 From: Michael Pasternak To: devel at ovirt.org Subject: Re: [Engine-devel] Using REST API in web UI - review call summary Date: Sun, 01 Dec 2013 09:02:12 +0200 Message-ID: <529ADEF4.9080500@redhat.com> In-Reply-To: 52986581.6090309@redhat.com --===============8980632068142733073== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 11/29/2013 11:59 AM, Michael Pasternak wrote: > On 11/29/2013 11:45 AM, Michael Pasternak wrote: >> On 11/28/2013 09:22 PM, Vojtech Szocs wrote: >>> >>> >>> ----- Original Message ----- >>>> From: "Michael Pasternak" >>>> To: "Vojtech Szocs" >>>> Cc: "engine-devel" >>>> Sent: Sunday, November 24, 2013 9:07:01 AM >>>> Subject: Re: [Engine-devel] Using REST API in web UI - review call sum= mary >>>> >>>> >>>> >>>> Hi Vojtech, >>>> >>>> First of all it was a good "presentation" of requirements + suggested >>>> solutions - well done!, >>> >>> Thank you :) >>> >>>> few comments/questions inline. >>>> >>>> On 11/21/2013 11:18 PM, Vojtech Szocs wrote: >>>>> Hi guys, >>>>> >>>>> this is a summary of yesterday's review call, I'll try to highlight >>>>> important Q/A and things we agreed on. >>>>> Feel free to add anything in case I've missed something. >>>>> >>>>> -- >>>>> >>>>> Q: Why don't we simply try to use existing Java SDK and adapt it for = GWT >>>>> apps? (asked by Michael & Gilad) >>>>> >>>>> A: This might be a viable option to consider if we wanted to skip >>>>> JavaScript-based SDK altogether and target Java/GWT code >>>>> directly; we could simply take Java SDK and customize its abstractions >>>>> where necessary, i.e. using HTTP transport layer >>>>> implementation that works with GWT. In any case, this would mean coup= ling >>>>> ourselves to Java SDK (which has its own release cycle) >>>>> and I think this would complicate things for us. >>>> >>>> not sure i buy this one :), this is the purpose of any sdk, including = the >>>> one you about to write, people that will use it, will be "coupling" to= it ... >>> >>> Of course, but by saying "coupling ourselves to Java SDK" I meant SDK p= erspective, not client perspective: >> >> of course, but you told something different, that you want js-sdk to be = aware >> of the client, and this is actually why you taking this path. >> >>> >>> - someone else (you) maintains Java SDK and therefore controls generate= d sources (JAR or RPM isn't relevant here) >>> - another guy (me) maintains (fictional) Java/GWT SDK that relies on Ja= va SDK + some (supported) customizations >>> - the only way I can impose changes in my SDK is through supported cust= omizations as you control original (Java SDK) sources, >>> i.e. the whole code generation process is driven by your SDK, so my S= DK is coupled to your SDK's build/release cycle >> >> that's how things working in software, you always depending on the certa= in version >> of the component you're working against, as it expose set of features yo= u need, i don't >> think that having control over framework features, justifying rewriting = the >> framework ... >> >> (please note that i'm not against the js-sdk, go ahead, this is a nice i= nitiative indeed, i >> just can't see the business case for not reusing existent infrastructure= cause it works >> for all your needs and eventually both worlds would benefiting from it U= I and java-sdk users >> cause you where extending it with additional capabilities they may also = need) >> >>> >>> For the sake of simplicity, I guess it's best to start with SDK that ha= s no dependencies whatsoever. = >> >> so why won't you rewrite the engine in Java-script? your js-sdk eventual= ly will be depending on it, >> this way you'll have control over it (and it's features) as well ;-) >> >>> After all, there's no common dependency (aside from running Engine to p= rovide XSD & RSDL) between Java & Python SDK too, if I understand correctly. >>> >>> In other words, building on top of something existing (just because we = can do that) isn't always appropriate/flexible/efficient, it always depends= on given context and requirements. >> >> it would be true, if your requirements would make existing infrastructur= e inappropriate. >> >>> >>>> >>>>> >>>>> As proposed on the meeting, I think it's best to aim for JavaScript S= DK as >>>>> the lowest >>>>> common denominator for *any* web application that wants to work with = REST >>>>> API. oVirt GWT-based >>>>> UI can simply bind to JavaScript SDK, i.e. Java/GWT code that just ov= erlays >>>>> objects and functions >>>>> provided by JavaScript SDK. Another reason is ease of maintenance - I= 'd >>>>> rather see JavaScript SDK's code >>>>> generation process to be independent of any other SDK (people respons= ible >>>>> for maintaining JavaScript SDK >>>>> should have full control over generated code). >>>> >>>> what do you mean by "people should have full control over generated co= de"? >>> >>> It's related to "coupling from SDK perspective" I mentioned above: >>> "the only way I can impose changes in my SDK is through supported custo= mizations as you control original (Java SDK) sources" >> >> if you need additional functionality in java-sdk, you could do the follo= wing: >> >> 1. submit a patch to java-sdk >> 2. build new java-sdk locally and use it along with new feature you've a= dded >> 3. make UI depending on next version of java-sdk (which includes your ne= w feature) >> >> we (and all other SW projects) doing that day by day in engine,api,etc. >> >> (as i mentioned this would also benefit java-sdk users with additional f= eatures >> they might find useful as well) >> >>> >>> (by "people" I meant "JavaScript SDK developers") >>> >>> Full control means ability to change generated sources in whatever way = desired, but assuming the idea of reusing/customizing existing SDK code, as= pect of full control is lost in favor of reusing existing code. >> >> i disagree on this one, you have all control you need over java-sdk at a= ny time >> as it one of indoor projects. >> >>> And of course, this assumes that existing code (Java SDK) provides ever= ything we need, which might or might not be the case. >>> >>> So I just vote for simplicity, generate JavaScript SDK the way like oth= er SDKs (Java/Python) - not trying to reuse anything, just grab XSD & RSDL = and generate sources. >>> >>>> the purpose of >>>> code generation is to ease maintenance, i.e you/maintainer should not = write >>>> the feature >>>> once it available in api, just run CodeGen and you'll get it for free,= but >>>> this is zero control >>>> over code. >>> >>> +1 >>> >>> I agree with you on this. >>> >>>> >>>>> >>>>> -- >>>>> >>>>> Q: What about functionality currently used by oVirt UI but not suppor= ted by >>>>> REST API? (asked by Einav) >>>>> [For example, fetching VM entity over GWT RPC also returns related= data >>>>> such as Cluster name.] >>>>> >>>>> A: Based on discussion I've had with other colleagues after yesterday= 's >>>>> review call, I don't think that >>>>> separate support-like backend layer is a good idea. Instead, this is = the >>>>> kind of functionality that could be >>>>> placed in oVirt.js library. Logical operations like "get VMs and rela= ted >>>>> data" would be exposed through oVirt.js >>>>> (callback-based) API and ultimately realized as multiple physical req= uests >>>>> to REST API via JavaScript Binding. >>>>> >>>>> oVirt.js client would be completely oblivious to the fact that multip= le >>>>> physical requests are dispatched. In fact, >>>>> since HTTP communication is asynchronous in nature, oVirt.js client >>>>> wouldn't even notice any difference in terms of API >>>>> consumption. This assumes JavaScript SDK would use callback-based >>>>> (non-blocking) API instead of blocking one - after all, >>>>> blocking API on top of non-blocking implementation sounds pretty much= like >>>>> leaky abstraction [1]. >>>>> >>>>> For example: >>>>> >>>>> sdk.getVmsWithExtraData( >>>>> callbackToGetExtraDataForGivenVm, // might cause extra physic= al >>>>> requests to REST API >>>>> callbackFiredWhenAllDataIsReady // update client only when = all >>>>> data is ready >>>>> ) >>>> >>>> actually this the main bottleneck in moving UI to work on top of REST,= and >>>> most interesting/complex part of this project, >>> >>> Agreed, it's because UI "got used to" using internal backend interface = concepts (actions, queries etc.) in the first place.. So we'll have to emul= ate what we used to use to prevent regressions, maybe improve/refactor in f= uture. >>> >>>> >>>> you should think of very wise polling mechanism cause callbacks is a n= ice >>>> thing on paper, but behind the scene it all about polling: >>>> >>>> - the entity/s till action got accomplished >>>> - add to this updating different grids >>>> - running multiple actions >>>> - showing events >>>> - and obviously much more >>> >>> IMHO polling is just a workaround and indicates lack of proper notifica= tion solution. >>> >>> Apparently, oVirt web UI isn't some CLI program for which HTTP request/= response style is sufficient. oVirt web UI is dynamic, interactive web appl= ication that displays/updates data in real time. This is, in my opinion, qu= ite a big difference. >>> >>> I don't think callbacks are just a nice thing on paper. Callbacks are n= eeded because the underlying communcation is async in nature: >> >> Vojtech, you've got all wrong, i told that you *do need* callbacks, >> but implementing them only sounds easy, while actually it will be >> a quite complicated task. >> >>> >>> - caller invokes API function and provides callback to execute when ope= ration completes -> API is non-blocking >>> - polling attempts to detect change (i.e. operation completed) and noti= fy the caller, so it's also some sort of callback -> this is more complicat= ed compared to simple callback >>> >>>> >>>> and don't forget that every polled entity should be marshalled from xm= l to >>>> the javascript >>>> entity so at the end, "callbacks" mechanism will be extremely CPU cons= uming. >>> >>> First of all, I don't understand how callback mechanism can be CPU cons= uming, can you please provide some explanation or use case? >> >> of course, you'll have to do per call-back call: > = > s/"call-back call"/"polling request", e.g: > = > 1 polling task =3D=3D N * (#1+#2+#3) > = > [where N is amount of requests you need to perform till desired state is = achieved] i have a solution for this!, will get back to you/publish it when i have a = mature design. > = >> >> 1. request/response to the server >> 2. decompression of data from gzip >> 3. object mapping (in 99% of cases) >> >> >> note you'll have a lot of callback consumers that monitoring resource st= ate, waiting for new events. >> >> >>> >>> Does Java SDK provide ability to poll Engine in order to get recent upd= ates, and if yes, why? >> >> i was kinda hoping that you'll add it, but you've chosen to write your o= wn sdk ;-) >> >>> >>> Finally, polling makes things stateful, whereas SDK code should be stat= eless instead. If client wants to get recent updates, it should just use (s= tateless) SDK code to achieve this goal. >> >> sdk cannot be stateful by definition simply because server is stateless, >> (also pooling !=3D keeping state, being stateful means that you save data >> for request on server side) >> >>> >>>> >>>>> >>>>> [1] http://en.wikipedia.org/wiki/Leaky_abstraction >>>>> >>>>> -- >>>>> >>>>> Last but not least, where to maintain JavaScript SDK projects: low-le= vel >>>>> JavaScript Binding + high-level oVirt.js library. >>>>> >>>>> I agree that conceptually both above mentioned projects should go into >>>>> dedicated "ovirt-engine-sdk-js" git repository and >>>>> have their own build/release process. However, for now, we're just ma= king >>>>> baby steps so let's keep things simple and prototype >>>>> these projects as part of "ovirt-engine" git repository. >>>>> >>>>> ... we can complicate things anytime, but we should know that any com= plex >>>>> system that works has inevitably evolved from simple >>>>> system that works ... (quote from >>>>> http://en.wikipedia.org/wiki/Gall%27s_law) >>>>> >>>>> Regards, >>>>> Vojtech >>>>> _______________________________________________ >>>>> Engine-devel mailing list >>>>> Engine-devel(a)ovirt.org >>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel >>>>> >>>> >>>> >>>> -- >>>> >>>> Michael Pasternak >>>> RedHat, ENG-Virtualization R&D >>>> >> >> > = > = -- = Michael Pasternak RedHat, ENG-Virtualization R&D --===============8980632068142733073==-- From ofrenkel at redhat.com Sun Dec 1 03:55:21 2013 Content-Type: multipart/mixed; boundary="===============5944948329416340431==" MIME-Version: 1.0 From: Omer Frenkel To: devel at ovirt.org Subject: Re: [Engine-devel] Using config values Date: Sun, 01 Dec 2013 03:55:19 -0500 Message-ID: <1268805500.21090048.1385888119665.JavaMail.root@redhat.com> In-Reply-To: 1643824061.43195741.1385878122949.JavaMail.root@redhat.com --===============5944948329416340431== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ------=3D_Part_21090047_1204116571.1385888119663 Content-Type: text/plain; charset=3Dutf-8 Content-Transfer-Encoding: 7bit ----- Original Message ----- > From: "Mike Kolesnik" > To: "Kanagaraj" > Cc: "engine-devel" > Sent: Sunday, December 1, 2013 8:08:42 AM > Subject: Re: [Engine-devel] Using config values > ----- Original Message ----- > > Hi All, > = > Hi Kanagaraj, > > The are some issues arising in configurations whenever we move up on the > > versions(3.3 =3D> 3.4), because of the way we store and interpret them. > = > > Whenever there is a new cluster level, you will need to add a new entry= for > > all(most) of the configuration. Mostly a copy paste if you see from 3.2= to > > 3.3, except some CPU/PM type related configurations. > = > > Better option would be to have the defaul config value in ConfigValues.= java > > and the overrides will go to config.sql. In this approach you don't nee= d a > > new entries to config.sql when there is a new cluster level. > = > > Lets take an exmaple, "SupportForceCreateVG" - This is supported from 3= .1 > > onwards, > = > > If you look at config.sql, you will see following entries > = > > select fn_db_add_config_value('SupportForceCreateVG','false','3.0'); > = > > select fn_db_add_config_value('SupportForceCreateVG','true','3.1'); > = > > select fn_db_add_config_value('SupportForceCreateVG','true','3.2'); > = > > select fn_db_add_config_value('SupportForceCreateVG','true','3.3'); > = > > And in ConfigValues.java > = > > @TypeConverterAttribute(Boolean.class) > = > > @DefaultValueAttribute("false") > = > > SupportForceCreateVG, > = > > Now if there is 3.4 and 3.5, the user needs to add 2 more entries, whic= h i > > feel is redundant. > = > > Instead we can make > = > > @TypeConverterAttribute(Boolean.class) > = > > @DefaultValueAttribute("true") > = > > SupportForceCreateVG, > = > > and have only the following in config.sql > = > > select fn_db_add_config_value('SupportForceCreateVG','false','3.0'); > = > > if a particular value(for a specific cluster level) is not found in > > Config.sql, the fallback is to use the value available in > > ConfigValues.java. > = > This has already been implemented, there are many "feature supported" > configurations working like this (for example GlusterSupport). > I think a more interesting approach would be to move these out of the DB > since these values don't really hav e a reson to be there. > Since the entire thing is abstracted by "Gluster/FeatureSupported" classes > then we can easily change mechanism (of course whatever code is not using= it > can be easily converted to use the mechanism) > For example a simple enum could do the trick: > ------------------------------------- EXAMPLE > ------------------------------------- > /** > * Convenience class to check if a gluster feature is supported or not in = any > given version.
> * Methods should be named by feature and accept version to check against. > */ > public class GlusterFeatureSupported { > /** > * @param version > * Compatibility version to check for. > * @return true if gluster support is enabled, false > if it's not. > */ > public static boolean gluster(Version version) { > return SupportedFeatures.GLUSTER.isSupportedOn(version); > } > /** > * @param version > * Compatibility version to check for. > * @return true if gluster heavyweight refresh is enabled, > false if it's not. > */ > public static boolean refreshHeavyWeight(Version version) { > return SupportedFeatures.REFRESH_HEAVYWEIGHT.isSupportedOn(version); > } > /* More methods... */ > enum SupportedFeatures { > GLUSTER(Version.v3_0), > REFRESH_HEAVYWEIGHT(Version.v3_0, Version.v3_1), > /* More members */; > private Set unsupportedVersions =3D new HashSet(); > private SupportedFeatures(Version... versions) { > unsupportedVersions.addAll(Arrays.asList(versions)); > } > public boolean isSupportedOn(Version version) { > return !unsupportedVersions.contains(version); > } > } > ------------------------------------- END EXAMPLE > ------------------------------------- > Thoughts? unless i didn't understand something, this is not good, = this should stay configurable by the users, = for example if some user experience some issues with a feature and want to = turn it off/change the values.. = (not all version configuration are boolean, some are different values to di= fferent versions, like cpu-list) = > Regards, > Mike > > Please share your thoughts on this. > = > > Thanks, > = > > Kanagaraj > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel ------=3D_Part_21090047_1204116571.1385888119663 Content-Type: text/html; charset=3Dutf-8 Content-Transfer-Encoding: quoted-printable



Fr= =3D om: "Mike Kolesnik" <mkolesni(a)redhat.com>
To: "Kanaga= ra=3D j" <kmayilsa(a)redhat.com>
Cc: "engine-devel" <engine-de= ve=3D l(a)ovirt.org>
Sent: Sunday, December 1, 2013 8:08:42 AM
S=3D ubject: Re: [Engine-devel] Using config values


=3D20 =3D20 =3D20 =3D20 Hi All,

Hi Kanagaraj,

The are some issues arising in configurations whenever we move up on the versions(3.3 =3D3D> 3.4), because of the way we store and interpret them.

Whenever there is a new cluster level, you will need to add a new entry for all(most) of the configuration. Mostly a copy paste if you see from 3.2 to 3.3, except some CPU/PM type related configurations. Better option would be to have the defaul config value in ConfigValues.java and the overrides will go to config.sql. In this approach you don't need a new entries to config.sql when there is a new cluster level.

Lets take an exmaple, "SupportForceCreateVG" - This is supported from 3.1 onwards,

If you look at config.sql, you will see following entries
select fn_db_add_config_value('SupportForceCreateVG','false','3.0');
select fn_db_add_config_value('SupportForceCreateVG','true','3.1');
select fn_db_add_config_value('SupportForceCreateVG','true','3.2');
select fn_db_add_config_value('SupportForceCreateVG','true','3.3');
= =3D

And in ConfigValues.java

    @TypeConverterAttribute(Boolean.class)
    @DefaultValueAttribute("false")
    SupportForceCreateVG,

Now if there is 3.4 and 3.5, the user needs to add 2 more entries, which i feel is redundant.

Instead we can make

    @TypeConverterAttribute(Boolean.class)
    @DefaultValueAttribute("true")
    SupportForceCreateVG,

and have only the following in config.sql
select fn_db_add_config_value('SupportForceCreateVG','false','3.0');

if a particular value(for a specific cluster level) is not found in Config.sql, the fallback is to use the value available in ConfigValues.java.

This has already bee= =3D n implemented, there are many "feature supported" configurations working li= =3D ke this (for example GlusterSupport).

I think = =3D a more interesting approach would be to move these out of the DB since thes= =3D e values don't really hav e a reson to be there.
Since the en= =3D tire thing is abstracted by "Gluster/FeatureSupported" classes then we can = =3D easily change mechanism (of course whatever code is not using it can be eas= =3D ily converted to use the mechanism)

For exampl= =3D e a simple enum could do the trick:
-------------------------= =3D ------------ EXAMPLE -------------------------------------
/*= =3D *
 * Convenience class to check if a gluster feature is supported o= =3D r not in any given version.<br>
 * Methods should be named by= =3D feature and accept version to check against.
 */
public class G= =3D lusterFeatureSupported {
    /**
  &n= =3D bsp;  * @param version
     *   = =3D          Compatibility version to c= =3D heck for.
     * @return <code>true</code&g= =3D t; if gluster support is enabled, <code>false</code> if it's no= =3D t.
     */
    public static boole= =3D an gluster(Version version) {
       = =3D return SupportedFeatures.GLUSTER.isSupportedOn(version);
  &n= =3D bsp; }

    /**
    = =3D * @param version
     *    &nbs= =3D p;       Compatibility version to check for.<= =3D br>     * @return <code>true</code> if glus= =3D ter heavyweight refresh is enabled, <code>false</code> if it's = =3D not.
     */
    public static boo= =3D lean refreshHeavyWeight(Version version) {
     = =3D ;   return SupportedFeatures.REFRESH_HEAVYWEIGHT.isSupportedOn(ve= =3D rsion);
    }

  &n= =3D bsp; /* More methods... */

    enum SupportedF= =3D eatures {
        GLUSTER(Version.v3_= =3D 0),
        REFRESH_HEAVYWEIGHT(Versi= =3D on.v3_0, Version.v3_1),
       = =3D ; /* More members */;

      = =3D ;  private Set<Version> unsupportedVersions =3D3D new HashSet<= ;V=3D ersion>();

        = =3D private SupportedFeatures(Version... versions) {
    = =3D ;        unsupportedVersions.addAll(Arra= =3D ys.asList(versions));
        }

        public boolean isSu= =3D pportedOn(Version version) {
       &= =3D nbsp;    return !unsupportedVersions.contains(version);
&= =3D nbsp;       }
    }
------------------------------------- END EXAMPLE ----------------------= =3D ---------------

Thoughts?
= =3D

unless i didn't understand something, this is not good,
<= =3D div>this should stay configurable by the users,
for example i= =3D f some user experience some issues with a feature and want to turn it off/c= =3D hange the values..
(not all version configuration are boolean, s= =3D ome are different values to different versions, like cpu-list)


Regards,
Mike

Please share your thoughts on this.

Thanks,
Kanagaraj


____________________= =3D ___________________________
Engine-devel mailing list
Engine-devel(a)= ov=3D irt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel

------=3D_Part_21090047_1204116571.1385888119663-- --===============5944948329416340431== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS0tLS0tPV9QYXJ0XzIxMDkwMDQ3XzEyMDQxMTY1NzEuMTM4NTg4ODExOTY2MwpDb250ZW50LVR5 cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog N2JpdAoKLS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAtLS0tLQoKPiBGcm9tOiAiTWlrZSBLb2xlc25p ayIgPG1rb2xlc25pQHJlZGhhdC5jb20+Cj4gVG86ICJLYW5hZ2FyYWoiIDxrbWF5aWxzYUByZWRo YXQuY29tPgo+IENjOiAiZW5naW5lLWRldmVsIiA8ZW5naW5lLWRldmVsQG92aXJ0Lm9yZz4KPiBT ZW50OiBTdW5kYXksIERlY2VtYmVyIDEsIDIwMTMgODowODo0MiBBTQo+IFN1YmplY3Q6IFJlOiBb RW5naW5lLWRldmVsXSBVc2luZyBjb25maWcgdmFsdWVzCgo+IC0tLS0tIE9yaWdpbmFsIE1lc3Nh Z2UgLS0tLS0KCj4gPiBIaSBBbGwsCj4gCj4gSGkgS2FuYWdhcmFqLAoKPiA+IFRoZSBhcmUgc29t ZSBpc3N1ZXMgYXJpc2luZyBpbiBjb25maWd1cmF0aW9ucyB3aGVuZXZlciB3ZSBtb3ZlIHVwIG9u IHRoZQo+ID4gdmVyc2lvbnMoMy4zID0+IDMuNCksIGJlY2F1c2Ugb2YgdGhlIHdheSB3ZSBzdG9y ZSBhbmQgaW50ZXJwcmV0IHRoZW0uCj4gCgo+ID4gV2hlbmV2ZXIgdGhlcmUgaXMgYSBuZXcgY2x1 c3RlciBsZXZlbCwgeW91IHdpbGwgbmVlZCB0byBhZGQgYSBuZXcgZW50cnkgZm9yCj4gPiBhbGwo bW9zdCkgb2YgdGhlIGNvbmZpZ3VyYXRpb24uIE1vc3RseSBhIGNvcHkgcGFzdGUgaWYgeW91IHNl ZSBmcm9tIDMuMiB0bwo+ID4gMy4zLCBleGNlcHQgc29tZSBDUFUvUE0gdHlwZSByZWxhdGVkIGNv bmZpZ3VyYXRpb25zLgo+IAo+ID4gQmV0dGVyIG9wdGlvbiB3b3VsZCBiZSB0byBoYXZlIHRoZSBk ZWZhdWwgY29uZmlnIHZhbHVlIGluIENvbmZpZ1ZhbHVlcy5qYXZhCj4gPiBhbmQgdGhlIG92ZXJy aWRlcyB3aWxsIGdvIHRvIGNvbmZpZy5zcWwuIEluIHRoaXMgYXBwcm9hY2ggeW91IGRvbid0IG5l ZWQgYQo+ID4gbmV3IGVudHJpZXMgdG8gY29uZmlnLnNxbCB3aGVuIHRoZXJlIGlzIGEgbmV3IGNs dXN0ZXIgbGV2ZWwuCj4gCgo+ID4gTGV0cyB0YWtlIGFuIGV4bWFwbGUsICJTdXBwb3J0Rm9yY2VD cmVhdGVWRyIgLSBUaGlzIGlzIHN1cHBvcnRlZCBmcm9tIDMuMQo+ID4gb253YXJkcywKPiAKCj4g PiBJZiB5b3UgbG9vayBhdCBjb25maWcuc3FsLCB5b3Ugd2lsbCBzZWUgZm9sbG93aW5nIGVudHJp ZXMKPiAKPiA+IHNlbGVjdCBmbl9kYl9hZGRfY29uZmlnX3ZhbHVlKCdTdXBwb3J0Rm9yY2VDcmVh dGVWRycsJ2ZhbHNlJywnMy4wJyk7Cj4gCj4gPiBzZWxlY3QgZm5fZGJfYWRkX2NvbmZpZ192YWx1 ZSgnU3VwcG9ydEZvcmNlQ3JlYXRlVkcnLCd0cnVlJywnMy4xJyk7Cj4gCj4gPiBzZWxlY3QgZm5f ZGJfYWRkX2NvbmZpZ192YWx1ZSgnU3VwcG9ydEZvcmNlQ3JlYXRlVkcnLCd0cnVlJywnMy4yJyk7 Cj4gCj4gPiBzZWxlY3QgZm5fZGJfYWRkX2NvbmZpZ192YWx1ZSgnU3VwcG9ydEZvcmNlQ3JlYXRl VkcnLCd0cnVlJywnMy4zJyk7Cj4gCgo+ID4gQW5kIGluIENvbmZpZ1ZhbHVlcy5qYXZhCj4gCgo+ ID4gQFR5cGVDb252ZXJ0ZXJBdHRyaWJ1dGUoQm9vbGVhbi5jbGFzcykKPiAKPiA+IEBEZWZhdWx0 VmFsdWVBdHRyaWJ1dGUoImZhbHNlIikKPiAKPiA+IFN1cHBvcnRGb3JjZUNyZWF0ZVZHLAo+IAoK PiA+IE5vdyBpZiB0aGVyZSBpcyAzLjQgYW5kIDMuNSwgdGhlIHVzZXIgbmVlZHMgdG8gYWRkIDIg bW9yZSBlbnRyaWVzLCB3aGljaCBpCj4gPiBmZWVsIGlzIHJlZHVuZGFudC4KPiAKCj4gPiBJbnN0 ZWFkIHdlIGNhbiBtYWtlCj4gCgo+ID4gQFR5cGVDb252ZXJ0ZXJBdHRyaWJ1dGUoQm9vbGVhbi5j bGFzcykKPiAKPiA+IEBEZWZhdWx0VmFsdWVBdHRyaWJ1dGUoInRydWUiKQo+IAo+ID4gU3VwcG9y dEZvcmNlQ3JlYXRlVkcsCj4gCgo+ID4gYW5kIGhhdmUgb25seSB0aGUgZm9sbG93aW5nIGluIGNv bmZpZy5zcWwKPiAKPiA+IHNlbGVjdCBmbl9kYl9hZGRfY29uZmlnX3ZhbHVlKCdTdXBwb3J0Rm9y Y2VDcmVhdGVWRycsJ2ZhbHNlJywnMy4wJyk7Cj4gCgo+ID4gaWYgYSBwYXJ0aWN1bGFyIHZhbHVl KGZvciBhIHNwZWNpZmljIGNsdXN0ZXIgbGV2ZWwpIGlzIG5vdCBmb3VuZCBpbgo+ID4gQ29uZmln LnNxbCwgdGhlIGZhbGxiYWNrIGlzIHRvIHVzZSB0aGUgdmFsdWUgYXZhaWxhYmxlIGluCj4gPiBD b25maWdWYWx1ZXMuamF2YS4KPiAKPiBUaGlzIGhhcyBhbHJlYWR5IGJlZW4gaW1wbGVtZW50ZWQs IHRoZXJlIGFyZSBtYW55ICJmZWF0dXJlIHN1cHBvcnRlZCIKPiBjb25maWd1cmF0aW9ucyB3b3Jr aW5nIGxpa2UgdGhpcyAoZm9yIGV4YW1wbGUgR2x1c3RlclN1cHBvcnQpLgoKPiBJIHRoaW5rIGEg bW9yZSBpbnRlcmVzdGluZyBhcHByb2FjaCB3b3VsZCBiZSB0byBtb3ZlIHRoZXNlIG91dCBvZiB0 aGUgREIKPiBzaW5jZSB0aGVzZSB2YWx1ZXMgZG9uJ3QgcmVhbGx5IGhhdiBlIGEgcmVzb24gdG8g YmUgdGhlcmUuCj4gU2luY2UgdGhlIGVudGlyZSB0aGluZyBpcyBhYnN0cmFjdGVkIGJ5ICJHbHVz dGVyL0ZlYXR1cmVTdXBwb3J0ZWQiIGNsYXNzZXMKPiB0aGVuIHdlIGNhbiBlYXNpbHkgY2hhbmdl IG1lY2hhbmlzbSAob2YgY291cnNlIHdoYXRldmVyIGNvZGUgaXMgbm90IHVzaW5nIGl0Cj4gY2Fu IGJlIGVhc2lseSBjb252ZXJ0ZWQgdG8gdXNlIHRoZSBtZWNoYW5pc20pCgo+IEZvciBleGFtcGxl IGEgc2ltcGxlIGVudW0gY291bGQgZG8gdGhlIHRyaWNrOgo+IC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0gRVhBTVBMRQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KPiAvKioKPiAqIENvbnZlbmllbmNlIGNsYXNzIHRvIGNoZWNrIGlmIGEgZ2x1c3Rl ciBmZWF0dXJlIGlzIHN1cHBvcnRlZCBvciBub3QgaW4gYW55Cj4gZ2l2ZW4gdmVyc2lvbi48YnI+ Cj4gKiBNZXRob2RzIHNob3VsZCBiZSBuYW1lZCBieSBmZWF0dXJlIGFuZCBhY2NlcHQgdmVyc2lv biB0byBjaGVjayBhZ2FpbnN0Lgo+ICovCj4gcHVibGljIGNsYXNzIEdsdXN0ZXJGZWF0dXJlU3Vw cG9ydGVkIHsKPiAvKioKPiAqIEBwYXJhbSB2ZXJzaW9uCj4gKiBDb21wYXRpYmlsaXR5IHZlcnNp b24gdG8gY2hlY2sgZm9yLgo+ICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiBnbHVzdGVy IHN1cHBvcnQgaXMgZW5hYmxlZCwgPGNvZGU+ZmFsc2U8L2NvZGU+Cj4gaWYgaXQncyBub3QuCj4g Ki8KPiBwdWJsaWMgc3RhdGljIGJvb2xlYW4gZ2x1c3RlcihWZXJzaW9uIHZlcnNpb24pIHsKPiBy ZXR1cm4gU3VwcG9ydGVkRmVhdHVyZXMuR0xVU1RFUi5pc1N1cHBvcnRlZE9uKHZlcnNpb24pOwo+ IH0KCj4gLyoqCj4gKiBAcGFyYW0gdmVyc2lvbgo+ICogQ29tcGF0aWJpbGl0eSB2ZXJzaW9uIHRv IGNoZWNrIGZvci4KPiAqIEByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgZ2x1c3RlciBoZWF2 eXdlaWdodCByZWZyZXNoIGlzIGVuYWJsZWQsCj4gPGNvZGU+ZmFsc2U8L2NvZGU+IGlmIGl0J3Mg bm90Lgo+ICovCj4gcHVibGljIHN0YXRpYyBib29sZWFuIHJlZnJlc2hIZWF2eVdlaWdodChWZXJz aW9uIHZlcnNpb24pIHsKPiByZXR1cm4gU3VwcG9ydGVkRmVhdHVyZXMuUkVGUkVTSF9IRUFWWVdF SUdIVC5pc1N1cHBvcnRlZE9uKHZlcnNpb24pOwo+IH0KCj4gLyogTW9yZSBtZXRob2RzLi4uICov Cgo+IGVudW0gU3VwcG9ydGVkRmVhdHVyZXMgewo+IEdMVVNURVIoVmVyc2lvbi52M18wKSwKPiBS RUZSRVNIX0hFQVZZV0VJR0hUKFZlcnNpb24udjNfMCwgVmVyc2lvbi52M18xKSwKPiAvKiBNb3Jl IG1lbWJlcnMgKi87Cgo+IHByaXZhdGUgU2V0PFZlcnNpb24+IHVuc3VwcG9ydGVkVmVyc2lvbnMg PSBuZXcgSGFzaFNldDxWZXJzaW9uPigpOwoKPiBwcml2YXRlIFN1cHBvcnRlZEZlYXR1cmVzKFZl cnNpb24uLi4gdmVyc2lvbnMpIHsKPiB1bnN1cHBvcnRlZFZlcnNpb25zLmFkZEFsbChBcnJheXMu YXNMaXN0KHZlcnNpb25zKSk7Cj4gfQoKPiBwdWJsaWMgYm9vbGVhbiBpc1N1cHBvcnRlZE9uKFZl cnNpb24gdmVyc2lvbikgewo+IHJldHVybiAhdW5zdXBwb3J0ZWRWZXJzaW9ucy5jb250YWlucyh2 ZXJzaW9uKTsKPiB9Cj4gfQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g RU5EIEVYQU1QTEUKPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgo+IFRo b3VnaHRzPwoKdW5sZXNzIGkgZGlkbid0IHVuZGVyc3RhbmQgc29tZXRoaW5nLCB0aGlzIGlzIG5v dCBnb29kLCAKdGhpcyBzaG91bGQgc3RheSBjb25maWd1cmFibGUgYnkgdGhlIHVzZXJzLCAKZm9y IGV4YW1wbGUgaWYgc29tZSB1c2VyIGV4cGVyaWVuY2Ugc29tZSBpc3N1ZXMgd2l0aCBhIGZlYXR1 cmUgYW5kIHdhbnQgdG8gdHVybiBpdCBvZmYvY2hhbmdlIHRoZSB2YWx1ZXMuLiAKKG5vdCBhbGwg dmVyc2lvbiBjb25maWd1cmF0aW9uIGFyZSBib29sZWFuLCBzb21lIGFyZSBkaWZmZXJlbnQgdmFs dWVzIHRvIGRpZmZlcmVudCB2ZXJzaW9ucywgbGlrZSBjcHUtbGlzdCkgCgo+IFJlZ2FyZHMsCj4g TWlrZQoKPiA+IFBsZWFzZSBzaGFyZSB5b3VyIHRob3VnaHRzIG9uIHRoaXMuCj4gCgo+ID4gVGhh bmtzLAo+IAo+ID4gS2FuYWdhcmFqCj4gCgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4gRW5naW5lLWRldmVsIG1haWxpbmcgbGlzdAo+IEVuZ2luZS1k ZXZlbEBvdmlydC5vcmcKPiBodHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8v ZW5naW5lLWRldmVsCgotLS0tLS09X1BhcnRfMjEwOTAwNDdfMTIwNDExNjU3MS4xMzg1ODg4MTE5 NjYzCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04CkNvbnRlbnQtVHJhbnNm ZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKCjxodG1sPjxib2R5PjxkaXYgc3R5bGU9M0Qi Zm9udC1mYW1pbHk6IHRpbWVzIG5ldyByb21hbiwgbmV3IHlvcmssIHRpbWVzLCBzZT0KcmlmOyBm b250LXNpemU6IDEycHQ7IGNvbG9yOiAjMDAwMDAwIj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48 L2Rpdj48aHIgaWQ9Cj0zRCJ6d2NociI+PGJsb2NrcXVvdGUgc3R5bGU9M0QiYm9yZGVyLWxlZnQ6 MnB4IHNvbGlkICMxMDEwRkY7bWFyZ2luLWxlZnQ6NT0KcHg7cGFkZGluZy1sZWZ0OjVweDtjb2xv cjojMDAwO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1hbDt0ZXh0LWRlPQpjb3Jh dGlvbjpub25lO2ZvbnQtZmFtaWx5OkhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6 ZToxMnB0OyI+PGI+RnI9Cm9tOiA8L2I+Ik1pa2UgS29sZXNuaWsiICZsdDtta29sZXNuaUByZWRo YXQuY29tJmd0Ozxicj48Yj5UbzogPC9iPiJLYW5hZ2FyYT0KaiIgJmx0O2ttYXlpbHNhQHJlZGhh dC5jb20mZ3Q7PGJyPjxiPkNjOiA8L2I+ImVuZ2luZS1kZXZlbCIgJmx0O2VuZ2luZS1kZXZlPQps QG92aXJ0Lm9yZyZndDs8YnI+PGI+U2VudDogPC9iPlN1bmRheSwgRGVjZW1iZXIgMSwgMjAxMyA4 OjA4OjQyIEFNPGJyPjxiPlM9CnViamVjdDogPC9iPlJlOiBbRW5naW5lLWRldmVsXSBVc2luZyBj b25maWcgdmFsdWVzPGJyPjxkaXY+PGJyPjwvZGl2PjxkaXYgcz0KdHlsZT0zRCJmb250LWZhbWls eTogdGltZXMgbmV3IHJvbWFuLCBuZXcgeW9yaywgdGltZXMsIHNlcmlmOyBmb250LXNpemU6IDEy PQpwdDsgY29sb3I6ICMwMDAwMDAiPjxociBpZD0zRCJ6d2NociI+PGJsb2NrcXVvdGUgc3R5bGU9 M0QiYm9yZGVyLWxlZnQ6MnB4IHM9Cm9saWQgIzEwMTBGRjttYXJnaW4tbGVmdDo1cHg7cGFkZGlu Zy1sZWZ0OjVweDtjb2xvcjojMDAwO2ZvbnQtd2VpZ2h0Om5vcm1hbD0KO2ZvbnQtc3R5bGU6bm9y bWFsO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtZmFtaWx5OkhlbHZldGljYSxBcmlhbCxzYW5z LXNlPQpyaWY7Zm9udC1zaXplOjEycHQ7Ij4KID0yMAoKICAgPTIwCiA9MjAKID0yMAogICAgSGkg QWxsLDwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48ZGl2PkhpIEthbmFnYXJhaiw8YnI+PC9k aXY+PGRpdj48YnI9Cj48L2Rpdj48YmxvY2txdW90ZSBzdHlsZT0zRCJib3JkZXItbGVmdDoycHgg c29saWQgIzEwMTBGRjttYXJnaW4tbGVmdDo1cHg7cD0KYWRkaW5nLWxlZnQ6NXB4O2NvbG9yOiMw MDA7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtZGVjb3JhPQp0aW9u Om5vbmU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEy cHQ7Ij48YnI+CiAgICBUaGUgYXJlIHNvbWUgaXNzdWVzIGFyaXNpbmcgaW4gY29uZmlndXJhdGlv bnMgd2hlbmV2ZXIgd2UgbW92ZSB1cCBvbgogICAgdGhlIHZlcnNpb25zKDMuMyA9M0QmZ3Q7IDMu NCksIGJlY2F1c2Ugb2YgdGhlIHdheSB3ZSBzdG9yZSBhbmQKICAgIGludGVycHJldCB0aGVtLjxi cj48ZGl2Pjxicj48L2Rpdj4KICAgIFdoZW5ldmVyIHRoZXJlIGlzIGEgbmV3IGNsdXN0ZXIgbGV2 ZWwsIHlvdSB3aWxsIG5lZWQgdG8gYWRkIGEgbmV3CiAgICBlbnRyeSBmb3IgYWxsKG1vc3QpIG9m IHRoZSBjb25maWd1cmF0aW9uLiBNb3N0bHkgYSBjb3B5IHBhc3RlIGlmIHlvdQogICAgc2VlIGZy b20gMy4yIHRvIDMuMywgZXhjZXB0IHNvbWUgQ1BVL1BNIHR5cGUgcmVsYXRlZCBjb25maWd1cmF0 aW9ucy48YnI9Cj4KICAgIEJldHRlciBvcHRpb24gd291bGQgYmUgdG8gaGF2ZSB0aGUgZGVmYXVs IGNvbmZpZyB2YWx1ZSBpbgogICAgQ29uZmlnVmFsdWVzLmphdmEgYW5kIHRoZSBvdmVycmlkZXMg d2lsbCBnbyB0byBjb25maWcuc3FsLiBJbiB0aGlzCiAgICBhcHByb2FjaCB5b3UgZG9uJ3QgbmVl ZCBhIG5ldyBlbnRyaWVzIHRvIGNvbmZpZy5zcWwgd2hlbiB0aGVyZSBpcyBhCiAgICBuZXcgY2x1 c3RlciBsZXZlbC48YnI+PGRpdj48YnI+PC9kaXY+CiAgICBMZXRzIHRha2UgYW4gZXhtYXBsZSwg IlN1cHBvcnRGb3JjZUNyZWF0ZVZHIiAtIFRoaXMgaXMgc3VwcG9ydGVkCiAgICBmcm9tIDMuMSBv bndhcmRzLDxicj48ZGl2Pjxicj48L2Rpdj4KICAgIElmIHlvdSBsb29rIGF0IGNvbmZpZy5zcWws IHlvdSB3aWxsIHNlZSBmb2xsb3dpbmcgZW50cmllcyA8YnI+CiAgICBzZWxlY3QgZm5fZGJfYWRk X2NvbmZpZ192YWx1ZSgnU3VwcG9ydEZvcmNlQ3JlYXRlVkcnLCdmYWxzZScsJzMuMCcpOwogICAg PGJyPgogICAgc2VsZWN0IGZuX2RiX2FkZF9jb25maWdfdmFsdWUoJ1N1cHBvcnRGb3JjZUNyZWF0 ZVZHJywndHJ1ZScsJzMuMScpOwogICAgPGJyPgogICAgc2VsZWN0IGZuX2RiX2FkZF9jb25maWdf dmFsdWUoJ1N1cHBvcnRGb3JjZUNyZWF0ZVZHJywndHJ1ZScsJzMuMicpOwogICAgPGJyPgogICAg c2VsZWN0IGZuX2RiX2FkZF9jb25maWdfdmFsdWUoJ1N1cHBvcnRGb3JjZUNyZWF0ZVZHJywndHJ1 ZScsJzMuMycpOzxicj49CjxkaXY+PGJyPjwvZGl2PgogICAgQW5kIGluIENvbmZpZ1ZhbHVlcy5q YXZhPGJyPjxkaXY+PGJyPjwvZGl2PgogICAgJm5ic3A7Jm5ic3A7Jm5ic3A7IEBUeXBlQ29udmVy dGVyQXR0cmlidXRlKEJvb2xlYW4uY2xhc3MpPGJyPgogICAgJm5ic3A7Jm5ic3A7Jm5ic3A7IEBE ZWZhdWx0VmFsdWVBdHRyaWJ1dGUoImZhbHNlIik8YnI+CiAgICAmbmJzcDsmbmJzcDsmbmJzcDsg U3VwcG9ydEZvcmNlQ3JlYXRlVkcsPGJyPjxkaXY+PGJyPjwvZGl2PgogICAgTm93IGlmIHRoZXJl IGlzIDMuNCBhbmQgMy41LCB0aGUgdXNlciBuZWVkcyB0byBhZGQgMiBtb3JlIGVudHJpZXMsCiAg ICB3aGljaCBpIGZlZWwgaXMgcmVkdW5kYW50Ljxicj48ZGl2Pjxicj48L2Rpdj4KICAgIEluc3Rl YWQgd2UgY2FuIG1ha2UgPGJyPjxkaXY+PGJyPjwvZGl2PgogICAgJm5ic3A7Jm5ic3A7Jm5ic3A7 IEBUeXBlQ29udmVydGVyQXR0cmlidXRlKEJvb2xlYW4uY2xhc3MpPGJyPgogICAgJm5ic3A7Jm5i c3A7Jm5ic3A7IEBEZWZhdWx0VmFsdWVBdHRyaWJ1dGUoInRydWUiKTxicj4KICAgICZuYnNwOyZu YnNwOyZuYnNwOyBTdXBwb3J0Rm9yY2VDcmVhdGVWRyw8YnI+PGRpdj48YnI+PC9kaXY+CiAgICBh bmQgaGF2ZSBvbmx5IHRoZSBmb2xsb3dpbmcgaW4gY29uZmlnLnNxbDxicj4KICAgIHNlbGVjdCBm bl9kYl9hZGRfY29uZmlnX3ZhbHVlKCdTdXBwb3J0Rm9yY2VDcmVhdGVWRycsJ2ZhbHNlJywnMy4w Jyk7PGJyPQo+PGRpdj48YnI+PC9kaXY+CiAgICBpZiBhIHBhcnRpY3VsYXIgdmFsdWUoZm9yIGEg c3BlY2lmaWMgY2x1c3RlciBsZXZlbCkgaXMgbm90IGZvdW5kIGluCiAgICBDb25maWcuc3FsLCB0 aGUgZmFsbGJhY2sgaXMgdG8gdXNlIHRoZSB2YWx1ZSBhdmFpbGFibGUgaW4KICAgIENvbmZpZ1Zh bHVlcy5qYXZhLjwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48ZGl2PlRoaXMgaGFzIGFscmVh ZHkgYmVlPQpuIGltcGxlbWVudGVkLCB0aGVyZSBhcmUgbWFueSAiZmVhdHVyZSBzdXBwb3J0ZWQi IGNvbmZpZ3VyYXRpb25zIHdvcmtpbmcgbGk9CmtlIHRoaXMgKGZvciBleGFtcGxlIEdsdXN0ZXJT dXBwb3J0KS48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5JIHRoaW5rID0KYSBtb3JlIGlu dGVyZXN0aW5nIGFwcHJvYWNoIHdvdWxkIGJlIHRvIG1vdmUgdGhlc2Ugb3V0IG9mIHRoZSBEQiBz aW5jZSB0aGVzPQplIHZhbHVlcyBkb24ndCByZWFsbHkgaGF2IGUgYSByZXNvbiB0byBiZSB0aGVy ZS48YnI+PC9kaXY+PGRpdj5TaW5jZSB0aGUgZW49CnRpcmUgdGhpbmcgaXMgYWJzdHJhY3RlZCBi eSAiR2x1c3Rlci9GZWF0dXJlU3VwcG9ydGVkIiBjbGFzc2VzIHRoZW4gd2UgY2FuID0KZWFzaWx5 IGNoYW5nZSBtZWNoYW5pc20gKG9mIGNvdXJzZSB3aGF0ZXZlciBjb2RlIGlzIG5vdCB1c2luZyBp dCBjYW4gYmUgZWFzPQppbHkgY29udmVydGVkIHRvIHVzZSB0aGUgbWVjaGFuaXNtKTxicj48L2Rp dj48ZGl2Pjxicj48L2Rpdj48ZGl2PkZvciBleGFtcGw9CmUgYSBzaW1wbGUgZW51bSBjb3VsZCBk byB0aGUgdHJpY2s6PGJyPjwvZGl2PjxkaXY+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0t LS0tLS0tLS0tIEVYQU1QTEUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxi cj48L2Rpdj48ZGl2Pi8qPQoqPGJyPiZuYnNwOyogQ29udmVuaWVuY2UgY2xhc3MgdG8gY2hlY2sg aWYgYSBnbHVzdGVyIGZlYXR1cmUgaXMgc3VwcG9ydGVkIG89CnIgbm90IGluIGFueSBnaXZlbiB2 ZXJzaW9uLiZsdDticiZndDs8YnI+Jm5ic3A7KiBNZXRob2RzIHNob3VsZCBiZSBuYW1lZCBieT0K IGZlYXR1cmUgYW5kIGFjY2VwdCB2ZXJzaW9uIHRvIGNoZWNrIGFnYWluc3QuPGJyPiZuYnNwOyov PGJyPnB1YmxpYyBjbGFzcyBHPQpsdXN0ZXJGZWF0dXJlU3VwcG9ydGVkIHs8L2Rpdj48ZGl2PiZu YnNwOyZuYnNwOyZuYnNwOyAvKio8YnI+Jm5ic3A7Jm5ic3A7Jm49CmJzcDsmbmJzcDsgKiBAcGFy YW0gdmVyc2lvbjxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKiZuYnNwOyZuYnNwOyZuYnNw Oz0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IENvbXBh dGliaWxpdHkgdmVyc2lvbiB0byBjPQpoZWNrIGZvci48YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7ICogQHJldHVybiAmbHQ7Y29kZSZndDt0cnVlJmx0Oy9jb2RlJmc9CnQ7IGlmIGdsdXN0ZXIg c3VwcG9ydCBpcyBlbmFibGVkLCAmbHQ7Y29kZSZndDtmYWxzZSZsdDsvY29kZSZndDsgaWYgaXQn cyBubz0KdC48YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICovPGJyPiZuYnNwOyZuYnNwOyZu YnNwOyBwdWJsaWMgc3RhdGljIGJvb2xlPQphbiBnbHVzdGVyKFZlcnNpb24gdmVyc2lvbikgezxi cj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs9CiByZXR1cm4gU3Vw cG9ydGVkRmVhdHVyZXMuR0xVU1RFUi5pc1N1cHBvcnRlZE9uKHZlcnNpb24pOzxicj4mbmJzcDsm bmJzcDsmbj0KYnNwOyB9PGJyPjxkaXY+PGJyPjwvZGl2PiZuYnNwOyZuYnNwOyZuYnNwOyAvKio8 YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PQogKiBAcGFyYW0gdmVyc2lvbjxicj4mbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgKiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnM9CnA7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IENvbXBhdGliaWxpdHkgdmVyc2lvbiB0byBj aGVjayBmb3IuPD0KYnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICogQHJldHVybiAmbHQ7Y29k ZSZndDt0cnVlJmx0Oy9jb2RlJmd0OyBpZiBnbHVzPQp0ZXIgaGVhdnl3ZWlnaHQgcmVmcmVzaCBp cyBlbmFibGVkLCAmbHQ7Y29kZSZndDtmYWxzZSZsdDsvY29kZSZndDsgaWYgaXQncyA9Cm5vdC48 YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICovPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyBwdWJs aWMgc3RhdGljIGJvbz0KbGVhbiByZWZyZXNoSGVhdnlXZWlnaHQoVmVyc2lvbiB2ZXJzaW9uKSB7 PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwPQo7Jm5ic3A7Jm5ic3A7IHJldHVybiBT dXBwb3J0ZWRGZWF0dXJlcy5SRUZSRVNIX0hFQVZZV0VJR0hULmlzU3VwcG9ydGVkT24odmU9CnJz aW9uKTs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IH08YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRp dj4mbmJzcDsmbmJzcDsmbj0KYnNwOyAvKiBNb3JlIG1ldGhvZHMuLi4gKi88L2Rpdj48ZGl2Pjxi cj4mbmJzcDsmbmJzcDsmbmJzcDsgZW51bSBTdXBwb3J0ZWRGPQplYXR1cmVzIHs8YnI+Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IEdMVVNURVIoVmVyc2lvbi52M189 CjApLDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgUkVGUkVT SF9IRUFWWVdFSUdIVChWZXJzaT0Kb24udjNfMCwgVmVyc2lvbi52M18xKSw8L2Rpdj48ZGl2PiZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwPQo7IC8qIE1vcmUgbWVtYmVy cyAqLzs8YnI+PGRpdj48YnI+PC9kaXY+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A9CjsmbmJzcDsgcHJpdmF0ZSBTZXQmbHQ7VmVyc2lvbiZndDsgdW5zdXBwb3J0ZWRWZXJzaW9u cyA9M0QgbmV3IEhhc2hTZXQmbHQ7Vj0KZXJzaW9uJmd0OygpOzxicj48ZGl2Pjxicj48L2Rpdj4m bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPQpwcml2YXRlIFN1cHBv cnRlZEZlYXR1cmVzKFZlcnNpb24uLi4gdmVyc2lvbnMpIHs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A9CjsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgdW5zdXBw b3J0ZWRWZXJzaW9ucy5hZGRBbGwoQXJyYT0KeXMuYXNMaXN0KHZlcnNpb25zKSk7PGJyPiZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPjxkPQppdj48YnI+PC9k aXY+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHB1YmxpYyBib29s ZWFuIGlzU3U9CnBwb3J0ZWRPbihWZXJzaW9uIHZlcnNpb24pIHs8YnI+Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jj0KbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcmV0 dXJuICF1bnN1cHBvcnRlZFZlcnNpb25zLmNvbnRhaW5zKHZlcnNpb24pOzxicj4mPQpuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPiZuYnNwOyZuYnNwOyZuYnNw OyB9PC9kaXY+PGQ9Cml2Pi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRU5E IEVYQU1QTEUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0tLS0tLS0tLS0tPC9kaXY+PGRp dj48YnI+PC9kaXY+PGRpdj5UaG91Z2h0cz88L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PQo8ZGl2 Pjxicj51bmxlc3MgaSBkaWRuJ3QgdW5kZXJzdGFuZCBzb21ldGhpbmcsIHRoaXMgaXMgbm90IGdv b2QsPGJyPjwvZGl2Pjw9CmRpdj50aGlzIHNob3VsZCBzdGF5IGNvbmZpZ3VyYWJsZSBieSB0aGUg dXNlcnMsPGJyPjwvZGl2PjxkaXY+Zm9yIGV4YW1wbGUgaT0KZiBzb21lIHVzZXIgZXhwZXJpZW5j ZSBzb21lIGlzc3VlcyB3aXRoIGEgZmVhdHVyZSBhbmQgd2FudCB0byB0dXJuIGl0IG9mZi9jPQpo YW5nZSB0aGUgdmFsdWVzLi4gPC9kaXY+PGRpdj4obm90IGFsbCB2ZXJzaW9uIGNvbmZpZ3VyYXRp b24gYXJlIGJvb2xlYW4sIHM9Cm9tZSBhcmUgZGlmZmVyZW50IHZhbHVlcyB0byBkaWZmZXJlbnQg dmVyc2lvbnMsIGxpa2UgY3B1LWxpc3QpPGJyPjwvZGl2PjxibD0Kb2NrcXVvdGUgc3R5bGU9M0Qi Ym9yZGVyLWxlZnQ6MnB4IHNvbGlkICMxMDEwRkY7bWFyZ2luLWxlZnQ6NXB4O3BhZGRpbmctbGVm PQp0OjVweDtjb2xvcjojMDAwO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1hbDt0 ZXh0LWRlY29yYXRpb246bm9uZTs9CmZvbnQtZmFtaWx5OkhlbHZldGljYSxBcmlhbCxzYW5zLXNl cmlmO2ZvbnQtc2l6ZToxMnB0OyI+PGRpdiBzdHlsZT0zRCJmb250LT0KZmFtaWx5OiB0aW1lcyBu ZXcgcm9tYW4sIG5ldyB5b3JrLCB0aW1lcywgc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6 ICMwPQowMDAwMCI+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5SZWdhcmRzLDxi cj48L2Rpdj48ZGl2Pk1pa2U8YnI+PC89CmRpdj48YmxvY2txdW90ZSBzdHlsZT0zRCJib3JkZXIt bGVmdDoycHggc29saWQgIzEwMTBGRjttYXJnaW4tbGVmdDo1cHg7cGFkZD0KaW5nLWxlZnQ6NXB4 O2NvbG9yOiMwMDA7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtZGVj b3JhdGlvPQpuOm5vbmU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Zm9u dC1zaXplOjEycHQ7Ij48YnI+CiAgICBQbGVhc2Ugc2hhcmUgeW91ciB0aG91Z2h0cyBvbiB0aGlz Ljxicj48ZGl2Pjxicj48L2Rpdj4KICAgIFRoYW5rcyw8YnI+CiAgICBLYW5hZ2FyYWo8YnI+PGRp dj48YnI+PC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2Pjxicj5fX19fX19fX19fX19fX19fX19fXz0K X19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPkVuZ2luZS1kZXZlbCBtYWlsaW5nIGxpc3Q8 YnI+RW5naW5lLWRldmVsQG92PQppcnQub3JnPGJyPmh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFp bG1hbi9saXN0aW5mby9lbmdpbmUtZGV2ZWw8YnI+PC9ibG9ja3E9CnVvdGU+PGRpdj48YnI+PC9k aXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4KLS0tLS0tPV9QYXJ0XzIxMDkwMDQ3XzEyMDQxMTY1NzEu MTM4NTg4ODExOTY2My0tCg== --===============5944948329416340431==-- From mkolesni at redhat.com Sun Dec 1 04:01:51 2013 Content-Type: multipart/mixed; boundary="===============2844367838179340445==" MIME-Version: 1.0 From: Mike Kolesnik To: devel at ovirt.org Subject: Re: [Engine-devel] Using config values Date: Sun, 01 Dec 2013 04:01:50 -0500 Message-ID: <1138287431.43206802.1385888510815.JavaMail.root@redhat.com> In-Reply-To: 1268805500.21090048.1385888119665.JavaMail.root@redhat.com --===============2844367838179340445== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ------=3D_Part_43206801_1748816137.1385888510809 Content-Type: text/plain; charset=3Dutf-8 Content-Transfer-Encoding: 7bit ----- Original Message ----- > ----- Original Message ----- > > From: "Mike Kolesnik" > = > > To: "Kanagaraj" > = > > Cc: "engine-devel" > = > > Sent: Sunday, December 1, 2013 8:08:42 AM > = > > Subject: Re: [Engine-devel] Using config values > = > > ----- Original Message ----- > = > > > Hi All, > > = > = > > Hi Kanagaraj, > = > > > The are some issues arising in configurations whenever we move up on = the > > > versions(3.3 =3D> 3.4), because of the way we store and interpret the= m. > > = > = > > > Whenever there is a new cluster level, you will need to add a new ent= ry > > > for > > > all(most) of the configuration. Mostly a copy paste if you see from 3= .2 > > > to > > > 3.3, except some CPU/PM type related configurations. > > = > = > > > Better option would be to have the defaul config value in > > > ConfigValues.java > > > and the overrides will go to config.sql. In this approach you don't n= eed > > > a > > > new entries to config.sql when there is a new cluster level. > > = > = > > > Lets take an exmaple, "SupportForceCreateVG" - This is supported from= 3.1 > > > onwards, > > = > = > > > If you look at config.sql, you will see following entries > > = > = > > > select fn_db_add_config_value('SupportForceCreateVG','false','3.0'); > > = > = > > > select fn_db_add_config_value('SupportForceCreateVG','true','3.1'); > > = > = > > > select fn_db_add_config_value('SupportForceCreateVG','true','3.2'); > > = > = > > > select fn_db_add_config_value('SupportForceCreateVG','true','3.3'); > > = > = > > > And in ConfigValues.java > > = > = > > > @TypeConverterAttribute(Boolean.class) > > = > = > > > @DefaultValueAttribute("false") > > = > = > > > SupportForceCreateVG, > > = > = > > > Now if there is 3.4 and 3.5, the user needs to add 2 more entries, wh= ich > > > i > > > feel is redundant. > > = > = > > > Instead we can make > > = > = > > > @TypeConverterAttribute(Boolean.class) > > = > = > > > @DefaultValueAttribute("true") > > = > = > > > SupportForceCreateVG, > > = > = > > > and have only the following in config.sql > > = > = > > > select fn_db_add_config_value('SupportForceCreateVG','false','3.0'); > > = > = > > > if a particular value(for a specific cluster level) is not found in > > > Config.sql, the fallback is to use the value available in > > > ConfigValues.java. > > = > = > > This has already been implemented, there are many "feature supported" > > configurations working like this (for example GlusterSupport). > = > > I think a more interesting approach would be to move these out of the DB > > since these values don't really hav e a reson to be there. > = > > Since the entire thing is abstracted by "Gluster/FeatureSupported" clas= ses > > then we can easily change mechanism (of course whatever code is not usi= ng > > it > > can be easily converted to use the mechanism) > = > > For example a simple enum could do the trick: > = > > ------------------------------------- EXAMPLE > > ------------------------------------- > = > > /** > = > > * Convenience class to check if a gluster feature is supported or not in > > any > > given version.
> = > > * Methods should be named by feature and accept version to check agains= t. > = > > */ > = > > public class GlusterFeatureSupported { > = > > /** > = > > * @param version > = > > * Compatibility version to check for. > = > > * @return true if gluster support is enabled, > > false > > if it's not. > = > > */ > = > > public static boolean gluster(Version version) { > = > > return SupportedFeatures.GLUSTER.isSupportedOn(version); > = > > } > = > > /** > = > > * @param version > = > > * Compatibility version to check for. > = > > * @return true if gluster heavyweight refresh is enabled, > > false if it's not. > = > > */ > = > > public static boolean refreshHeavyWeight(Version version) { > = > > return SupportedFeatures.REFRESH_HEAVYWEIGHT.isSupportedOn(version); > = > > } > = > > /* More methods... */ > = > > enum SupportedFeatures { > = > > GLUSTER(Version.v3_0), > = > > REFRESH_HEAVYWEIGHT(Version.v3_0, Version.v3_1), > = > > /* More members */; > = > > private Set unsupportedVersions =3D new HashSet(); > = > > private SupportedFeatures(Version... versions) { > = > > unsupportedVersions.addAll(Arrays.asList(versions)); > = > > } > = > > public boolean isSupportedOn(Version version) { > = > > return !unsupportedVersions.contains(version); > = > > } > = > > } > = > > ------------------------------------- END EXAMPLE > > ------------------------------------- > = > > Thoughts? > = > unless i didn't understand something, this is not good, > this should stay configurable by the users, > for example if some user experience some issues with a feature and want to > turn it off/change the values.. > (not all version configuration are boolean, some are different values to > different versions, like cpu-list) This is for API level compatibility. = If VDSM doesn't support for example hot plug in 3.1 then the user can't jus= t decide that it does and change it. = Also, this is not changeable by user since it's not exposed by engine-confi= g (nor should it be). = This is strictly for the engine-VDSM API compatibility, not for other confi= gs which are version specific. = > > Regards, > = > > Mike > = > > > Please share your thoughts on this. > > = > = > > > Thanks, > > = > = > > > Kanagaraj > > = > = > > _______________________________________________ > = > > Engine-devel mailing list > = > > Engine-devel(a)ovirt.org > = > > http://lists.ovirt.org/mailman/listinfo/engine-devel > = ------=3D_Part_43206801_1748816137.1385888510809 Content-Type: text/html; charset=3Dutf-8 Content-Transfer-Encoding: quoted-printable




From: "Mike Kolesnik= =3D " <mkolesni(a)redhat.com>
To: "Kanagaraj" <kmayilsa(a)re= dhat=3D .com>
Cc: "engine-devel" <engine-devel(a)ovirt.org>
<= b>=3D Sent: Sunday, December 1, 2013 8:08:42 AM
Subject: Re: [Engin= =3D e-devel] Using config values


Hi All,

Hi Kana= =3D garaj,


The are some issues arising in configurations whenever we= =3D move up on the versions(3.3 =3D3D> 3.4), because of the way we store an= d =3D interpret them.

Whenever there is a new cluster level, yo= =3D u will need to add a new entry for all(most) of the configuration. Mostly a= =3D copy paste if you see from 3.2 to 3.3, except some CPU/PM type related con= =3D figurations.
Better option would be to have the defaul config value in = =3D ConfigValues.java and the overrides will go to config.sql. In this approach= =3D you don't need a new entries to config.sql when there is a new cluster lev= =3D el.

Lets take an exmaple, "SupportForceCreateVG" - This i= =3D s supported from 3.1 onwards,

If you look at config.sql, = =3D you will see following entries
select fn_db_add_config_value('SupportF= =3D orceCreateVG','false','3.0');
select fn_db_add_config_value('SupportFo= =3D rceCreateVG','true','3.1');
select fn_db_add_config_value('SupportForc= =3D eCreateVG','true','3.2');
select fn_db_add_config_value('SupportForceC= =3D reateVG','true','3.3');

And in ConfigValues.java
= =3D
    @TypeConverterAttribute(Boolean.class)
&nb= =3D sp;   @DefaultValueAttribute("false")
    Supp= =3D ortForceCreateVG,

Now if there is 3.4 and 3.5, the user n= =3D eeds to add 2 more entries, which i feel is redundant.

In= =3D stead we can make

    @TypeConverterAttri= =3D bute(Boolean.class)
    @DefaultValueAttribute("true")     SupportForceCreateVG,

and have only= =3D the following in config.sql
select fn_db_add_config_value('SupportForc= =3D eCreateVG','false','3.0');

if a particular value(for a sp= =3D ecific cluster level) is not found in Config.sql, the fallback is to use th= =3D e value available in ConfigValues.java.

Thi= =3D s has already been implemented, there are many "feature supported" configur= =3D ations working like this (for example GlusterSupport).

I think a more interesting approach would be to move these out of = =3D the DB since these values don't really hav e a reson to be there.
= =3D
Since the entire thing is abstracted by "Gluster/FeatureSupported" cla= =3D sses then we can easily change mechanism (of course whatever code is not us= =3D ing it can be easily converted to use the mechanism)

For example a simple enum could do the trick:
--------= =3D ----------------------------- EXAMPLE -------------------------------------= =3D
/**
 * Convenience class to check if a gluster featu= =3D re is supported or not in any given version.<br>
 * Methods s= =3D hould be named by feature and accept version to check against.
 */<= =3D br>public class GlusterFeatureSupported {
    /**<= =3D br>     * @param version
     *&= =3D nbsp;           Compatibi= =3D lity version to check for.
     * @return <code&g= =3D t;true</code> if gluster support is enabled, <code>false</co= =3D de> if it's not.
     */
    pu= =3D blic static boolean gluster(Version version) {
    &= =3D nbsp;   return SupportedFeatures.GLUSTER.isSupportedOn(version);<= =3D br>    }

    /**
 &= =3D nbsp;   * @param version
     *  = =3D ;          Compatibility versi= =3D on to check for.
     * @return <code>true<= =3D /code> if gluster heavyweight refresh is enabled, <code>false</= =3D code> if it's not.
     */
    = =3D public static boolean refreshHeavyWeight(Version version) {
  = =3D       return SupportedFeatures.REFRESH_HEAVYWEIGHT= =3D .isSupportedOn(version);
    }

    /* More methods... */

   = =3D ; enum SupportedFeatures {
        GL= =3D USTER(Version.v3_0),
        REFRESH_= =3D HEAVYWEIGHT(Version.v3_0, Version.v3_1),
    = =3D     /* More members */;

   = =3D      private Set<Version> unsupportedVersions =3D= 3D=3D new HashSet<Version>();

    &n= =3D bsp;   private SupportedFeatures(Version... versions) {
 = =3D            unsupportedVer= =3D sions.addAll(Arrays.asList(versions));
     &nb= =3D sp;  }

        pu= =3D blic boolean isSupportedOn(Version version) {
    &n= =3D bsp;       return !unsupportedVersions.contai= =3D ns(version);
        }
  = =3D ;  }
------------------------------------- END EXAMPLE -----= =3D --------------------------------

Thoughts?

unless i didn't understand something, this is not= =3D good,
this should stay configurable by the users,
<= =3D div>for example if some user experience some issues with a feature and want= =3D to turn it off/change the values..
(not all version configuratio= =3D n are boolean, some are different values to different versions, like cpu-li= =3D st)

This is for API level compa= =3D tibility.
If VDSM doesn't support for example hot plug in 3.1= =3D then the user can't just decide that it does and change it.
= =3D Also, this is not changeable by user since it's not exposed by engine-confi= =3D g (nor should it be).

This is strictly for the= =3D engine-VDSM API compatibility, not for other configs which are version spe= =3D cific.

= =3D


Regards,
Mike

Please share your thoughts on this.

Thanks,
Kanagaraj


= =3D _______________________________________________
Engine-devel mailing lis= =3D t
Engine-devel(a)ovirt.org
http://lists.ovirt.org/mailman/listinfo/en= gi=3D ne-devel


<= =3D /div> ------=3D_Part_43206801_1748816137.1385888510809-- --===============2844367838179340445== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS0tLS0tPV9QYXJ0XzQzMjA2ODAxXzE3NDg4MTYxMzcuMTM4NTg4ODUxMDgwOQpDb250ZW50LVR5 cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog N2JpdAoKLS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAtLS0tLQoKPiAtLS0tLSBPcmlnaW5hbCBNZXNz YWdlIC0tLS0tCgo+ID4gRnJvbTogIk1pa2UgS29sZXNuaWsiIDxta29sZXNuaUByZWRoYXQuY29t Pgo+IAo+ID4gVG86ICJLYW5hZ2FyYWoiIDxrbWF5aWxzYUByZWRoYXQuY29tPgo+IAo+ID4gQ2M6 ICJlbmdpbmUtZGV2ZWwiIDxlbmdpbmUtZGV2ZWxAb3ZpcnQub3JnPgo+IAo+ID4gU2VudDogU3Vu ZGF5LCBEZWNlbWJlciAxLCAyMDEzIDg6MDg6NDIgQU0KPiAKPiA+IFN1YmplY3Q6IFJlOiBbRW5n aW5lLWRldmVsXSBVc2luZyBjb25maWcgdmFsdWVzCj4gCgo+ID4gLS0tLS0gT3JpZ2luYWwgTWVz c2FnZSAtLS0tLQo+IAoKPiA+ID4gSGkgQWxsLAo+ID4gCj4gCj4gPiBIaSBLYW5hZ2FyYWosCj4g Cgo+ID4gPiBUaGUgYXJlIHNvbWUgaXNzdWVzIGFyaXNpbmcgaW4gY29uZmlndXJhdGlvbnMgd2hl bmV2ZXIgd2UgbW92ZSB1cCBvbiB0aGUKPiA+ID4gdmVyc2lvbnMoMy4zID0+IDMuNCksIGJlY2F1 c2Ugb2YgdGhlIHdheSB3ZSBzdG9yZSBhbmQgaW50ZXJwcmV0IHRoZW0uCj4gPiAKPiAKCj4gPiA+ IFdoZW5ldmVyIHRoZXJlIGlzIGEgbmV3IGNsdXN0ZXIgbGV2ZWwsIHlvdSB3aWxsIG5lZWQgdG8g YWRkIGEgbmV3IGVudHJ5Cj4gPiA+IGZvcgo+ID4gPiBhbGwobW9zdCkgb2YgdGhlIGNvbmZpZ3Vy YXRpb24uIE1vc3RseSBhIGNvcHkgcGFzdGUgaWYgeW91IHNlZSBmcm9tIDMuMgo+ID4gPiB0bwo+ ID4gPiAzLjMsIGV4Y2VwdCBzb21lIENQVS9QTSB0eXBlIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMu Cj4gPiAKPiAKPiA+ID4gQmV0dGVyIG9wdGlvbiB3b3VsZCBiZSB0byBoYXZlIHRoZSBkZWZhdWwg Y29uZmlnIHZhbHVlIGluCj4gPiA+IENvbmZpZ1ZhbHVlcy5qYXZhCj4gPiA+IGFuZCB0aGUgb3Zl cnJpZGVzIHdpbGwgZ28gdG8gY29uZmlnLnNxbC4gSW4gdGhpcyBhcHByb2FjaCB5b3UgZG9uJ3Qg bmVlZAo+ID4gPiBhCj4gPiA+IG5ldyBlbnRyaWVzIHRvIGNvbmZpZy5zcWwgd2hlbiB0aGVyZSBp cyBhIG5ldyBjbHVzdGVyIGxldmVsLgo+ID4gCj4gCgo+ID4gPiBMZXRzIHRha2UgYW4gZXhtYXBs ZSwgIlN1cHBvcnRGb3JjZUNyZWF0ZVZHIiAtIFRoaXMgaXMgc3VwcG9ydGVkIGZyb20gMy4xCj4g PiA+IG9ud2FyZHMsCj4gPiAKPiAKCj4gPiA+IElmIHlvdSBsb29rIGF0IGNvbmZpZy5zcWwsIHlv dSB3aWxsIHNlZSBmb2xsb3dpbmcgZW50cmllcwo+ID4gCj4gCj4gPiA+IHNlbGVjdCBmbl9kYl9h ZGRfY29uZmlnX3ZhbHVlKCdTdXBwb3J0Rm9yY2VDcmVhdGVWRycsJ2ZhbHNlJywnMy4wJyk7Cj4g PiAKPiAKPiA+ID4gc2VsZWN0IGZuX2RiX2FkZF9jb25maWdfdmFsdWUoJ1N1cHBvcnRGb3JjZUNy ZWF0ZVZHJywndHJ1ZScsJzMuMScpOwo+ID4gCj4gCj4gPiA+IHNlbGVjdCBmbl9kYl9hZGRfY29u ZmlnX3ZhbHVlKCdTdXBwb3J0Rm9yY2VDcmVhdGVWRycsJ3RydWUnLCczLjInKTsKPiA+IAo+IAo+ ID4gPiBzZWxlY3QgZm5fZGJfYWRkX2NvbmZpZ192YWx1ZSgnU3VwcG9ydEZvcmNlQ3JlYXRlVkcn LCd0cnVlJywnMy4zJyk7Cj4gPiAKPiAKCj4gPiA+IEFuZCBpbiBDb25maWdWYWx1ZXMuamF2YQo+ ID4gCj4gCgo+ID4gPiBAVHlwZUNvbnZlcnRlckF0dHJpYnV0ZShCb29sZWFuLmNsYXNzKQo+ID4g Cj4gCj4gPiA+IEBEZWZhdWx0VmFsdWVBdHRyaWJ1dGUoImZhbHNlIikKPiA+IAo+IAo+ID4gPiBT dXBwb3J0Rm9yY2VDcmVhdGVWRywKPiA+IAo+IAoKPiA+ID4gTm93IGlmIHRoZXJlIGlzIDMuNCBh bmQgMy41LCB0aGUgdXNlciBuZWVkcyB0byBhZGQgMiBtb3JlIGVudHJpZXMsIHdoaWNoCj4gPiA+ IGkKPiA+ID4gZmVlbCBpcyByZWR1bmRhbnQuCj4gPiAKPiAKCj4gPiA+IEluc3RlYWQgd2UgY2Fu IG1ha2UKPiA+IAo+IAoKPiA+ID4gQFR5cGVDb252ZXJ0ZXJBdHRyaWJ1dGUoQm9vbGVhbi5jbGFz cykKPiA+IAo+IAo+ID4gPiBARGVmYXVsdFZhbHVlQXR0cmlidXRlKCJ0cnVlIikKPiA+IAo+IAo+ ID4gPiBTdXBwb3J0Rm9yY2VDcmVhdGVWRywKPiA+IAo+IAoKPiA+ID4gYW5kIGhhdmUgb25seSB0 aGUgZm9sbG93aW5nIGluIGNvbmZpZy5zcWwKPiA+IAo+IAo+ID4gPiBzZWxlY3QgZm5fZGJfYWRk X2NvbmZpZ192YWx1ZSgnU3VwcG9ydEZvcmNlQ3JlYXRlVkcnLCdmYWxzZScsJzMuMCcpOwo+ID4g Cj4gCgo+ID4gPiBpZiBhIHBhcnRpY3VsYXIgdmFsdWUoZm9yIGEgc3BlY2lmaWMgY2x1c3RlciBs ZXZlbCkgaXMgbm90IGZvdW5kIGluCj4gPiA+IENvbmZpZy5zcWwsIHRoZSBmYWxsYmFjayBpcyB0 byB1c2UgdGhlIHZhbHVlIGF2YWlsYWJsZSBpbgo+ID4gPiBDb25maWdWYWx1ZXMuamF2YS4KPiA+ IAo+IAo+ID4gVGhpcyBoYXMgYWxyZWFkeSBiZWVuIGltcGxlbWVudGVkLCB0aGVyZSBhcmUgbWFu eSAiZmVhdHVyZSBzdXBwb3J0ZWQiCj4gPiBjb25maWd1cmF0aW9ucyB3b3JraW5nIGxpa2UgdGhp cyAoZm9yIGV4YW1wbGUgR2x1c3RlclN1cHBvcnQpLgo+IAoKPiA+IEkgdGhpbmsgYSBtb3JlIGlu dGVyZXN0aW5nIGFwcHJvYWNoIHdvdWxkIGJlIHRvIG1vdmUgdGhlc2Ugb3V0IG9mIHRoZSBEQgo+ ID4gc2luY2UgdGhlc2UgdmFsdWVzIGRvbid0IHJlYWxseSBoYXYgZSBhIHJlc29uIHRvIGJlIHRo ZXJlLgo+IAo+ID4gU2luY2UgdGhlIGVudGlyZSB0aGluZyBpcyBhYnN0cmFjdGVkIGJ5ICJHbHVz dGVyL0ZlYXR1cmVTdXBwb3J0ZWQiIGNsYXNzZXMKPiA+IHRoZW4gd2UgY2FuIGVhc2lseSBjaGFu Z2UgbWVjaGFuaXNtIChvZiBjb3Vyc2Ugd2hhdGV2ZXIgY29kZSBpcyBub3QgdXNpbmcKPiA+IGl0 Cj4gPiBjYW4gYmUgZWFzaWx5IGNvbnZlcnRlZCB0byB1c2UgdGhlIG1lY2hhbmlzbSkKPiAKCj4g PiBGb3IgZXhhbXBsZSBhIHNpbXBsZSBlbnVtIGNvdWxkIGRvIHRoZSB0cmljazoKPiAKPiA+IC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRVhBTVBMRQo+ID4gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IAo+ID4gLyoqCj4gCj4gPiAqIENvbnZlbmll bmNlIGNsYXNzIHRvIGNoZWNrIGlmIGEgZ2x1c3RlciBmZWF0dXJlIGlzIHN1cHBvcnRlZCBvciBu b3QgaW4KPiA+IGFueQo+ID4gZ2l2ZW4gdmVyc2lvbi48YnI+Cj4gCj4gPiAqIE1ldGhvZHMgc2hv dWxkIGJlIG5hbWVkIGJ5IGZlYXR1cmUgYW5kIGFjY2VwdCB2ZXJzaW9uIHRvIGNoZWNrIGFnYWlu c3QuCj4gCj4gPiAqLwo+IAo+ID4gcHVibGljIGNsYXNzIEdsdXN0ZXJGZWF0dXJlU3VwcG9ydGVk IHsKPiAKPiA+IC8qKgo+IAo+ID4gKiBAcGFyYW0gdmVyc2lvbgo+IAo+ID4gKiBDb21wYXRpYmls aXR5IHZlcnNpb24gdG8gY2hlY2sgZm9yLgo+IAo+ID4gKiBAcmV0dXJuIDxjb2RlPnRydWU8L2Nv ZGU+IGlmIGdsdXN0ZXIgc3VwcG9ydCBpcyBlbmFibGVkLAo+ID4gPGNvZGU+ZmFsc2U8L2NvZGU+ Cj4gPiBpZiBpdCdzIG5vdC4KPiAKPiA+ICovCj4gCj4gPiBwdWJsaWMgc3RhdGljIGJvb2xlYW4g Z2x1c3RlcihWZXJzaW9uIHZlcnNpb24pIHsKPiAKPiA+IHJldHVybiBTdXBwb3J0ZWRGZWF0dXJl cy5HTFVTVEVSLmlzU3VwcG9ydGVkT24odmVyc2lvbik7Cj4gCj4gPiB9Cj4gCgo+ID4gLyoqCj4g Cj4gPiAqIEBwYXJhbSB2ZXJzaW9uCj4gCj4gPiAqIENvbXBhdGliaWxpdHkgdmVyc2lvbiB0byBj aGVjayBmb3IuCj4gCj4gPiAqIEByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgZ2x1c3RlciBo ZWF2eXdlaWdodCByZWZyZXNoIGlzIGVuYWJsZWQsCj4gPiA8Y29kZT5mYWxzZTwvY29kZT4gaWYg aXQncyBub3QuCj4gCj4gPiAqLwo+IAo+ID4gcHVibGljIHN0YXRpYyBib29sZWFuIHJlZnJlc2hI ZWF2eVdlaWdodChWZXJzaW9uIHZlcnNpb24pIHsKPiAKPiA+IHJldHVybiBTdXBwb3J0ZWRGZWF0 dXJlcy5SRUZSRVNIX0hFQVZZV0VJR0hULmlzU3VwcG9ydGVkT24odmVyc2lvbik7Cj4gCj4gPiB9 Cj4gCgo+ID4gLyogTW9yZSBtZXRob2RzLi4uICovCj4gCgo+ID4gZW51bSBTdXBwb3J0ZWRGZWF0 dXJlcyB7Cj4gCj4gPiBHTFVTVEVSKFZlcnNpb24udjNfMCksCj4gCj4gPiBSRUZSRVNIX0hFQVZZ V0VJR0hUKFZlcnNpb24udjNfMCwgVmVyc2lvbi52M18xKSwKPiAKPiA+IC8qIE1vcmUgbWVtYmVy cyAqLzsKPiAKCj4gPiBwcml2YXRlIFNldDxWZXJzaW9uPiB1bnN1cHBvcnRlZFZlcnNpb25zID0g bmV3IEhhc2hTZXQ8VmVyc2lvbj4oKTsKPiAKCj4gPiBwcml2YXRlIFN1cHBvcnRlZEZlYXR1cmVz KFZlcnNpb24uLi4gdmVyc2lvbnMpIHsKPiAKPiA+IHVuc3VwcG9ydGVkVmVyc2lvbnMuYWRkQWxs KEFycmF5cy5hc0xpc3QodmVyc2lvbnMpKTsKPiAKPiA+IH0KPiAKCj4gPiBwdWJsaWMgYm9vbGVh biBpc1N1cHBvcnRlZE9uKFZlcnNpb24gdmVyc2lvbikgewo+IAo+ID4gcmV0dXJuICF1bnN1cHBv cnRlZFZlcnNpb25zLmNvbnRhaW5zKHZlcnNpb24pOwo+IAo+ID4gfQo+IAo+ID4gfQo+IAo+ID4g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgRVhBTVBMRQo+ID4gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IAoKPiA+IFRob3VnaHRzPwo+IAoK PiB1bmxlc3MgaSBkaWRuJ3QgdW5kZXJzdGFuZCBzb21ldGhpbmcsIHRoaXMgaXMgbm90IGdvb2Qs Cj4gdGhpcyBzaG91bGQgc3RheSBjb25maWd1cmFibGUgYnkgdGhlIHVzZXJzLAo+IGZvciBleGFt cGxlIGlmIHNvbWUgdXNlciBleHBlcmllbmNlIHNvbWUgaXNzdWVzIHdpdGggYSBmZWF0dXJlIGFu ZCB3YW50IHRvCj4gdHVybiBpdCBvZmYvY2hhbmdlIHRoZSB2YWx1ZXMuLgo+IChub3QgYWxsIHZl cnNpb24gY29uZmlndXJhdGlvbiBhcmUgYm9vbGVhbiwgc29tZSBhcmUgZGlmZmVyZW50IHZhbHVl cyB0bwo+IGRpZmZlcmVudCB2ZXJzaW9ucywgbGlrZSBjcHUtbGlzdCkKClRoaXMgaXMgZm9yIEFQ SSBsZXZlbCBjb21wYXRpYmlsaXR5LiAKSWYgVkRTTSBkb2Vzbid0IHN1cHBvcnQgZm9yIGV4YW1w bGUgaG90IHBsdWcgaW4gMy4xIHRoZW4gdGhlIHVzZXIgY2FuJ3QganVzdCBkZWNpZGUgdGhhdCBp dCBkb2VzIGFuZCBjaGFuZ2UgaXQuIApBbHNvLCB0aGlzIGlzIG5vdCBjaGFuZ2VhYmxlIGJ5IHVz ZXIgc2luY2UgaXQncyBub3QgZXhwb3NlZCBieSBlbmdpbmUtY29uZmlnIChub3Igc2hvdWxkIGl0 IGJlKS4gCgpUaGlzIGlzIHN0cmljdGx5IGZvciB0aGUgZW5naW5lLVZEU00gQVBJIGNvbXBhdGli aWxpdHksIG5vdCBmb3Igb3RoZXIgY29uZmlncyB3aGljaCBhcmUgdmVyc2lvbiBzcGVjaWZpYy4g Cgo+ID4gUmVnYXJkcywKPiAKPiA+IE1pa2UKPiAKCj4gPiA+IFBsZWFzZSBzaGFyZSB5b3VyIHRo b3VnaHRzIG9uIHRoaXMuCj4gPiAKPiAKCj4gPiA+IFRoYW5rcywKPiA+IAo+IAo+ID4gPiBLYW5h Z2FyYWoKPiA+IAo+IAoKPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCj4gCj4gPiBFbmdpbmUtZGV2ZWwgbWFpbGluZyBsaXN0Cj4gCj4gPiBFbmdpbmUt ZGV2ZWxAb3ZpcnQub3JnCj4gCj4gPiBodHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlz dGluZm8vZW5naW5lLWRldmVsCj4gCgotLS0tLS09X1BhcnRfNDMyMDY4MDFfMTc0ODgxNjEzNy4x Mzg1ODg4NTEwODA5CkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04CkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKCjxodG1sPjxib2R5PjxkaXYg c3R5bGU9M0QiZm9udC1mYW1pbHk6IHRpbWVzIG5ldyByb21hbiwgbmV3IHlvcmssIHRpbWVzLCBz ZT0KcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiAjMDAwMDAwIj48aHIgaWQ9M0QiendjaHIi PjxibG9ja3F1b3RlIHN0eWxlPTNEPQoiYm9yZGVyLWxlZnQ6MnB4IHNvbGlkICMxMDEwRkY7bWFy Z2luLWxlZnQ6NXB4O3BhZGRpbmctbGVmdDo1cHg7Y29sb3I6IzAwMDs9CmZvbnQtd2VpZ2h0Om5v cm1hbDtmb250LXN0eWxlOm5vcm1hbDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LWZhbWlseTpI ZWx2ZT0KdGljYSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB0OyIgZGF0YS1tY2Utc3R5 bGU9M0QiYm9yZGVyLWxlZnQ6IDJweCBzPQpvbGlkICMxMDEwRkY7IG1hcmdpbi1sZWZ0OiA1cHg7 IHBhZGRpbmctbGVmdDogNXB4OyBjb2xvcjogIzAwMDsgZm9udC13ZWlnaHQ9Cjogbm9ybWFsOyBm b250LXN0eWxlOiBub3JtYWw7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC1mYW1pbHk6IEhl bHZldGljYT0KLEFyaWFsLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsiPjxkaXYgc3R5bGU9 M0QiZm9udC1mYW1pbHk6IHRpbWVzIG5ldyByPQpvbWFuLCBuZXcgeW9yaywgdGltZXMsIHNlcmlm OyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiAjMDAwMDAwIiBkYXRhLW1jZS1zdHk9CmxlPTNEImZv bnQtZmFtaWx5OiB0aW1lcyBuZXcgcm9tYW4sIG5ldyB5b3JrLCB0aW1lcywgc2VyaWY7IGZvbnQt c2l6ZTogMTJwdD0KOyBjb2xvcjogIzAwMDAwMDsiPjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwv ZGl2PjxociBpZD0zRCJ6d2NociI+PGJsb2NrcXVvPQp0ZSBzdHlsZT0zRCJib3JkZXItbGVmdDoy cHggc29saWQgIzEwMTBGRjttYXJnaW4tbGVmdDo1cHg7cGFkZGluZy1sZWZ0OjVweDs9CmNvbG9y OiMwMDA7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtZGVjb3JhdGlv bjpub25lO2ZvbnQtZj0KYW1pbHk6SGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXpl OjEycHQ7IiBkYXRhLW1jZS1zdHlsZT0zRCJib3JkZXItPQpsZWZ0OiAycHggc29saWQgIzEwMTBG RjsgbWFyZ2luLWxlZnQ6IDVweDsgcGFkZGluZy1sZWZ0OiA1cHg7IGNvbG9yOiAjMDAwOyA9CmZv bnQtd2VpZ2h0OiBub3JtYWw7IGZvbnQtc3R5bGU6IG5vcm1hbDsgdGV4dC1kZWNvcmF0aW9uOiBu b25lOyBmb250LWZhbWlseT0KOiBIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjsgZm9udC1zaXpl OiAxMnB0OyI+PGI+RnJvbTogPC9iPiJNaWtlIEtvbGVzbmlrPQoiICZsdDtta29sZXNuaUByZWRo YXQuY29tJmd0Ozxicj48Yj5UbzogPC9iPiJLYW5hZ2FyYWoiICZsdDtrbWF5aWxzYUByZWRoYXQ9 Ci5jb20mZ3Q7PGJyPjxiPkNjOiA8L2I+ImVuZ2luZS1kZXZlbCIgJmx0O2VuZ2luZS1kZXZlbEBv dmlydC5vcmcmZ3Q7PGJyPjxiPj0KU2VudDogPC9iPlN1bmRheSwgRGVjZW1iZXIgMSwgMjAxMyA4 OjA4OjQyIEFNPGJyPjxiPlN1YmplY3Q6IDwvYj5SZTogW0VuZ2luPQplLWRldmVsXSBVc2luZyBj b25maWcgdmFsdWVzPGJyPjxkaXY+PGJyPjwvZGl2PjxkaXYgc3R5bGU9M0QiZm9udC1mYW1pbHk6 IHQ9CmltZXMgbmV3IHJvbWFuLCBuZXcgeW9yaywgdGltZXMsIHNlcmlmOyBmb250LXNpemU6IDEy cHQ7IGNvbG9yOiAjMDAwMDAwIiBkYT0KdGEtbWNlLXN0eWxlPTNEImZvbnQtZmFtaWx5OiB0aW1l cyBuZXcgcm9tYW4sIG5ldyB5b3JrLCB0aW1lcywgc2VyaWY7IGZvbnQtPQpzaXplOiAxMnB0OyBj b2xvcjogIzAwMDAwMDsiPjxociBpZD0zRCJ6d2NociI+PGJsb2NrcXVvdGUgc3R5bGU9M0QiYm9y ZGVyLWw9CmVmdDoycHggc29saWQgIzEwMTBGRjttYXJnaW4tbGVmdDo1cHg7cGFkZGluZy1sZWZ0 OjVweDtjb2xvcjojMDAwO2ZvbnQtd2VpZz0KaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9ybWFsO3Rl eHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtZmFtaWx5OkhlbHZldGljYSxBcmlhPQpsLHNhbnMtc2Vy aWY7Zm9udC1zaXplOjEycHQ7IiBkYXRhLW1jZS1zdHlsZT0zRCJib3JkZXItbGVmdDogMnB4IHNv bGlkICMxMDE9CjBGRjsgbWFyZ2luLWxlZnQ6IDVweDsgcGFkZGluZy1sZWZ0OiA1cHg7IGNvbG9y OiAjMDAwOyBmb250LXdlaWdodDogbm9ybWFsOz0KIGZvbnQtc3R5bGU6IG5vcm1hbDsgdGV4dC1k ZWNvcmF0aW9uOiBub25lOyBmb250LWZhbWlseTogSGVsdmV0aWNhLEFyaWFsLHNhPQpucy1zZXJp ZjsgZm9udC1zaXplOiAxMnB0OyI+SGkgQWxsLDwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48 ZGl2PkhpIEthbmE9CmdhcmFqLDxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48YmxvY2txdW90ZSBz dHlsZT0zRCJib3JkZXItbGVmdDoycHggc29saWQgIz0KMTAxMEZGO21hcmdpbi1sZWZ0OjVweDtw YWRkaW5nLWxlZnQ6NXB4O2NvbG9yOiMwMDA7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtPQpzdHls ZTpub3JtYWw7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhLEFyaWFs LHNhbnMtc2VyaWY7Zm89Cm50LXNpemU6MTJwdDsiIGRhdGEtbWNlLXN0eWxlPTNEImJvcmRlci1s ZWZ0OiAycHggc29saWQgIzEwMTBGRjsgbWFyZ2luLWxlZj0KdDogNXB4OyBwYWRkaW5nLWxlZnQ6 IDVweDsgY29sb3I6ICMwMDA7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGZvbnQtc3R5bGU6IG5vPQpy bWFsOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsQXJpYWws c2Fucy1zZXJpZjsgZm9udC09CnNpemU6IDEycHQ7Ij48YnI+IFRoZSBhcmUgc29tZSBpc3N1ZXMg YXJpc2luZyBpbiBjb25maWd1cmF0aW9ucyB3aGVuZXZlciB3ZT0KIG1vdmUgdXAgb24gdGhlIHZl cnNpb25zKDMuMyA9M0QmZ3Q7IDMuNCksIGJlY2F1c2Ugb2YgdGhlIHdheSB3ZSBzdG9yZSBhbmQg PQppbnRlcnByZXQgdGhlbS48YnI+PGRpdj48YnI+PC9kaXY+V2hlbmV2ZXIgdGhlcmUgaXMgYSBu ZXcgY2x1c3RlciBsZXZlbCwgeW89CnUgd2lsbCBuZWVkIHRvIGFkZCBhIG5ldyBlbnRyeSBmb3Ig YWxsKG1vc3QpIG9mIHRoZSBjb25maWd1cmF0aW9uLiBNb3N0bHkgYT0KIGNvcHkgcGFzdGUgaWYg eW91IHNlZSBmcm9tIDMuMiB0byAzLjMsIGV4Y2VwdCBzb21lIENQVS9QTSB0eXBlIHJlbGF0ZWQg Y29uPQpmaWd1cmF0aW9ucy48YnI+IEJldHRlciBvcHRpb24gd291bGQgYmUgdG8gaGF2ZSB0aGUg ZGVmYXVsIGNvbmZpZyB2YWx1ZSBpbiA9CkNvbmZpZ1ZhbHVlcy5qYXZhIGFuZCB0aGUgb3ZlcnJp ZGVzIHdpbGwgZ28gdG8gY29uZmlnLnNxbC4gSW4gdGhpcyBhcHByb2FjaD0KIHlvdSBkb24ndCBu ZWVkIGEgbmV3IGVudHJpZXMgdG8gY29uZmlnLnNxbCB3aGVuIHRoZXJlIGlzIGEgbmV3IGNsdXN0 ZXIgbGV2PQplbC48YnI+PGRpdj48YnI+PC9kaXY+TGV0cyB0YWtlIGFuIGV4bWFwbGUsICJTdXBw b3J0Rm9yY2VDcmVhdGVWRyIgLSBUaGlzIGk9CnMgc3VwcG9ydGVkIGZyb20gMy4xIG9ud2FyZHMs PGJyPjxkaXY+PGJyPjwvZGl2PklmIHlvdSBsb29rIGF0IGNvbmZpZy5zcWwsID0KeW91IHdpbGwg c2VlIGZvbGxvd2luZyBlbnRyaWVzIDxicj4gc2VsZWN0IGZuX2RiX2FkZF9jb25maWdfdmFsdWUo J1N1cHBvcnRGPQpvcmNlQ3JlYXRlVkcnLCdmYWxzZScsJzMuMCcpOyA8YnI+IHNlbGVjdCBmbl9k Yl9hZGRfY29uZmlnX3ZhbHVlKCdTdXBwb3J0Rm89CnJjZUNyZWF0ZVZHJywndHJ1ZScsJzMuMScp OyA8YnI+IHNlbGVjdCBmbl9kYl9hZGRfY29uZmlnX3ZhbHVlKCdTdXBwb3J0Rm9yYz0KZUNyZWF0 ZVZHJywndHJ1ZScsJzMuMicpOyA8YnI+IHNlbGVjdCBmbl9kYl9hZGRfY29uZmlnX3ZhbHVlKCdT dXBwb3J0Rm9yY2VDPQpyZWF0ZVZHJywndHJ1ZScsJzMuMycpOzxicj48ZGl2Pjxicj48L2Rpdj5B bmQgaW4gQ29uZmlnVmFsdWVzLmphdmE8YnI+PGRpdj49Cjxicj48L2Rpdj4mbmJzcDsmbmJzcDsm bmJzcDsgQFR5cGVDb252ZXJ0ZXJBdHRyaWJ1dGUoQm9vbGVhbi5jbGFzcyk8YnI+ICZuYj0Kc3A7 Jm5ic3A7Jm5ic3A7IEBEZWZhdWx0VmFsdWVBdHRyaWJ1dGUoImZhbHNlIik8YnI+ICZuYnNwOyZu YnNwOyZuYnNwOyBTdXBwPQpvcnRGb3JjZUNyZWF0ZVZHLDxicj48ZGl2Pjxicj48L2Rpdj5Ob3cg aWYgdGhlcmUgaXMgMy40IGFuZCAzLjUsIHRoZSB1c2VyIG49CmVlZHMgdG8gYWRkIDIgbW9yZSBl bnRyaWVzLCB3aGljaCBpIGZlZWwgaXMgcmVkdW5kYW50Ljxicj48ZGl2Pjxicj48L2Rpdj5Jbj0K c3RlYWQgd2UgY2FuIG1ha2UgPGJyPjxkaXY+PGJyPjwvZGl2PiZuYnNwOyZuYnNwOyZuYnNwOyBA VHlwZUNvbnZlcnRlckF0dHJpPQpidXRlKEJvb2xlYW4uY2xhc3MpPGJyPiAmbmJzcDsmbmJzcDsm bmJzcDsgQERlZmF1bHRWYWx1ZUF0dHJpYnV0ZSgidHJ1ZSIpPGI9CnI+ICZuYnNwOyZuYnNwOyZu YnNwOyBTdXBwb3J0Rm9yY2VDcmVhdGVWRyw8YnI+PGRpdj48YnI+PC9kaXY+YW5kIGhhdmUgb25s eT0KIHRoZSBmb2xsb3dpbmcgaW4gY29uZmlnLnNxbDxicj4gc2VsZWN0IGZuX2RiX2FkZF9jb25m aWdfdmFsdWUoJ1N1cHBvcnRGb3JjPQplQ3JlYXRlVkcnLCdmYWxzZScsJzMuMCcpOzxicj48ZGl2 Pjxicj48L2Rpdj5pZiBhIHBhcnRpY3VsYXIgdmFsdWUoZm9yIGEgc3A9CmVjaWZpYyBjbHVzdGVy IGxldmVsKSBpcyBub3QgZm91bmQgaW4gQ29uZmlnLnNxbCwgdGhlIGZhbGxiYWNrIGlzIHRvIHVz ZSB0aD0KZSB2YWx1ZSBhdmFpbGFibGUgaW4gQ29uZmlnVmFsdWVzLmphdmEuPC9ibG9ja3F1b3Rl PjxkaXY+PGJyPjwvZGl2PjxkaXY+VGhpPQpzIGhhcyBhbHJlYWR5IGJlZW4gaW1wbGVtZW50ZWQs IHRoZXJlIGFyZSBtYW55ICJmZWF0dXJlIHN1cHBvcnRlZCIgY29uZmlndXI9CmF0aW9ucyB3b3Jr aW5nIGxpa2UgdGhpcyAoZm9yIGV4YW1wbGUgR2x1c3RlclN1cHBvcnQpLjxicj48L2Rpdj48ZGl2 Pjxicj48Lz0KZGl2PjxkaXY+SSB0aGluayBhIG1vcmUgaW50ZXJlc3RpbmcgYXBwcm9hY2ggd291 bGQgYmUgdG8gbW92ZSB0aGVzZSBvdXQgb2YgPQp0aGUgREIgc2luY2UgdGhlc2UgdmFsdWVzIGRv bid0IHJlYWxseSBoYXYgZSBhIHJlc29uIHRvIGJlIHRoZXJlLjxicj48L2Rpdj49CjxkaXY+U2lu Y2UgdGhlIGVudGlyZSB0aGluZyBpcyBhYnN0cmFjdGVkIGJ5ICJHbHVzdGVyL0ZlYXR1cmVTdXBw b3J0ZWQiIGNsYT0Kc3NlcyB0aGVuIHdlIGNhbiBlYXNpbHkgY2hhbmdlIG1lY2hhbmlzbSAob2Yg Y291cnNlIHdoYXRldmVyIGNvZGUgaXMgbm90IHVzPQppbmcgaXQgY2FuIGJlIGVhc2lseSBjb252 ZXJ0ZWQgdG8gdXNlIHRoZSBtZWNoYW5pc20pPGJyPjwvZGl2PjxkaXY+PGJyPjwvZGk9CnY+PGRp dj5Gb3IgZXhhbXBsZSBhIHNpbXBsZSBlbnVtIGNvdWxkIGRvIHRoZSB0cmljazo8YnI+PC9kaXY+ PGRpdj4tLS0tLS0tLT0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRVhBTVBMRSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPQo8YnI+PC9kaXY+PGRpdj4vKio8YnI+ Jm5ic3A7KiBDb252ZW5pZW5jZSBjbGFzcyB0byBjaGVjayBpZiBhIGdsdXN0ZXIgZmVhdHU9CnJl IGlzIHN1cHBvcnRlZCBvciBub3QgaW4gYW55IGdpdmVuIHZlcnNpb24uJmx0O2JyJmd0Ozxicj4m bmJzcDsqIE1ldGhvZHMgcz0KaG91bGQgYmUgbmFtZWQgYnkgZmVhdHVyZSBhbmQgYWNjZXB0IHZl cnNpb24gdG8gY2hlY2sgYWdhaW5zdC48YnI+Jm5ic3A7Ki88PQpicj5wdWJsaWMgY2xhc3MgR2x1 c3RlckZlYXR1cmVTdXBwb3J0ZWQgezwvZGl2PjxkaXY+Jm5ic3A7Jm5ic3A7Jm5ic3A7IC8qKjw9 CmJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAqIEBwYXJhbSB2ZXJzaW9uPGJyPiZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyAqJj0KbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgQ29tcGF0aWJpPQpsaXR5IHZlcnNpb24gdG8g Y2hlY2sgZm9yLjxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKiBAcmV0dXJuICZsdDtjb2Rl Jmc9CnQ7dHJ1ZSZsdDsvY29kZSZndDsgaWYgZ2x1c3RlciBzdXBwb3J0IGlzIGVuYWJsZWQsICZs dDtjb2RlJmd0O2ZhbHNlJmx0Oy9jbz0KZGUmZ3Q7IGlmIGl0J3Mgbm90Ljxicj4mbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsgKi88YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IHB1PQpibGljIHN0YXRpYyBi b29sZWFuIGdsdXN0ZXIoVmVyc2lvbiB2ZXJzaW9uKSB7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyY9Cm5ic3A7Jm5ic3A7Jm5ic3A7IHJldHVybiBTdXBwb3J0ZWRGZWF0dXJlcy5HTFVTVEVS LmlzU3VwcG9ydGVkT24odmVyc2lvbik7PD0KYnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IH08YnI+PGRp dj48YnI+PC9kaXY+Jm5ic3A7Jm5ic3A7Jm5ic3A7IC8qKjxicj4mbmJzcDsmPQpuYnNwOyZuYnNw OyZuYnNwOyAqIEBwYXJhbSB2ZXJzaW9uPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAqJm5i c3A7Jm5ic3A9CjsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgQ29tcGF0aWJpbGl0eSB2ZXJzaT0Kb24gdG8gY2hlY2sgZm9yLjxicj4mbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgKiBAcmV0dXJuICZsdDtjb2RlJmd0O3RydWUmbHQ7PQovY29kZSZn dDsgaWYgZ2x1c3RlciBoZWF2eXdlaWdodCByZWZyZXNoIGlzIGVuYWJsZWQsICZsdDtjb2RlJmd0 O2ZhbHNlJmx0Oy89CmNvZGUmZ3Q7IGlmIGl0J3Mgbm90Ljxicj4mbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsgKi88YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ID0KcHVibGljIHN0YXRpYyBib29sZWFuIHJl ZnJlc2hIZWF2eVdlaWdodChWZXJzaW9uIHZlcnNpb24pIHs8YnI+Jm5ic3A7Jm5ic3A7PQombmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcmV0dXJuIFN1cHBvcnRlZEZlYXR1cmVzLlJFRlJF U0hfSEVBVllXRUlHSFQ9Ci5pc1N1cHBvcnRlZE9uKHZlcnNpb24pOzxicj4mbmJzcDsmbmJzcDsm bmJzcDsgfTxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZD0KaXY+Jm5ic3A7Jm5ic3A7Jm5ic3A7 IC8qIE1vcmUgbWV0aG9kcy4uLiAqLzwvZGl2PjxkaXY+PGJyPiZuYnNwOyZuYnNwOyZuYnNwPQo7 IGVudW0gU3VwcG9ydGVkRmVhdHVyZXMgezxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsgR0w9ClVTVEVSKFZlcnNpb24udjNfMCksPGJyPiZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBSRUZSRVNIXz0KSEVBVllXRUlHSFQoVmVyc2lv bi52M18wLCBWZXJzaW9uLnYzXzEpLDwvZGl2PjxkaXY+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 PQombmJzcDsmbmJzcDsmbmJzcDsgLyogTW9yZSBtZW1iZXJzICovOzxicj48ZGl2Pjxicj48L2Rp dj4mbmJzcDsmbmJzcDsmbmJzcDs9CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBwcml2YXRlIFNl dCZsdDtWZXJzaW9uJmd0OyB1bnN1cHBvcnRlZFZlcnNpb25zID0zRD0KIG5ldyBIYXNoU2V0Jmx0 O1ZlcnNpb24mZ3Q7KCk7PGJyPjxkaXY+PGJyPjwvZGl2PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuPQpic3A7Jm5ic3A7Jm5ic3A7IHByaXZhdGUgU3VwcG9ydGVkRmVhdHVyZXMoVmVyc2lvbi4u LiB2ZXJzaW9ucykgezxicj4mbmJzcDs9CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB1bnN1cHBvcnRlZFZlcj0Kc2lvbnMuYWRkQWxs KEFycmF5cy5hc0xpc3QodmVyc2lvbnMpKTs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5iPQpzcDsmbmJzcDsgfTxicj48ZGl2Pjxicj48L2Rpdj4mbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcHU9CmJsaWMgYm9vbGVhbiBpc1N1cHBvcnRlZE9uKFZl cnNpb24gdmVyc2lvbikgezxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbj0KYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gIXVuc3VwcG9ydGVkVmVyc2lv bnMuY29udGFpPQpucyh2ZXJzaW9uKTs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7IH08YnI+Jm5ic3A7Jm5ic3A9CjsmbmJzcDsgfTwvZGl2PjxkaXY+LS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgRVhBTVBMRSAtLS0tLT0KLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PlRob3Vn aHRzPzwvZGl2PjwvPQpkaXY+PC9ibG9ja3F1b3RlPjxkaXY+PGJyPnVubGVzcyBpIGRpZG4ndCB1 bmRlcnN0YW5kIHNvbWV0aGluZywgdGhpcyBpcyBub3Q9CiBnb29kLDxicj48L2Rpdj48ZGl2PnRo aXMgc2hvdWxkIHN0YXkgY29uZmlndXJhYmxlIGJ5IHRoZSB1c2Vycyw8YnI+PC9kaXY+PD0KZGl2 PmZvciBleGFtcGxlIGlmIHNvbWUgdXNlciBleHBlcmllbmNlIHNvbWUgaXNzdWVzIHdpdGggYSBm ZWF0dXJlIGFuZCB3YW50PQogdG8gdHVybiBpdCBvZmYvY2hhbmdlIHRoZSB2YWx1ZXMuLjwvZGl2 PjxkaXY+KG5vdCBhbGwgdmVyc2lvbiBjb25maWd1cmF0aW89Cm4gYXJlIGJvb2xlYW4sIHNvbWUg YXJlIGRpZmZlcmVudCB2YWx1ZXMgdG8gZGlmZmVyZW50IHZlcnNpb25zLCBsaWtlIGNwdS1saT0K c3QpPC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+PGJyPjwvZGl2PjxkaXY+VGhpcyBpcyBm b3IgQVBJIGxldmVsIGNvbXBhPQp0aWJpbGl0eS48YnI+PC9kaXY+PGRpdj5JZiBWRFNNIGRvZXNu J3Qgc3VwcG9ydCBmb3IgZXhhbXBsZSBob3QgcGx1ZyBpbiAzLjE9CiB0aGVuIHRoZSB1c2VyIGNh bid0IGp1c3QgZGVjaWRlIHRoYXQgaXQgZG9lcyBhbmQgY2hhbmdlIGl0Ljxicj48L2Rpdj48ZGl2 Pj0KQWxzbywgdGhpcyBpcyBub3QgY2hhbmdlYWJsZSBieSB1c2VyIHNpbmNlIGl0J3Mgbm90IGV4 cG9zZWQgYnkgZW5naW5lLWNvbmZpPQpnIChub3Igc2hvdWxkIGl0IGJlKS48YnI+PC9kaXY+PGRp dj48YnI+PC9kaXY+PGRpdj5UaGlzIGlzIHN0cmljdGx5IGZvciB0aGU9CiBlbmdpbmUtVkRTTSBB UEkgY29tcGF0aWJpbGl0eSwgbm90IGZvciBvdGhlciBjb25maWdzIHdoaWNoIGFyZSB2ZXJzaW9u IHNwZT0KY2lmaWMuPGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPTNE ImJvcmRlci1sZWZ0OjJweCBzb2xpZCAjPQoxMDEwRkY7bWFyZ2luLWxlZnQ6NXB4O3BhZGRpbmct bGVmdDo1cHg7Y29sb3I6IzAwMDtmb250LXdlaWdodDpub3JtYWw7Zm9udC09CnN0eWxlOm5vcm1h bDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LWZhbWlseTpIZWx2ZXRpY2EsQXJpYWwsc2Fucy1z ZXJpZjtmbz0KbnQtc2l6ZToxMnB0OyIgZGF0YS1tY2Utc3R5bGU9M0QiYm9yZGVyLWxlZnQ6IDJw eCBzb2xpZCAjMTAxMEZGOyBtYXJnaW4tbGVmPQp0OiA1cHg7IHBhZGRpbmctbGVmdDogNXB4OyBj b2xvcjogIzAwMDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgZm9udC1zdHlsZTogbm89CnJtYWw7IHRl eHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC1mYW1pbHk6IEhlbHZldGljYSxBcmlhbCxzYW5zLXNl cmlmOyBmb250LT0Kc2l6ZTogMTJwdDsiPjxkaXYgc3R5bGU9M0QiZm9udC1mYW1pbHk6IHRpbWVz IG5ldyByb21hbiwgbmV3IHlvcmssIHRpbWVzLCBzPQplcmlmOyBmb250LXNpemU6IDEycHQ7IGNv bG9yOiAjMDAwMDAwIiBkYXRhLW1jZS1zdHlsZT0zRCJmb250LWZhbWlseTogdGltZXM9CiBuZXcg cm9tYW4sIG5ldyB5b3JrLCB0aW1lcywgc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6ICMw MDAwMDA7Ij48ZGl2Pj0KPGJyPjwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPTNEImJvcmRlci1sZWZ0 OjJweCBzb2xpZCAjMTAxMEZGO21hcmdpbi1sZWZ0OjVwPQp4O3BhZGRpbmctbGVmdDo1cHg7Y29s b3I6IzAwMDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHlsZTpub3JtYWw7dGV4dC1kZWM9Cm9y YXRpb246bm9uZTtmb250LWZhbWlseTpIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtmb250LXNp emU6MTJwdDsiIGRhdGEtbT0KY2Utc3R5bGU9M0QiYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMTAx MEZGOyBtYXJnaW4tbGVmdDogNXB4OyBwYWRkaW5nLWxlZnQ6PQogNXB4OyBjb2xvcjogIzAwMDsg Zm9udC13ZWlnaHQ6IG5vcm1hbDsgZm9udC1zdHlsZTogbm9ybWFsOyB0ZXh0LWRlY29yYXRpb249 Cjogbm9uZTsgZm9udC1mYW1pbHk6IEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOyBmb250LXNp emU6IDEycHQ7Ij48ZGl2IHN0eT0KbGU9M0QiZm9udC1mYW1pbHk6IHRpbWVzIG5ldyByb21hbiwg bmV3IHlvcmssIHRpbWVzLCBzZXJpZjsgZm9udC1zaXplOiAxMnB0PQo7IGNvbG9yOiAjMDAwMDAw IiBkYXRhLW1jZS1zdHlsZT0zRCJmb250LWZhbWlseTogdGltZXMgbmV3IHJvbWFuLCBuZXcgeW9y ayw9CiB0aW1lcywgc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6ICMwMDAwMDA7Ij48ZGl2 Pjxicj48L2Rpdj48ZGl2Pjxicj48Lz0KZGl2PjxkaXY+UmVnYXJkcyw8YnI+PC9kaXY+PGRpdj5N aWtlPGJyPjwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPTNEImJvcmRlci1sPQplZnQ6MnB4IHNvbGlk ICMxMDEwRkY7bWFyZ2luLWxlZnQ6NXB4O3BhZGRpbmctbGVmdDo1cHg7Y29sb3I6IzAwMDtmb250 LXdlaWc9Cmh0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1hbDt0ZXh0LWRlY29yYXRpb246bm9uZTtm b250LWZhbWlseTpIZWx2ZXRpY2EsQXJpYT0KbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB0OyIg ZGF0YS1tY2Utc3R5bGU9M0QiYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMTAxPQowRkY7IG1hcmdp bi1sZWZ0OiA1cHg7IHBhZGRpbmctbGVmdDogNXB4OyBjb2xvcjogIzAwMDsgZm9udC13ZWlnaHQ6 IG5vcm1hbDs9CiBmb250LXN0eWxlOiBub3JtYWw7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9u dC1mYW1pbHk6IEhlbHZldGljYSxBcmlhbCxzYT0KbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsi Pjxicj4gUGxlYXNlIHNoYXJlIHlvdXIgdGhvdWdodHMgb24gdGhpcy48YnI+PGRpPQp2Pjxicj48 L2Rpdj5UaGFua3MsPGJyPiBLYW5hZ2FyYWo8YnI+PGRpdj48YnI+PC9kaXY+PC9ibG9ja3F1b3Rl PjwvZGl2Pjxicj49Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fPGJyPkVuZ2luZS1kZXZlbCBtYWlsaW5nIGxpcz0KdDxicj5FbmdpbmUtZGV2ZWxAb3ZpcnQu b3JnPGJyPmh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby9lbmdpPQpuZS1k ZXZlbDxicj48L2Jsb2NrcXVvdGU+PGRpdj48YnI+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxk aXY+PGJyPjwvZGl2Pjw9Ci9kaXY+PC9ib2R5PjwvaHRtbD4KLS0tLS0tPV9QYXJ0XzQzMjA2ODAx XzE3NDg4MTYxMzcuMTM4NTg4ODUxMDgwOS0tCg== --===============2844367838179340445==-- From ofrenkel at redhat.com Sun Dec 1 04:02:49 2013 Content-Type: multipart/mixed; boundary="===============2239697629333407842==" MIME-Version: 1.0 From: Omer Frenkel To: devel at ovirt.org Subject: Re: [Engine-devel] Using config values Date: Sun, 01 Dec 2013 04:02:46 -0500 Message-ID: <496533960.21093647.1385888566815.JavaMail.root@redhat.com> In-Reply-To: 1299085692.33736696.1385845115835.JavaMail.root@redhat.com --===============2239697629333407842== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Eli Mesika" > To: "Dusmant Kumar Pati" > Cc: "engine-devel" > Sent: Saturday, November 30, 2013 10:58:35 PM > Subject: Re: [Engine-devel] Using config values > = > = > = > ----- Original Message ----- > > From: "Dusmant Kumar Pati" > > To: "Kanagaraj" , "engine-devel" > > > > Sent: Friday, November 29, 2013 1:40:09 PM > > Subject: Re: [Engine-devel] Using config values > > = > > On 11/29/2013 01:46 PM, Kanagaraj wrote: > > = > > = > > Hi All, > > = > > The are some issues arising in configurations whenever we move up on the > > versions(3.3 =3D> 3.4), because of the way we store and interpret them. > > = > > Whenever there is a new cluster level, you will need to add a new entry= for > > all(most) of the configuration. Mostly a copy paste if you see from 3.2= to > > 3.3, except some CPU/PM type related configurations. > > Better option would be to have the defaul config value in ConfigValues.= java > > and the overrides will go to config.sql. In this approach you don't nee= d a > > new entries to config.sql when there is a new cluster level. > > = > > Lets take an exmaple, "SupportForceCreateVG" - This is supported from 3= .1 > > onwards, > > = > > If you look at config.sql, you will see following entries > > select fn_db_add_config_value('SupportForceCreateVG','false','3.0'); > > select fn_db_add_config_value('SupportForceCreateVG','true','3.1'); > > select fn_db_add_config_value('SupportForceCreateVG','true','3.2'); > > select fn_db_add_config_value('SupportForceCreateVG','true','3.3'); > > = > > And in ConfigValues.java > > = > > @TypeConverterAttribute(Boolean.class) > > @DefaultValueAttribute("false") > > SupportForceCreateVG, > > = > > Now if there is 3.4 and 3.5, the user needs to add 2 more entries, whic= h i > > feel is redundant. > > = > > Instead we can make > > = > > @TypeConverterAttribute(Boolean.class) > > @DefaultValueAttribute("true") > > SupportForceCreateVG, > > = > > and have only the following in config.sql > > select fn_db_add_config_value('SupportForceCreateVG','false','3.0'); > > = > > if a particular value(for a specific cluster level) is not found in > > Config.sql, the fallback is to use the value available in > > ConfigValues.java. > > = > > Please share your thoughts on this. > = > Hi > = > First of all I think its a good idea > I have 2 questions > = > 1) Which value will be stored as default in the java class for configurat= ion > values that are not a boolean, that represents if a feature is active or > not. > Is that the latest version value ? sounds not obvious to me > = i guess this will have to have a configuration values for each version in t= he db. > 2) There are some configuration values that are exposed to the user via t= he > engine-config tool, how this will work, we can not remove the entries the= ir > since the user may change and override those values. > = in your suggestion below, there is the same issue, if user want to change the 3.3 value, engine config will fail with "No such= entry" because 3.3 will not be in the db.. so if we are not fixing this, i think using the current implementation is g= ood enough, no need to add logic, just to convert current options that are not in this = format, to use this logic. > I have a different suggestion: > Default value will stay as is , meaning , it will reflect the value that > should be used to keep the application running correctly if a value is not > found in DB (which should not occur) > = > Code of getting configuration value (getConfigValue(,) will= be > changed to get the closest version value to the given one. > For example , if a 3.4 version is given for a given and we have in = DB > just values for 3.0 and 3.1 , the 3.1 value is returned. > I prefer this solution since it makes the config.sql file self documented= , > showing only value changes and in which version each change occurred. > = > To implement that, we should add this mechanism to the current code that > caches the DB content and as I see that it should be a simple change. > engine-config should be modified such that if the user change a value, th= is > value will be inserted to the database with the current release if not > exists and then the mechanism described above will get this value > = > Example: > = > VdsFenceType lists all the supported fencing agents for power management = , it > currently has the following settings > = > option_value > | > version > -------------------------------------------------------------------------= --------------------+--------- > alom,apc,bladecenter,drac5,eps,ilo,ilo3,ipmilan,rsa,rsb,wti,cisco_ucs > | 3.0 > alom,apc,bladecenter,drac5,eps,ilo,ilo3,ipmilan,rsa,rsb,wti,cisco_ucs > | 3.1 > apc,apc_snmp,bladecenter,cisco_ucs,drac5,eps,ilo,ilo2,ilo3,ilo4,ipmilan,= rsa,rsb,wti > | 3.2 > apc,apc_snmp,bladecenter,cisco_ucs,drac5,eps,ilo,ilo2,ilo3,ilo4,ipmilan,= rsa,rsb,wti > | 3.3 > = > In the proposed solution, we will have > = > option_value > | > version > -------------------------------------------------------------------------= --------------------+--------- > alom,apc,bladecenter,drac5,eps,ilo,ilo3,ipmilan,rsa,rsb,wti,cisco_ucs > | 3.0 > apc,apc_snmp,bladecenter,cisco_ucs,drac5,eps,ilo,ilo2,ilo3,ilo4,ipmilan,= rsa,rsb,wti > | 3.2 > = > This is clear and documents only the changes done between versions and se= rve > all values: boolean , string and complex type (those which requires any k= ind > of parsing) > = > What do you think? > = > Eli > = > = > = > = > = > = > = > = > = > = > = > = > = > = > > = > > Thanks, > > Kanagaraj > > = > > = > > = > > _______________________________________________ > > Engine-devel mailing list Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > I think, this is a good suggestion... > > = > > = > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============2239697629333407842==-- From ofrenkel at redhat.com Sun Dec 1 04:09:33 2013 Content-Type: multipart/mixed; boundary="===============2283725441311682563==" MIME-Version: 1.0 From: Omer Frenkel To: devel at ovirt.org Subject: Re: [Engine-devel] Using config values Date: Sun, 01 Dec 2013 04:09:32 -0500 Message-ID: <823270883.21094118.1385888972530.JavaMail.root@redhat.com> In-Reply-To: 1138287431.43206802.1385888510815.JavaMail.root@redhat.com --===============2283725441311682563== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ------=3D_Part_21094117_1742490232.1385888972528 Content-Type: text/plain; charset=3Dutf-8 Content-Transfer-Encoding: 7bit ----- Original Message ----- > From: "Mike Kolesnik" > To: "Omer Frenkel" > Cc: "Kanagaraj" , "engine-devel" > > Sent: Sunday, December 1, 2013 11:01:50 AM > Subject: Re: [Engine-devel] Using config values > ----- Original Message ----- > > ----- Original Message ----- > = > > > From: "Mike Kolesnik" > > = > = > > > To: "Kanagaraj" > > = > = > > > Cc: "engine-devel" > > = > = > > > Sent: Sunday, December 1, 2013 8:08:42 AM > > = > = > > > Subject: Re: [Engine-devel] Using config values > > = > = > > > ----- Original Message ----- > > = > = > > > > Hi All, > > > = > > = > = > > > Hi Kanagaraj, > > = > = > > > > The are some issues arising in configurations whenever we move up on > > > > the > > > > versions(3.3 =3D> 3.4), because of the way we store and interpret t= hem. > > > = > > = > = > > > > Whenever there is a new cluster level, you will need to add a new e= ntry > > > > for > > > > all(most) of the configuration. Mostly a copy paste if you see from= 3.2 > > > > to > > > > 3.3, except some CPU/PM type related configurations. > > > = > > = > = > > > > Better option would be to have the defaul config value in > > > > ConfigValues.java > > > > and the overrides will go to config.sql. In this approach you don't > > > > need > > > > a > > > > new entries to config.sql when there is a new cluster level. > > > = > > = > = > > > > Lets take an exmaple, "SupportForceCreateVG" - This is supported fr= om > > > > 3.1 > > > > onwards, > > > = > > = > = > > > > If you look at config.sql, you will see following entries > > > = > > = > = > > > > select fn_db_add_config_value('SupportForceCreateVG','false','3.0'); > > > = > > = > = > > > > select fn_db_add_config_value('SupportForceCreateVG','true','3.1'); > > > = > > = > = > > > > select fn_db_add_config_value('SupportForceCreateVG','true','3.2'); > > > = > > = > = > > > > select fn_db_add_config_value('SupportForceCreateVG','true','3.3'); > > > = > > = > = > > > > And in ConfigValues.java > > > = > > = > = > > > > @TypeConverterAttribute(Boolean.class) > > > = > > = > = > > > > @DefaultValueAttribute("false") > > > = > > = > = > > > > SupportForceCreateVG, > > > = > > = > = > > > > Now if there is 3.4 and 3.5, the user needs to add 2 more entries, > > > > which > > > > i > > > > feel is redundant. > > > = > > = > = > > > > Instead we can make > > > = > > = > = > > > > @TypeConverterAttribute(Boolean.class) > > > = > > = > = > > > > @DefaultValueAttribute("true") > > > = > > = > = > > > > SupportForceCreateVG, > > > = > > = > = > > > > and have only the following in config.sql > > > = > > = > = > > > > select fn_db_add_config_value('SupportForceCreateVG','false','3.0'); > > > = > > = > = > > > > if a particular value(for a specific cluster level) is not found in > > > > Config.sql, the fallback is to use the value available in > > > > ConfigValues.java. > > > = > > = > = > > > This has already been implemented, there are many "feature supported" > > > configurations working like this (for example GlusterSupport). > > = > = > > > I think a more interesting approach would be to move these out of the= DB > > > since these values don't really hav e a reson to be there. > > = > = > > > Since the entire thing is abstracted by "Gluster/FeatureSupported" > > > classes > > > then we can easily change mechanism (of course whatever code is not u= sing > > > it > > > can be easily converted to use the mechanism) > > = > = > > > For example a simple enum could do the trick: > > = > = > > > ------------------------------------- EXAMPLE > > > ------------------------------------- > > = > = > > > /** > > = > = > > > * Convenience class to check if a gluster feature is supported or not= in > > > any > > > given version.
> > = > = > > > * Methods should be named by feature and accept version to check agai= nst. > > = > = > > > */ > > = > = > > > public class GlusterFeatureSupported { > > = > = > > > /** > > = > = > > > * @param version > > = > = > > > * Compatibility version to check for. > > = > = > > > * @return true if gluster support is enabled, > > > false > > > if it's not. > > = > = > > > */ > > = > = > > > public static boolean gluster(Version version) { > > = > = > > > return SupportedFeatures.GLUSTER.isSupportedOn(version); > > = > = > > > } > > = > = > > > /** > > = > = > > > * @param version > > = > = > > > * Compatibility version to check for. > > = > = > > > * @return true if gluster heavyweight refresh is enabled, > > > false if it's not. > > = > = > > > */ > > = > = > > > public static boolean refreshHeavyWeight(Version version) { > > = > = > > > return SupportedFeatures.REFRESH_HEAVYWEIGHT.isSupportedOn(version); > > = > = > > > } > > = > = > > > /* More methods... */ > > = > = > > > enum SupportedFeatures { > > = > = > > > GLUSTER(Version.v3_0), > > = > = > > > REFRESH_HEAVYWEIGHT(Version.v3_0, Version.v3_1), > > = > = > > > /* More members */; > > = > = > > > private Set unsupportedVersions =3D new HashSet(); > > = > = > > > private SupportedFeatures(Version... versions) { > > = > = > > > unsupportedVersions.addAll(Arrays.asList(versions)); > > = > = > > > } > > = > = > > > public boolean isSupportedOn(Version version) { > > = > = > > > return !unsupportedVersions.contains(version); > > = > = > > > } > > = > = > > > } > > = > = > > > ------------------------------------- END EXAMPLE > > > ------------------------------------- > > = > = > > > Thoughts? > > = > = > > unless i didn't understand something, this is not good, > = > > this should stay configurable by the users, > = > > for example if some user experience some issues with a feature and want= to > > turn it off/change the values.. > = > > (not all version configuration are boolean, some are different values to > > different versions, like cpu-list) > = > This is for API level compatibility. > If VDSM doesn't support for example hot plug in 3.1 then the user can't j= ust > decide that it does and change it. > Also, this is not changeable by user since it's not exposed by engine-con= fig > (nor should it be). some are exposed = > This is strictly for the engine-VDSM API compatibility, not for other con= figs > which are version specific. right, but still user should be able to turn features off in case of proble= ms, = or change in some cases (for example it is possible to add support for more= power management devices, i know it was done by users) = no reason to block this = > > > Regards, > > = > = > > > Mike > > = > = > > > > Please share your thoughts on this. > > > = > > = > = > > > > Thanks, > > > = > > = > = > > > > Kanagaraj > > > = > > = > = > > > _______________________________________________ > > = > = > > > Engine-devel mailing list > > = > = > > > Engine-devel(a)ovirt.org > > = > = > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > = > = ------=3D_Part_21094117_1742490232.1385888972528 Content-Type: text/html; charset=3Dutf-8 Content-Transfer-Encoding: quoted-printable



Fr= =3D om: "Mike Kolesnik" <mkolesni(a)redhat.com>
To: "Omer F= re=3D nkel" <ofrenkel(a)redhat.com>
Cc: "Kanagaraj" <kmayilsa(= a)re=3D dhat.com>, "engine-devel" <engine-devel(a)ovirt.org>
Sent: <= /b=3D >Sunday, December 1, 2013 11:01:50 AM
Subject: Re: [Engine-devel]= =3D Using config values





From: "Mike Kolesnik= =3D " <mkolesni(a)redhat.com>
To: "Kanagaraj" <kmayilsa(a)re= dhat=3D .com>
Cc: "engine-devel" <engine-devel(a)ovirt.org>
<= b>=3D Sent:
Sunday, December 1, 2013 8:08:42 AM
Subject: Re: [Engin= =3D e-devel] Using config values

H= =3D i All,

Hi Kanagaraj,


The are s= =3D ome issues arising in configurations whenever we move up on the versions(3.= =3D 3 =3D3D> 3.4), because of the way we store and interpret them.
<= br=3D >
Whenever there is a new cluster level, you will need to add a new en= =3D try for all(most) of the configuration. Mostly a copy paste if you see from= =3D 3.2 to 3.3, except some CPU/PM type related configurations.
Better opt= =3D ion would be to have the defaul config value in ConfigValues.java and the o= =3D verrides will go to config.sql. In this approach you don't need a new entri= =3D es to config.sql when there is a new cluster level.

Lets = =3D take an exmaple, "SupportForceCreateVG" - This is supported from 3.1 onward= =3D s,

If you look at config.sql, you will see following entr= =3D ies
select fn_db_add_config_value('SupportForceCreateVG','false','3.0'= =3D );
select fn_db_add_config_value('SupportForceCreateVG','true','3.1');= =3D
select fn_db_add_config_value('SupportForceCreateVG','true','3.2'); <= =3D br> select fn_db_add_config_value('SupportForceCreateVG','true','3.3');
= =3D

And in ConfigValues.java

   = =3D ; @TypeConverterAttribute(Boolean.class)
    @DefaultVal= =3D ueAttribute("false")
    SupportForceCreateVG,
<= =3D br>
Now if there is 3.4 and 3.5, the user needs to add 2 more entries,= =3D which i feel is redundant.

Instead we can make
= =3D
    @TypeConverterAttribute(Boolean.class)
&nb= =3D sp;   @DefaultValueAttribute("true")
    Suppo= =3D rtForceCreateVG,

and have only the following in config.sq= =3D l
select fn_db_add_config_value('SupportForceCreateVG','false','3.0');<= =3D br>

if a particular value(for a specific cluster level) is no= =3D t found in Config.sql, the fallback is to use the value available in Config= =3D Values.java.

This has already been implemen= =3D ted, there are many "feature supported" configurations working like this (f= =3D or example GlusterSupport).

I think a more int= =3D eresting approach would be to move these out of the DB since these values d= =3D on't really hav e a reson to be there.
Since the entire thing= =3D is abstracted by "Gluster/FeatureSupported" classes then we can easily cha= =3D nge mechanism (of course whatever code is not using it can be easily conver= =3D ted to use the mechanism)

For example a simple= =3D enum could do the trick:
-----------------------------------= =3D -- EXAMPLE -------------------------------------
/**
 = =3D ;* Convenience class to check if a gluster feature is supported or not in a= =3D ny given version.<br>
 * Methods should be named by feature a= =3D nd accept version to check against.
 */
public class GlusterFeat= =3D ureSupported {
    /**
    = =3D * @param version
     *    &nbs= =3D p;       Compatibility version to check for.<= =3D br>     * @return <code>true</code> if glus= =3D ter support is enabled, <code>false</code> if it's not.
&nbs= =3D p;    */
    public static boolean gluster= =3D (Version version) {
        return Su= =3D pportedFeatures.GLUSTER.isSupportedOn(version);
    }
= =3D

    /**
     * @param = =3D version
     *      &n= =3D bsp;     Compatibility version to check for.
 &= =3D nbsp;   * @return <code>true</code> if gluster heavyw= =3D eight refresh is enabled, <code>false</code> if it's not.
&n= =3D bsp;    */
    public static boolean refre= =3D shHeavyWeight(Version version) {
      &nb= =3D sp; return SupportedFeatures.REFRESH_HEAVYWEIGHT.isSupportedOn(version);    }

    /* Mo= =3D re methods... */

    enum SupportedFeatures {<= =3D br>        GLUSTER(Version.v3_0),
&nb= =3D sp;       REFRESH_HEAVYWEIGHT(Version.v3_0, V= =3D ersion.v3_1),
        /* More = =3D members */;

        pr= =3D ivate Set<Version> unsupportedVersions =3D3D new HashSet<Version&g= t;=3D ();

        private Su= =3D pportedFeatures(Version... versions) {
     &nb= =3D sp;      unsupportedVersions.addAll(Arrays.asList(= =3D versions));
        }

        public boolean isSupportedOn(= =3D Version version) {
         = =3D ;   return !unsupportedVersions.contains(version);
  = =3D ;      }
    }
-------= =3D ------------------------------ END EXAMPLE --------------------------------= =3D -----

Thoughts?

u= =3D nless i didn't understand something, this is not good,
this s= =3D hould stay configurable by the users,
for example if some use= =3D r experience some issues with a feature and want to turn it off/change the = =3D values..
(not all version configuration are boolean, some are dif= =3D ferent values to different versions, like cpu-list)

This is for API level compatibility.
If = =3D VDSM doesn't support for example hot plug in 3.1 then the user can't just d= =3D ecide that it does and change it.
Also, this is not changeabl= =3D e by user since it's not exposed by engine-config (nor should it be).
some are exposed
This i= =3D s strictly for the engine-VDSM API compatibility, not for other configs whi= =3D ch are version specific.
right, but still = =3D user should be able to turn features off in case of problems,
or change in some cases (for example it is possible to add support for mor= =3D e power management devices, i know it was done by users)
no r= =3D eason to block this

<= =3D div>

Regards,
Mike

Please share yo= =3D ur thoughts on this.

Thanks,
Kanagaraj


_______________________________________________<= =3D br>Engine-devel mailing list
Engine-devel(a)ovirt.org
http://lists.ov= ir=3D t.org/mailman/listinfo/engine-devel



------=3D_Part_21094117_1742490232.1385888972528-- --===============2283725441311682563== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS0tLS0tPV9QYXJ0XzIxMDk0MTE3XzE3NDI0OTAyMzIuMTM4NTg4ODk3MjUyOApDb250ZW50LVR5 cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog N2JpdAoKLS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAtLS0tLQoKPiBGcm9tOiAiTWlrZSBLb2xlc25p ayIgPG1rb2xlc25pQHJlZGhhdC5jb20+Cj4gVG86ICJPbWVyIEZyZW5rZWwiIDxvZnJlbmtlbEBy ZWRoYXQuY29tPgo+IENjOiAiS2FuYWdhcmFqIiA8a21heWlsc2FAcmVkaGF0LmNvbT4sICJlbmdp bmUtZGV2ZWwiCj4gPGVuZ2luZS1kZXZlbEBvdmlydC5vcmc+Cj4gU2VudDogU3VuZGF5LCBEZWNl bWJlciAxLCAyMDEzIDExOjAxOjUwIEFNCj4gU3ViamVjdDogUmU6IFtFbmdpbmUtZGV2ZWxdIFVz aW5nIGNvbmZpZyB2YWx1ZXMKCj4gLS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAtLS0tLQoKPiA+IC0t LS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0KPiAKCj4gPiA+IEZyb206ICJNaWtlIEtvbGVzbmlr IiA8bWtvbGVzbmlAcmVkaGF0LmNvbT4KPiA+IAo+IAo+ID4gPiBUbzogIkthbmFnYXJhaiIgPGtt YXlpbHNhQHJlZGhhdC5jb20+Cj4gPiAKPiAKPiA+ID4gQ2M6ICJlbmdpbmUtZGV2ZWwiIDxlbmdp bmUtZGV2ZWxAb3ZpcnQub3JnPgo+ID4gCj4gCj4gPiA+IFNlbnQ6IFN1bmRheSwgRGVjZW1iZXIg MSwgMjAxMyA4OjA4OjQyIEFNCj4gPiAKPiAKPiA+ID4gU3ViamVjdDogUmU6IFtFbmdpbmUtZGV2 ZWxdIFVzaW5nIGNvbmZpZyB2YWx1ZXMKPiA+IAo+IAoKPiA+ID4gLS0tLS0gT3JpZ2luYWwgTWVz c2FnZSAtLS0tLQo+ID4gCj4gCgo+ID4gPiA+IEhpIEFsbCwKPiA+ID4gCj4gPiAKPiAKPiA+ID4g SGkgS2FuYWdhcmFqLAo+ID4gCj4gCgo+ID4gPiA+IFRoZSBhcmUgc29tZSBpc3N1ZXMgYXJpc2lu ZyBpbiBjb25maWd1cmF0aW9ucyB3aGVuZXZlciB3ZSBtb3ZlIHVwIG9uCj4gPiA+ID4gdGhlCj4g PiA+ID4gdmVyc2lvbnMoMy4zID0+IDMuNCksIGJlY2F1c2Ugb2YgdGhlIHdheSB3ZSBzdG9yZSBh bmQgaW50ZXJwcmV0IHRoZW0uCj4gPiA+IAo+ID4gCj4gCgo+ID4gPiA+IFdoZW5ldmVyIHRoZXJl IGlzIGEgbmV3IGNsdXN0ZXIgbGV2ZWwsIHlvdSB3aWxsIG5lZWQgdG8gYWRkIGEgbmV3IGVudHJ5 Cj4gPiA+ID4gZm9yCj4gPiA+ID4gYWxsKG1vc3QpIG9mIHRoZSBjb25maWd1cmF0aW9uLiBNb3N0 bHkgYSBjb3B5IHBhc3RlIGlmIHlvdSBzZWUgZnJvbSAzLjIKPiA+ID4gPiB0bwo+ID4gPiA+IDMu MywgZXhjZXB0IHNvbWUgQ1BVL1BNIHR5cGUgcmVsYXRlZCBjb25maWd1cmF0aW9ucy4KPiA+ID4g Cj4gPiAKPiAKPiA+ID4gPiBCZXR0ZXIgb3B0aW9uIHdvdWxkIGJlIHRvIGhhdmUgdGhlIGRlZmF1 bCBjb25maWcgdmFsdWUgaW4KPiA+ID4gPiBDb25maWdWYWx1ZXMuamF2YQo+ID4gPiA+IGFuZCB0 aGUgb3ZlcnJpZGVzIHdpbGwgZ28gdG8gY29uZmlnLnNxbC4gSW4gdGhpcyBhcHByb2FjaCB5b3Ug ZG9uJ3QKPiA+ID4gPiBuZWVkCj4gPiA+ID4gYQo+ID4gPiA+IG5ldyBlbnRyaWVzIHRvIGNvbmZp Zy5zcWwgd2hlbiB0aGVyZSBpcyBhIG5ldyBjbHVzdGVyIGxldmVsLgo+ID4gPiAKPiA+IAo+IAoK PiA+ID4gPiBMZXRzIHRha2UgYW4gZXhtYXBsZSwgIlN1cHBvcnRGb3JjZUNyZWF0ZVZHIiAtIFRo aXMgaXMgc3VwcG9ydGVkIGZyb20KPiA+ID4gPiAzLjEKPiA+ID4gPiBvbndhcmRzLAo+ID4gPiAK PiA+IAo+IAoKPiA+ID4gPiBJZiB5b3UgbG9vayBhdCBjb25maWcuc3FsLCB5b3Ugd2lsbCBzZWUg Zm9sbG93aW5nIGVudHJpZXMKPiA+ID4gCj4gPiAKPiAKPiA+ID4gPiBzZWxlY3QgZm5fZGJfYWRk X2NvbmZpZ192YWx1ZSgnU3VwcG9ydEZvcmNlQ3JlYXRlVkcnLCdmYWxzZScsJzMuMCcpOwo+ID4g PiAKPiA+IAo+IAo+ID4gPiA+IHNlbGVjdCBmbl9kYl9hZGRfY29uZmlnX3ZhbHVlKCdTdXBwb3J0 Rm9yY2VDcmVhdGVWRycsJ3RydWUnLCczLjEnKTsKPiA+ID4gCj4gPiAKPiAKPiA+ID4gPiBzZWxl Y3QgZm5fZGJfYWRkX2NvbmZpZ192YWx1ZSgnU3VwcG9ydEZvcmNlQ3JlYXRlVkcnLCd0cnVlJywn My4yJyk7Cj4gPiA+IAo+ID4gCj4gCj4gPiA+ID4gc2VsZWN0IGZuX2RiX2FkZF9jb25maWdfdmFs dWUoJ1N1cHBvcnRGb3JjZUNyZWF0ZVZHJywndHJ1ZScsJzMuMycpOwo+ID4gPiAKPiA+IAo+IAoK PiA+ID4gPiBBbmQgaW4gQ29uZmlnVmFsdWVzLmphdmEKPiA+ID4gCj4gPiAKPiAKCj4gPiA+ID4g QFR5cGVDb252ZXJ0ZXJBdHRyaWJ1dGUoQm9vbGVhbi5jbGFzcykKPiA+ID4gCj4gPiAKPiAKPiA+ ID4gPiBARGVmYXVsdFZhbHVlQXR0cmlidXRlKCJmYWxzZSIpCj4gPiA+IAo+ID4gCj4gCj4gPiA+ ID4gU3VwcG9ydEZvcmNlQ3JlYXRlVkcsCj4gPiA+IAo+ID4gCj4gCgo+ID4gPiA+IE5vdyBpZiB0 aGVyZSBpcyAzLjQgYW5kIDMuNSwgdGhlIHVzZXIgbmVlZHMgdG8gYWRkIDIgbW9yZSBlbnRyaWVz LAo+ID4gPiA+IHdoaWNoCj4gPiA+ID4gaQo+ID4gPiA+IGZlZWwgaXMgcmVkdW5kYW50Lgo+ID4g PiAKPiA+IAo+IAoKPiA+ID4gPiBJbnN0ZWFkIHdlIGNhbiBtYWtlCj4gPiA+IAo+ID4gCj4gCgo+ ID4gPiA+IEBUeXBlQ29udmVydGVyQXR0cmlidXRlKEJvb2xlYW4uY2xhc3MpCj4gPiA+IAo+ID4g Cj4gCj4gPiA+ID4gQERlZmF1bHRWYWx1ZUF0dHJpYnV0ZSgidHJ1ZSIpCj4gPiA+IAo+ID4gCj4g Cj4gPiA+ID4gU3VwcG9ydEZvcmNlQ3JlYXRlVkcsCj4gPiA+IAo+ID4gCj4gCgo+ID4gPiA+IGFu ZCBoYXZlIG9ubHkgdGhlIGZvbGxvd2luZyBpbiBjb25maWcuc3FsCj4gPiA+IAo+ID4gCj4gCj4g PiA+ID4gc2VsZWN0IGZuX2RiX2FkZF9jb25maWdfdmFsdWUoJ1N1cHBvcnRGb3JjZUNyZWF0ZVZH JywnZmFsc2UnLCczLjAnKTsKPiA+ID4gCj4gPiAKPiAKCj4gPiA+ID4gaWYgYSBwYXJ0aWN1bGFy IHZhbHVlKGZvciBhIHNwZWNpZmljIGNsdXN0ZXIgbGV2ZWwpIGlzIG5vdCBmb3VuZCBpbgo+ID4g PiA+IENvbmZpZy5zcWwsIHRoZSBmYWxsYmFjayBpcyB0byB1c2UgdGhlIHZhbHVlIGF2YWlsYWJs ZSBpbgo+ID4gPiA+IENvbmZpZ1ZhbHVlcy5qYXZhLgo+ID4gPiAKPiA+IAo+IAo+ID4gPiBUaGlz IGhhcyBhbHJlYWR5IGJlZW4gaW1wbGVtZW50ZWQsIHRoZXJlIGFyZSBtYW55ICJmZWF0dXJlIHN1 cHBvcnRlZCIKPiA+ID4gY29uZmlndXJhdGlvbnMgd29ya2luZyBsaWtlIHRoaXMgKGZvciBleGFt cGxlIEdsdXN0ZXJTdXBwb3J0KS4KPiA+IAo+IAoKPiA+ID4gSSB0aGluayBhIG1vcmUgaW50ZXJl c3RpbmcgYXBwcm9hY2ggd291bGQgYmUgdG8gbW92ZSB0aGVzZSBvdXQgb2YgdGhlIERCCj4gPiA+ IHNpbmNlIHRoZXNlIHZhbHVlcyBkb24ndCByZWFsbHkgaGF2IGUgYSByZXNvbiB0byBiZSB0aGVy ZS4KPiA+IAo+IAo+ID4gPiBTaW5jZSB0aGUgZW50aXJlIHRoaW5nIGlzIGFic3RyYWN0ZWQgYnkg IkdsdXN0ZXIvRmVhdHVyZVN1cHBvcnRlZCIKPiA+ID4gY2xhc3Nlcwo+ID4gPiB0aGVuIHdlIGNh biBlYXNpbHkgY2hhbmdlIG1lY2hhbmlzbSAob2YgY291cnNlIHdoYXRldmVyIGNvZGUgaXMgbm90 IHVzaW5nCj4gPiA+IGl0Cj4gPiA+IGNhbiBiZSBlYXNpbHkgY29udmVydGVkIHRvIHVzZSB0aGUg bWVjaGFuaXNtKQo+ID4gCj4gCgo+ID4gPiBGb3IgZXhhbXBsZSBhIHNpbXBsZSBlbnVtIGNvdWxk IGRvIHRoZSB0cmljazoKPiA+IAo+IAo+ID4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tIEVYQU1QTEUKPiA+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+ID4gCj4gCj4gPiA+IC8qKgo+ID4gCj4gCj4gPiA+ICogQ29udmVuaWVuY2UgY2xhc3Mg dG8gY2hlY2sgaWYgYSBnbHVzdGVyIGZlYXR1cmUgaXMgc3VwcG9ydGVkIG9yIG5vdCBpbgo+ID4g PiBhbnkKPiA+ID4gZ2l2ZW4gdmVyc2lvbi48YnI+Cj4gPiAKPiAKPiA+ID4gKiBNZXRob2RzIHNo b3VsZCBiZSBuYW1lZCBieSBmZWF0dXJlIGFuZCBhY2NlcHQgdmVyc2lvbiB0byBjaGVjayBhZ2Fp bnN0Lgo+ID4gCj4gCj4gPiA+ICovCj4gPiAKPiAKPiA+ID4gcHVibGljIGNsYXNzIEdsdXN0ZXJG ZWF0dXJlU3VwcG9ydGVkIHsKPiA+IAo+IAo+ID4gPiAvKioKPiA+IAo+IAo+ID4gPiAqIEBwYXJh bSB2ZXJzaW9uCj4gPiAKPiAKPiA+ID4gKiBDb21wYXRpYmlsaXR5IHZlcnNpb24gdG8gY2hlY2sg Zm9yLgo+ID4gCj4gCj4gPiA+ICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiBnbHVzdGVy IHN1cHBvcnQgaXMgZW5hYmxlZCwKPiA+ID4gPGNvZGU+ZmFsc2U8L2NvZGU+Cj4gPiA+IGlmIGl0 J3Mgbm90Lgo+ID4gCj4gCj4gPiA+ICovCj4gPiAKPiAKPiA+ID4gcHVibGljIHN0YXRpYyBib29s ZWFuIGdsdXN0ZXIoVmVyc2lvbiB2ZXJzaW9uKSB7Cj4gPiAKPiAKPiA+ID4gcmV0dXJuIFN1cHBv cnRlZEZlYXR1cmVzLkdMVVNURVIuaXNTdXBwb3J0ZWRPbih2ZXJzaW9uKTsKPiA+IAo+IAo+ID4g PiB9Cj4gPiAKPiAKCj4gPiA+IC8qKgo+ID4gCj4gCj4gPiA+ICogQHBhcmFtIHZlcnNpb24KPiA+ IAo+IAo+ID4gPiAqIENvbXBhdGliaWxpdHkgdmVyc2lvbiB0byBjaGVjayBmb3IuCj4gPiAKPiAK PiA+ID4gKiBAcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIGdsdXN0ZXIgaGVhdnl3ZWlnaHQg cmVmcmVzaCBpcyBlbmFibGVkLAo+ID4gPiA8Y29kZT5mYWxzZTwvY29kZT4gaWYgaXQncyBub3Qu Cj4gPiAKPiAKPiA+ID4gKi8KPiA+IAo+IAo+ID4gPiBwdWJsaWMgc3RhdGljIGJvb2xlYW4gcmVm cmVzaEhlYXZ5V2VpZ2h0KFZlcnNpb24gdmVyc2lvbikgewo+ID4gCj4gCj4gPiA+IHJldHVybiBT dXBwb3J0ZWRGZWF0dXJlcy5SRUZSRVNIX0hFQVZZV0VJR0hULmlzU3VwcG9ydGVkT24odmVyc2lv bik7Cj4gPiAKPiAKPiA+ID4gfQo+ID4gCj4gCgo+ID4gPiAvKiBNb3JlIG1ldGhvZHMuLi4gKi8K PiA+IAo+IAoKPiA+ID4gZW51bSBTdXBwb3J0ZWRGZWF0dXJlcyB7Cj4gPiAKPiAKPiA+ID4gR0xV U1RFUihWZXJzaW9uLnYzXzApLAo+ID4gCj4gCj4gPiA+IFJFRlJFU0hfSEVBVllXRUlHSFQoVmVy c2lvbi52M18wLCBWZXJzaW9uLnYzXzEpLAo+ID4gCj4gCj4gPiA+IC8qIE1vcmUgbWVtYmVycyAq LzsKPiA+IAo+IAoKPiA+ID4gcHJpdmF0ZSBTZXQ8VmVyc2lvbj4gdW5zdXBwb3J0ZWRWZXJzaW9u cyA9IG5ldyBIYXNoU2V0PFZlcnNpb24+KCk7Cj4gPiAKPiAKCj4gPiA+IHByaXZhdGUgU3VwcG9y dGVkRmVhdHVyZXMoVmVyc2lvbi4uLiB2ZXJzaW9ucykgewo+ID4gCj4gCj4gPiA+IHVuc3VwcG9y dGVkVmVyc2lvbnMuYWRkQWxsKEFycmF5cy5hc0xpc3QodmVyc2lvbnMpKTsKPiA+IAo+IAo+ID4g PiB9Cj4gPiAKPiAKCj4gPiA+IHB1YmxpYyBib29sZWFuIGlzU3VwcG9ydGVkT24oVmVyc2lvbiB2 ZXJzaW9uKSB7Cj4gPiAKPiAKPiA+ID4gcmV0dXJuICF1bnN1cHBvcnRlZFZlcnNpb25zLmNvbnRh aW5zKHZlcnNpb24pOwo+ID4gCj4gCj4gPiA+IH0KPiA+IAo+IAo+ID4gPiB9Cj4gPiAKPiAKPiA+ ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgRVhBTVBMRQo+ID4g PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiAKPiAKCj4gPiA+IFRo b3VnaHRzPwo+ID4gCj4gCgo+ID4gdW5sZXNzIGkgZGlkbid0IHVuZGVyc3RhbmQgc29tZXRoaW5n LCB0aGlzIGlzIG5vdCBnb29kLAo+IAo+ID4gdGhpcyBzaG91bGQgc3RheSBjb25maWd1cmFibGUg YnkgdGhlIHVzZXJzLAo+IAo+ID4gZm9yIGV4YW1wbGUgaWYgc29tZSB1c2VyIGV4cGVyaWVuY2Ug c29tZSBpc3N1ZXMgd2l0aCBhIGZlYXR1cmUgYW5kIHdhbnQgdG8KPiA+IHR1cm4gaXQgb2ZmL2No YW5nZSB0aGUgdmFsdWVzLi4KPiAKPiA+IChub3QgYWxsIHZlcnNpb24gY29uZmlndXJhdGlvbiBh cmUgYm9vbGVhbiwgc29tZSBhcmUgZGlmZmVyZW50IHZhbHVlcyB0bwo+ID4gZGlmZmVyZW50IHZl cnNpb25zLCBsaWtlIGNwdS1saXN0KQo+IAoKPiBUaGlzIGlzIGZvciBBUEkgbGV2ZWwgY29tcGF0 aWJpbGl0eS4KPiBJZiBWRFNNIGRvZXNuJ3Qgc3VwcG9ydCBmb3IgZXhhbXBsZSBob3QgcGx1ZyBp biAzLjEgdGhlbiB0aGUgdXNlciBjYW4ndCBqdXN0Cj4gZGVjaWRlIHRoYXQgaXQgZG9lcyBhbmQg Y2hhbmdlIGl0Lgo+IEFsc28sIHRoaXMgaXMgbm90IGNoYW5nZWFibGUgYnkgdXNlciBzaW5jZSBp dCdzIG5vdCBleHBvc2VkIGJ5IGVuZ2luZS1jb25maWcKPiAobm9yIHNob3VsZCBpdCBiZSkuCgpz b21lIGFyZSBleHBvc2VkIAoKPiBUaGlzIGlzIHN0cmljdGx5IGZvciB0aGUgZW5naW5lLVZEU00g QVBJIGNvbXBhdGliaWxpdHksIG5vdCBmb3Igb3RoZXIgY29uZmlncwo+IHdoaWNoIGFyZSB2ZXJz aW9uIHNwZWNpZmljLgoKcmlnaHQsIGJ1dCBzdGlsbCB1c2VyIHNob3VsZCBiZSBhYmxlIHRvIHR1 cm4gZmVhdHVyZXMgb2ZmIGluIGNhc2Ugb2YgcHJvYmxlbXMsIApvciBjaGFuZ2UgaW4gc29tZSBj YXNlcyAoZm9yIGV4YW1wbGUgaXQgaXMgcG9zc2libGUgdG8gYWRkIHN1cHBvcnQgZm9yIG1vcmUg cG93ZXIgbWFuYWdlbWVudCBkZXZpY2VzLCBpIGtub3cgaXQgd2FzIGRvbmUgYnkgdXNlcnMpIApu byByZWFzb24gdG8gYmxvY2sgdGhpcyAKCj4gPiA+IFJlZ2FyZHMsCj4gPiAKPiAKPiA+ID4gTWlr ZQo+ID4gCj4gCgo+ID4gPiA+IFBsZWFzZSBzaGFyZSB5b3VyIHRob3VnaHRzIG9uIHRoaXMuCj4g PiA+IAo+ID4gCj4gCgo+ID4gPiA+IFRoYW5rcywKPiA+ID4gCj4gPiAKPiAKPiA+ID4gPiBLYW5h Z2FyYWoKPiA+ID4gCj4gPiAKPiAKCj4gPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4gPiAKPiAKPiA+ID4gRW5naW5lLWRldmVsIG1haWxpbmcgbGlz dAo+ID4gCj4gCj4gPiA+IEVuZ2luZS1kZXZlbEBvdmlydC5vcmcKPiA+IAo+IAo+ID4gPiBodHRw Oi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vZW5naW5lLWRldmVsCj4gPiAKPiAK Ci0tLS0tLT1fUGFydF8yMTA5NDExN18xNzQyNDkwMjMyLjEzODU4ODg5NzI1MjgKQ29udGVudC1U eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog cXVvdGVkLXByaW50YWJsZQoKPGh0bWw+PGJvZHk+PGRpdiBzdHlsZT0zRCJmb250LWZhbWlseTog dGltZXMgbmV3IHJvbWFuLCBuZXcgeW9yaywgdGltZXMsIHNlPQpyaWY7IGZvbnQtc2l6ZTogMTJw dDsgY29sb3I6ICMwMDAwMDAiPjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxociBpZD0K PTNEInp3Y2hyIj48YmxvY2txdW90ZSBzdHlsZT0zRCJib3JkZXItbGVmdDoycHggc29saWQgIzEw MTBGRjttYXJnaW4tbGVmdDo1PQpweDtwYWRkaW5nLWxlZnQ6NXB4O2NvbG9yOiMwMDA7Zm9udC13 ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtZGU9CmNvcmF0aW9uOm5vbmU7Zm9u dC1mYW1pbHk6SGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHQ7Ij48Yj5G cj0Kb206IDwvYj4iTWlrZSBLb2xlc25payIgJmx0O21rb2xlc25pQHJlZGhhdC5jb20mZ3Q7PGJy PjxiPlRvOiA8L2I+Ik9tZXIgRnJlPQpua2VsIiAmbHQ7b2ZyZW5rZWxAcmVkaGF0LmNvbSZndDs8 YnI+PGI+Q2M6IDwvYj4iS2FuYWdhcmFqIiAmbHQ7a21heWlsc2FAcmU9CmRoYXQuY29tJmd0Oywg ImVuZ2luZS1kZXZlbCIgJmx0O2VuZ2luZS1kZXZlbEBvdmlydC5vcmcmZ3Q7PGJyPjxiPlNlbnQ6 IDwvYj0KPlN1bmRheSwgRGVjZW1iZXIgMSwgMjAxMyAxMTowMTo1MCBBTTxicj48Yj5TdWJqZWN0 OiA8L2I+UmU6IFtFbmdpbmUtZGV2ZWxdPQogVXNpbmcgY29uZmlnIHZhbHVlczxicj48ZGl2Pjxi cj48L2Rpdj48ZGl2IHN0eWxlPTNEImZvbnQtZmFtaWx5OiB0aW1lcyBuZXc9CiByb21hbiwgbmV3 IHlvcmssIHRpbWVzLCBzZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogIzAwMDAwMCI+PGhy IGlkPTNEIj0KendjaHIiPjxibG9ja3F1b3RlIHN0eWxlPTNEImJvcmRlci1sZWZ0OjJweCBzb2xp ZCAjMTAxMEZGO21hcmdpbi1sZWZ0OjVweDtwPQphZGRpbmctbGVmdDo1cHg7Y29sb3I6IzAwMDtm b250LXdlaWdodDpub3JtYWw7Zm9udC1zdHlsZTpub3JtYWw7dGV4dC1kZWNvcmE9CnRpb246bm9u ZTtmb250LWZhbWlseTpIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTJwdDsi PjxkaXYgc3R5bD0KZT0zRCJmb250LWZhbWlseTogdGltZXMgbmV3IHJvbWFuLCBuZXcgeW9yaywg dGltZXMsIHNlcmlmOyBmb250LXNpemU6IDEycHQ7PQogY29sb3I6ICMwMDAwMDAiPjxkaXY+PGJy PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxociBpZD0zRCJ6d2NociI+PGJsb2NrcXVvdGU9CiBzdHls ZT0zRCJib3JkZXItbGVmdDoycHggc29saWQgIzEwMTBGRjttYXJnaW4tbGVmdDo1cHg7cGFkZGlu Zy1sZWZ0OjVweDtjbz0KbG9yOiMwMDA7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9y bWFsO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtZmFtPQppbHk6SGVsdmV0aWNhLEFyaWFsLHNh bnMtc2VyaWY7Zm9udC1zaXplOjEycHQ7Ij48Yj5Gcm9tOiA8L2I+Ik1pa2UgS29sZXNuaWs9CiIg Jmx0O21rb2xlc25pQHJlZGhhdC5jb20mZ3Q7PGJyPjxiPlRvOiA8L2I+IkthbmFnYXJhaiIgJmx0 O2ttYXlpbHNhQHJlZGhhdD0KLmNvbSZndDs8YnI+PGI+Q2M6IDwvYj4iZW5naW5lLWRldmVsIiAm bHQ7ZW5naW5lLWRldmVsQG92aXJ0Lm9yZyZndDs8YnI+PGI+PQpTZW50OiA8L2I+U3VuZGF5LCBE ZWNlbWJlciAxLCAyMDEzIDg6MDg6NDIgQU08YnI+PGI+U3ViamVjdDogPC9iPlJlOiBbRW5naW49 CmUtZGV2ZWxdIFVzaW5nIGNvbmZpZyB2YWx1ZXM8YnI+PGRpdj48YnI+PC9kaXY+PGRpdiBzdHls ZT0zRCJmb250LWZhbWlseTogdD0KaW1lcyBuZXcgcm9tYW4sIG5ldyB5b3JrLCB0aW1lcywgc2Vy aWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6ICMwMDAwMDAiPjxoPQpyIGlkPTNEInp3Y2hyIj48 YmxvY2txdW90ZSBzdHlsZT0zRCJib3JkZXItbGVmdDoycHggc29saWQgIzEwMTBGRjttYXJnaW4t bGU9CmZ0OjVweDtwYWRkaW5nLWxlZnQ6NXB4O2NvbG9yOiMwMDA7Zm9udC13ZWlnaHQ6bm9ybWFs O2ZvbnQtc3R5bGU6bm9ybWFsO3RleD0KdC1kZWNvcmF0aW9uOm5vbmU7Zm9udC1mYW1pbHk6SGVs dmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHQ7Ij5IPQppIEFsbCw8L2Jsb2Nr cXVvdGU+PGRpdj48YnI+PC9kaXY+PGRpdj5IaSBLYW5hZ2FyYWosPGJyPjwvZGl2PjxkaXY+PGJy PjwvZGk9CnY+PGJsb2NrcXVvdGUgc3R5bGU9M0QiYm9yZGVyLWxlZnQ6MnB4IHNvbGlkICMxMDEw RkY7bWFyZ2luLWxlZnQ6NXB4O3BhZGRpbj0KZy1sZWZ0OjVweDtjb2xvcjojMDAwO2ZvbnQtd2Vp Z2h0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1hbDt0ZXh0LWRlY29yYXRpb246PQpub25lO2ZvbnQt ZmFtaWx5OkhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB0OyI+PGJyPiBU aGUgYXJlIHM9Cm9tZSBpc3N1ZXMgYXJpc2luZyBpbiBjb25maWd1cmF0aW9ucyB3aGVuZXZlciB3 ZSBtb3ZlIHVwIG9uIHRoZSB2ZXJzaW9ucygzLj0KMyA9M0QmZ3Q7IDMuNCksIGJlY2F1c2Ugb2Yg dGhlIHdheSB3ZSBzdG9yZSBhbmQgaW50ZXJwcmV0IHRoZW0uPGJyPjxkaXY+PGJyPQo+PC9kaXY+ V2hlbmV2ZXIgdGhlcmUgaXMgYSBuZXcgY2x1c3RlciBsZXZlbCwgeW91IHdpbGwgbmVlZCB0byBh ZGQgYSBuZXcgZW49CnRyeSBmb3IgYWxsKG1vc3QpIG9mIHRoZSBjb25maWd1cmF0aW9uLiBNb3N0 bHkgYSBjb3B5IHBhc3RlIGlmIHlvdSBzZWUgZnJvbT0KIDMuMiB0byAzLjMsIGV4Y2VwdCBzb21l IENQVS9QTSB0eXBlIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuPGJyPiBCZXR0ZXIgb3B0PQppb24g d291bGQgYmUgdG8gaGF2ZSB0aGUgZGVmYXVsIGNvbmZpZyB2YWx1ZSBpbiBDb25maWdWYWx1ZXMu amF2YSBhbmQgdGhlIG89CnZlcnJpZGVzIHdpbGwgZ28gdG8gY29uZmlnLnNxbC4gSW4gdGhpcyBh cHByb2FjaCB5b3UgZG9uJ3QgbmVlZCBhIG5ldyBlbnRyaT0KZXMgdG8gY29uZmlnLnNxbCB3aGVu IHRoZXJlIGlzIGEgbmV3IGNsdXN0ZXIgbGV2ZWwuPGJyPjxkaXY+PGJyPjwvZGl2PkxldHMgPQp0 YWtlIGFuIGV4bWFwbGUsICJTdXBwb3J0Rm9yY2VDcmVhdGVWRyIgLSBUaGlzIGlzIHN1cHBvcnRl ZCBmcm9tIDMuMSBvbndhcmQ9CnMsPGJyPjxkaXY+PGJyPjwvZGl2PklmIHlvdSBsb29rIGF0IGNv bmZpZy5zcWwsIHlvdSB3aWxsIHNlZSBmb2xsb3dpbmcgZW50cj0KaWVzIDxicj4gc2VsZWN0IGZu X2RiX2FkZF9jb25maWdfdmFsdWUoJ1N1cHBvcnRGb3JjZUNyZWF0ZVZHJywnZmFsc2UnLCczLjAn PQopOyA8YnI+IHNlbGVjdCBmbl9kYl9hZGRfY29uZmlnX3ZhbHVlKCdTdXBwb3J0Rm9yY2VDcmVh dGVWRycsJ3RydWUnLCczLjEnKTs9CiA8YnI+IHNlbGVjdCBmbl9kYl9hZGRfY29uZmlnX3ZhbHVl KCdTdXBwb3J0Rm9yY2VDcmVhdGVWRycsJ3RydWUnLCczLjInKTsgPD0KYnI+IHNlbGVjdCBmbl9k Yl9hZGRfY29uZmlnX3ZhbHVlKCdTdXBwb3J0Rm9yY2VDcmVhdGVWRycsJ3RydWUnLCczLjMnKTs8 YnI+PQo8ZGl2Pjxicj48L2Rpdj5BbmQgaW4gQ29uZmlnVmFsdWVzLmphdmE8YnI+PGRpdj48YnI+ PC9kaXY+Jm5ic3A7Jm5ic3A7Jm5ic3A9CjsgQFR5cGVDb252ZXJ0ZXJBdHRyaWJ1dGUoQm9vbGVh bi5jbGFzcyk8YnI+ICZuYnNwOyZuYnNwOyZuYnNwOyBARGVmYXVsdFZhbD0KdWVBdHRyaWJ1dGUo ImZhbHNlIik8YnI+ICZuYnNwOyZuYnNwOyZuYnNwOyBTdXBwb3J0Rm9yY2VDcmVhdGVWRyw8YnI+ PGRpdj48PQpicj48L2Rpdj5Ob3cgaWYgdGhlcmUgaXMgMy40IGFuZCAzLjUsIHRoZSB1c2VyIG5l ZWRzIHRvIGFkZCAyIG1vcmUgZW50cmllcyw9CiB3aGljaCBpIGZlZWwgaXMgcmVkdW5kYW50Ljxi cj48ZGl2Pjxicj48L2Rpdj5JbnN0ZWFkIHdlIGNhbiBtYWtlIDxicj48ZGl2Pj0KPGJyPjwvZGl2 PiZuYnNwOyZuYnNwOyZuYnNwOyBAVHlwZUNvbnZlcnRlckF0dHJpYnV0ZShCb29sZWFuLmNsYXNz KTxicj4gJm5iPQpzcDsmbmJzcDsmbmJzcDsgQERlZmF1bHRWYWx1ZUF0dHJpYnV0ZSgidHJ1ZSIp PGJyPiAmbmJzcDsmbmJzcDsmbmJzcDsgU3VwcG89CnJ0Rm9yY2VDcmVhdGVWRyw8YnI+PGRpdj48 YnI+PC9kaXY+YW5kIGhhdmUgb25seSB0aGUgZm9sbG93aW5nIGluIGNvbmZpZy5zcT0KbDxicj4g c2VsZWN0IGZuX2RiX2FkZF9jb25maWdfdmFsdWUoJ1N1cHBvcnRGb3JjZUNyZWF0ZVZHJywnZmFs c2UnLCczLjAnKTs8PQpicj48ZGl2Pjxicj48L2Rpdj5pZiBhIHBhcnRpY3VsYXIgdmFsdWUoZm9y IGEgc3BlY2lmaWMgY2x1c3RlciBsZXZlbCkgaXMgbm89CnQgZm91bmQgaW4gQ29uZmlnLnNxbCwg dGhlIGZhbGxiYWNrIGlzIHRvIHVzZSB0aGUgdmFsdWUgYXZhaWxhYmxlIGluIENvbmZpZz0KVmFs dWVzLmphdmEuPC9ibG9ja3F1b3RlPjxkaXY+PGJyPjwvZGl2PjxkaXY+VGhpcyBoYXMgYWxyZWFk eSBiZWVuIGltcGxlbWVuPQp0ZWQsIHRoZXJlIGFyZSBtYW55ICJmZWF0dXJlIHN1cHBvcnRlZCIg Y29uZmlndXJhdGlvbnMgd29ya2luZyBsaWtlIHRoaXMgKGY9Cm9yIGV4YW1wbGUgR2x1c3RlclN1 cHBvcnQpLjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkkgdGhpbmsgYSBtb3JlIGludD0K ZXJlc3RpbmcgYXBwcm9hY2ggd291bGQgYmUgdG8gbW92ZSB0aGVzZSBvdXQgb2YgdGhlIERCIHNp bmNlIHRoZXNlIHZhbHVlcyBkPQpvbid0IHJlYWxseSBoYXYgZSBhIHJlc29uIHRvIGJlIHRoZXJl Ljxicj48L2Rpdj48ZGl2PlNpbmNlIHRoZSBlbnRpcmUgdGhpbmc9CiBpcyBhYnN0cmFjdGVkIGJ5 ICJHbHVzdGVyL0ZlYXR1cmVTdXBwb3J0ZWQiIGNsYXNzZXMgdGhlbiB3ZSBjYW4gZWFzaWx5IGNo YT0KbmdlIG1lY2hhbmlzbSAob2YgY291cnNlIHdoYXRldmVyIGNvZGUgaXMgbm90IHVzaW5nIGl0 IGNhbiBiZSBlYXNpbHkgY29udmVyPQp0ZWQgdG8gdXNlIHRoZSBtZWNoYW5pc20pPGJyPjwvZGl2 PjxkaXY+PGJyPjwvZGl2PjxkaXY+Rm9yIGV4YW1wbGUgYSBzaW1wbGU9CiBlbnVtIGNvdWxkIGRv IHRoZSB0cmljazo8YnI+PC9kaXY+PGRpdj4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLT0KLS0gRVhBTVBMRSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJy PjwvZGl2PjxkaXY+LyoqPGJyPiZuYnNwPQo7KiBDb252ZW5pZW5jZSBjbGFzcyB0byBjaGVjayBp ZiBhIGdsdXN0ZXIgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgb3Igbm90IGluIGE9Cm55IGdpdmVuIHZl cnNpb24uJmx0O2JyJmd0Ozxicj4mbmJzcDsqIE1ldGhvZHMgc2hvdWxkIGJlIG5hbWVkIGJ5IGZl YXR1cmUgYT0KbmQgYWNjZXB0IHZlcnNpb24gdG8gY2hlY2sgYWdhaW5zdC48YnI+Jm5ic3A7Ki88 YnI+cHVibGljIGNsYXNzIEdsdXN0ZXJGZWF0PQp1cmVTdXBwb3J0ZWQgezwvZGl2PjxkaXY+Jm5i c3A7Jm5ic3A7Jm5ic3A7IC8qKjxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs9CiAqIEBwYXJh bSB2ZXJzaW9uPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAqJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5icz0KcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgQ29tcGF0 aWJpbGl0eSB2ZXJzaW9uIHRvIGNoZWNrIGZvci48PQpicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgKiBAcmV0dXJuICZsdDtjb2RlJmd0O3RydWUmbHQ7L2NvZGUmZ3Q7IGlmIGdsdXM9CnRlciBz dXBwb3J0IGlzIGVuYWJsZWQsICZsdDtjb2RlJmd0O2ZhbHNlJmx0Oy9jb2RlJmd0OyBpZiBpdCdz IG5vdC48YnI+Jm5icz0KcDsmbmJzcDsmbmJzcDsmbmJzcDsgKi88YnI+Jm5ic3A7Jm5ic3A7Jm5i c3A7IHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBnbHVzdGVyPQooVmVyc2lvbiB2ZXJzaW9uKSB7PGJy PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gU3U9CnBw b3J0ZWRGZWF0dXJlcy5HTFVTVEVSLmlzU3VwcG9ydGVkT24odmVyc2lvbik7PGJyPiZuYnNwOyZu YnNwOyZuYnNwOyB9PGJyPj0KPGRpdj48YnI+PC9kaXY+Jm5ic3A7Jm5ic3A7Jm5ic3A7IC8qKjxi cj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKiBAcGFyYW0gPQp2ZXJzaW9uPGJyPiZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyAqJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm49 CmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgQ29tcGF0aWJpbGl0eSB2ZXJzaW9uIHRvIGNo ZWNrIGZvci48YnI+Jm5ic3A7Jj0KbmJzcDsmbmJzcDsmbmJzcDsgKiBAcmV0dXJuICZsdDtjb2Rl Jmd0O3RydWUmbHQ7L2NvZGUmZ3Q7IGlmIGdsdXN0ZXIgaGVhdnl3PQplaWdodCByZWZyZXNoIGlz IGVuYWJsZWQsICZsdDtjb2RlJmd0O2ZhbHNlJmx0Oy9jb2RlJmd0OyBpZiBpdCdzIG5vdC48YnI+ Jm49CmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKi88YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IHB1Ymxp YyBzdGF0aWMgYm9vbGVhbiByZWZyZT0Kc2hIZWF2eVdlaWdodChWZXJzaW9uIHZlcnNpb24pIHs8 YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5iPQpzcDsgcmV0dXJuIFN1 cHBvcnRlZEZlYXR1cmVzLlJFRlJFU0hfSEVBVllXRUlHSFQuaXNTdXBwb3J0ZWRPbih2ZXJzaW9u KTs8YnI9Cj4mbmJzcDsmbmJzcDsmbmJzcDsgfTxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2 PiZuYnNwOyZuYnNwOyZuYnNwOyAvKiBNbz0KcmUgbWV0aG9kcy4uLiAqLzwvZGl2PjxkaXY+PGJy PiZuYnNwOyZuYnNwOyZuYnNwOyBlbnVtIFN1cHBvcnRlZEZlYXR1cmVzIHs8PQpicj4mbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgR0xVU1RFUihWZXJzaW9uLnYzXzAp LDxicj4mbmI9CnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBSRUZSRVNI X0hFQVZZV0VJR0hUKFZlcnNpb24udjNfMCwgVj0KZXJzaW9uLnYzXzEpLDwvZGl2PjxkaXY+Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IC8qIE1vcmUgPQptZW1iZXJz ICovOzxicj48ZGl2Pjxicj48L2Rpdj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgcHI9Cml2YXRlIFNldCZsdDtWZXJzaW9uJmd0OyB1bnN1cHBvcnRlZFZlcnNpb25z ID0zRCBuZXcgSGFzaFNldCZsdDtWZXJzaW9uJmd0Oz0KKCk7PGJyPjxkaXY+PGJyPjwvZGl2PiZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBwcml2YXRlIFN1PQpwcG9y dGVkRmVhdHVyZXMoVmVyc2lvbi4uLiB2ZXJzaW9ucykgezxicj4mbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmI9CnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB1bnN1cHBv cnRlZFZlcnNpb25zLmFkZEFsbChBcnJheXMuYXNMaXN0KD0KdmVyc2lvbnMpKTs8YnI+Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IH08YnI+PGRpdj48YnI+PC9kPQpp dj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcHVibGljIGJvb2xl YW4gaXNTdXBwb3J0ZWRPbig9ClZlcnNpb24gdmVyc2lvbikgezxicj4mbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcD0KOyZuYnNwOyZuYnNwOyByZXR1 cm4gIXVuc3VwcG9ydGVkVmVyc2lvbnMuY29udGFpbnModmVyc2lvbik7PGJyPiZuYnNwOyZuYnNw PQo7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IH08YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7 IH08L2Rpdj48ZGl2Pi0tLS0tLS09Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQg RVhBTVBMRSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS08L2Rpdj48ZGl2 Pjxicj48L2Rpdj48ZGl2PlRob3VnaHRzPzwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2Pjxi cj51PQpubGVzcyBpIGRpZG4ndCB1bmRlcnN0YW5kIHNvbWV0aGluZywgdGhpcyBpcyBub3QgZ29v ZCw8YnI+PC9kaXY+PGRpdj50aGlzIHM9CmhvdWxkIHN0YXkgY29uZmlndXJhYmxlIGJ5IHRoZSB1 c2Vycyw8YnI+PC9kaXY+PGRpdj5mb3IgZXhhbXBsZSBpZiBzb21lIHVzZT0KciBleHBlcmllbmNl IHNvbWUgaXNzdWVzIHdpdGggYSBmZWF0dXJlIGFuZCB3YW50IHRvIHR1cm4gaXQgb2ZmL2NoYW5n ZSB0aGUgPQp2YWx1ZXMuLjwvZGl2PjxkaXY+KG5vdCBhbGwgdmVyc2lvbiBjb25maWd1cmF0aW9u IGFyZSBib29sZWFuLCBzb21lIGFyZSBkaWY9CmZlcmVudCB2YWx1ZXMgdG8gZGlmZmVyZW50IHZl cnNpb25zLCBsaWtlIGNwdS1saXN0KTwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT0KPjxkaXY+PGJy PjwvZGl2PjxkaXY+VGhpcyBpcyBmb3IgQVBJIGxldmVsIGNvbXBhdGliaWxpdHkuPGJyPjwvZGl2 PjxkaXY+SWYgPQpWRFNNIGRvZXNuJ3Qgc3VwcG9ydCBmb3IgZXhhbXBsZSBob3QgcGx1ZyBpbiAz LjEgdGhlbiB0aGUgdXNlciBjYW4ndCBqdXN0IGQ9CmVjaWRlIHRoYXQgaXQgZG9lcyBhbmQgY2hh bmdlIGl0Ljxicj48L2Rpdj48ZGl2PkFsc28sIHRoaXMgaXMgbm90IGNoYW5nZWFibD0KZSBieSB1 c2VyIHNpbmNlIGl0J3Mgbm90IGV4cG9zZWQgYnkgZW5naW5lLWNvbmZpZyAobm9yIHNob3VsZCBp dCBiZSkuPGJyPjwvPQpkaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+c29tZSBhcmUgZXhwb3Nl ZDxicj48L2Rpdj48YmxvY2txdW90ZSBzdHlsZT0zRCI9CmJvcmRlci1sZWZ0OjJweCBzb2xpZCAj MTAxMEZGO21hcmdpbi1sZWZ0OjVweDtwYWRkaW5nLWxlZnQ6NXB4O2NvbG9yOiMwMDA7Zj0Kb250 LXdlaWdodDpub3JtYWw7Zm9udC1zdHlsZTpub3JtYWw7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9u dC1mYW1pbHk6SGVsdmV0PQppY2EsQXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTJwdDsiPjxk aXYgc3R5bGU9M0QiZm9udC1mYW1pbHk6IHRpbWVzIG5ldyA9CnJvbWFuLCBuZXcgeW9yaywgdGlt ZXMsIHNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiAjMDAwMDAwIj48ZGl2PlRoaXMgaT0K cyBzdHJpY3RseSBmb3IgdGhlIGVuZ2luZS1WRFNNIEFQSSBjb21wYXRpYmlsaXR5LCBub3QgZm9y IG90aGVyIGNvbmZpZ3Mgd2hpPQpjaCBhcmUgdmVyc2lvbiBzcGVjaWZpYy48YnI+PC9kaXY+PC9k aXY+PC9ibG9ja3F1b3RlPjxkaXY+cmlnaHQsIGJ1dCBzdGlsbCA9CnVzZXIgc2hvdWxkIGJlIGFi bGUgdG8gdHVybiBmZWF0dXJlcyBvZmYgaW4gY2FzZSBvZiBwcm9ibGVtcyw8YnI+PC9kaXY+PGRp dj0KPm9yIGNoYW5nZSBpbiBzb21lIGNhc2VzIChmb3IgZXhhbXBsZSBpdCBpcyBwb3NzaWJsZSB0 byBhZGQgc3VwcG9ydCBmb3IgbW9yPQplIHBvd2VyIG1hbmFnZW1lbnQgZGV2aWNlcywgaSBrbm93 IGl0IHdhcyBkb25lIGJ5IHVzZXJzKTxicj48L2Rpdj48ZGl2Pm5vIHI9CmVhc29uIHRvIGJsb2Nr IHRoaXM8YnI+PC9kaXY+PGJsb2NrcXVvdGUgc3R5bGU9M0QiYm9yZGVyLWxlZnQ6MnB4IHNvbGlk ICMxMD0KMTBGRjttYXJnaW4tbGVmdDo1cHg7cGFkZGluZy1sZWZ0OjVweDtjb2xvcjojMDAwO2Zv bnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0PQp5bGU6bm9ybWFsO3RleHQtZGVjb3JhdGlvbjpub25l O2ZvbnQtZmFtaWx5OkhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQ9Ci1zaXplOjEycHQ7 Ij48ZGl2IHN0eWxlPTNEImZvbnQtZmFtaWx5OiB0aW1lcyBuZXcgcm9tYW4sIG5ldyB5b3JrLCB0 aW1lcywgcz0KZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogIzAwMDAwMCI+PGJsb2NrcXVv dGUgc3R5bGU9M0QiYm9yZGVyLWxlZnQ6MnB4PQogc29saWQgIzEwMTBGRjttYXJnaW4tbGVmdDo1 cHg7cGFkZGluZy1sZWZ0OjVweDtjb2xvcjojMDAwO2ZvbnQtd2VpZ2h0Om5vcm09CmFsO2ZvbnQt c3R5bGU6bm9ybWFsO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtZmFtaWx5OkhlbHZldGljYSxB cmlhbCxzYW5zLT0Kc2VyaWY7Zm9udC1zaXplOjEycHQ7Ij48ZGl2IHN0eWxlPTNEImZvbnQtZmFt aWx5OiB0aW1lcyBuZXcgcm9tYW4sIG5ldyB5b3JrPQosIHRpbWVzLCBzZXJpZjsgZm9udC1zaXpl OiAxMnB0OyBjb2xvcjogIzAwMDAwMCI+PGRpdj48YnI+PC9kaXY+PGJsb2NrcXVvdGU9CiBzdHls ZT0zRCJib3JkZXItbGVmdDoycHggc29saWQgIzEwMTBGRjttYXJnaW4tbGVmdDo1cHg7cGFkZGlu Zy1sZWZ0OjVweDtjbz0KbG9yOiMwMDA7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9y bWFsO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtZmFtPQppbHk6SGVsdmV0aWNhLEFyaWFsLHNh bnMtc2VyaWY7Zm9udC1zaXplOjEycHQ7Ij48ZGl2IHN0eWxlPTNEImZvbnQtZmFtaWx5OiA9CnRp bWVzIG5ldyByb21hbiwgbmV3IHlvcmssIHRpbWVzLCBzZXJpZjsgZm9udC1zaXplOiAxMnB0OyBj b2xvcjogIzAwMDAwMCI+PD0KZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PlJlZ2Fy ZHMsPGJyPjwvZGl2PjxkaXY+TWlrZTxicj48L2Rpdj48YmxvPQpja3F1b3RlIHN0eWxlPTNEImJv cmRlci1sZWZ0OjJweCBzb2xpZCAjMTAxMEZGO21hcmdpbi1sZWZ0OjVweDtwYWRkaW5nLWxlZnQ9 Cjo1cHg7Y29sb3I6IzAwMDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHlsZTpub3JtYWw7dGV4 dC1kZWNvcmF0aW9uOm5vbmU7Zj0Kb250LWZhbWlseTpIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJp Zjtmb250LXNpemU6MTJwdDsiPjxicj4gUGxlYXNlIHNoYXJlIHlvPQp1ciB0aG91Z2h0cyBvbiB0 aGlzLjxicj48ZGl2Pjxicj48L2Rpdj5UaGFua3MsPGJyPiBLYW5hZ2FyYWo8YnI+PGRpdj48YnI+ PC89CmRpdj48L2Jsb2NrcXVvdGU+PC9kaXY+PGJyPl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fPD0KYnI+RW5naW5lLWRldmVsIG1haWxpbmcgbGlzdDxicj5F bmdpbmUtZGV2ZWxAb3ZpcnQub3JnPGJyPmh0dHA6Ly9saXN0cy5vdmlyPQp0Lm9yZy9tYWlsbWFu L2xpc3RpbmZvL2VuZ2luZS1kZXZlbDxicj48L2Jsb2NrcXVvdGU+PGRpdj48YnI+PC9kaXY+PC9k aXY+PC89CmJsb2NrcXVvdGU+PGRpdj48YnI+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+ PGJyPjwvZGl2PjwvZGl2PjwvYm9keT48Lz0KaHRtbD4KLS0tLS0tPV9QYXJ0XzIxMDk0MTE3XzE3 NDI0OTAyMzIuMTM4NTg4ODk3MjUyOC0tCg== --===============2283725441311682563==-- From masayag at redhat.com Sun Dec 1 04:23:26 2013 Content-Type: multipart/mixed; boundary="===============2142434610911517548==" MIME-Version: 1.0 From: Moti Asayag To: devel at ovirt.org Subject: Re: [Engine-devel] Using config values Date: Sun, 01 Dec 2013 04:23:24 -0500 Message-ID: <1728493072.3569411.1385889804043.JavaMail.root@redhat.com> In-Reply-To: 823270883.21094118.1385888972530.JavaMail.root@redhat.com --===============2142434610911517548== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Omer Frenkel" > To: "Mike Kolesnik" > Cc: "engine-devel" > Sent: Sunday, December 1, 2013 11:09:32 AM > Subject: Re: [Engine-devel] Using config values > = > = > = > = > = > = > From: "Mike Kolesnik" > To: "Omer Frenkel" > Cc: "Kanagaraj" , "engine-devel" > > Sent: Sunday, December 1, 2013 11:01:50 AM > Subject: Re: [Engine-devel] Using config values > = > = > = > = > = > = > = > = > = > = > From: "Mike Kolesnik" > To: "Kanagaraj" > Cc: "engine-devel" > Sent: Sunday, December 1, 2013 8:08:42 AM > Subject: Re: [Engine-devel] Using config values > = > = > = > = > Hi All, > = > Hi Kanagaraj, > = > = > = > = > The are some issues arising in configurations whenever we move up on the > versions(3.3 =3D> 3.4), because of the way we store and interpret them. > = > Whenever there is a new cluster level, you will need to add a new entry f= or > all(most) of the configuration. Mostly a copy paste if you see from 3.2 to > 3.3, except some CPU/PM type related configurations. > Better option would be to have the defaul config value in ConfigValues.ja= va > and the overrides will go to config.sql. In this approach you don't need a > new entries to config.sql when there is a new cluster level. > = > Lets take an exmaple, "SupportForceCreateVG" - This is supported from 3.1 > onwards, > = > If you look at config.sql, you will see following entries > select fn_db_add_config_value('SupportForceCreateVG','false','3.0'); > select fn_db_add_config_value('SupportForceCreateVG','true','3.1'); > select fn_db_add_config_value('SupportForceCreateVG','true','3.2'); > select fn_db_add_config_value('SupportForceCreateVG','true','3.3'); > = > And in ConfigValues.java > = > @TypeConverterAttribute(Boolean.class) > @DefaultValueAttribute("false") > SupportForceCreateVG, > = > Now if there is 3.4 and 3.5, the user needs to add 2 more entries, which i > feel is redundant. > = > Instead we can make > = > @TypeConverterAttribute(Boolean.class) > @DefaultValueAttribute("true") > SupportForceCreateVG, > = > and have only the following in config.sql > select fn_db_add_config_value('SupportForceCreateVG','false','3.0'); > = > if a particular value(for a specific cluster level) is not found in > Config.sql, the fallback is to use the value available in ConfigValues.ja= va. > = > This has already been implemented, there are many "feature supported" > configurations working like this (for example GlusterSupport). > = > I think a more interesting approach would be to move these out of the DB > since these values don't really hav e a reson to be there. > Since the entire thing is abstracted by "Gluster/FeatureSupported" classes > then we can easily change mechanism (of course whatever code is not using= it > can be easily converted to use the mechanism) > = > For example a simple enum could do the trick: > ------------------------------------- EXAMPLE > ------------------------------------- > /** > * Convenience class to check if a gluster feature is supported or not in = any > given version.
> * Methods should be named by feature and accept version to check against. > */ > public class GlusterFeatureSupported { > /** > * @param version > * Compatibility version to check for. > * @return true if gluster support is enabled, false > if it's not. > */ > public static boolean gluster(Version version) { > return SupportedFeatures.GLUSTER.isSupportedOn(version); > } > = > /** > * @param version > * Compatibility version to check for. > * @return true if gluster heavyweight refresh is enabled, > false if it's not. > */ > public static boolean refreshHeavyWeight(Version version) { > return SupportedFeatures.REFRESH_HEAVYWEIGHT.isSupportedOn(version); > } > = > /* More methods... */ > = > enum SupportedFeatures { > GLUSTER(Version.v3_0), > REFRESH_HEAVYWEIGHT(Version.v3_0, Version.v3_1), > /* More members */; > = > private Set unsupportedVersions =3D new HashSet(); > = > private SupportedFeatures(Version... versions) { > unsupportedVersions.addAll(Arrays.asList(versions)); > } > = > public boolean isSupportedOn(Version version) { > return !unsupportedVersions.contains(version); > } > } > ------------------------------------- END EXAMPLE > ------------------------------------- > = > Thoughts? > = > unless i didn't understand something, this is not good, > this should stay configurable by the users, > for example if some user experience some issues with a feature and want to > turn it off/change the values.. > (not all version configuration are boolean, some are different values to > different versions, like cpu-list) > = > This is for API level compatibility. > If VDSM doesn't support for example hot plug in 3.1 then the user can't j= ust > decide that it does and change it. > Also, this is not changeable by user since it's not exposed by engine-con= fig > (nor should it be). > some are exposed > = > = > = > This is strictly for the engine-VDSM API compatibility, not for other con= figs > which are version specific. > right, but still user should be able to turn features off in case of > problems, > or change in some cases (for example it is possible to add support for mo= re > power management devices, i know it was done by users) > no reason to block this > = In this case you add additional protection level to block user from enablin= g features for unsupported cluster levels. However it sounds more reasonable than requiring the user to use a lower cl= uster level which enforces him to give up on other features. > = > = > = > = > = > = > = > = > = > = > = > Regards, > Mike > = > = > = > Please share your thoughts on this. > = > Thanks, > Kanagaraj > = > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel > = > = > = > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============2142434610911517548==-- From mkolesni at redhat.com Sun Dec 1 04:26:33 2013 Content-Type: multipart/mixed; boundary="===============6670085761059361610==" MIME-Version: 1.0 From: Mike Kolesnik To: devel at ovirt.org Subject: Re: [Engine-devel] Using config values Date: Sun, 01 Dec 2013 04:26:32 -0500 Message-ID: <2111239521.43208505.1385889991988.JavaMail.root@redhat.com> In-Reply-To: 823270883.21094118.1385888972530.JavaMail.root@redhat.com --===============6670085761059361610== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ------=3D_Part_43208504_1304306350.1385889991982 Content-Type: text/plain; charset=3Dutf-8 Content-Transfer-Encoding: 7bit Regards, = Mike = ----- Original Message ----- > ----- Original Message ----- > > From: "Mike Kolesnik" > = > > To: "Omer Frenkel" > = > > Cc: "Kanagaraj" , "engine-devel" > > > = > > Sent: Sunday, December 1, 2013 11:01:50 AM > = > > Subject: Re: [Engine-devel] Using config values > = > > ----- Original Message ----- > = > > > ----- Original Message ----- > > = > = > > > > From: "Mike Kolesnik" > > > = > > = > = > > > > To: "Kanagaraj" > > > = > > = > = > > > > Cc: "engine-devel" > > > = > > = > = > > > > Sent: Sunday, December 1, 2013 8:08:42 AM > > > = > > = > = > > > > Subject: Re: [Engine-devel] Using config values > > > = > > = > = > > > > ----- Original Message ----- > > > = > > = > = > > > > > Hi All, > > > > = > > > = > > = > = > > > > Hi Kanagaraj, > > > = > > = > = > > > > > The are some issues arising in configurations whenever we move up= on > > > > > the > > > > > versions(3.3 =3D> 3.4), because of the way we store and interpret= them. > > > > = > > > = > > = > = > > > > > Whenever there is a new cluster level, you will need to add a new > > > > > entry > > > > > for > > > > > all(most) of the configuration. Mostly a copy paste if you see fr= om > > > > > 3.2 > > > > > to > > > > > 3.3, except some CPU/PM type related configurations. > > > > = > > > = > > = > = > > > > > Better option would be to have the defaul config value in > > > > > ConfigValues.java > > > > > and the overrides will go to config.sql. In this approach you don= 't > > > > > need > > > > > a > > > > > new entries to config.sql when there is a new cluster level. > > > > = > > > = > > = > = > > > > > Lets take an exmaple, "SupportForceCreateVG" - This is supported = from > > > > > 3.1 > > > > > onwards, > > > > = > > > = > > = > = > > > > > If you look at config.sql, you will see following entries > > > > = > > > = > > = > = > > > > > select fn_db_add_config_value('SupportForceCreateVG','false','3.0= '); > > > > = > > > = > > = > = > > > > > select fn_db_add_config_value('SupportForceCreateVG','true','3.1'= ); > > > > = > > > = > > = > = > > > > > select fn_db_add_config_value('SupportForceCreateVG','true','3.2'= ); > > > > = > > > = > > = > = > > > > > select fn_db_add_config_value('SupportForceCreateVG','true','3.3'= ); > > > > = > > > = > > = > = > > > > > And in ConfigValues.java > > > > = > > > = > > = > = > > > > > @TypeConverterAttribute(Boolean.class) > > > > = > > > = > > = > = > > > > > @DefaultValueAttribute("false") > > > > = > > > = > > = > = > > > > > SupportForceCreateVG, > > > > = > > > = > > = > = > > > > > Now if there is 3.4 and 3.5, the user needs to add 2 more entries, > > > > > which > > > > > i > > > > > feel is redundant. > > > > = > > > = > > = > = > > > > > Instead we can make > > > > = > > > = > > = > = > > > > > @TypeConverterAttribute(Boolean.class) > > > > = > > > = > > = > = > > > > > @DefaultValueAttribute("true") > > > > = > > > = > > = > = > > > > > SupportForceCreateVG, > > > > = > > > = > > = > = > > > > > and have only the following in config.sql > > > > = > > > = > > = > = > > > > > select fn_db_add_config_value('SupportForceCreateVG','false','3.0= '); > > > > = > > > = > > = > = > > > > > if a particular value(for a specific cluster level) is not found = in > > > > > Config.sql, the fallback is to use the value available in > > > > > ConfigValues.java. > > > > = > > > = > > = > = > > > > This has already been implemented, there are many "feature supporte= d" > > > > configurations working like this (for example GlusterSupport). > > > = > > = > = > > > > I think a more interesting approach would be to move these out of t= he > > > > DB > > > > since these values don't really hav e a reson to be there. > > > = > > = > = > > > > Since the entire thing is abstracted by "Gluster/FeatureSupported" > > > > classes > > > > then we can easily change mechanism (of course whatever code is not > > > > using > > > > it > > > > can be easily converted to use the mechanism) > > > = > > = > = > > > > For example a simple enum could do the trick: > > > = > > = > = > > > > ------------------------------------- EXAMPLE > > > > ------------------------------------- > > > = > > = > = > > > > /** > > > = > > = > = > > > > * Convenience class to check if a gluster feature is supported or n= ot > > > > in > > > > any > > > > given version.
> > > = > > = > = > > > > * Methods should be named by feature and accept version to check > > > > against. > > > = > > = > = > > > > */ > > > = > > = > = > > > > public class GlusterFeatureSupported { > > > = > > = > = > > > > /** > > > = > > = > = > > > > * @param version > > > = > > = > = > > > > * Compatibility version to check for. > > > = > > = > = > > > > * @return true if gluster support is enabled, > > > > false > > > > if it's not. > > > = > > = > = > > > > */ > > > = > > = > = > > > > public static boolean gluster(Version version) { > > > = > > = > = > > > > return SupportedFeatures.GLUSTER.isSupportedOn(version); > > > = > > = > = > > > > } > > > = > > = > = > > > > /** > > > = > > = > = > > > > * @param version > > > = > > = > = > > > > * Compatibility version to check for. > > > = > > = > = > > > > * @return true if gluster heavyweight refresh is enabl= ed, > > > > false if it's not. > > > = > > = > = > > > > */ > > > = > > = > = > > > > public static boolean refreshHeavyWeight(Version version) { > > > = > > = > = > > > > return SupportedFeatures.REFRESH_HEAVYWEIGHT.isSupportedOn(version); > > > = > > = > = > > > > } > > > = > > = > = > > > > /* More methods... */ > > > = > > = > = > > > > enum SupportedFeatures { > > > = > > = > = > > > > GLUSTER(Version.v3_0), > > > = > > = > = > > > > REFRESH_HEAVYWEIGHT(Version.v3_0, Version.v3_1), > > > = > > = > = > > > > /* More members */; > > > = > > = > = > > > > private Set unsupportedVersions =3D new HashSet(); > > > = > > = > = > > > > private SupportedFeatures(Version... versions) { > > > = > > = > = > > > > unsupportedVersions.addAll(Arrays.asList(versions)); > > > = > > = > = > > > > } > > > = > > = > = > > > > public boolean isSupportedOn(Version version) { > > > = > > = > = > > > > return !unsupportedVersions.contains(version); > > > = > > = > = > > > > } > > > = > > = > = > > > > } > > > = > > = > = > > > > ------------------------------------- END EXAMPLE > > > > ------------------------------------- > > > = > > = > = > > > > Thoughts? > > > = > > = > = > > > unless i didn't understand something, this is not good, > > = > = > > > this should stay configurable by the users, > > = > = > > > for example if some user experience some issues with a feature and wa= nt > > > to > > > turn it off/change the values.. > > = > = > > > (not all version configuration are boolean, some are different values= to > > > different versions, like cpu-list) > > = > = > > This is for API level compatibility. > = > > If VDSM doesn't support for example hot plug in 3.1 then the user can't > > just > > decide that it does and change it. > = > > Also, this is not changeable by user since it's not exposed by > > engine-config > > (nor should it be). > = > some are exposed If there is such a thing then its a design flaw. = The only one I see in FeatureSupported class is EnableMACAntiSpoofingFilter= Rules = This should be split into 2: = MACAntiSpoofingFilterRulesSupported - which is used to determine API compat= ibility = EnableMACAntiSpoofingFilterRules - which the user can set to determine syst= em behaviour = I see no reason why to allow user to set EnableMACAntiSpoofingFilterRules= =3Dtrue for 3.0 since it will not work so it's just confusing to him = > > This is strictly for the engine-VDSM API compatibility, not for other > > configs > > which are version specific. > = > right, but still user should be able to turn features off in case of > problems, > or change in some cases (for example it is possible to add support for mo= re > power management devices, i know it was done by users) > no reason to block this Again not talking about all the config values, strictly the ones that are (= or should be) in FeatureSupported class. = In case we want to allow user to tweak behavior there, we can always do as = I suggested for EnableMACAntiSpoofingFilterRules = > > > > Regards, > > > = > > = > = > > > > Mike > > > = > > = > = > > > > > Please share your thoughts on this. > > > > = > > > = > > = > = > > > > > Thanks, > > > > = > > > = > > = > = > > > > > Kanagaraj > > > > = > > > = > > = > = > > > > _______________________________________________ > > > = > > = > = > > > > Engine-devel mailing list > > > = > > = > = > > > > Engine-devel(a)ovirt.org > > > = > > = > = > > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > = > > = > = ------=3D_Part_43208504_1304306350.1385889991982 Content-Type: text/html; charset=3Dutf-8 Content-Transfer-Encoding: quoted-printable


Regards,
Mike





Fr= =3D om: "Mike Kolesnik" <mkolesni(a)redhat.com>
To: "Omer F= re=3D nkel" <ofrenkel(a)redhat.com>
Cc: "Kanagaraj" <kmayilsa(= a)re=3D dhat.com>, "engine-devel" <engine-devel(a)ovirt.org>
Sent: <= /b=3D >Sunday, December 1, 2013 11:01:50 AM
Subject: Re: [Engine-devel]= =3D Using config values





From: "Mike Kolesnik= =3D " <mkolesni(a)redhat.com>
To: "Kanagaraj" <kmayilsa(a)re= dhat=3D .com>
Cc: "engine-devel" <engine-devel(a)ovirt.org>
<= b>=3D Sent:
Sunday, December 1, 2013 8:08:42 AM
Subject: Re: [Engin= =3D e-devel] Using config values

H= =3D i All,

Hi Kanagaraj,


The are s= =3D ome issues arising in configurations whenever we move up on the versions(3.= =3D 3 =3D3D> 3.4), because of the way we store and interpret them.
<= br=3D >
Whenever there is a new cluster level, you will need to add a new en= =3D try for all(most) of the configuration. Mostly a copy paste if you see from= =3D 3.2 to 3.3, except some CPU/PM type related configurations.
Better opt= =3D ion would be to have the defaul config value in ConfigValues.java and the o= =3D verrides will go to config.sql. In this approach you don't need a new entri= =3D es to config.sql when there is a new cluster level.

Lets = =3D take an exmaple, "SupportForceCreateVG" - This is supported from 3.1 onward= =3D s,

If you look at config.sql, you will see following entr= =3D ies
select fn_db_add_config_value('SupportForceCreateVG','false','3.0'= =3D );
select fn_db_add_config_value('SupportForceCreateVG','true','3.1');= =3D
select fn_db_add_config_value('SupportForceCreateVG','true','3.2'); <= =3D br> select fn_db_add_config_value('SupportForceCreateVG','true','3.3');
= =3D

And in ConfigValues.java

   = =3D ; @TypeConverterAttribute(Boolean.class)
    @DefaultVal= =3D ueAttribute("false")
    SupportForceCreateVG,
<= =3D br>
Now if there is 3.4 and 3.5, the user needs to add 2 more entries,= =3D which i feel is redundant.

Instead we can make
= =3D
    @TypeConverterAttribute(Boolean.class)
&nb= =3D sp;   @DefaultValueAttribute("true")
    Suppo= =3D rtForceCreateVG,

and have only the following in config.sq= =3D l
select fn_db_add_config_value('SupportForceCreateVG','false','3.0');<= =3D br>

if a particular value(for a specific cluster level) is no= =3D t found in Config.sql, the fallback is to use the value available in Config= =3D Values.java.

This has already been implemen= =3D ted, there are many "feature supported" configurations working like this (f= =3D or example GlusterSupport).

I think a more int= =3D eresting approach would be to move these out of the DB since these values d= =3D on't really hav e a reson to be there.
Since the entire thing= =3D is abstracted by "Gluster/FeatureSupported" classes then we can easily cha= =3D nge mechanism (of course whatever code is not using it can be easily conver= =3D ted to use the mechanism)

For example a simple= =3D enum could do the trick:
-----------------------------------= =3D -- EXAMPLE -------------------------------------
/**
 = =3D ;* Convenience class to check if a gluster feature is supported or not in a= =3D ny given version.<br>
 * Methods should be named by feature a= =3D nd accept version to check against.
 */
public class GlusterFeat= =3D ureSupported {
    /**
    = =3D * @param version
     *    &nbs= =3D p;       Compatibility version to check for.<= =3D br>     * @return <code>true</code> if glus= =3D ter support is enabled, <code>false</code> if it's not.
&nbs= =3D p;    */
    public static boolean gluster= =3D (Version version) {
        return Su= =3D pportedFeatures.GLUSTER.isSupportedOn(version);
    }
= =3D

    /**
     * @param = =3D version
     *      &n= =3D bsp;     Compatibility version to check for.
 &= =3D nbsp;   * @return <code>true</code> if gluster heavyw= =3D eight refresh is enabled, <code>false</code> if it's not.
&n= =3D bsp;    */
    public static boolean refre= =3D shHeavyWeight(Version version) {
      &nb= =3D sp; return SupportedFeatures.REFRESH_HEAVYWEIGHT.isSupportedOn(version);    }

    /* Mo= =3D re methods... */

    enum SupportedFeatures {<= =3D br>        GLUSTER(Version.v3_0),
&nb= =3D sp;       REFRESH_HEAVYWEIGHT(Version.v3_0, V= =3D ersion.v3_1),
        /* More = =3D members */;

        pr= =3D ivate Set<Version> unsupportedVersions =3D3D new HashSet<Version&g= t;=3D ();

        private Su= =3D pportedFeatures(Version... versions) {
     &nb= =3D sp;      unsupportedVersions.addAll(Arrays.asList(= =3D versions));
        }

        public boolean isSupportedOn(= =3D Version version) {
         = =3D ;   return !unsupportedVersions.contains(version);
  = =3D ;      }
    }
-------= =3D ------------------------------ END EXAMPLE --------------------------------= =3D -----

Thoughts?

u= =3D nless i didn't understand something, this is not good,
this s= =3D hould stay configurable by the users,
for example if some use= =3D r experience some issues with a feature and want to turn it off/change the = =3D values..
(not all version configuration are boolean, some are dif= =3D ferent values to different versions, like cpu-list)

This is for API level compatibility.
If = =3D VDSM doesn't support for example hot plug in 3.1 then the user can't just d= =3D ecide that it does and change it.
Also, this is not changeabl= =3D e by user since it's not exposed by engine-config (nor should it be).
some are exposed
I= =3D f there is such a thing then its a design flaw.

The only one I see in FeatureSupported class is EnableMACAntiSpoofingFilt= =3D erRules
This should be split into 2:
MACAntiSpo= =3D ofingFilterRulesSupported - which is used to determine API compatibility
EnableMACAntiSpoofingFilterRules - which the user can set to de= =3D termine system behaviour

I see no reason why t= =3D o allow user to set EnableMACAntiSpoofingFilterRules=3D3Dtrue for 3.0 since= i=3D t will not work so it's just confusing to him

<= =3D /div>
This is strictly for the engine-VDSM API compatibility= =3D , not for other configs which are version specific.
right, but still user should be able to turn features off in case= =3D of problems,
or change in some cases (for example it is poss= =3D ible to add support for more power management devices, i know it was done b= =3D y users)
no reason to block this
Again not talking about all the config values, strictly the ones that are = =3D (or should be) in FeatureSupported class.

In c= =3D ase we want to allow user to tweak behavior there, we can always do as I su= =3D ggested for EnableMACAntiSpoofingFilterRules

= =3D



= =3D
Regards,
Mike

Please share your thoughts on this.

Thanks,
Kanagaraj

= =3D
_______________________________________________
Engine-devel mailing= =3D list
Engine-devel(a)ovirt.org
http://lists.ovirt.org/mailman/listinf= o/=3D engine-devel




------=3D_Part_43208504_1304306350.1385889991982-- --===============6670085761059361610== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS0tLS0tPV9QYXJ0XzQzMjA4NTA0XzEzMDQzMDYzNTAuMTM4NTg4OTk5MTk4MgpDb250ZW50LVR5 cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog N2JpdAoKUmVnYXJkcywgCk1pa2UgCgotLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tCgo+IC0t LS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0KCj4gPiBGcm9tOiAiTWlrZSBLb2xlc25payIgPG1r b2xlc25pQHJlZGhhdC5jb20+Cj4gCj4gPiBUbzogIk9tZXIgRnJlbmtlbCIgPG9mcmVua2VsQHJl ZGhhdC5jb20+Cj4gCj4gPiBDYzogIkthbmFnYXJhaiIgPGttYXlpbHNhQHJlZGhhdC5jb20+LCAi ZW5naW5lLWRldmVsIgo+ID4gPGVuZ2luZS1kZXZlbEBvdmlydC5vcmc+Cj4gCj4gPiBTZW50OiBT dW5kYXksIERlY2VtYmVyIDEsIDIwMTMgMTE6MDE6NTAgQU0KPiAKPiA+IFN1YmplY3Q6IFJlOiBb RW5naW5lLWRldmVsXSBVc2luZyBjb25maWcgdmFsdWVzCj4gCgo+ID4gLS0tLS0gT3JpZ2luYWwg TWVzc2FnZSAtLS0tLQo+IAoKPiA+ID4gLS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAtLS0tLQo+ID4g Cj4gCgo+ID4gPiA+IEZyb206ICJNaWtlIEtvbGVzbmlrIiA8bWtvbGVzbmlAcmVkaGF0LmNvbT4K PiA+ID4gCj4gPiAKPiAKPiA+ID4gPiBUbzogIkthbmFnYXJhaiIgPGttYXlpbHNhQHJlZGhhdC5j b20+Cj4gPiA+IAo+ID4gCj4gCj4gPiA+ID4gQ2M6ICJlbmdpbmUtZGV2ZWwiIDxlbmdpbmUtZGV2 ZWxAb3ZpcnQub3JnPgo+ID4gPiAKPiA+IAo+IAo+ID4gPiA+IFNlbnQ6IFN1bmRheSwgRGVjZW1i ZXIgMSwgMjAxMyA4OjA4OjQyIEFNCj4gPiA+IAo+ID4gCj4gCj4gPiA+ID4gU3ViamVjdDogUmU6 IFtFbmdpbmUtZGV2ZWxdIFVzaW5nIGNvbmZpZyB2YWx1ZXMKPiA+ID4gCj4gPiAKPiAKCj4gPiA+ ID4gLS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAtLS0tLQo+ID4gPiAKPiA+IAo+IAoKPiA+ID4gPiA+ IEhpIEFsbCwKPiA+ID4gPiAKPiA+ID4gCj4gPiAKPiAKPiA+ID4gPiBIaSBLYW5hZ2FyYWosCj4g PiA+IAo+ID4gCj4gCgo+ID4gPiA+ID4gVGhlIGFyZSBzb21lIGlzc3VlcyBhcmlzaW5nIGluIGNv bmZpZ3VyYXRpb25zIHdoZW5ldmVyIHdlIG1vdmUgdXAgb24KPiA+ID4gPiA+IHRoZQo+ID4gPiA+ ID4gdmVyc2lvbnMoMy4zID0+IDMuNCksIGJlY2F1c2Ugb2YgdGhlIHdheSB3ZSBzdG9yZSBhbmQg aW50ZXJwcmV0IHRoZW0uCj4gPiA+ID4gCj4gPiA+IAo+ID4gCj4gCgo+ID4gPiA+ID4gV2hlbmV2 ZXIgdGhlcmUgaXMgYSBuZXcgY2x1c3RlciBsZXZlbCwgeW91IHdpbGwgbmVlZCB0byBhZGQgYSBu ZXcKPiA+ID4gPiA+IGVudHJ5Cj4gPiA+ID4gPiBmb3IKPiA+ID4gPiA+IGFsbChtb3N0KSBvZiB0 aGUgY29uZmlndXJhdGlvbi4gTW9zdGx5IGEgY29weSBwYXN0ZSBpZiB5b3Ugc2VlIGZyb20KPiA+ ID4gPiA+IDMuMgo+ID4gPiA+ID4gdG8KPiA+ID4gPiA+IDMuMywgZXhjZXB0IHNvbWUgQ1BVL1BN IHR5cGUgcmVsYXRlZCBjb25maWd1cmF0aW9ucy4KPiA+ID4gPiAKPiA+ID4gCj4gPiAKPiAKPiA+ ID4gPiA+IEJldHRlciBvcHRpb24gd291bGQgYmUgdG8gaGF2ZSB0aGUgZGVmYXVsIGNvbmZpZyB2 YWx1ZSBpbgo+ID4gPiA+ID4gQ29uZmlnVmFsdWVzLmphdmEKPiA+ID4gPiA+IGFuZCB0aGUgb3Zl cnJpZGVzIHdpbGwgZ28gdG8gY29uZmlnLnNxbC4gSW4gdGhpcyBhcHByb2FjaCB5b3UgZG9uJ3QK PiA+ID4gPiA+IG5lZWQKPiA+ID4gPiA+IGEKPiA+ID4gPiA+IG5ldyBlbnRyaWVzIHRvIGNvbmZp Zy5zcWwgd2hlbiB0aGVyZSBpcyBhIG5ldyBjbHVzdGVyIGxldmVsLgo+ID4gPiA+IAo+ID4gPiAK PiA+IAo+IAoKPiA+ID4gPiA+IExldHMgdGFrZSBhbiBleG1hcGxlLCAiU3VwcG9ydEZvcmNlQ3Jl YXRlVkciIC0gVGhpcyBpcyBzdXBwb3J0ZWQgZnJvbQo+ID4gPiA+ID4gMy4xCj4gPiA+ID4gPiBv bndhcmRzLAo+ID4gPiA+IAo+ID4gPiAKPiA+IAo+IAoKPiA+ID4gPiA+IElmIHlvdSBsb29rIGF0 IGNvbmZpZy5zcWwsIHlvdSB3aWxsIHNlZSBmb2xsb3dpbmcgZW50cmllcwo+ID4gPiA+IAo+ID4g PiAKPiA+IAo+IAo+ID4gPiA+ID4gc2VsZWN0IGZuX2RiX2FkZF9jb25maWdfdmFsdWUoJ1N1cHBv cnRGb3JjZUNyZWF0ZVZHJywnZmFsc2UnLCczLjAnKTsKPiA+ID4gPiAKPiA+ID4gCj4gPiAKPiAK PiA+ID4gPiA+IHNlbGVjdCBmbl9kYl9hZGRfY29uZmlnX3ZhbHVlKCdTdXBwb3J0Rm9yY2VDcmVh dGVWRycsJ3RydWUnLCczLjEnKTsKPiA+ID4gPiAKPiA+ID4gCj4gPiAKPiAKPiA+ID4gPiA+IHNl bGVjdCBmbl9kYl9hZGRfY29uZmlnX3ZhbHVlKCdTdXBwb3J0Rm9yY2VDcmVhdGVWRycsJ3RydWUn LCczLjInKTsKPiA+ID4gPiAKPiA+ID4gCj4gPiAKPiAKPiA+ID4gPiA+IHNlbGVjdCBmbl9kYl9h ZGRfY29uZmlnX3ZhbHVlKCdTdXBwb3J0Rm9yY2VDcmVhdGVWRycsJ3RydWUnLCczLjMnKTsKPiA+ ID4gPiAKPiA+ID4gCj4gPiAKPiAKCj4gPiA+ID4gPiBBbmQgaW4gQ29uZmlnVmFsdWVzLmphdmEK PiA+ID4gPiAKPiA+ID4gCj4gPiAKPiAKCj4gPiA+ID4gPiBAVHlwZUNvbnZlcnRlckF0dHJpYnV0 ZShCb29sZWFuLmNsYXNzKQo+ID4gPiA+IAo+ID4gPiAKPiA+IAo+IAo+ID4gPiA+ID4gQERlZmF1 bHRWYWx1ZUF0dHJpYnV0ZSgiZmFsc2UiKQo+ID4gPiA+IAo+ID4gPiAKPiA+IAo+IAo+ID4gPiA+ ID4gU3VwcG9ydEZvcmNlQ3JlYXRlVkcsCj4gPiA+ID4gCj4gPiA+IAo+ID4gCj4gCgo+ID4gPiA+ ID4gTm93IGlmIHRoZXJlIGlzIDMuNCBhbmQgMy41LCB0aGUgdXNlciBuZWVkcyB0byBhZGQgMiBt b3JlIGVudHJpZXMsCj4gPiA+ID4gPiB3aGljaAo+ID4gPiA+ID4gaQo+ID4gPiA+ID4gZmVlbCBp cyByZWR1bmRhbnQuCj4gPiA+ID4gCj4gPiA+IAo+ID4gCj4gCgo+ID4gPiA+ID4gSW5zdGVhZCB3 ZSBjYW4gbWFrZQo+ID4gPiA+IAo+ID4gPiAKPiA+IAo+IAoKPiA+ID4gPiA+IEBUeXBlQ29udmVy dGVyQXR0cmlidXRlKEJvb2xlYW4uY2xhc3MpCj4gPiA+ID4gCj4gPiA+IAo+ID4gCj4gCj4gPiA+ ID4gPiBARGVmYXVsdFZhbHVlQXR0cmlidXRlKCJ0cnVlIikKPiA+ID4gPiAKPiA+ID4gCj4gPiAK PiAKPiA+ID4gPiA+IFN1cHBvcnRGb3JjZUNyZWF0ZVZHLAo+ID4gPiA+IAo+ID4gPiAKPiA+IAo+ IAoKPiA+ID4gPiA+IGFuZCBoYXZlIG9ubHkgdGhlIGZvbGxvd2luZyBpbiBjb25maWcuc3FsCj4g PiA+ID4gCj4gPiA+IAo+ID4gCj4gCj4gPiA+ID4gPiBzZWxlY3QgZm5fZGJfYWRkX2NvbmZpZ192 YWx1ZSgnU3VwcG9ydEZvcmNlQ3JlYXRlVkcnLCdmYWxzZScsJzMuMCcpOwo+ID4gPiA+IAo+ID4g PiAKPiA+IAo+IAoKPiA+ID4gPiA+IGlmIGEgcGFydGljdWxhciB2YWx1ZShmb3IgYSBzcGVjaWZp YyBjbHVzdGVyIGxldmVsKSBpcyBub3QgZm91bmQgaW4KPiA+ID4gPiA+IENvbmZpZy5zcWwsIHRo ZSBmYWxsYmFjayBpcyB0byB1c2UgdGhlIHZhbHVlIGF2YWlsYWJsZSBpbgo+ID4gPiA+ID4gQ29u ZmlnVmFsdWVzLmphdmEuCj4gPiA+ID4gCj4gPiA+IAo+ID4gCj4gCj4gPiA+ID4gVGhpcyBoYXMg YWxyZWFkeSBiZWVuIGltcGxlbWVudGVkLCB0aGVyZSBhcmUgbWFueSAiZmVhdHVyZSBzdXBwb3J0 ZWQiCj4gPiA+ID4gY29uZmlndXJhdGlvbnMgd29ya2luZyBsaWtlIHRoaXMgKGZvciBleGFtcGxl IEdsdXN0ZXJTdXBwb3J0KS4KPiA+ID4gCj4gPiAKPiAKCj4gPiA+ID4gSSB0aGluayBhIG1vcmUg aW50ZXJlc3RpbmcgYXBwcm9hY2ggd291bGQgYmUgdG8gbW92ZSB0aGVzZSBvdXQgb2YgdGhlCj4g PiA+ID4gREIKPiA+ID4gPiBzaW5jZSB0aGVzZSB2YWx1ZXMgZG9uJ3QgcmVhbGx5IGhhdiBlIGEg cmVzb24gdG8gYmUgdGhlcmUuCj4gPiA+IAo+ID4gCj4gCj4gPiA+ID4gU2luY2UgdGhlIGVudGly ZSB0aGluZyBpcyBhYnN0cmFjdGVkIGJ5ICJHbHVzdGVyL0ZlYXR1cmVTdXBwb3J0ZWQiCj4gPiA+ ID4gY2xhc3Nlcwo+ID4gPiA+IHRoZW4gd2UgY2FuIGVhc2lseSBjaGFuZ2UgbWVjaGFuaXNtIChv ZiBjb3Vyc2Ugd2hhdGV2ZXIgY29kZSBpcyBub3QKPiA+ID4gPiB1c2luZwo+ID4gPiA+IGl0Cj4g PiA+ID4gY2FuIGJlIGVhc2lseSBjb252ZXJ0ZWQgdG8gdXNlIHRoZSBtZWNoYW5pc20pCj4gPiA+ IAo+ID4gCj4gCgo+ID4gPiA+IEZvciBleGFtcGxlIGEgc2ltcGxlIGVudW0gY291bGQgZG8gdGhl IHRyaWNrOgo+ID4gPiAKPiA+IAo+IAo+ID4gPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gRVhBTVBMRQo+ID4gPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KPiA+ID4gCj4gPiAKPiAKPiA+ID4gPiAvKioKPiA+ID4gCj4gPiAKPiAKPiA+ID4g PiAqIENvbnZlbmllbmNlIGNsYXNzIHRvIGNoZWNrIGlmIGEgZ2x1c3RlciBmZWF0dXJlIGlzIHN1 cHBvcnRlZCBvciBub3QKPiA+ID4gPiBpbgo+ID4gPiA+IGFueQo+ID4gPiA+IGdpdmVuIHZlcnNp b24uPGJyPgo+ID4gPiAKPiA+IAo+IAo+ID4gPiA+ICogTWV0aG9kcyBzaG91bGQgYmUgbmFtZWQg YnkgZmVhdHVyZSBhbmQgYWNjZXB0IHZlcnNpb24gdG8gY2hlY2sKPiA+ID4gPiBhZ2FpbnN0Lgo+ ID4gPiAKPiA+IAo+IAo+ID4gPiA+ICovCj4gPiA+IAo+ID4gCj4gCj4gPiA+ID4gcHVibGljIGNs YXNzIEdsdXN0ZXJGZWF0dXJlU3VwcG9ydGVkIHsKPiA+ID4gCj4gPiAKPiAKPiA+ID4gPiAvKioK PiA+ID4gCj4gPiAKPiAKPiA+ID4gPiAqIEBwYXJhbSB2ZXJzaW9uCj4gPiA+IAo+ID4gCj4gCj4g PiA+ID4gKiBDb21wYXRpYmlsaXR5IHZlcnNpb24gdG8gY2hlY2sgZm9yLgo+ID4gPiAKPiA+IAo+ IAo+ID4gPiA+ICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiBnbHVzdGVyIHN1cHBvcnQg aXMgZW5hYmxlZCwKPiA+ID4gPiA8Y29kZT5mYWxzZTwvY29kZT4KPiA+ID4gPiBpZiBpdCdzIG5v dC4KPiA+ID4gCj4gPiAKPiAKPiA+ID4gPiAqLwo+ID4gPiAKPiA+IAo+IAo+ID4gPiA+IHB1Ymxp YyBzdGF0aWMgYm9vbGVhbiBnbHVzdGVyKFZlcnNpb24gdmVyc2lvbikgewo+ID4gPiAKPiA+IAo+ IAo+ID4gPiA+IHJldHVybiBTdXBwb3J0ZWRGZWF0dXJlcy5HTFVTVEVSLmlzU3VwcG9ydGVkT24o dmVyc2lvbik7Cj4gPiA+IAo+ID4gCj4gCj4gPiA+ID4gfQo+ID4gPiAKPiA+IAo+IAoKPiA+ID4g PiAvKioKPiA+ID4gCj4gPiAKPiAKPiA+ID4gPiAqIEBwYXJhbSB2ZXJzaW9uCj4gPiA+IAo+ID4g Cj4gCj4gPiA+ID4gKiBDb21wYXRpYmlsaXR5IHZlcnNpb24gdG8gY2hlY2sgZm9yLgo+ID4gPiAK PiA+IAo+IAo+ID4gPiA+ICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiBnbHVzdGVyIGhl YXZ5d2VpZ2h0IHJlZnJlc2ggaXMgZW5hYmxlZCwKPiA+ID4gPiA8Y29kZT5mYWxzZTwvY29kZT4g aWYgaXQncyBub3QuCj4gPiA+IAo+ID4gCj4gCj4gPiA+ID4gKi8KPiA+ID4gCj4gPiAKPiAKPiA+ ID4gPiBwdWJsaWMgc3RhdGljIGJvb2xlYW4gcmVmcmVzaEhlYXZ5V2VpZ2h0KFZlcnNpb24gdmVy c2lvbikgewo+ID4gPiAKPiA+IAo+IAo+ID4gPiA+IHJldHVybiBTdXBwb3J0ZWRGZWF0dXJlcy5S RUZSRVNIX0hFQVZZV0VJR0hULmlzU3VwcG9ydGVkT24odmVyc2lvbik7Cj4gPiA+IAo+ID4gCj4g Cj4gPiA+ID4gfQo+ID4gPiAKPiA+IAo+IAoKPiA+ID4gPiAvKiBNb3JlIG1ldGhvZHMuLi4gKi8K PiA+ID4gCj4gPiAKPiAKCj4gPiA+ID4gZW51bSBTdXBwb3J0ZWRGZWF0dXJlcyB7Cj4gPiA+IAo+ ID4gCj4gCj4gPiA+ID4gR0xVU1RFUihWZXJzaW9uLnYzXzApLAo+ID4gPiAKPiA+IAo+IAo+ID4g PiA+IFJFRlJFU0hfSEVBVllXRUlHSFQoVmVyc2lvbi52M18wLCBWZXJzaW9uLnYzXzEpLAo+ID4g PiAKPiA+IAo+IAo+ID4gPiA+IC8qIE1vcmUgbWVtYmVycyAqLzsKPiA+ID4gCj4gPiAKPiAKCj4g PiA+ID4gcHJpdmF0ZSBTZXQ8VmVyc2lvbj4gdW5zdXBwb3J0ZWRWZXJzaW9ucyA9IG5ldyBIYXNo U2V0PFZlcnNpb24+KCk7Cj4gPiA+IAo+ID4gCj4gCgo+ID4gPiA+IHByaXZhdGUgU3VwcG9ydGVk RmVhdHVyZXMoVmVyc2lvbi4uLiB2ZXJzaW9ucykgewo+ID4gPiAKPiA+IAo+IAo+ID4gPiA+IHVu c3VwcG9ydGVkVmVyc2lvbnMuYWRkQWxsKEFycmF5cy5hc0xpc3QodmVyc2lvbnMpKTsKPiA+ID4g Cj4gPiAKPiAKPiA+ID4gPiB9Cj4gPiA+IAo+ID4gCj4gCgo+ID4gPiA+IHB1YmxpYyBib29sZWFu IGlzU3VwcG9ydGVkT24oVmVyc2lvbiB2ZXJzaW9uKSB7Cj4gPiA+IAo+ID4gCj4gCj4gPiA+ID4g cmV0dXJuICF1bnN1cHBvcnRlZFZlcnNpb25zLmNvbnRhaW5zKHZlcnNpb24pOwo+ID4gPiAKPiA+ IAo+IAo+ID4gPiA+IH0KPiA+ID4gCj4gPiAKPiAKPiA+ID4gPiB9Cj4gPiA+IAo+ID4gCj4gCj4g PiA+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQgRVhBTVBMRQo+ ID4gPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ID4gCj4gPiAK PiAKCj4gPiA+ID4gVGhvdWdodHM/Cj4gPiA+IAo+ID4gCj4gCgo+ID4gPiB1bmxlc3MgaSBkaWRu J3QgdW5kZXJzdGFuZCBzb21ldGhpbmcsIHRoaXMgaXMgbm90IGdvb2QsCj4gPiAKPiAKPiA+ID4g dGhpcyBzaG91bGQgc3RheSBjb25maWd1cmFibGUgYnkgdGhlIHVzZXJzLAo+ID4gCj4gCj4gPiA+ IGZvciBleGFtcGxlIGlmIHNvbWUgdXNlciBleHBlcmllbmNlIHNvbWUgaXNzdWVzIHdpdGggYSBm ZWF0dXJlIGFuZCB3YW50Cj4gPiA+IHRvCj4gPiA+IHR1cm4gaXQgb2ZmL2NoYW5nZSB0aGUgdmFs dWVzLi4KPiA+IAo+IAo+ID4gPiAobm90IGFsbCB2ZXJzaW9uIGNvbmZpZ3VyYXRpb24gYXJlIGJv b2xlYW4sIHNvbWUgYXJlIGRpZmZlcmVudCB2YWx1ZXMgdG8KPiA+ID4gZGlmZmVyZW50IHZlcnNp b25zLCBsaWtlIGNwdS1saXN0KQo+ID4gCj4gCgo+ID4gVGhpcyBpcyBmb3IgQVBJIGxldmVsIGNv bXBhdGliaWxpdHkuCj4gCj4gPiBJZiBWRFNNIGRvZXNuJ3Qgc3VwcG9ydCBmb3IgZXhhbXBsZSBo b3QgcGx1ZyBpbiAzLjEgdGhlbiB0aGUgdXNlciBjYW4ndAo+ID4ganVzdAo+ID4gZGVjaWRlIHRo YXQgaXQgZG9lcyBhbmQgY2hhbmdlIGl0Lgo+IAo+ID4gQWxzbywgdGhpcyBpcyBub3QgY2hhbmdl YWJsZSBieSB1c2VyIHNpbmNlIGl0J3Mgbm90IGV4cG9zZWQgYnkKPiA+IGVuZ2luZS1jb25maWcK PiA+IChub3Igc2hvdWxkIGl0IGJlKS4KPiAKCj4gc29tZSBhcmUgZXhwb3NlZAoKSWYgdGhlcmUg aXMgc3VjaCBhIHRoaW5nIHRoZW4gaXRzIGEgZGVzaWduIGZsYXcuIAoKVGhlIG9ubHkgb25lIEkg c2VlIGluIEZlYXR1cmVTdXBwb3J0ZWQgY2xhc3MgaXMgRW5hYmxlTUFDQW50aVNwb29maW5nRmls dGVyUnVsZXMgClRoaXMgc2hvdWxkIGJlIHNwbGl0IGludG8gMjogCk1BQ0FudGlTcG9vZmluZ0Zp bHRlclJ1bGVzU3VwcG9ydGVkIC0gd2hpY2ggaXMgdXNlZCB0byBkZXRlcm1pbmUgQVBJIGNvbXBh dGliaWxpdHkgCkVuYWJsZU1BQ0FudGlTcG9vZmluZ0ZpbHRlclJ1bGVzIC0gd2hpY2ggdGhlIHVz ZXIgY2FuIHNldCB0byBkZXRlcm1pbmUgc3lzdGVtIGJlaGF2aW91ciAKCkkgc2VlIG5vIHJlYXNv biB3aHkgdG8gYWxsb3cgdXNlciB0byBzZXQgRW5hYmxlTUFDQW50aVNwb29maW5nRmlsdGVyUnVs ZXM9dHJ1ZSBmb3IgMy4wIHNpbmNlIGl0IHdpbGwgbm90IHdvcmsgc28gaXQncyBqdXN0IGNvbmZ1 c2luZyB0byBoaW0gCgo+ID4gVGhpcyBpcyBzdHJpY3RseSBmb3IgdGhlIGVuZ2luZS1WRFNNIEFQ SSBjb21wYXRpYmlsaXR5LCBub3QgZm9yIG90aGVyCj4gPiBjb25maWdzCj4gPiB3aGljaCBhcmUg dmVyc2lvbiBzcGVjaWZpYy4KPiAKCj4gcmlnaHQsIGJ1dCBzdGlsbCB1c2VyIHNob3VsZCBiZSBh YmxlIHRvIHR1cm4gZmVhdHVyZXMgb2ZmIGluIGNhc2Ugb2YKPiBwcm9ibGVtcywKPiBvciBjaGFu Z2UgaW4gc29tZSBjYXNlcyAoZm9yIGV4YW1wbGUgaXQgaXMgcG9zc2libGUgdG8gYWRkIHN1cHBv cnQgZm9yIG1vcmUKPiBwb3dlciBtYW5hZ2VtZW50IGRldmljZXMsIGkga25vdyBpdCB3YXMgZG9u ZSBieSB1c2VycykKPiBubyByZWFzb24gdG8gYmxvY2sgdGhpcwoKQWdhaW4gbm90IHRhbGtpbmcg YWJvdXQgYWxsIHRoZSBjb25maWcgdmFsdWVzLCBzdHJpY3RseSB0aGUgb25lcyB0aGF0IGFyZSAo b3Igc2hvdWxkIGJlKSBpbiBGZWF0dXJlU3VwcG9ydGVkIGNsYXNzLiAKCkluIGNhc2Ugd2Ugd2Fu dCB0byBhbGxvdyB1c2VyIHRvIHR3ZWFrIGJlaGF2aW9yIHRoZXJlLCB3ZSBjYW4gYWx3YXlzIGRv IGFzIEkgc3VnZ2VzdGVkIGZvciBFbmFibGVNQUNBbnRpU3Bvb2ZpbmdGaWx0ZXJSdWxlcyAKCj4g PiA+ID4gUmVnYXJkcywKPiA+ID4gCj4gPiAKPiAKPiA+ID4gPiBNaWtlCj4gPiA+IAo+ID4gCj4g Cgo+ID4gPiA+ID4gUGxlYXNlIHNoYXJlIHlvdXIgdGhvdWdodHMgb24gdGhpcy4KPiA+ID4gPiAK PiA+ID4gCj4gPiAKPiAKCj4gPiA+ID4gPiBUaGFua3MsCj4gPiA+ID4gCj4gPiA+IAo+ID4gCj4g Cj4gPiA+ID4gPiBLYW5hZ2FyYWoKPiA+ID4gPiAKPiA+ID4gCj4gPiAKPiAKCj4gPiA+ID4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4gCj4gPiAK PiAKPiA+ID4gPiBFbmdpbmUtZGV2ZWwgbWFpbGluZyBsaXN0Cj4gPiA+IAo+ID4gCj4gCj4gPiA+ ID4gRW5naW5lLWRldmVsQG92aXJ0Lm9yZwo+ID4gPiAKPiA+IAo+IAo+ID4gPiA+IGh0dHA6Ly9s aXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby9lbmdpbmUtZGV2ZWwKPiA+ID4gCj4gPiAK PiAKCi0tLS0tLT1fUGFydF80MzIwODUwNF8xMzA0MzA2MzUwLjEzODU4ODk5OTE5ODIKQ29udGVu dC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGlu ZzogcXVvdGVkLXByaW50YWJsZQoKPGh0bWw+PGJvZHk+PGRpdiBzdHlsZT0zRCJmb250LWZhbWls eTogdGltZXMgbmV3IHJvbWFuLCBuZXcgeW9yaywgdGltZXMsIHNlPQpyaWY7IGZvbnQtc2l6ZTog MTJwdDsgY29sb3I6ICMwMDAwMDAiPjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+ PHM9CnBhbiBuYW1lPTNEIngiPjwvc3Bhbj5SZWdhcmRzLDxicj5NaWtlPHNwYW4gbmFtZT0zRCJ4 Ij48L3NwYW4+PGJyPjwvZGl2PjxkaT0Kdj48YnI+PC9kaXY+PGhyIGlkPTNEInp3Y2hyIj48Ymxv Y2txdW90ZSBzdHlsZT0zRCJib3JkZXItbGVmdDoycHggc29saWQgIzEwPQoxMEZGO21hcmdpbi1s ZWZ0OjVweDtwYWRkaW5nLWxlZnQ6NXB4O2NvbG9yOiMwMDA7Zm9udC13ZWlnaHQ6bm9ybWFsO2Zv bnQtc3Q9CnlsZTpub3JtYWw7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC1mYW1pbHk6SGVsdmV0 aWNhLEFyaWFsLHNhbnMtc2VyaWY7Zm9udD0KLXNpemU6MTJwdDsiPjxkaXYgc3R5bGU9M0QiZm9u dC1mYW1pbHk6IHRpbWVzIG5ldyByb21hbiwgbmV3IHlvcmssIHRpbWVzLCBzPQplcmlmOyBmb250 LXNpemU6IDEycHQ7IGNvbG9yOiAjMDAwMDAwIj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rp dj48aHIgaWQ9Cj0zRCJ6d2NociI+PGJsb2NrcXVvdGUgc3R5bGU9M0QiYm9yZGVyLWxlZnQ6MnB4 IHNvbGlkICMxMDEwRkY7bWFyZ2luLWxlZnQ6NT0KcHg7cGFkZGluZy1sZWZ0OjVweDtjb2xvcjoj MDAwO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1hbDt0ZXh0LWRlPQpjb3JhdGlv bjpub25lO2ZvbnQtZmFtaWx5OkhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZTox MnB0OyI+PGI+RnI9Cm9tOiA8L2I+Ik1pa2UgS29sZXNuaWsiICZsdDtta29sZXNuaUByZWRoYXQu Y29tJmd0Ozxicj48Yj5UbzogPC9iPiJPbWVyIEZyZT0KbmtlbCIgJmx0O29mcmVua2VsQHJlZGhh dC5jb20mZ3Q7PGJyPjxiPkNjOiA8L2I+IkthbmFnYXJhaiIgJmx0O2ttYXlpbHNhQHJlPQpkaGF0 LmNvbSZndDssICJlbmdpbmUtZGV2ZWwiICZsdDtlbmdpbmUtZGV2ZWxAb3ZpcnQub3JnJmd0Ozxi cj48Yj5TZW50OiA8L2I9Cj5TdW5kYXksIERlY2VtYmVyIDEsIDIwMTMgMTE6MDE6NTAgQU08YnI+ PGI+U3ViamVjdDogPC9iPlJlOiBbRW5naW5lLWRldmVsXT0KIFVzaW5nIGNvbmZpZyB2YWx1ZXM8 YnI+PGRpdj48YnI+PC9kaXY+PGRpdiBzdHlsZT0zRCJmb250LWZhbWlseTogdGltZXMgbmV3PQog cm9tYW4sIG5ldyB5b3JrLCB0aW1lcywgc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6ICMw MDAwMDAiPjxociBpZD0zRCI9Cnp3Y2hyIj48YmxvY2txdW90ZSBzdHlsZT0zRCJib3JkZXItbGVm dDoycHggc29saWQgIzEwMTBGRjttYXJnaW4tbGVmdDo1cHg7cD0KYWRkaW5nLWxlZnQ6NXB4O2Nv bG9yOiMwMDA7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtZGVjb3Jh PQp0aW9uOm5vbmU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1z aXplOjEycHQ7Ij48ZGl2IHN0eWw9CmU9M0QiZm9udC1mYW1pbHk6IHRpbWVzIG5ldyByb21hbiwg bmV3IHlvcmssIHRpbWVzLCBzZXJpZjsgZm9udC1zaXplOiAxMnB0Oz0KIGNvbG9yOiAjMDAwMDAw Ij48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48aHIgaWQ9M0QiendjaHIiPjxibG9ja3F1 b3RlPQogc3R5bGU9M0QiYm9yZGVyLWxlZnQ6MnB4IHNvbGlkICMxMDEwRkY7bWFyZ2luLWxlZnQ6 NXB4O3BhZGRpbmctbGVmdDo1cHg7Y289CmxvcjojMDAwO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250 LXN0eWxlOm5vcm1hbDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LWZhbT0KaWx5OkhlbHZldGlj YSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB0OyI+PGI+RnJvbTogPC9iPiJNaWtlIEtv bGVzbmlrPQoiICZsdDtta29sZXNuaUByZWRoYXQuY29tJmd0Ozxicj48Yj5UbzogPC9iPiJLYW5h Z2FyYWoiICZsdDtrbWF5aWxzYUByZWRoYXQ9Ci5jb20mZ3Q7PGJyPjxiPkNjOiA8L2I+ImVuZ2lu ZS1kZXZlbCIgJmx0O2VuZ2luZS1kZXZlbEBvdmlydC5vcmcmZ3Q7PGJyPjxiPj0KU2VudDogPC9i PlN1bmRheSwgRGVjZW1iZXIgMSwgMjAxMyA4OjA4OjQyIEFNPGJyPjxiPlN1YmplY3Q6IDwvYj5S ZTogW0VuZ2luPQplLWRldmVsXSBVc2luZyBjb25maWcgdmFsdWVzPGJyPjxkaXY+PGJyPjwvZGl2 PjxkaXYgc3R5bGU9M0QiZm9udC1mYW1pbHk6IHQ9CmltZXMgbmV3IHJvbWFuLCBuZXcgeW9yaywg dGltZXMsIHNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiAjMDAwMDAwIj48aD0KciBpZD0z RCJ6d2NociI+PGJsb2NrcXVvdGUgc3R5bGU9M0QiYm9yZGVyLWxlZnQ6MnB4IHNvbGlkICMxMDEw RkY7bWFyZ2luLWxlPQpmdDo1cHg7cGFkZGluZy1sZWZ0OjVweDtjb2xvcjojMDAwO2ZvbnQtd2Vp Z2h0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1hbDt0ZXg9CnQtZGVjb3JhdGlvbjpub25lO2ZvbnQt ZmFtaWx5OkhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB0OyI+SD0KaSBB bGwsPC9ibG9ja3F1b3RlPjxkaXY+PGJyPjwvZGl2PjxkaXY+SGkgS2FuYWdhcmFqLDxicj48L2Rp dj48ZGl2Pjxicj48L2RpPQp2PjxibG9ja3F1b3RlIHN0eWxlPTNEImJvcmRlci1sZWZ0OjJweCBz b2xpZCAjMTAxMEZGO21hcmdpbi1sZWZ0OjVweDtwYWRkaW49CmctbGVmdDo1cHg7Y29sb3I6IzAw MDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHlsZTpub3JtYWw7dGV4dC1kZWNvcmF0aW9uOj0K bm9uZTtmb250LWZhbWlseTpIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTJw dDsiPjxicj4gVGhlIGFyZSBzPQpvbWUgaXNzdWVzIGFyaXNpbmcgaW4gY29uZmlndXJhdGlvbnMg d2hlbmV2ZXIgd2UgbW92ZSB1cCBvbiB0aGUgdmVyc2lvbnMoMy49CjMgPTNEJmd0OyAzLjQpLCBi ZWNhdXNlIG9mIHRoZSB3YXkgd2Ugc3RvcmUgYW5kIGludGVycHJldCB0aGVtLjxicj48ZGl2Pjxi cj0KPjwvZGl2PldoZW5ldmVyIHRoZXJlIGlzIGEgbmV3IGNsdXN0ZXIgbGV2ZWwsIHlvdSB3aWxs IG5lZWQgdG8gYWRkIGEgbmV3IGVuPQp0cnkgZm9yIGFsbChtb3N0KSBvZiB0aGUgY29uZmlndXJh dGlvbi4gTW9zdGx5IGEgY29weSBwYXN0ZSBpZiB5b3Ugc2VlIGZyb209CiAzLjIgdG8gMy4zLCBl eGNlcHQgc29tZSBDUFUvUE0gdHlwZSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLjxicj4gQmV0dGVy IG9wdD0KaW9uIHdvdWxkIGJlIHRvIGhhdmUgdGhlIGRlZmF1bCBjb25maWcgdmFsdWUgaW4gQ29u ZmlnVmFsdWVzLmphdmEgYW5kIHRoZSBvPQp2ZXJyaWRlcyB3aWxsIGdvIHRvIGNvbmZpZy5zcWwu IEluIHRoaXMgYXBwcm9hY2ggeW91IGRvbid0IG5lZWQgYSBuZXcgZW50cmk9CmVzIHRvIGNvbmZp Zy5zcWwgd2hlbiB0aGVyZSBpcyBhIG5ldyBjbHVzdGVyIGxldmVsLjxicj48ZGl2Pjxicj48L2Rp dj5MZXRzID0KdGFrZSBhbiBleG1hcGxlLCAiU3VwcG9ydEZvcmNlQ3JlYXRlVkciIC0gVGhpcyBp cyBzdXBwb3J0ZWQgZnJvbSAzLjEgb253YXJkPQpzLDxicj48ZGl2Pjxicj48L2Rpdj5JZiB5b3Ug bG9vayBhdCBjb25maWcuc3FsLCB5b3Ugd2lsbCBzZWUgZm9sbG93aW5nIGVudHI9CmllcyA8YnI+ IHNlbGVjdCBmbl9kYl9hZGRfY29uZmlnX3ZhbHVlKCdTdXBwb3J0Rm9yY2VDcmVhdGVWRycsJ2Zh bHNlJywnMy4wJz0KKTsgPGJyPiBzZWxlY3QgZm5fZGJfYWRkX2NvbmZpZ192YWx1ZSgnU3VwcG9y dEZvcmNlQ3JlYXRlVkcnLCd0cnVlJywnMy4xJyk7PQogPGJyPiBzZWxlY3QgZm5fZGJfYWRkX2Nv bmZpZ192YWx1ZSgnU3VwcG9ydEZvcmNlQ3JlYXRlVkcnLCd0cnVlJywnMy4yJyk7IDw9CmJyPiBz ZWxlY3QgZm5fZGJfYWRkX2NvbmZpZ192YWx1ZSgnU3VwcG9ydEZvcmNlQ3JlYXRlVkcnLCd0cnVl JywnMy4zJyk7PGJyPj0KPGRpdj48YnI+PC9kaXY+QW5kIGluIENvbmZpZ1ZhbHVlcy5qYXZhPGJy PjxkaXY+PGJyPjwvZGl2PiZuYnNwOyZuYnNwOyZuYnNwPQo7IEBUeXBlQ29udmVydGVyQXR0cmli dXRlKEJvb2xlYW4uY2xhc3MpPGJyPiAmbmJzcDsmbmJzcDsmbmJzcDsgQERlZmF1bHRWYWw9CnVl QXR0cmlidXRlKCJmYWxzZSIpPGJyPiAmbmJzcDsmbmJzcDsmbmJzcDsgU3VwcG9ydEZvcmNlQ3Jl YXRlVkcsPGJyPjxkaXY+PD0KYnI+PC9kaXY+Tm93IGlmIHRoZXJlIGlzIDMuNCBhbmQgMy41LCB0 aGUgdXNlciBuZWVkcyB0byBhZGQgMiBtb3JlIGVudHJpZXMsPQogd2hpY2ggaSBmZWVsIGlzIHJl ZHVuZGFudC48YnI+PGRpdj48YnI+PC9kaXY+SW5zdGVhZCB3ZSBjYW4gbWFrZSA8YnI+PGRpdj49 Cjxicj48L2Rpdj4mbmJzcDsmbmJzcDsmbmJzcDsgQFR5cGVDb252ZXJ0ZXJBdHRyaWJ1dGUoQm9v bGVhbi5jbGFzcyk8YnI+ICZuYj0Kc3A7Jm5ic3A7Jm5ic3A7IEBEZWZhdWx0VmFsdWVBdHRyaWJ1 dGUoInRydWUiKTxicj4gJm5ic3A7Jm5ic3A7Jm5ic3A7IFN1cHBvPQpydEZvcmNlQ3JlYXRlVkcs PGJyPjxkaXY+PGJyPjwvZGl2PmFuZCBoYXZlIG9ubHkgdGhlIGZvbGxvd2luZyBpbiBjb25maWcu c3E9Cmw8YnI+IHNlbGVjdCBmbl9kYl9hZGRfY29uZmlnX3ZhbHVlKCdTdXBwb3J0Rm9yY2VDcmVh dGVWRycsJ2ZhbHNlJywnMy4wJyk7PD0KYnI+PGRpdj48YnI+PC9kaXY+aWYgYSBwYXJ0aWN1bGFy IHZhbHVlKGZvciBhIHNwZWNpZmljIGNsdXN0ZXIgbGV2ZWwpIGlzIG5vPQp0IGZvdW5kIGluIENv bmZpZy5zcWwsIHRoZSBmYWxsYmFjayBpcyB0byB1c2UgdGhlIHZhbHVlIGF2YWlsYWJsZSBpbiBD b25maWc9ClZhbHVlcy5qYXZhLjwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48ZGl2PlRoaXMg aGFzIGFscmVhZHkgYmVlbiBpbXBsZW1lbj0KdGVkLCB0aGVyZSBhcmUgbWFueSAiZmVhdHVyZSBz dXBwb3J0ZWQiIGNvbmZpZ3VyYXRpb25zIHdvcmtpbmcgbGlrZSB0aGlzIChmPQpvciBleGFtcGxl IEdsdXN0ZXJTdXBwb3J0KS48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5JIHRoaW5rIGEg bW9yZSBpbnQ9CmVyZXN0aW5nIGFwcHJvYWNoIHdvdWxkIGJlIHRvIG1vdmUgdGhlc2Ugb3V0IG9m IHRoZSBEQiBzaW5jZSB0aGVzZSB2YWx1ZXMgZD0Kb24ndCByZWFsbHkgaGF2IGUgYSByZXNvbiB0 byBiZSB0aGVyZS48YnI+PC9kaXY+PGRpdj5TaW5jZSB0aGUgZW50aXJlIHRoaW5nPQogaXMgYWJz dHJhY3RlZCBieSAiR2x1c3Rlci9GZWF0dXJlU3VwcG9ydGVkIiBjbGFzc2VzIHRoZW4gd2UgY2Fu IGVhc2lseSBjaGE9Cm5nZSBtZWNoYW5pc20gKG9mIGNvdXJzZSB3aGF0ZXZlciBjb2RlIGlzIG5v dCB1c2luZyBpdCBjYW4gYmUgZWFzaWx5IGNvbnZlcj0KdGVkIHRvIHVzZSB0aGUgbWVjaGFuaXNt KTxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkZvciBleGFtcGxlIGEgc2ltcGxlPQogZW51 bSBjb3VsZCBkbyB0aGUgdHJpY2s6PGJyPjwvZGl2PjxkaXY+LS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS09Ci0tIEVYQU1QTEUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLTxicj48L2Rpdj48ZGl2Pi8qKjxicj4mbmJzcD0KOyogQ29udmVuaWVuY2UgY2xhc3Mg dG8gY2hlY2sgaWYgYSBnbHVzdGVyIGZlYXR1cmUgaXMgc3VwcG9ydGVkIG9yIG5vdCBpbiBhPQpu eSBnaXZlbiB2ZXJzaW9uLiZsdDticiZndDs8YnI+Jm5ic3A7KiBNZXRob2RzIHNob3VsZCBiZSBu YW1lZCBieSBmZWF0dXJlIGE9Cm5kIGFjY2VwdCB2ZXJzaW9uIHRvIGNoZWNrIGFnYWluc3QuPGJy PiZuYnNwOyovPGJyPnB1YmxpYyBjbGFzcyBHbHVzdGVyRmVhdD0KdXJlU3VwcG9ydGVkIHs8L2Rp dj48ZGl2PiZuYnNwOyZuYnNwOyZuYnNwOyAvKio8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 PQogKiBAcGFyYW0gdmVyc2lvbjxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKiZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnM9CnA7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7IENvbXBhdGliaWxpdHkgdmVyc2lvbiB0byBjaGVjayBmb3IuPD0KYnI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7ICogQHJldHVybiAmbHQ7Y29kZSZndDt0cnVlJmx0Oy9jb2RlJmd0OyBpZiBn bHVzPQp0ZXIgc3VwcG9ydCBpcyBlbmFibGVkLCAmbHQ7Y29kZSZndDtmYWxzZSZsdDsvY29kZSZn dDsgaWYgaXQncyBub3QuPGJyPiZuYnM9CnA7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICovPGJyPiZuYnNw OyZuYnNwOyZuYnNwOyBwdWJsaWMgc3RhdGljIGJvb2xlYW4gZ2x1c3Rlcj0KKFZlcnNpb24gdmVy c2lvbikgezxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcmV0 dXJuIFN1PQpwcG9ydGVkRmVhdHVyZXMuR0xVU1RFUi5pc1N1cHBvcnRlZE9uKHZlcnNpb24pOzxi cj4mbmJzcDsmbmJzcDsmbmJzcDsgfTxicj49CjxkaXY+PGJyPjwvZGl2PiZuYnNwOyZuYnNwOyZu YnNwOyAvKio8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICogQHBhcmFtID0KdmVyc2lvbjxi cj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuPQpic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IENvbXBhdGliaWxpdHkgdmVy c2lvbiB0byBjaGVjayBmb3IuPGJyPiZuYnNwOyY9Cm5ic3A7Jm5ic3A7Jm5ic3A7ICogQHJldHVy biAmbHQ7Y29kZSZndDt0cnVlJmx0Oy9jb2RlJmd0OyBpZiBnbHVzdGVyIGhlYXZ5dz0KZWlnaHQg cmVmcmVzaCBpcyBlbmFibGVkLCAmbHQ7Y29kZSZndDtmYWxzZSZsdDsvY29kZSZndDsgaWYgaXQn cyBub3QuPGJyPiZuPQpic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICovPGJyPiZuYnNwOyZuYnNwOyZu YnNwOyBwdWJsaWMgc3RhdGljIGJvb2xlYW4gcmVmcmU9CnNoSGVhdnlXZWlnaHQoVmVyc2lvbiB2 ZXJzaW9uKSB7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYj0Kc3A7 IHJldHVybiBTdXBwb3J0ZWRGZWF0dXJlcy5SRUZSRVNIX0hFQVZZV0VJR0hULmlzU3VwcG9ydGVk T24odmVyc2lvbik7PGJyPQo+Jm5ic3A7Jm5ic3A7Jm5ic3A7IH08YnI+PC9kaXY+PGRpdj48YnI+ PC9kaXY+PGRpdj4mbmJzcDsmbmJzcDsmbmJzcDsgLyogTW89CnJlIG1ldGhvZHMuLi4gKi88L2Rp dj48ZGl2Pjxicj4mbmJzcDsmbmJzcDsmbmJzcDsgZW51bSBTdXBwb3J0ZWRGZWF0dXJlcyB7PD0K YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IEdMVVNURVIoVmVy c2lvbi52M18wKSw8YnI+Jm5iPQpzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgUkVGUkVTSF9IRUFWWVdFSUdIVChWZXJzaW9uLnYzXzAsIFY9CmVyc2lvbi52M18xKSw8L2Rp dj48ZGl2PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAvKiBNb3Jl ID0KbWVtYmVycyAqLzs8YnI+PGRpdj48YnI+PC9kaXY+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IHByPQppdmF0ZSBTZXQmbHQ7VmVyc2lvbiZndDsgdW5zdXBwb3J0 ZWRWZXJzaW9ucyA9M0QgbmV3IEhhc2hTZXQmbHQ7VmVyc2lvbiZndDs9CigpOzxicj48ZGl2Pjxi cj48L2Rpdj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcHJpdmF0 ZSBTdT0KcHBvcnRlZEZlYXR1cmVzKFZlcnNpb24uLi4gdmVyc2lvbnMpIHs8YnI+Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5iPQpzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgdW5zdXBwb3J0ZWRWZXJzaW9ucy5hZGRBbGwoQXJyYXlzLmFzTGlzdCg9CnZlcnNpb25zKSk7 PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPjxkaXY+ PGJyPjwvZD0KaXY+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHB1 YmxpYyBib29sZWFuIGlzU3VwcG9ydGVkT24oPQpWZXJzaW9uIHZlcnNpb24pIHs8YnI+Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A9CjsmbmJzcDsm bmJzcDsgcmV0dXJuICF1bnN1cHBvcnRlZFZlcnNpb25zLmNvbnRhaW5zKHZlcnNpb24pOzxicj4m bmJzcDsmbmJzcD0KOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPiZuYnNwOyZu YnNwOyZuYnNwOyB9PC9kaXY+PGRpdj4tLS0tLS0tPQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gRU5EIEVYQU1QTEUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0t PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5UaG91Z2h0cz88L2Rpdj48L2Rpdj48L2Jsb2NrcXVv dGU+PGRpdj48YnI+dT0Kbmxlc3MgaSBkaWRuJ3QgdW5kZXJzdGFuZCBzb21ldGhpbmcsIHRoaXMg aXMgbm90IGdvb2QsPGJyPjwvZGl2PjxkaXY+dGhpcyBzPQpob3VsZCBzdGF5IGNvbmZpZ3VyYWJs ZSBieSB0aGUgdXNlcnMsPGJyPjwvZGl2PjxkaXY+Zm9yIGV4YW1wbGUgaWYgc29tZSB1c2U9CnIg ZXhwZXJpZW5jZSBzb21lIGlzc3VlcyB3aXRoIGEgZmVhdHVyZSBhbmQgd2FudCB0byB0dXJuIGl0 IG9mZi9jaGFuZ2UgdGhlID0KdmFsdWVzLi48L2Rpdj48ZGl2Pihub3QgYWxsIHZlcnNpb24gY29u ZmlndXJhdGlvbiBhcmUgYm9vbGVhbiwgc29tZSBhcmUgZGlmPQpmZXJlbnQgdmFsdWVzIHRvIGRp ZmZlcmVudCB2ZXJzaW9ucywgbGlrZSBjcHUtbGlzdCk8L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU9 Cj48ZGl2Pjxicj48L2Rpdj48ZGl2PlRoaXMgaXMgZm9yIEFQSSBsZXZlbCBjb21wYXRpYmlsaXR5 Ljxicj48L2Rpdj48ZGl2PklmID0KVkRTTSBkb2Vzbid0IHN1cHBvcnQgZm9yIGV4YW1wbGUgaG90 IHBsdWcgaW4gMy4xIHRoZW4gdGhlIHVzZXIgY2FuJ3QganVzdCBkPQplY2lkZSB0aGF0IGl0IGRv ZXMgYW5kIGNoYW5nZSBpdC48YnI+PC9kaXY+PGRpdj5BbHNvLCB0aGlzIGlzIG5vdCBjaGFuZ2Vh Ymw9CmUgYnkgdXNlciBzaW5jZSBpdCdzIG5vdCBleHBvc2VkIGJ5IGVuZ2luZS1jb25maWcgKG5v ciBzaG91bGQgaXQgYmUpLjxicj48Lz0KZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2PnNvbWUg YXJlIGV4cG9zZWQ8L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj5JPQpmIHRoZXJlIGlzIHN1 Y2ggYSB0aGluZyB0aGVuIGl0cyBhIGRlc2lnbiBmbGF3Ljxicj48L2Rpdj48ZGl2Pjxicj48L2Rp dj48ZGk9CnY+VGhlIG9ubHkgb25lIEkgc2VlIGluIEZlYXR1cmVTdXBwb3J0ZWQgY2xhc3MgaXMg RW5hYmxlTUFDQW50aVNwb29maW5nRmlsdD0KZXJSdWxlczxicj48L2Rpdj48ZGl2PlRoaXMgc2hv dWxkIGJlIHNwbGl0IGludG8gMjo8YnI+PC9kaXY+PGRpdj5NQUNBbnRpU3BvPQpvZmluZ0ZpbHRl clJ1bGVzU3VwcG9ydGVkIC0gd2hpY2ggaXMgdXNlZCB0byBkZXRlcm1pbmUgQVBJIGNvbXBhdGli aWxpdHk8YnI9Cj48L2Rpdj48ZGl2PkVuYWJsZU1BQ0FudGlTcG9vZmluZ0ZpbHRlclJ1bGVzIC0g d2hpY2ggdGhlIHVzZXIgY2FuIHNldCB0byBkZT0KdGVybWluZSBzeXN0ZW0gYmVoYXZpb3VyPGJy PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+SSBzZWUgbm8gcmVhc29uIHdoeSB0PQpvIGFsbG93 IHVzZXIgdG8gc2V0IEVuYWJsZU1BQ0FudGlTcG9vZmluZ0ZpbHRlclJ1bGVzPTNEdHJ1ZSBmb3Ig My4wIHNpbmNlIGk9CnQgd2lsbCBub3Qgd29yayBzbyBpdCdzIGp1c3QgY29uZnVzaW5nIHRvIGhp bTxicj48L2Rpdj48YmxvY2txdW90ZSBzdHlsZT0zRD0KImJvcmRlci1sZWZ0OjJweCBzb2xpZCAj MTAxMEZGO21hcmdpbi1sZWZ0OjVweDtwYWRkaW5nLWxlZnQ6NXB4O2NvbG9yOiMwMDA7PQpmb250 LXdlaWdodDpub3JtYWw7Zm9udC1zdHlsZTpub3JtYWw7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9u dC1mYW1pbHk6SGVsdmU9CnRpY2EsQXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTJwdDsiPjxk aXYgc3R5bGU9M0QiZm9udC1mYW1pbHk6IHRpbWVzIG5ldz0KIHJvbWFuLCBuZXcgeW9yaywgdGlt ZXMsIHNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiAjMDAwMDAwIj48ZGl2Pjxicj48PQov ZGl2PjxibG9ja3F1b3RlIHN0eWxlPTNEImJvcmRlci1sZWZ0OjJweCBzb2xpZCAjMTAxMEZGO21h cmdpbi1sZWZ0OjVweDtwYWQ9CmRpbmctbGVmdDo1cHg7Y29sb3I6IzAwMDtmb250LXdlaWdodDpu b3JtYWw7Zm9udC1zdHlsZTpub3JtYWw7dGV4dC1kZWNvcmF0aT0Kb246bm9uZTtmb250LWZhbWls eTpIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTJwdDsiPjxkaXYgc3R5bGU9 Cj0zRCJmb250LWZhbWlseTogdGltZXMgbmV3IHJvbWFuLCBuZXcgeW9yaywgdGltZXMsIHNlcmlm OyBmb250LXNpemU6IDEycHQ7ID0KY29sb3I6ICMwMDAwMDAiPjxkaXY+VGhpcyBpcyBzdHJpY3Rs eSBmb3IgdGhlIGVuZ2luZS1WRFNNIEFQSSBjb21wYXRpYmlsaXR5PQosIG5vdCBmb3Igb3RoZXIg Y29uZmlncyB3aGljaCBhcmUgdmVyc2lvbiBzcGVjaWZpYy48YnI+PC9kaXY+PC9kaXY+PC9ibG9j a3E9CnVvdGU+PGRpdj5yaWdodCwgYnV0IHN0aWxsIHVzZXIgc2hvdWxkIGJlIGFibGUgdG8gdHVy biBmZWF0dXJlcyBvZmYgaW4gY2FzZT0KIG9mIHByb2JsZW1zLDxicj48L2Rpdj48ZGl2Pm9yIGNo YW5nZSBpbiBzb21lIGNhc2VzIChmb3IgZXhhbXBsZSBpdCBpcyBwb3NzPQppYmxlIHRvIGFkZCBz dXBwb3J0IGZvciBtb3JlIHBvd2VyIG1hbmFnZW1lbnQgZGV2aWNlcywgaSBrbm93IGl0IHdhcyBk b25lIGI9CnkgdXNlcnMpPGJyPjwvZGl2PjxkaXY+bm8gcmVhc29uIHRvIGJsb2NrIHRoaXM8L2Rp dj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj0KPkFnYWluIG5vdCB0YWxraW5nIGFib3V0IGFsbCB0 aGUgY29uZmlnIHZhbHVlcywgc3RyaWN0bHkgdGhlIG9uZXMgdGhhdCBhcmUgPQoob3Igc2hvdWxk IGJlKSBpbiBGZWF0dXJlU3VwcG9ydGVkIGNsYXNzLjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48 ZGl2PkluIGM9CmFzZSB3ZSB3YW50IHRvIGFsbG93IHVzZXIgdG8gdHdlYWsgYmVoYXZpb3IgdGhl cmUsIHdlIGNhbiBhbHdheXMgZG8gYXMgSSBzdT0KZ2dlc3RlZCBmb3IgRW5hYmxlTUFDQW50aVNw b29maW5nRmlsdGVyUnVsZXM8YnI+PC9kaXY+PGJsb2NrcXVvdGUgc3R5bGU9M0QiPQpib3JkZXIt bGVmdDoycHggc29saWQgIzEwMTBGRjttYXJnaW4tbGVmdDo1cHg7cGFkZGluZy1sZWZ0OjVweDtj b2xvcjojMDAwO2Y9Cm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtZGVj b3JhdGlvbjpub25lO2ZvbnQtZmFtaWx5OkhlbHZldD0KaWNhLEFyaWFsLHNhbnMtc2VyaWY7Zm9u dC1zaXplOjEycHQ7Ij48ZGl2IHN0eWxlPTNEImZvbnQtZmFtaWx5OiB0aW1lcyBuZXcgPQpyb21h biwgbmV3IHlvcmssIHRpbWVzLCBzZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogIzAwMDAw MCI+PGRpdj48YnI+PC89CmRpdj48YmxvY2txdW90ZSBzdHlsZT0zRCJib3JkZXItbGVmdDoycHgg c29saWQgIzEwMTBGRjttYXJnaW4tbGVmdDo1cHg7cGFkZD0KaW5nLWxlZnQ6NXB4O2NvbG9yOiMw MDA7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtZGVjb3JhdGlvPQpu Om5vbmU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEy cHQ7Ij48ZGl2IHN0eWxlPQo9M0QiZm9udC1mYW1pbHk6IHRpbWVzIG5ldyByb21hbiwgbmV3IHlv cmssIHRpbWVzLCBzZXJpZjsgZm9udC1zaXplOiAxMnB0OyA9CmNvbG9yOiAjMDAwMDAwIj48Ymxv Y2txdW90ZSBzdHlsZT0zRCJib3JkZXItbGVmdDoycHggc29saWQgIzEwMTBGRjttYXJnaW4tbD0K ZWZ0OjVweDtwYWRkaW5nLWxlZnQ6NXB4O2NvbG9yOiMwMDA7Zm9udC13ZWlnaHQ6bm9ybWFsO2Zv bnQtc3R5bGU6bm9ybWFsO3RlPQp4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC1mYW1pbHk6SGVsdmV0 aWNhLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHQ7Ij49CjxkaXYgc3R5bGU9M0QiZm9u dC1mYW1pbHk6IHRpbWVzIG5ldyByb21hbiwgbmV3IHlvcmssIHRpbWVzLCBzZXJpZjsgZm9udC1z aT0KemU6IDEycHQ7IGNvbG9yOiAjMDAwMDAwIj48ZGl2Pjxicj48L2Rpdj48YmxvY2txdW90ZSBz dHlsZT0zRCJib3JkZXItbGVmdDoyPQpweCBzb2xpZCAjMTAxMEZGO21hcmdpbi1sZWZ0OjVweDtw YWRkaW5nLWxlZnQ6NXB4O2NvbG9yOiMwMDA7Zm9udC13ZWlnaHQ6bm89CnJtYWw7Zm9udC1zdHls ZTpub3JtYWw7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhLEFyaWFs LHNhbj0Kcy1zZXJpZjtmb250LXNpemU6MTJwdDsiPjxkaXYgc3R5bGU9M0QiZm9udC1mYW1pbHk6 IHRpbWVzIG5ldyByb21hbiwgbmV3IHlvPQpyaywgdGltZXMsIHNlcmlmOyBmb250LXNpemU6IDEy cHQ7IGNvbG9yOiAjMDAwMDAwIj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj49CjwvZGl2PjxkaXY+ UmVnYXJkcyw8YnI+PC9kaXY+PGRpdj5NaWtlPGJyPjwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPTNE ImJvcmRlcj0KLWxlZnQ6MnB4IHNvbGlkICMxMDEwRkY7bWFyZ2luLWxlZnQ6NXB4O3BhZGRpbmct bGVmdDo1cHg7Y29sb3I6IzAwMDtmb250LXdlPQppZ2h0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1h bDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LWZhbWlseTpIZWx2ZXRpY2EsQXI9CmlhbCxzYW5z LXNlcmlmO2ZvbnQtc2l6ZToxMnB0OyI+PGJyPiBQbGVhc2Ugc2hhcmUgeW91ciB0aG91Z2h0cyBv biB0aGlzLjxicj0KPjxkaXY+PGJyPjwvZGl2PlRoYW5rcyw8YnI+IEthbmFnYXJhajxicj48ZGl2 Pjxicj48L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+PQo8YnI+X19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX188YnI+RW5naW5lLWRldmVsIG1haWxpbmc9CiBsaXN0 PGJyPkVuZ2luZS1kZXZlbEBvdmlydC5vcmc8YnI+aHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWls bWFuL2xpc3RpbmZvLz0KZW5naW5lLWRldmVsPGJyPjwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rp dj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj48YnI+PC9kPQppdj48L2Rpdj48L2Jsb2NrcXVvdGU+ PGRpdj48YnI+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+PGJyPjwvZGl2PjwvZGk9CnY+ PC9ib2R5PjwvaHRtbD4KLS0tLS0tPV9QYXJ0XzQzMjA4NTA0XzEzMDQzMDYzNTAuMTM4NTg4OTk5 MTk4Mi0tCg== --===============6670085761059361610==-- From emesika at redhat.com Sun Dec 1 04:59:00 2013 Content-Type: multipart/mixed; boundary="===============4032508577129481696==" MIME-Version: 1.0 From: Eli Mesika To: devel at ovirt.org Subject: Re: [Engine-devel] Using config values Date: Sun, 01 Dec 2013 04:58:54 -0500 Message-ID: <1044736237.33757114.1385891934497.JavaMail.root@redhat.com> In-Reply-To: 496533960.21093647.1385888566815.JavaMail.root@redhat.com --===============4032508577129481696== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Omer Frenkel" > To: "Eli Mesika" > Cc: "Dusmant Kumar Pati" , "engine-devel" > Sent: Sunday, December 1, 2013 11:02:46 AM > Subject: Re: [Engine-devel] Using config values > = > = > = > ----- Original Message ----- > > From: "Eli Mesika" > > To: "Dusmant Kumar Pati" > > Cc: "engine-devel" > > Sent: Saturday, November 30, 2013 10:58:35 PM > > Subject: Re: [Engine-devel] Using config values > > = > > = > > = > > ----- Original Message ----- > > > From: "Dusmant Kumar Pati" > > > To: "Kanagaraj" , "engine-devel" > > > > > > Sent: Friday, November 29, 2013 1:40:09 PM > > > Subject: Re: [Engine-devel] Using config values > > > = > > > On 11/29/2013 01:46 PM, Kanagaraj wrote: > > > = > > > = > > > Hi All, > > > = > > > The are some issues arising in configurations whenever we move up on = the > > > versions(3.3 =3D> 3.4), because of the way we store and interpret the= m. > > > = > > > Whenever there is a new cluster level, you will need to add a new ent= ry > > > for > > > all(most) of the configuration. Mostly a copy paste if you see from 3= .2 > > > to > > > 3.3, except some CPU/PM type related configurations. > > > Better option would be to have the defaul config value in > > > ConfigValues.java > > > and the overrides will go to config.sql. In this approach you don't n= eed > > > a > > > new entries to config.sql when there is a new cluster level. > > > = > > > Lets take an exmaple, "SupportForceCreateVG" - This is supported from= 3.1 > > > onwards, > > > = > > > If you look at config.sql, you will see following entries > > > select fn_db_add_config_value('SupportForceCreateVG','false','3.0'); > > > select fn_db_add_config_value('SupportForceCreateVG','true','3.1'); > > > select fn_db_add_config_value('SupportForceCreateVG','true','3.2'); > > > select fn_db_add_config_value('SupportForceCreateVG','true','3.3'); > > > = > > > And in ConfigValues.java > > > = > > > @TypeConverterAttribute(Boolean.class) > > > @DefaultValueAttribute("false") > > > SupportForceCreateVG, > > > = > > > Now if there is 3.4 and 3.5, the user needs to add 2 more entries, wh= ich > > > i > > > feel is redundant. > > > = > > > Instead we can make > > > = > > > @TypeConverterAttribute(Boolean.class) > > > @DefaultValueAttribute("true") > > > SupportForceCreateVG, > > > = > > > and have only the following in config.sql > > > select fn_db_add_config_value('SupportForceCreateVG','false','3.0'); > > > = > > > if a particular value(for a specific cluster level) is not found in > > > Config.sql, the fallback is to use the value available in > > > ConfigValues.java. > > > = > > > Please share your thoughts on this. > > = > > Hi > > = > > First of all I think its a good idea > > I have 2 questions > > = > > 1) Which value will be stored as default in the java class for > > configuration > > values that are not a boolean, that represents if a feature is active or > > not. > > Is that the latest version value ? sounds not obvious to me > > = > = > i guess this will have to have a configuration values for each version in= the > db. > = > > 2) There are some configuration values that are exposed to the user via= the > > engine-config tool, how this will work, we can not remove the entries t= heir > > since the user may change and override those values. > > = > = > in your suggestion below, there is the same issue, > if user want to change the 3.3 value, engine config will fail with "No su= ch > entry" > because 3.3 will not be in the db.. > so if we are not fixing this, i think using the current implementation is > good enough, In this case engine-config will add this key with the given value for that = version, so , I see no problem in that... In addition the getConfigValue will lookup for version matching only the fi= rst time, so , if it was given a 3.4 version for key K and found a matching= only for 3.2 , it will add to the cache K with the same value for version = 3.4 > no need to add logic, just to convert current options that are not in this > format, to use this logic. > = > > I have a different suggestion: > > Default value will stay as is , meaning , it will reflect the value that > > should be used to keep the application running correctly if a value is = not > > found in DB (which should not occur) > > = > > Code of getting configuration value (getConfigValue(,) wi= ll > > be > > changed to get the closest version value to the given one. > > For example , if a 3.4 version is given for a given and we have i= n DB > > just values for 3.0 and 3.1 , the 3.1 value is returned. > > I prefer this solution since it makes the config.sql file self document= ed , > > showing only value changes and in which version each change occurred. > > = > > To implement that, we should add this mechanism to the current code that > > caches the DB content and as I see that it should be a simple change. > > engine-config should be modified such that if the user change a value, = this > > value will be inserted to the database with the current release if not > > exists and then the mechanism described above will get this value > > = > > Example: > > = > > VdsFenceType lists all the supported fencing agents for power managemen= t , > > it > > currently has the following settings > > = > > option_value > > | > > version > > -----------------------------------------------------------------------= ----------------------+--------- > > alom,apc,bladecenter,drac5,eps,ilo,ilo3,ipmilan,rsa,rsb,wti,cisco_ucs > > | 3.0 > > alom,apc,bladecenter,drac5,eps,ilo,ilo3,ipmilan,rsa,rsb,wti,cisco_ucs > > | 3.1 > > apc,apc_snmp,bladecenter,cisco_ucs,drac5,eps,ilo,ilo2,ilo3,ilo4,ipmila= n,rsa,rsb,wti > > | 3.2 > > apc,apc_snmp,bladecenter,cisco_ucs,drac5,eps,ilo,ilo2,ilo3,ilo4,ipmila= n,rsa,rsb,wti > > | 3.3 > > = > > In the proposed solution, we will have > > = > > option_value > > | > > version > > -----------------------------------------------------------------------= ----------------------+--------- > > alom,apc,bladecenter,drac5,eps,ilo,ilo3,ipmilan,rsa,rsb,wti,cisco_ucs > > | 3.0 > > apc,apc_snmp,bladecenter,cisco_ucs,drac5,eps,ilo,ilo2,ilo3,ilo4,ipmila= n,rsa,rsb,wti > > | 3.2 > > = > > This is clear and documents only the changes done between versions and > > serve > > all values: boolean , string and complex type (those which requires any > > kind > > of parsing) > > = > > What do you think? > > = > > Eli > > = > > = > > = > > = > > = > > = > > = > > = > > = > > = > > = > > = > > = > > = > > > = > > > Thanks, > > > Kanagaraj > > > = > > > = > > > = > > > _______________________________________________ > > > Engine-devel mailing list Engine-devel(a)ovirt.org > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > I think, this is a good suggestion... > > > = > > > = > > > _______________________________________________ > > > Engine-devel mailing list > > > Engine-devel(a)ovirt.org > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > = > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > = >=20 --===============4032508577129481696==-- From rnachimu at redhat.com Mon Dec 2 00:23:01 2013 Content-Type: multipart/mixed; boundary="===============4020214455623519253==" MIME-Version: 1.0 From: Ramesh To: devel at ovirt.org Subject: [Engine-devel] Adding users and assigning roles in Ovirt Date: Mon, 02 Dec 2013 10:52:53 +0530 Message-ID: <529C192D.106@redhat.com> --===============4020214455623519253== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi All, We have 'Add' action under 'Users' main tab to add users in Ovirt . = It looks slightly different from the "Add user" option of the Configure = option. Actually, this one is missing the "Role to Assign" option. I = think without assigning any role, adding a user is not meaningful and it = didn't complete the flow. Currently to assign any role to the user, either we have to use = 'Configure' option ( to add system permission) or we have to go to the = specific entity and add permission for that entity. It will be nice if = we can assign roles( system level permissions) while adding users in = 'Users' tab itself. It will be a clear user flow where one can add user = and assign role in the same place. I have attached both the screen shots. please share your thoughts. Regards, Ramesh --===============4020214455623519253== Content-Type: image/jpeg MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="AddUserFromConfigureOption.jpg" /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEP ERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4e Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCAKcBCgDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCpVLVd Ts9Mg827l25+6o5ZvoKtyusUTSOcKilmPoBWX4VXTrbSLz4h+JIBc7ZvJ0y0fG1mHQjPXBz9NrHB OMbwjfVmU58uiIYtX1u5jWex8I6tc27jKSrC5DD1GFI/Wnfb/E//AEJGsf8AfmT/AOIrB1z4i+Ld Umdv7VlsoicrFaHywg9Nw+Y/iayv+Eq8Uf8AQyax/wCB0n/xVdKoeS/E5XX83+B2f2/xP/0JGsf9 +ZP/AIij7f4n/wChI1j/AL8yf/EVxn/CVeKP+hk1j/wOk/8AiqP+Eq8Uf9DJrH/gdJ/8VT9guy/E Pbvu/wADs/t/if8A6EjWP+/Mn/xFH2/xP/0JGsf9+ZP/AIiuM/4SrxR/0Mmsf+B0n/xVH/CVeKP+ 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 exr2qWnjjxZpen2ulWmiyTZS4a14jbALFlT+E4B4yc1em8K+HbwaPf6Je6i+nXerJplwLkIsqscH cpAxjae49Kxb/wAYavc61Y6pEtpZSWAxaxWsASKMdwF9D3zU+peN9VvrzTp/sunWsen3K3cVvbQe XE0oIO5gDkk49fWhxnpYyUodTZ1Twn4Ut7LVri11HVpjol9HFqClEG6J5dhEf+0ORk8EjoAa6/xj cQXPiDXNHsby/tTpXh+6MkKxQCHayQkIh2ltpH3s4IIG0gZryqXxNfyW+vQNDbbdcmSa5IVsoyyG QbOeBknrnirNz4z1S41zV9XeCzE+rWTWU6hG2KjKqkqN2Q2EHUkdeKl05N6/1t/wSlUilp/W/wDw DpfD3gfw1dXGhabqWo6mup6pafbdsCoIhGVYhckEhvlznkcHpkViW3hixlsvBs5lut2uXckN0Ay4 RVmWMFOODgk855rqfB/jXSNK0Swnv9WhubqxgaOO2/ssi4xggR+fuK7AcdgeBn0rkdB8c6xo+l22 nQW+nzx2kxlt3uLfe8RJywU54B5z35PIpL2jb/rv/wAAb5El/Xb/AIJrN4V8L2OmapqWr3mqpBZa 5NpyJb7GeRVGV6gAN1JPTA6Vp6L8Lor/AMM2t4Zb83l3afaY5UMX2eMkblRgTvJIxyBjmuI1XxNf 6lpd3p08NssV1qb6m5RWDCVlKkDJPy89OvvVmHxjfrokWl3GnaReiGLyoLi6s1lmiTsFY8YGeMg1 TjUtoyVKnfVHN0UUVuYhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFbGkaa7yb3BUr1P9z2/3v5fXom7DjFti aVpbyPukGCOTnon19/b866iztRtEcakLnPPVj6n3p1hZgqqIm1B0H9T71u28EcCgsMk9B61zykdM Y2GWdosa7n4FWwCyFifKhH8R6n6UkhEZzMAz9ouw+v8AhVeaVpDukbJAwB6fT0rPc02JJJ8KY4FK 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 0YRwqGaVEGX2lQwD7tpOSB+NV9b8H2etX1/dajd3hNzbrbxLBcSwrEgBOCEcCQ7mLfMMdBjjmKfw vqEs5Ztbj8qa7tL26T7H80s0Bi5Db/lVhCvGCQec9QQC7p3ijT9S12DTLDfMsltPOZijouI3iUbd ygOreYfmUkfL37btc14d8NXWl39jNNqqXNvp9jJY2sQtthEbNEQWbcdzARAZwAfQc56WgDN1fUzY 3NvCBajzldt1xceUo2lRgHack7v0NLBq9s1vFJPuiZwSQFZgoDEbiQOFOOCcZFT3Fms95HO7fKkM kRTHXcUOc9sbP19qpX2ii7nSeWS3kkEYjZprVZDtBJBXPCtycnkH0oAnfWNORnVrggoWDfu242nD dugPU9BT31SxSSSNpiDGGLHy2x8oywBxgkDsOarTaN5kMsf2jHmRXUednTznDZ69sY9/apItMZbp We4D26SyTJF5fIZ92ctnkfM3GO9AFie/tYWZXkJYBThUZid2cYAByeDwPSpreaO4hWaJtyN0OMf/ AKqyjoSNYiB5Y5nWYSK00IdSFXYqspPIC+455rR0+2FpZx242YTP3Iwi8nPCjgdaALFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFeTfGX/kJeCv8Arq384a9Zryb4y/8AIS8Ff9dW/nDWtH4v67GVb4f67klFFFZGoUUUUAFFFFAB RRRQBS1//kBah/17Sf8AoJqWw1G80n4AWWoafN5NzFI2x9obGbhweCCOhNRa/wD8gLUP+vaT/wBB NRT/APJt9v8A9dD/AOlTV0UleK9UYVXaT9Gcf/wsXxn/ANBpv/AeL/4mj/hYvjP/AKDTf+A8X/xN UvAuiW2v6zJZXM7R7bd5Y40ZVe4dcYjUtwCc9TnpVy98LGfV49MsLTUNOvPs0kz22p4y5QE4jdVG /IB6qBx1rscaadrI406jV7i/8LF8Z/8AQab/AMB4v/iaP+Fi+M/+g03/AIDxf/E1Hp3gjVLzRo9W +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 UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAVXu/9faf9dj/6LerFV7v/AF9p/wBdj/6LegTPmPw1/wAlK+IH/YZl/wDR01dXXKeGv+Sl fED/ALDMv/o6aurrfEfxPu/Iyw/8NfP8wooorA2CiiigAooooAKKKKACiiigAooooAKKKKACuWvf +P2f/ro3866muWvf+P2f/ro386AJtG/5CUX4/wAjXE/GX/kJeCv+urfzhrttG/5CUX4/yNcT8Zf+ Ql4K/wCurfzhrWj8X9djKt8P9dySiiisjUKKKKACiiigAooooApa/wD8gLUP+vaT/wBBNdJ8Lv8A kl+i/wDXSb/0ZLXN6/8A8gLUP+vaT/0E10nwu/5Jfov/AF0m/wDRktar+H8/0Mn/ABPkdDRRRWRq FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXT/sof8kuv/wDsP/8AslvXMV0/7KH/ACS6/wD+ w/8A+yW9b0/4cvl+phU/iR+f6Ht9FFFYG4UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABVe7/wBfaf8AXY/+i3qxVe7/ANfaf9dj/wCi3oEz5j8Nf8lK+IH/ AGGZf/R01dXXKeGv+SlfED/sMy/+jpq6ut8R/E+78jLD/wANfP8AMKKKKwNgooooAKKKKACiiigA ooooAKKKKACiiigArlr3/j9n/wCujfzrqa5a9/4/Z/8Aro386AJtG/5CUX4/yNcT8Zf+Ql4K/wCu rfzhrttG/wCQlF+P8jXE/GX/AJCXgr/rq384a1o/F/XYyrfD/XckooorI1CiiigAooooAKKKKAKW v/8AIC1D/r2k/wDQTXSfC7/kl+i/9dJv/Rktc3r/APyAtQ/69pP/AEE10nwu/wCSX6L/ANdJv/Rk tar+H8/0Mn/E+R0NFFFZGoUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFdP8Asof8kuv/APsP /wDslvXMV0/7KH/JLr//ALD/AP7Jb1vT/hy+X6mFT+JH5/oe30UUVgbhRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFV7v8A19p/12P/AKLerFV7v/X2n/XY /wDot6BM+Y/DX/JSviB/2GZf/R01dXXKeGv+SlfED/sMy/8Ao6aurrfEfxPu/Iyw/wDDXz/MKKKK wNgooooAKKKKACiiigAooooAKKKKACiiigArlr3/AI/Z/wDro3866muWvf8Aj9n/AOujfzoAm0b/ AJCUX4/yNcT8Zf8AkJeCv+urfzhrttG/5CUX4/yNcT8Zf+Ql4K/66t/OGtaPxf12Mq3w/wBdySii isjUKKKKACiiigAooooApa//AMgLUP8Ar2k/9BNdJ8Lv+SX6L/10m/8ARktc3r//ACAtQ/69pP8A 0E10nwu/5Jfov/XSb/0ZLWq/h/P9DJ/xPkdDRRRWRqFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABXT/sof8AJLr/AP7D/wD7Jb1zFdP+yh/yS6//AOw//wCyW9b0/wCHL5fqYVP4kfn+h7fRRRWB uFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVXu/9faf 9dj/AOi3qxVe7/19p/12P/ot6BM+Y/DX/JSviB/2GZf/AEdNXV1ynhr/AJKV8QP+wzL/AOjpq6ut 8R/E+78jLD/w18/zCiiisDYKKKKACiiigAooooAKKKKACiiigAooooAK5a9/4/Z/+ujfzrqa5a9/ 4/Z/+ujfzoAm0b/kJRfj/I1xPxl/5CXgr/rq384a7bRv+QlF+P8AI1xPxl/5CXgr/rq384a1o/F/ XYyrfD/XckooorI1CiiigAooooAKKKKAKWv/APIC1D/r2k/9BNdJ8Lv+SX6L/wBdJv8A0ZLXN6// AMgLUP8Ar2k/9BNdJ8Lv+SX6L/10m/8ARktar+H8/wBDJ/xPkdDRRRWRqFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABXT/sof8kuv/8AsP8A/slvXMV0/wCyh/yS6/8A+w//AOyW9b0/4cvl+phU /iR+f6Ht9FFFYG4UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABVe7/19p/12P/ot6sVXu/8AX2n/AF2P/ot6BM+Y/DX/ACUr4gf9hmX/ANHTV1dcp4a/5KV8 QP8AsMy/+jpq6ut8R/E+78jLD/w18/zCiiisDYKKKKACiiigAooooAKKKKACiiigAooooAK5a9/4 /Z/+ujfzrqa5a9/4/Z/+ujfzoAm0b/kJRfj/ACNcT8Zf+Ql4K/66t/OGu20b/kJRfj/I1xPxl/5C Xgr/AK6t/OGtaPxf12Mq3w/13JKKKKyNQooooAKKKKACiiigClr/APyAtQ/69pP/AEE10nwu/wCS X6L/ANdJv/Rktc3r/wDyAtQ/69pP/QTXSfC7/kl+i/8AXSb/ANGS1qv4fz/Qyf8AE+R0NFFFZGoU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFdP+yh/yS6//AOw//wCyW9cxXT/sof8AJLr/AP7D /wD7Jb1vT/hy+X6mFT+JH5/oe30UUVgbhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFV7v/AF9p/wBdj/6LerFV7v8A19p/12P/AKLegTPmPw1/yUr4gf8A YZl/9HTV1dcp4a/5KV8QP+wzL/6Omrq63xH8T7vyMsP/AA18/wAwooorA2CiiigAooooAKKKKACi iigAooooAKKKKACuWvf+P2f/AK6N/Ouprlr3/j9n/wCujfzoAm0b/kJRfj/I1xPxl/5CXgr/AK6t /OGu20b/AJCUX4/yNcT8Zf8AkJeCv+urfzhrWj8X9djKt8P9dySiiisjUKKKKACiiigAooooApa/ /wAgLUP+vaT/ANBNdJ8Lv+SX6L/10m/9GS1zev8A/IC1D/r2k/8AQTXSfC7/AJJfov8A10m/9GS1 qv4fz/Qyf8T5HQ0UUVkahRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV0/wCyh/yS6/8A+w// AOyW9cxXT/sof8kuv/8AsP8A/slvW9P+HL5fqYVP4kfn+h7fRRRWBuFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVXu/wDX2n/XY/8Aot6sVXu/9faf9dj/ AOi3oEz5j8Nf8lK+IH/YZl/9HTV1dcp4a/5KV8QP+wzL/wCjpq6ut8R/E+78jLD/AMNfP8wooorA 2CiiigAooooAKKKKACiiigAooooAKKKKACuWvf8Aj9n/AOujfzrqa5a9/wCP2f8A66N/OgCbRv8A kJRfj/I1xPxl/wCQl4K/66t/OGu20b/kJRfj/I1xPxl/5CXgr/rq384a1o/F/XYyrfD/AF3JKKKK yNQooooAKKKKACiiigClr/8AyAtQ/wCvaT/0E10nwu/5Jfov/XSb/wBGS1zev/8AIC1D/r2k/wDQ TXSfC7/kl+i/9dJv/Rktar+H8/0Mn/E+R0NFFFZGoUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFdP+yh/wAkuv8A/sP/APslvXMV0/7KH/JLr/8A7D//ALJb1vT/AIcvl+phU/iR+f6Ht9FFFYG4 UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABVe7/19p/1 2P8A6LerFV7v/X2n/XY/+i3oEz5j8Nf8lK+IH/YZl/8AR01dXXKeGv8AkpXxA/7DMv8A6Omrq63x H8T7vyMsP/DXz/MKKKKwNgooooAKKKKACiiigAooooAKKKKACiiigArlr3/j9n/66N/Ouprlr3/j 9n/66N/OgCbRv+QlF+P8jXE/GX/kJeCv+urfzhrttG/5CUX4/wAjXE/GX/kJeCv+urfzhrWj8X9d jKt8P9dySiiisjUKKKKACiiigAooooApa/8A8gLUP+vaT/0E10nwu/5Jfov/AF0m/wDRktc3r/8A yAtQ/wCvaT/0E10nwu/5Jfov/XSb/wBGS1qv4fz/AEMn/E+R0NFFFZGoUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFdP+yh/yS6//wCw/wD+yW9cxXT/ALKH/JLr/wD7D/8A7Jb1vT/hy+X6mFT+ JH5/oe30UUVgbhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFV7v/X2n/XY/+i3qxVe7/wBfaf8AXY/+i3oEz5j8Nf8AJSviB/2GZf8A0dNXV1ynhr/kpXxA /wCwzL/6Omrq63xH8T7vyMsP/DXz/MKKKKwNgooooAKKKKACiiigAooooAKKKKACiiigArlr3/j9 n/66N/Ouprlr3/j9n/66N/OgCbRv+QlF+P8AI1xPxl/5CXgr/rq384a7bRv+QlF+P8jXE/GX/kJe Cv8Arq384a1o/F/XYyrfD/XckooorI1CiiigAooooAKKKKAKWv8A/IC1D/r2k/8AQTXSfC7/AJJf ov8A10m/9GS1zev/APIC1D/r2k/9BNdJ8Lv+SX6L/wBdJv8A0ZLWq/h/P9DJ/wAT5HQ0UUVkahRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV0/7KH/JLr/8A7D//ALJb1zFdP+yh/wAkuv8A/sP/ APslvW9P+HL5fqYVP4kfn+h7fRRRWBuFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAVXu/8AX2n/AF2P/ot6sVXu/wDX2n/XY/8Aot6BM+Y/DX/JSviB/wBh mX/0dNXV1ynhr/kpXxA/7DMv/o6aurrfEfxPu/Iyw/8ADXz/ADCiiisDYKKKKACiiigAooooAKKK KACiiigAooooAK5a9/4/Z/8Aro3866muWvf+P2f/AK6N/OgCbRv+QlF+P8jXE/GX/kJeCv8Arq38 4a7bRv8AkJRfj/I1xPxl/wCQl4K/66t/OGtaPxf12Mq3w/13JKKKKyNQooooAKKKKACiiigClr// ACAtQ/69pP8A0E10nwu/5Jfov/XSb/0ZLXN6/wD8gLUP+vaT/wBBNdJ8Lv8Akl+i/wDXSb/0ZLWq /h/P9DJ/xPkdDRRRWRqFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXT/ALKH/JLr/wD7D/8A 7Jb1zFdP+yh/yS6//wCw/wD+yW9b0/4cvl+phU/iR+f6Ht9FFFYG4UUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABVe7/ANfaf9dj/wCi3qxVe7/19p/12P8A 6LegTPmPw1/yUr4gf9hmX/0dNXV1ynhr/kpXxA/7DMv/AKOmrq63xH8T7vyMsP8Aw18/zCiiisDY KKKKACiiigAooooAKKKKACiiigAooooAK5a9/wCP2f8A66N/Ouprlr3/AI/Z/wDro386AJtG/wCQ lF+P8jXE/GX/AJCXgr/rq384a7bRv+QlF+P8jXE/GX/kJeCv+urfzhrWj8X9djKt8P8AXckooorI 1CiiigAooooAKKKKAKWv/wDIC1D/AK9pP/QTXSfC7/kl+i/9dJv/AEZLXN6//wAgLUP+vaT/ANBN dJ8Lv+SX6L/10m/9GS1qv4fz/Qyf8T5HQ0UUVkahRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AV0/7KH/ACS6/wD+w/8A+yW9cxXT/sof8kuv/wDsP/8AslvW9P8Ahy+X6mFT+JH5/oe30UUVgbhR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFV7v/X2n/XY /wDot6sVXu/9faf9dj/6LegTPmPw1/yUr4gf9hmX/wBHTV1dcp4a/wCSlfED/sMy/wDo6aurrfEf xPu/Iyw/8NfP8wooorA2CiiigAooooAKKKKACiiigAooooAKKKKACuWvf+P2f/ro3866muWvf+P2 f/ro386AJtG/5CUX4/yNcT8Zf+Ql4K/66t/OGu20b/kJRfj/ACNcT8Zf+Ql4K/66t/OGtaPxf12M q3w/13JKKKKyNQooooAKKKKACiiigClr/wDyAtQ/69pP/QTXSfC7/kl+i/8AXSb/ANGS1zev/wDI C1D/AK9pP/QTXSfC7/kl+i/9dJv/AEZLWq/h/P8AQyf8T5HQ0UUVkahRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAV0/7KH/JLr//ALD/AP7Jb1zFdP8Asof8kuv/APsP/wDslvW9P+HL5fqYVP4k fn+h7fRRRWBuFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAVXu/9faf9dj/6LerFV7v/AF9p/wBdj/6LegTPmPw1/wAlK+IH/YZl/wDR01dXXKeGv+SlfED/ ALDMv/o6aurrfEfxPu/Iyw/8NfP8wooorA2CiiigAooooAKKKKACiiigAooooAKKKKACuWvf+P2f /ro3866muWvf+P2f/ro386AJtG/5CUX4/wAjXE/GX/kJeCv+urfzhrttG/5CUX4/yNcT8Zf+Ql4K /wCurfzhrWj8X9djKt8P9dySiiisjUKKKKACiiigAooooApa/wD8gLUP+vaT/wBBNdJ8Lv8Akl+i /wDXSb/0ZLXkl7qviGSznjmuAYmjYONsfII56CvW/hd/yS/Rf+uk3/oyWtV/D+f6GT/ifI6Giiis jUKKKKACiiigAooooAKKKKACiiigAooooAKKKKACun/ZQ/5Jdf8A/Yf/APZLeuYrp/2UP+SXX/8A 2H//AGS3ren/AA5fL9TCp/Ej8/0Pb6KKKwNwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACq93/r7T/rsf8A0W9WKr3f+vtP+ux/9FvQJnzH4a/5KV8QP+wz L/6Omrq65Tw1/wAlK+IH/YZl/wDR01dXW+I/ifd+Rlh/4a+f5hRRRWBsFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFcte/wDH7P8A9dG/nXU1y17/AMfs/wD10b+dAE2jf8hKL8f5GuJ+Mv8AyEvBX/XV v5w122jf8hKL8f5GuB+OzyxnwnJAcSr5pQ8cMPJx1rWj8X9djKt8P9dy5RXBf2t4n/5+P/HI/wDC j+1vE/8Az8f+OR/4Vkane0VwX9reJ/8An4/8cj/wo/tbxP8A8/H/AI5H/hQB3tFcF/a3if8A5+P/ AByP/Cj+1vE//Px/45H/AIUAd7RXBf2t4n/5+P8AxyP/AAooA39Zgtxo96RbwAi3kwRGoI+U+1dr 8Lv+SX6L/wBdJv8A0ZLXmWsXmqy+FpLx2tEhmijYbA28ByAV646Ec/UY716b8Lv+SX6L/wBdJv8A 0ZLWq/h/P9DJ/wAT5HQ0UUVkahRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV0/7KH/JLr/8A 7D//ALJb1zFdP+yh/wAkuv8A/sP/APslvW9P+HL5fqYVP4kfn+h7fRRRWBuFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVXu/8AX2n/AF2P/ot6sVXu/wDX 2n/XY/8Aot6BM+Y/DX/JSviB/wBhmX/0dNXV1ynhr/kpXxA/7DMv/o6aurrfEfxPu/Iyw/8ADXz/ ADCiiisDYKKKKACiiigAooooAKKKKACiiigAooooAK5a9/4/Z/8Aro3866muWvf+P2f/AK6N/OgC bRv+QlF+P8jXBfHT7/hL/tr/AO0a73Rv+QlF+P8AI1wXx0+/4S/7a/8AtGtaPxf12Mq3w/13OToo orI1CiiigAooooAKKKKALGoWGnQaVe+VbgE27AZZmwF+YAZPAB5wOK9G+F3/ACS/Rf8ArpN/6Mlr h9Y0cRaReSf2heNsgdtreXg4U8HCV3Hwu/5Jfov/AF0m/wDRktar+H8/0Mn/ABPkdDRRRWRqFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXT/sof8kuv/wDsP/8AslvXMV0/7KH/ACS6/wD+w/8A +yW9b0/4cvl+phU/iR+f6Ht9FFFYG4UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABVe7/wBfaf8AXY/+i3qxVe7/ANfaf9dj/wCi3oEz5j8Nf8lK+IH/AGGZ f/R01dXXKeGv+SlfED/sMy/+jpq6ut8R/E+78jLD/wANfP8AMKKKKwNgooooAKKKKACiiigAoooo AKKKKACiiigArlr3/j9n/wCujfzrqa5a9/4/Z/8Aro386AJtG/5CUX4/yNcF8dPv+Ev+2v8A7Rrv dG/5CUX4/wAjXC/GyMTXXg6Esyh3dSVxkZMI4zWtH4v67GVb4f67nIUVuf8ACOQf8/8Ae/8AkP8A +Io/4RyD/n/vf/If/wARWRqYdFbn/COQf8/97/5D/wDiKP8AhHIP+f8Avf8AyH/8RQBh0Vuf8I5B /wA/97/5D/8AiKP+Ecg/5/73/wAh/wDxFAGHRW5/wjkH/P8A3v8A5D/+IooAva//AMgLUP8Ar2k/ 9BNdJ8Lv+SX6L/10m/8ARktc3r//ACAtQ/69pP8A0E10nwu/5Jfov/XSb/0ZLWq/h/P9DJ/xPkdD RRRWRqFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXT/sof8AJLr/AP7D/wD7Jb1zFdL+yo4T 4Vai7BiF10k7VJP3LfoByfwren/Dl8v1MKn8SPz/AEPcaKpf2pbf88r7/wAApv8A4mj+1Lb/AJ5X 3/gFN/8AE1gbl2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/ AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW 3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2 /wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8A AKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iq X9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4 BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo /tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK +/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNA F2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCe V9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/ AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW 3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2 /wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8A AKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iq X9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4 BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo /tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK +/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNA F2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCe V9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/ AOJo/tS2/wCeV9/4BTf/ABNAF2iqX9qW3/PK+/8AAKb/AOJo/tS2/wCeV9/4BTf/ABNAF2q93/r7 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 AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABVe7/19p/12P8A 6LerFV7v/X2n/XY/+i3oEz5j8Nf8lK+IH/YZl/8AR01dXXKeGv8AkpXxA/7DMv8A6Omrq63xH8T7 vyMsP/DXz/MKKKKwNgooooAKKKKACiiigAooooAqyy7JWHv/AErlLXWPE+q3N1d6UdIi0+3vJLVI bmOQy3HlOUkbzFbEfzKwA2P0z3wN/U5Nl2R7CuTTR9WtLy6Gla8lpYXVw1xJC9mJZI3Y5fy3LAKG OWwyNyx+lAGg3i9ra71eG4tJLl7fVY9PsYLRR5s5a1hnI+dguRvkOSVAVfzJ/HNkLbT3tdO1G8uL 8TeXaxLGsqmFgsobe6ruVjjaCSTnAOKzb3w/NJd3d9aaksF5Jqialbu9vvSJhapbFWXcC4KK3Qr9 725rX3hWWfw/baUt9ZTBZJprn7dpy3Ec0krmRnC7lKMGZiuG4zznigDoNV8a2OnvGJLLUZF+ypd3 TrCF+xwMSA8oYhhyrZABYbWyOK0PEMu6xgX1vrT/ANKI64bWPAlpqEljK81lcy29jFYyTalpsd5I 6RkkOhfhHO5skhgcjI4FdVq0u6G2H/T9af8ApRHQB1leWfHL/kPeEP8Ar5k/9Chr1OvLPjjzr/hE D/n5k/8AQoa1o/H9/wCRnV+H7vzG0UUVkaBRRRQAUUUUAFFFFAEcqiWJ4njYo6lWHHINJ8JPEUWg 3E3hDWpvI/emSxmkOEcN/BnoMnkepJHXAMtUdX0qy1WARXkW7H3XHDL9DWkJJJp7MicW7NbnsdFe FRaJrdtGsFh4v1a2t0GEiWV8KPQYYD9Kd/Zfif8A6HnWP+/0n/xynyQ/mJ55/wAp7nRXhn9l+J/+ h51j/v8ASf8Axyj+y/E//Q86x/3+k/8AjlHJD+b8w55/y/ke50V4Z/Zfif8A6HnWP+/0n/xyj+y/ E/8A0POsf9/pP/jlHJD+b8w55/y/ke50V4Z/Zfif/oedY/7/AEn/AMco/svxP/0POsf9/pP/AI5R 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 /S/4UfYLH/nytv8Av0v+FWaKOeXcOSPYrfYLH/nytv8Av0v+FH2Cx/58rb/v0v8AhVmijnl3Dkj2 K32Cx/58rb/v0v8AhR9gsf8Anytv+/S/4VZoo55dw5I9it9gsf8Anytv+/S/4UfYLH/nytv+/S/4 VZoo55dw5I9it9gsf+fK2/79L/hR9gsf+fK2/wC/S/4VZoo55dw5I9it9gsf+fK2/wC/S/4UfYLH /nytv+/S/wCFWaKOeXcOSPYrfYLH/nytv+/S/wCFH2Cx/wCfK2/79L/hVmijnl3Dkj2K32Cx/wCf K2/79L/hR9gsf+fK2/79L/hVmijnl3Dkj2K32Cx/58rb/v0v+FH2Cx/58rb/AL9L/hVmijnl3Dkj 2K32Cx/58rb/AL9L/hR9gsf+fK2/79L/AIVZoo55dw5I9it9gsf+fK2/79L/AIUfYLH/AJ8rb/v0 v+FWaKOeXcOSPYrfYLH/AJ8rb/v0v+FH2Cx/58rb/v0v+FWaKOeXcOSPYrfYLH/nytv+/S/4UfYL H/nytv8Av0v+FWaKOeXcOSPYrfYLH/nytv8Av0v+FH2Cx/58rb/v0v8AhVmijnl3Dkj2K32Cx/58 rb/v0v8AhR9gsf8Anytv+/S/4VZoo55dw5I9it9gsf8Anytv+/S/4UfYLH/nytv+/S/4VZoo55dw 5I9it9gsf+fK2/79L/hR9gsf+fK2/wC/S/4VZoo55dw5I9it9gsf+fK2/wC/S/4UfYLH/nytv+/S /wCFWaKOeXcOSPYrfYLH/nytv+/S/wCFToiIu1FVVHYDAp1FJyb3Y1FLZBRRRSGFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH//Z --===============4020214455623519253== Content-Type: image/jpeg MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="AddUserFromUsersTab.jpg" /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEP ERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4e Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCASwB4ADASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD4yoor rfg/4Xbxj8R9G0ExNJbyziS6C/8APFBvkHsSoIHuRQByVFeyfHvwHqEXi/w3d2fheDw/N4mjSAaZ CEWKC7VxEVXZlQGBjbj+8e+azNP8DeCrH4k6T4Y1HxjJqFwusR2Oo28WlusW4MVZFk8wFgXAjLYX G7cM4oA8uor2q48IeG7Pxx8RtN8M31leW+m6Jqk0kGoaQ0n2IxTqoihZpc+Yo4Wfk8H5Tmueufhf HDaPqo8QbtEHhtdcS9+x43OzCMWu3fgP5vyZz747UAebUV9A6N4E8K6jchfFE1jbiP4cQ6rb/wBn 6W0XlkoxNxJtl/ezR4BOcCTd0XHPJ2XgxdZ+Hlna+HLrTb9L3xp/ZlpeTaZ5F2+62UgtLvYrFzny 8HBy249KAPKqK9X8Y/Be+0Kzgu4dWmMH9qx6Zcy6lpkthHG8hwsyM+RJDkHLjGOOOax/ix8PIfAR hgfU9RvLl5SmZdJa3t5FA+/FMXYSDp0A65oA4CiiigD6V+BmhSaZ4ItJb0AveObpI+yqwG0n1JAB +mK9dsbiSHT7l4cmVIXaMDruCnGPxrjdJlRbaBEUIqRIqqOigAACp73xDqOnLPLp9gLkW6gvkn5u mcAegOa/M8VSrY+vZbyfV2Wr89D9Xnh4YXBJPWMI6/JXY7Wba40zTbe4mLobgZCOyhsYJ3AAkkds 4FePeMrxHlcbufWtPV9fuL37dNEjq8okdUQklBgkAfT+ldR8c7e30mPXILAfC+2tUtYwln9mRdWX fEm4rhOHyxYHPQg1+41K9fDYanSxM+ebV29Fby0XTufz3RyzB1sZUxGEp+zgnZLV/PVt6nh93dC5 tJIn5ePjJ6le35VyFwoWZgOma+gfFvgPS5fE3jq41nXLDQrTw/NZpI2maGfJf7QgChIBL+7AK8/M 2SxPFYGh/A+58Q2FnqNlrN60WrSzrpci6LNJEyIxVXuJFJFuHI4B3YHWvmpPmm2j6uCcYpM8Zor3 bwXpvg3w58DbvXtU/s59bl1qXT5ZL/QhfeRIkO4W6AyADPDeaP72MHANczonwkGow6Rp8viaC28S 63ph1PTdLNozJLDtZkDTZwjsqMQNp6ckZoKPL6K9E8H/AA0g8TeGoPEVr4mt4NPtWkGvtNBhtLVV LI4XfmYOAQuNuW+X3rz+4ES3Ei28jyQhiI3dArMueCQCcHHbJ+poAjooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK+ov iV4K8Cz+Nn1+HT9P0zSvCCxnxDYQRpEtypgSe3KooAJldzCfpXC/E/wNZ638fvE2k6Uth4f0fTtP i1K6aG2AitbdLSFpGWNAMks3QYyWoA8Xor1LS/hJFq3ifwrZaZ4ojn0bxNBdy2eotZMjo1sjtIjw 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 KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKAI7uJ5rWWGO4ltnkRlWaIKXjJGAy7gVyOoyCPUGsO08P6tDdRTSe OPEFykbqzQyw2ISQA5Ktttg2D0OCD6EVqWRvtSMsttNBbQJI0as8ZkZypwTgEYGePwqx/Z2p/wDQ Vtv/AADP/wAcoAkoqP8As7U/+grbf+AZ/wDjlH9nan/0Fbb/AMAz/wDHKAJKpa1Y3N/arDa6xfaU 4cMZrRIWdhgjafNjdcc54GeBz1zZ/s7U/wDoK23/AIBn/wCOUf2dqf8A0Fbb/wAAz/8AHKAMzRdI 1CwummuvFGr6qhQqIbuK1VFOQdw8qFGzxjk45PHTGvUf9nan/wBBW2/8Az/8co/s7U/+grbf+AZ/ +OUASUVH/Z2p/wDQVtv/AADP/wAco/s7U/8AoK23/gGf/jlAFHXNNvNQ8n7J4g1LSPL3bvscdu3m 5xjd50UnTBxjHU5zxiLRdI1CwummuvFGr6qhQqIbuK1VFOQdw8qFGzxjk45PHTGn/Z2p/wDQVtv/ AADP/wAco/s7U/8AoK23/gGf/jlAElFR/wBnan/0Fbb/AMAz/wDHKP7O1P8A6Ctt/wCAZ/8AjlAE lFR/2dqf/QVtv/AM/wDxyj+ztT/6Ctt/4Bn/AOOUASUVH/Z2p/8AQVtv/AM//HKP7O1P/oK23/gG f/jlAGHaeH9WhuoppPHHiC5SN1ZoZYbEJIAclW22wbB6HBB9CK6Co/7O1P8A6Ctt/wCAZ/8AjlH9 nan/ANBW2/8AAM//ABygCSsvxFo41lbCGW4Mdvb3sV1NEEz5/lnciE54AcI3f7uO9aH9nan/ANBW 2/8AAM//AByj+ztT/wCgrbf+AZ/+OUASUVH/AGdqf/QVtv8AwDP/AMco/s7U/wDoK23/AIBn/wCO UAc//wAI3rP/AEUDxL/340//AORa6C0ieG1ihkuJbl40VWmlCh5CBgs20BcnqcAD0Ao/s7U/+grb f+AZ/wDjlH9nan/0Fbb/AMAz/wDHKAJKKj/s7U/+grbf+AZ/+OUf2dqf/QVtv/AM/wDxygCSio/7 O1P/AKCtt/4Bn/45R/Z2p/8AQVtv/AM//HKAJKKiew1VVJTUbSRh0U2pUH8d5x+VY51qWeVLa3RI pghaYyDcI8MVxgdTlW7jpQBu0Vj/AGq9/wCghB/4Bn/4uj7Ve/8AQQg/8Az/APF0ATa5pt5qHk/Z PEGpaR5e7d9jjt283OMbvOik6YOMY6nOeMGh6beaf532vxBqWr+Zt2/bI7dfKxnO3yYo+uRnOegx jnNaa+v4Y2lWeC42jJj8goWHsdx5/CtaznS6tIbmM5SWNXX6EZFAEtFFFABRRRQBW1S2mvLGS3t9 QudPlfG24t1jMiYIPAkVl5xjlTwTjBwaxP8AhG9Z/wCigeJf+/Gn/wDyLXSUUAR2kTw2sUMlxLcv Giq00oUPIQMFm2gLk9TgAegFUfFelf274X1bRPP+z/2hZTWvm7N3l+YhTdtyM4znGRWlRQA2BPKh SPOdihc+uBTqKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig 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 xI/g7Q106JBrcwuLfVyJVHlx32WumDE/MUkKsMZzs4oA7bSfGOlzeGtK1rWLqy0RdUjEltFd3aoW VuUwW25JUqcY4zior/xzoumeMLjw/q99Yadssre6hnubtY/OMryoVCtj7vlDnJ++OnflvHXhPV5f FS32nQ6pNpcmkpp3kaa9kHiCu5IIu0IKMrqPlIPycg8YlttG1jR724Fv4bvdVtJ/DNjpkazXVuW8 yI3AZZiWXPEi7mUEHJwD0oA9LD5GRyDS7jXP+H7PUPD/AIDsNPKNqmoabpkcWxJApuZY4gMBmwBu IwC3rzVy7vdRi+2eRo8tx5NmJoNs8a/aJvnzAMn5SNq/M2F+cc8HCGam4151YS7vEmrDPQn/ANKb r/CvQUJKgsCpI5GeleYaVIT4p1sZ6Mf/AEru6ANjUtV07TY0k1HULSzRzhWuJljDH0G4jNcn4R8d 29/PJDrN/pdnI0NvNApcQkmUMTGNzHeVwvIx97oK0PFvhm08SC3Nxe39nJbhwklpIqNhtpIOVPdF /KvOPBfgWXWmul1x9csYUt7cSR8xCeYq3ng71JYcL8ynHPB9PQw9PDyoyc3rp+fQ4606yqxUVp/W 57aG5HNaPhBt3hPR29bCA/8AkNaxgxyOa1fA53eCtDb1063P/kNa887DYooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCh4OsrrT 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 AO4bMFcbWyTxkASab4Qktb21kZbIxQajHcYG4/uk08WwUbsnIkGQCTxzknigDpm1XTEvYrJtRs1u pk3xQmdQ7r6hc5I9xStqWnLDHM1/aiKSEzo5mXa0Qxlwc8qNy89OR61x2i+EdXsbSxsJH094Vewn uLgO/mo9tHEpRBtwVYxdSQQHbjmpbjwbdz2OpWr3MOwlE04LI6+XEs/n7GZcMuTtTKkkKikc0Adh Y3lpf2y3VjdQXUD/AHZYZA6N9CODU9YvhDSpdJsJ454oopZ7hpnVLua56qq8ySncxwo7Ae3c7VAG ZrGt2el3thaXIlL3smxCighOVXc3PA3Oi8Z5cVPJqumR6kmmyalZpfOMrbNOolYeoXOT+Vc94j8K 32uajf3L6zPYo9stvapbrGwwDvLPvQkHfj7hHCDnPRs2g61NrsF8U0yNXlt57tlmdgzoqhv3TIVZ vlwsgKMBt4O3kA3Br2kSCQWmo2d28U0cMqQ3MZaNncIN2WGOT06noATgFw13QzJJGNZ04vG22RRd JlTuVcEZ4O51H1YDuK5S28JawrxxsNNgt4JbYxIkzyfLHdRSnZuTdEu2MjywzLnbyMVi6RoWp6nd 6bYPp0UVtpVpFbvPNbTReeqXltL83mIuWZIXOF3Lk/e+bgA9Lg1G1u9Oa+02WPUogrFPssqP5hH8 KtkLnIxyQM9SKyNP8XabNbPc6kj6HCJngjfUriCMSyI7I6rtkbO1lIOcZyMZFX9G0+WyvtYmcx+X e3ouIlQn5V8iKMg8cHdGx4z1HfNYV14b1drCG1iu08s3t7NNEl5NbhlnneRG3RgMxVWwUyASTzwD QB0Uur6TDdR2suqWMdxKFMcTXCh3DEKpAzk5JAHqSKdYarpmoTTQ2GpWd3JAcSpDOrtGfRgDx+Ne a2mjazp0tl4fewiumF9psz3SQzEItv5KkiQxhMFIt33sgsygNndXWeE9B1LS9TMlylhFaR27QQpD K8pGWBGzeu6JMD/VhnHTGNvIB1VFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAFC+1jS7G6jtbu+hhmkGVRm5x6n0H1q1cTpDEJ GywLony+rMFH6kVyV9qcV5Jc6bqs1ppscsYkR7iEqSQRzyQOgIHf8q2LDTPs2jRw2+JN9xFMcLt4 DoTwf9la650IwjHm0f4ff/w5ywrSm3bb8Taori/GemePZ9ds5PDHiRLTT52CXUcttC/2YAcuuVy4 OMbSc7iOdpO3sLdGigjjeZ52RQrSOAGcgfeO0AZPXgAewrlastzpTuySiiuD+3adB8WJmtbuyaV9 JaEB7kAPc+fxGW5IboMYJA6DjFIZ3lFed/ECW2utQ03Tr1rPTtWkUSPdNenyrSESZ3IW2gu23H3Q eozjmvRKAILp3UIqNtLvtzjOOCf6VDK7RJvku5FH0X/Cpbz70H/XT/2Vqpy/Jeh7jlOkZ7Kff39/ 8ilsImkeaOFpRO7bV3YZRg+3QGprl38yONH2bgWJABPGOOfrUV3/AMesv+438qkuP+PqL/cf+a02 tQInkZJFRruUM3TKrz/47Ti00ZRvOZwXCkMB3OOwHrUd8YvJ2yKWLcKo6k+1CCVbeMTMC/mJ/wCh CiwFryZP+fqb8k/+Jo8mT/n6m/JP/iamrm/F/if+wtQsLT/iVJ9rimk87UdR+yRr5ZjG0Nsfcx8z OOOFNQM3vJk/5+pvyT/4mjyZP+fqb8k/+JrPtNf06WOBZLqA3EnkjZAzSqzSLuUxttHmIQGIcDGF YnGDiHT/ABVoeoQtLZXFxOogFwoSzm3SRnHzIuzLjJAO0HB4OKANbyZP+fqb8k/+Jo8mT/n6m/JP /iax28X6Cqrm5ufMbzP3P2KfzQU2FwY9m8ECRDgjo2enNM1LxdpVs8EVtIbyaaa1jUIr+WBPIiqf MClc7X3hSckD3zQBt+TJ/wA/U35J/wDE0eTJ/wA/U35J/wDE1meLNdGg2MdwLRruR3I8pW2nYqM8 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 LVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H 5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP +NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFV fPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/G jkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHn y/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/ 2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYX LVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H 5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP +NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFV fPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/G jkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHn y/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/ 2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYX LVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H 5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP+NHny/7H5H/GjkYXLVFVfPl/2PyP +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 X+//AOymn0yX78X+/wD+ymvJ4PBniJPiVNq93HqE4bWDdQXsN1AkaWxHETZQzNgfL5YIQjnIPJAP W6K858UeDtT1Dxl4TlvJrrXdMtXvvt0t35CGNJIkVEKxqm5Synop6nJxiuU8O+CPGOmWPhS5i0tV 1S2tNTt9SM06Op3IwtUk+Y70zjgZA74o1A9pvr2GyEJnWciaZYV8qB5cM3QtsB2r6s2FHciq/h3W tM8Q6PBq+j3P2myn3eXLsZN21ip4YAjkHqK8P0jwP46g1Cw+06O4tzrWmalII5LaOK3MSOs5CRlQ OWBG1TkAZJPX074LaNqfh/4cabpGsWxtb2BpvMi3q2N0rsOVJB4I6GhXA7KiiigAooooAKKKKACi iigAooooAKKKKACmL/x8P/uL/M0+mL/x8P8A7i/zNAD6KKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigDF/tbUP+fj/AMcX/Cj+1tQ/5+P/ABxf8Kwteurq y0yS6tI45Hj5ZXz93v0rL8L63qGr3UiyW8CQRrlmUHOT0HWq5V2M7s7H+1tQ/wCfj/xxf8KsQXGt zpviLMvrsUfzFUtMhWe/iif7pPP4DNVIJtP1OziutXjXzblVdROuUhRj8u1TwAAevseaXLd2SHe2 rZqT6hqsD7JZGRvQov8AhUf9rah/z8f+OL/hUaQpbytp0N2Lqze1a6tmyD5WxlBUEcYO4Y+hqezg hktozHHHNMSd6NIVbHbbUpprYbv3Gf2tqH/Px/44v+FH9rah/wA/H/ji/wCFNjsjL5ZRiu6YxspH Kf48Z/KnyaeiQiYzsyEbgyxZGM9M54P+c0/dFqJ/a2of8/H/AI4v+FH9rah/z8f+OL/hU1xpyG8n jhLiOFV3AJuOSOwzz61CbDYbnzZdotyoOFzkNR7oe8H9rah/z8f+OL/hR/a2of8APx/44v8AhRda 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 ptL1NaEqCd6p7Po+q2eqwebas4YBS8ciFHTIyMg/jyMg4OCavV5/4Tv4E8XRJPOlxPcwvDE1uSYk /jIYsFYkiM9BgY6ktx6BWuEqyq0lKVr+RNZU1Nqm7oKK8t8LeGYNRlvLm68CeD9Rgl1zUBLfXkgN 0yi+mBJQ27AkAYAMnIA5Xtc1bxLr1lNqdjDdLcXukf2hfSoYlzNbrDvt4yAOBmaMZGCfKbn71dJk ejUV5jb694qGh3sb3lxDP9r0tLe5uxZPKBc3KRyDZbu67NpypbBO48nbmtS41zVLCSXwi2oSXOvT XCR2N3JEgd7eQFjOVVQmYwkowFwSiZHzigDuqK4XSta1eXxJZvLqnmw3mrXunNp/lRgW8cAlKygg b8nykJySP3wwBxWTpHiPxNZ+HbDVrvUm1Wa/8JXGsCB7eNFSeJLcqF2KCQ3nHIJPI4wOKAPUKK5D 4dalrd5Nf2+rtcyJFHBLDJdPaecTIG3DbbOyhPlBUtgncRzjNdfQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGRrX/AB9L/uD+ZqjV7Wv+Ppf9wfzNUall HX0UUUgCiiigArI1nw/Y6lcLd757O9UAC6tXCSEehyCGHswOO1QeJ/FWneHp4Yr+K6PnKWRo4wV4 PIySOaseGtetPEFrJdWUVwkSPs3SoF3HGeME07NaiutixoulWWj2Is7CHy49xd2Jy0jnq7HqWPqa vVDezi2s57kjIijZyM4zgZrn73XY9KvLCG81jT3udRfZDbTXEcIkOQMREkFjkqMck5HTNIZ01FRW s6XEAlQMoJKlWGCpBIIP0IIrj9B8Y6tdadomrav4ftrLTNZWAwT22oG4MLTAGJZVaJNuSyrlS3zE duaAO1orDbxXof8AaF1p6XM0t1bLIXSK1lfeYxl0QhcSSAdUQlvasnRfiHot14e03VtS87TmvrcX XlfZ5pBBCzFUeVhGBGpx95sKedrMoDEA7Kis2bXdKh+1eZdbfsl7DYz/ALtvlnm8ry06c58+LkcD dyRg4xNM8b213rtnpEmn3cc11JqCI8cMsqL9luvs+SyptAbliSQE+UE/MpIB1tFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABXnXjr/ko+ifSD/wBHNXoted+OBn4kaID3+z/+jmoA6zXdLtdZ0mfT bzf5MwGSjYZWBDKw9wwB5yOOQRxXIQ/C3RIrlblNU1bzVBAbMHQgjH+q9zXofkx+h/76NHkx+h/7 6NKUIS+JXJcE9zlND8GabpWpx6gl1e3MsWTGJjGFViCpb5EXJwWHORz0zgjpam8mP0P/AH0aPJj9 D/30aIRhBWirIFG2xzd14K8HXVzLdXXhLQZ55nMkssmnRM7sTksxK5JJ5JNa62Vmt7LeraQLdSoI 5JxGBI6DOFLdSBk4Huau+TH6H/vo0eTH6H/vo1dx2Mmz0PRbO2a2s9H0+3geZZ2jitkRTIrBlcgD G4MoIPUEA9qqWWhzDxPNr+pXkV3OsTW9kkdv5a20LMGIOWYs5wuW4Hy8KMnPQ+TH6H/vo0eTH6H/ AL6NFwsZ0Wl6ZFqcuqRadaR38yhJLlYVErqOxfGSOBxntToNPsLcW4gsraIW0Jt7fZEq+VEduY1w PlX5E4HHyr6Cr/kx+h/76NHkx+h/76NFwsZul6XpmlRPFpenWdjHI+91toFjDN6kKBk+9XKm8mP0 P/fRo8mP0P8A30aLhYhoqbyY/Q/99GjyY/Q/99Gi4WIaKm8mP0P/AH0aPJj9D/30aLhYhoqbyY/Q /wDfRo8mP0P/AH0aLhYhoqbyY/Q/99GjyY/Q/wDfRouFiGipvJj9D/30aPJj9D/30aLhYhoqbyY/ Q/8AfRo8mP0P/fRouFiGipvJj9D/AN9GjyY/Q/8AfRouFiGipvJj9D/30aPJj9D/AN9Gi4WIaKm8 mP0P/fRo8mP0P/fRouFiGipvJj9D/wB9GjyY/Q/99Gi4WIaKm8mP0P8A30aPJj9D/wB9Gi4WIaKm 8mP0P/fRo8mP0P8A30aLhYhoqbyY/Q/99GjyY/Q/99Gi4WIaKm8mP0P/AH0aPJj9D/30aLhYhoqb yY/Q/wDfRo8mP0P/AH0aLhYhoqbyY/Q/99GjyY/Q/wDfRouFiGipvJj9D/30aPJj9D/30aLhYhoq byY/Q/8AfRo8mP0P/fRouFiGipvJj9D/AN9GjyY/Q/8AfRouFiGipvJj9D/30aPJj9D/AN9Gi4WI aKm8mP0P/fRo8mP0P/fRouFiGipvJj9D/wB9GjyY/Q/99Gi4WIaKm8mP0P8A30aPJj9D/wB9Gi4W IaKm8mP0P/fRo8mP0P8A30aLhYhoqbyY/Q/99GjyY/Q/99Gi4WIaKm8mP0P/AH0aPJj9D/30aLhY hoqbyY/Q/wDfRo8mP0P/AH0aLhYhoqbyY/Q/99GjyY/Q/wDfRouFiGipvJj9D/30aPJj9D/30aLh YhoqbyY/Q/8AfRo8mP0P/fRouFiGipvJj9D/AN9GjyY/Q/8AfRouFiGipvJj9D/30aPJj9D/AN9G i4WIaKm8mP0P/fRo8mP0P/fRouFiGipvJj9D/wB9GjyY/Q/99Gi4WIaKm8mP0P8A30aPJj9D/wB9 Gi4WIaKm8mP0P/fRo8mP0P8A30aLhYhoqbyY/Q/99GjyY/Q/99Gi4WIaKm8mP0P/AH0aPJj9D/30 aLhYhoqbyY/Q/wDfRo8mP0P/AH0aLhYhoqbyY/Q/99GjyY/Q/wDfRouFiGipvJj9D/30aPJj9D/3 0aLhYhoqbyY/Q/8AfRo8mP0P/fRouFiGipvJj9D/AN9GjyY/Q/8AfRouFiGipvJj9D/30aPJj9D/ AN9Gi4WIaKm8mP0P/fRo8mP0P/fRouFiGipvJj9D/wB9GjyY/Q/99Gi4WIaKm8mP0P8A30aPJj9D /wB9Gi4WIaKm8mP0P/fRo8mP0P8A30aLhYhoqbyY/Q/99GjyY/Q/99Gi4WIaKm8mP0P/AH0aPJj9 D/30aLhYhoqbyY/Q/wDfRo8mP0P/AH0aLhYhoqbyY/Q/99GjyY/Q/wDfRouFiGipvJj9D/30aPJj 9D/30aLhYhoqbyY/Q/8AfRo8mP0P/fRouFiGipvJj9D/AN9GjyY/Q/8AfRouFiGipvJj9D/30aPJ j9D/AN9Gi4WIaKm8mP0P/fRo8mP0P/fRouFiGipvJj9D/wB9GjyY/Q/99Gi4WIaKm8mP0P8A30aP Jj9D/wB9Gi4WIaKm8mP0P/fRo8mP0P8A30aLhYhoqbyY/Q/99GjyY/Q/99Gi4WIaKm8mP0P/AH0a PJj9D/30aLhYhoqbyY/Q/wDfRo8mP0P/AH0aLhYhoqbyY/Q/99GjyY/Q/wDfRouFiGipvJj9D/30 aPJj9D/30aLhYhoqbyY/Q/8AfRo8mP0P/fRouFiGipvJj9D/AN9GjyY/Q/8AfRouFiGipvJj9D/3 0aPJj9D/AN9Gi4WIaKm8mP0P/fRo8mP0P/fRouFiGipvJj9D/wB9GjyY/Q/99Gi4WIaKm8mP0P8A 30aPJj9D/wB9Gi4WIaKm8mP0P/fRo8mP0P8A30aLhYhoqbyY/Q/99GjyY/Q/99Gi4WIaKm8mP0P/ AH0aPJj9D/30aLhYhoqbyY/Q/wDfRo8mP0P/AH0aLhYhoqbyY/Q/99GjyY/Q/wDfRouFiGipvJj9 D/30aPJj9D/30aLhYhoqbyY/Q/8AfRo8mP0P/fRouFiGipvJj9D/AN9GjyY/Q/8AfRouFiGipvJj 9D/30aPJj9D/AN9Gi4WIaKm8mP0P/fRo8mP0P/fRouFiGipvJj9D/wB9GjyY/Q/99Gi4WIaKm8mP 0P8A30aPJj9D/wB9Gi4WIaKm8mP0P/fRo8mP0P8A30aLhYhoqbyY/Q/99GjyY/Q/99Gi4WIaKm8m P0P/AH0aPJj9D/30aLhYhoqbyY/Q/wDfRo8mP0P/AH0aLhYhoqbyY/Q/99GjyY/Q/wDfRouFiGip vJj9D/30aPJj9D/30aLhYhoqbyY/Q/8AfRo8mP0P/fRouFiGipvJj9D/AN9GjyY/Q/8AfRouFiGi pvJj9D/30aPJj9D/AN9Gi4WIaKm8mP0P/fRo8mP0P/fRouFiGipvJj9D/wB9GjyY/Q/99Gi4WIaK m8mP0P8A30aPJj9D/wB9Gi4WIaKm8mP0P/fRo8mP0P8A30aLhYhoqbyY/Q/99GjyY/Q/99Gi4WIa Km8mP0P/AH0aPJj9D/30aLhYwta/4+l/3B/M1RrQ15Qt4gX/AJ5jv7ms+pGdfRRRQAUUUUAc94+0 E6/oL28IX7VE3mQEnHPcZ9x/StHw9pkOj6NbadDgiJMMwH3m7n8TWhRTu7WFYr6jC1zp9zboVDyx Mi7umSCOa85u7XxLZeJbifTLi1skubq1ubpriTbKlrEoWS2RPKkDxkCVwVdMPKenJb06orm3guUC XEEUyA5CyIGAPrzSGZfgt5pfDVrNcI6SSmSQhxg4aRmB/EEH8a5rw/4c8U/2D4d8Paymj2unaOto ZHtLqSeS6a2CmPhokEY3orHljxjvmu+ooA4XRPBl3p/jH+0XEU1nHfXV9FK+pXTMrz+YSq227yUI 81xvGcjsCS1ZWreAPEN74P03w5/acawReH49MmCX88McUyxlGkCRgeercDbIQAFztOSK9PooA4K8 8N+KLm8ueNHjtb/VtO1W5P2iRnjeD7MJIkHlgMD9nyrkgnOCozkW9K8N6tpmqafqERsZ2hudUWaN pWQCC8vVuA6nYcuqoo2EAEk/MMZPZUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXnfjf/ AJKTof8A27/+jmr0SvO/G/8AyUnQ/wDt3/8ARzUAeiUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGF4g/wCP1P8A rmP5ms2tLxB/x+p/1zH8zWbQB19FFFABRRRQAUUUUAYPifxVp3h6eGK/iuj5ylkaOMFeDyMkjmrH hrXrTxBayXVlFcJEj7N0qBdxxnjBNVPH2gnX9Be3hC/aom8yAk457jPuP6Vo+HtMh0fRrbTocERJ hmA+83c/iarSwtbmhWBE0t7brqj6hJbh1DRCKTKRqRwGXox55z+Fb9eeXTeR4fEVpE32zdBE8Ck7 t/AOV7HOa0pR5gZ2+h3Ul9otjezBRJcW0crhRgAsoJx7c1jw+KfM8EaL4l+w4/tT+z/9H83/AFX2 qWJPvY52+bnoM7e2eNbQbaWz0KwtJgBLBbRxuAcjcqgH+VcTp3wz0my8JaBawaJoEOu6c+myT38d qqu7QSwvMyyBN5LBHAJxndzjJrJ7jOttvEmi3OuPo0N4WvEZl2+S4RmUZZFkI2Myg8qCSO4rJ1D4 gaBDoWp6pZyXF39hsXvVj+yzJ9ojX+KNimHTJALruUA5JxUem+G9Wg16186Sx/sqx1O71OCRHYzy PcCbMbKV2hVM8nIY5wvArMtPBWtPp+taVNNY6Zp9/pdxYiCzuZpoTJIMLMsMgAgCjd+7RiDu68Ck B0l54x0Cz8n7XcXcBliWYiSwnBhjLFQ8oKfuVJVhmTaOD6V0FcL4m0DxPq8tvfW8Gk6dqf2fyjd2 +o3CyWzB2IIKoBcJgg+U6qAd3Jzmu6oAKKKKACiiigAooooAKKKKACiiigAooooAK878b/8AJSdD /wC3f/0c1eiV5343/wCSk6H/ANu//o5qAPRKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAoorI1bxLoWlSmK/wBTgikHVBl2H1CgkU1FydkhSkoq7Zr0VzP/AAnvhP8A6C3/AJLy/wDx NH/Ce+E/+gt/5Ly//E1fsan8r+4j21P+ZfedNRXM/wDCe+E/+gt/5Ly//E0f8J74T/6C3/kvL/8A E0exqfyv7g9tT/mX3nTUVzP/AAnvhP8A6C3/AJLy/wDxNH/Ce+E/+gt/5Ly//E0exqfyv7g9tT/m X3nTUVzP/Ce+E/8AoLf+S8v/AMTR/wAJ74T/AOgt/wCS8v8A8TR7Gp/K/uD21P8AmX3nTUVzP/Ce +E/+gt/5Ly//ABNH/Ce+E/8AoLf+S8v/AMTR7Gp/K/uD21P+ZfedNRXM/wDCe+E/+gt/5Ly//E0f 8J74T/6C3/kvL/8AE0exqfyv7g9tT/mX3nTUVzP/AAnvhP8A6C3/AJLy/wDxNH/Ce+E/+gt/5Ly/ /E0exqfyv7g9tT/mX3nTUVzP/Ce+E/8AoLf+S8v/AMTR/wAJ74T/AOgt/wCS8v8A8TR7Gp/K/uD2 1P8AmX3nTUVzP/Ce+E/+gt/5Ly//ABNH/Ce+E/8AoLf+S8v/AMTR7Gp/K/uD21P+ZfedNRXM/wDC e+E/+gt/5Ly//E0f8J74T/6C3/kvL/8AE0exqfyv7g9tT/mX3nTUVzP/AAnvhP8A6C3/AJLy/wDx NH/Ce+E/+gt/5Ly//E0exqfyv7g9tT/mX3nTUVzP/Ce+E/8AoLf+S8v/AMTR/wAJ74T/AOgt/wCS 8v8A8TR7Gp/K/uD21P8AmX3nTUVzP/Ce+E/+gt/5Ly//ABNH/Ce+E/8AoLf+S8v/AMTR7Gp/K/uD 21P+ZfedNRXM/wDCe+E/+gt/5Ly//E0f8J74T/6C3/kvL/8AE0exqfyv7g9tT/mX3nTUVzP/AAnv hP8A6C3/AJLy/wDxNH/Ce+E/+gt/5Ly//E0exqfyv7g9tT/mX3nTUVzP/Ce+E/8AoLf+S8v/AMTR /wAJ74T/AOgt/wCS8v8A8TR7Gp/K/uD21P8AmX3nTUVzP/Ce+E/+gt/5Ly//ABNH/Ce+E/8AoLf+ S8v/AMTR7Gp/K/uD21P+ZfedNRXM/wDCe+E/+gt/5Ly//E0f8J74T/6C3/kvL/8AE0exqfyv7g9t T/mX3nTUVzP/AAnvhP8A6C3/AJLy/wDxNH/Ce+E/+gt/5Ly//E0exqfyv7g9tT/mX3nTUVzP/Ce+ E/8AoLf+S8v/AMTR/wAJ74T/AOgt/wCS8v8A8TR7Gp/K/uD21P8AmX3nTUVzP/Ce+E/+gt/5Ly// ABNH/Ce+E/8AoLf+S8v/AMTR7Gp/K/uD21P+ZfedNRXM/wDCe+E/+gt/5Ly//E0f8J74T/6C3/kv L/8AE0exqfyv7g9tT/mX3nTUVzP/AAnvhP8A6C3/AJLy/wDxNH/Ce+E/+gt/5Ly//E0exqfyv7g9 tT/mX3nTUVzP/Ce+E/8AoLf+S8v/AMTR/wAJ74T/AOgt/wCS8v8A8TR7Gp/K/uD21P8AmX3nTUVz P/Ce+E/+gt/5Ly//ABNH/Ce+E/8AoLf+S8v/AMTR7Gp/K/uD21P+ZfedNRXM/wDCe+E/+gt/5Ly/ /E0f8J74T/6C3/kvL/8AE0exqfyv7g9tT/mX3nTUVzP/AAnvhP8A6C3/AJLy/wDxNH/Ce+E/+gt/ 5Ly//E0exqfyv7g9tT/mX3nTUVzP/Ce+E/8AoLf+S8v/AMTR/wAJ74T/AOgt/wCS8v8A8TR7Gp/K /uD21P8AmX3nTUVzP/Ce+E/+gt/5Ly//ABNH/Ce+E/8AoLf+S8v/AMTR7Gp/K/uD21P+ZfedNRXM /wDCe+E/+gt/5Ly//E0f8J74T/6C3/kvL/8AE0exqfyv7g9tT/mX3nTUVzP/AAnvhP8A6C3/AJLy /wDxNH/Ce+E/+gt/5Ly//E0exqfyv7g9tT/mX3nTUVzP/Ce+E/8AoLf+S8v/AMTR/wAJ74T/AOgt /wCS8v8A8TR7Gp/K/uD21P8AmX3nTUVzP/Ce+E/+gt/5Ly//ABNH/Ce+E/8AoLf+S8v/AMTR7Gp/ K/uD21P+ZfedNRXM/wDCe+E/+gt/5Ly//E0f8J74T/6C3/kvL/8AE0exqfyv7g9tT/mX3nTUVzP/ AAnvhP8A6C3/AJLy/wDxNH/Ce+E/+gt/5Ly//E0exqfyv7g9tT/mX3nTUVzP/Ce+E/8AoLf+S8v/ AMTR/wAJ74T/AOgt/wCS8v8A8TR7Gp/K/uD21P8AmX3nTUVzP/Ce+E/+gt/5Ly//ABNH/Ce+E/8A oLf+S8v/AMTR7Gp/K/uD21P+ZfedNRXM/wDCe+E/+gt/5Ly//E0f8J74T/6C3/kvL/8AE0exqfyv 7g9tT/mX3nTUVzP/AAnvhP8A6C3/AJLy/wDxNH/Ce+E/+gt/5Ly//E0exqfyv7g9tT/mX3nTUVzP /Ce+E/8AoLf+S8v/AMTR/wAJ74T/AOgt/wCS8v8A8TR7Gp/K/uD21P8AmX3nTUVzP/Ce+E/+gt/5 Ly//ABNH/Ce+E/8AoLf+S8v/AMTR7Gp/K/uD21P+ZfedNRXM/wDCe+E/+gt/5Ly//E0f8J74T/6C 3/kvL/8AE0exqfyv7g9tT/mX3nTUVkaT4l0LVZRFYanBLIeiHKMfoGAJrXqJRcXZotSUldMKKKKQ wooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDC8Qf8fqf9cx/M1m1peIP+P1P+uY/mazaAOv ooooAKKKKACiiigAooooAKia3gadbhoYzMowshUbgPY9alooAKKK5y9n1W/1W8hstSTTYdPkVMiN ZDK5RHJcN0TDgYGDnJz0ppXA6OiqHh2+k1Pw/pupSqiSXdpFOyr0BZAxA9uao6X4t8P6m0otb5ts UBuS80EkKPCOsqM6hXQZHzKSORzyKQG7RXPx+M/Dj6TPqv2947W3kijlMlrKjqZWVYzsZQ21iy4b GDnOcA1Jb+LNAnsrW8W+aOG5mlgj863kiZXiV2kDq6ho9ojcksAOPcZANyiufj8Z+HH0mfVft7x2 tvJFHKZLWVHUysqxnYyhtrFlw2MHOc4Bp1v4i8/xRZ6PHp9wkF3p0t6lzMrRHKNACnlsAwOJ1yTj BBGM5wAb1FFFABRRRQAUUUUAFFFFABRRRQAV5343/wCSk6H/ANu//o5q9Erzvxv/AMlJ0P8A7d// AEc1AHolFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBzHiq71bUNa07wd4cIXVdUb BkJx5MfOWz24DEkcgKcc4o1+++GPwvlbQ7Xw5B4y1+P5b66v8GFHxkgKQwBB/hAyOhYkVY8B6gNN +L/i/WHiEraT4anuoQexRYW49OrD8a8GuJpJpnnuJWklkYs7u2WZickknqTXp0YRUfedlZN/M86o 51J2grybaStfbsj0ST4qoZGMfw2+Hipn5Q2i5IHud4z+VJ/wtT/qnHw6/wDBJ/8AZ15mZGB/pipY 23LnvWWGx2FxFV0Y/Ev67/8ABPYzThjNMswccbWs6crK67u72aT6brR9G7no/wDwtT/qnHw6/wDB J/8AZ0f8LU/6px8Ov/BJ/wDZ152qlmCqCWJwABya9J+KPw90zwv4btL7TL27uby2uEsdaSVlKRXL QJKAmACF5Yck8jGeK7pQpxaTW585GdSSbT2Iv+Fqf9U4+HX/AIJP/s6P+Fqf9U4+HX/gk/8As62/ Dnwmk0/SPEF/4p/sy4kg8N3N7BaRXp+02c4UNE0iLg9N395fWj4Q/CaTU9a0DUPEv9mS6VqMUs39 nNemO6ki8t9koRcHbu2cg9xkYqHKik32LUazaXcxP+Fqf9U4+HX/AIJP/s6P+Fqf9U4+HX/gk/8A s6xfhH4bsfF3xC0zw9qUtzFa3fm+Y9uyrINkTuMFgR1UdulHhnw3Y6n8PfF/iGeW5W60X7F9mRGU Rv50pRt4IJOAOMEc+tW4007W7fjoQpVGr37/AIam1/wtT/qnHw6/8En/ANnR/wALU/6px8Ov/BJ/ 9nWX4y+Hmq+FNNW51XVdB+1YQyadFfq13EGAILR4HqOmfXpzVjV/hd4j0zw/Nq1xcaU8ttbpc3Wn R3Ya8t4mxh3jxwOR370rUR3rFz/han/VOPh1/wCCT/7Oj/han/VOPh1/4JP/ALOql38LtfttH07U X1DRSdUgtZbC1+17Z7n7QyqqIjAZZd6luwB6nBrO8deCbzwgyR3us6DezmQxywWN8JZYHHVZEwGX 8sU0qTdkJuqldm5/wtT/AKpx8Ov/AASf/Z0f8LU/6px8Ov8AwSf/AGdYXgbwVeeLmdLPWtBsZvME UUF/frFLO56LGmCzdQOmM8etaeg/CzxDq1jc3hvdH06K01R9LuTfXfleVMgBOTgggkhRgkknpjmh qktwTqvYtf8AC1P+qcfDr/wSf/Z0f8LU/wCqcfDr/wAEn/2dUbD4YeI7nxLrOhTzabp76Kge+ury 58u3jDYKHfg/eByOPripfjP4YsPCmpeHrCytkglm0C2uL3ZMZVkuGLiRwSSMEqPu8elK1JyUUNuq ouTLP/C1P+qcfDr/AMEn/wBnR/wtT/qnHw6/8En/ANnU8HhHwHoOg6Lc+ONX1xdQ1m1W8hg0yKMr bwOfkeQvyc4z8vPUY7nK0T4fTeJbrXZfDOtafPpWkyxBru+ZrbdHIWxIQwwoUKxbJHTjPSi1Le2g Xq7XL3/C1P8AqnHw6/8ABJ/9nR/wtT/qnHw6/wDBJ/8AZ1DoXwo8QaxDNPa6noKRC7ls7N5b7aNQ kjJB+z8fODjg8Zrn7vwnqtp4Sm8SXJgit4dWbSZIGY+cs6x7zkYxtAGOuc9u9NRpN2QnKqldnTf8 LU/6px8Ov/BJ/wDZ0f8AC1P+qcfDr/wSf/Z00fCLxF/bOv6Y+p6HC+gm2+2zTXTRxBZ13KwZkHCj 72ce2aqj4W+JT4zl8LmXTVmis/t7XjXOLX7Nx+934ztycdKX7kf74uf8LU/6px8Ov/BJ/wDZ0f8A C1P+qcfDr/wSf/Z1xvijR20DVHsH1LS9RCqGFxp10s8LA+jDv7EA1T/cxaimlx2H9pam0AuJY5L6 O0hgQjI3SOQN2CO464ruwWW1MdU9nQjd2vvZJd220kvUlTqXtc77/han/VOPh1/4JP8A7Oj/AIWp /wBU4+HX/gk/+zrg7u3EZul+y3Flc2Nx9mvrKd1doHI4IYcMpwearVlXwTw9R0qsbSX9ejutmJ1J rqei/wDC1P8AqnHw6/8ABJ/9nR/wtT/qnHw6/wDBJ/8AZ151RWXsYdhe2n3PRf8Ahan/AFTj4df+ CT/7Oj/han/VOPh1/wCCT/7OvOqKPYw7B7afc9F/4Wp/1Tj4df8Agk/+zo/4Wp/1Tj4df+CT/wCz rzqij2MOwe2n3PRf+Fqf9U4+HX/gk/8As6P+Fqf9U4+HX/gk/wDs686oo9jDsHtp9z0X/han/VOP h1/4JP8A7Oj/AIWp/wBU4+HX/gk/+zrzqij2MOwe2n3PRf8Ahan/AFTj4df+CT/7Oj/han/VOPh1 /wCCT/7OvOqKPYw7B7afc9F/4Wp/1Tj4df8Agk/+zo/4Wp/1Tj4df+CT/wCzrzqij2MOwe2n3PRf +Fqf9U4+HX/gk/8As6P+Fqf9U4+HX/gk/wDs686oo9jDsHtp9z0X/han/VOPh1/4JP8A7Oj/AIWp /wBU4+HX/gk/+zrzqij2MOwe2n3PRf8Ahan/AFTj4df+CT/7Oj/han/VOPh1/wCCT/7OvOqKPYw7 B7afc9F/4Wp/1Tj4df8Agk/+zo/4Wp/1Tj4df+CT/wCzrzqij2MOwe2n3PRf+Fqf9U4+HX/gk/8A s6P+Fqf9U4+HX/gk/wDs686oo9jDsHtp9z0X/han/VOPh1/4JP8A7Oj/AIWp/wBU4+HX/gk/+zrz qij2MOwe2n3PRf8Ahan/AFTj4df+CT/7Oj/han/VOPh1/wCCT/7OvOqKPYw7B7afc9F/4Wp/1Tj4 df8Agk/+zo/4Wp/1Tj4df+CT/wCzrzqij2MOwe2n3PRf+Fqf9U4+HX/gk/8As6P+Fqf9U4+HX/gk /wDs686oo9jDsHtp9z0X/han/VOPh1/4JP8A7Oj/AIWp/wBU4+HX/gk/+zrzqij2MOwe2n3PRf8A han/AFTj4df+CT/7Oj/han/VOPh1/wCCT/7OvOqKPYw7B7afc9F/4Wp/1Tj4df8Agk/+zo/4Wp/1 Tj4df+CT/wCzrzqij2MOwe2n3PRf+Fqf9U4+HX/gk/8As6P+Fqf9U4+HX/gk/wDs686oo9jDsHtp 9z0X/han/VOPh1/4JP8A7Oj/AIWp/wBU4+HX/gk/+zrzqij2MOwe2n3PRf8Ahan/AFTj4df+CT/7 Oj/han/VOPh1/wCCT/7OvOqKPYw7B7afc9F/4Wp/1Tj4df8Agk/+zo/4Wp/1Tj4df+CT/wCzrzqi j2MOwe2n3PRf+Fqf9U4+HX/gk/8As60tH8fTXzKf+Fa/Dza+QijRcFvf7/AHr+H08/0TR5ruVCyZ z8wQ8cf3m9F/n+td7ptkIk8qHLbsB5MYL+3sPas5wgtEjem5vVs6eHxHYsqofh/4EeT+Jl0VQv4f NWvY3+mz4L+APBAHto6/41kaVpgVQzgCtWIMwKWygKv3pDwF/GueSXQ6Vc0JLnw9GPn8CeDWc9FX SEoNxoECb7rwH4NDEZWJdITcfr6VlvcRQZW2/eSHIMzD/wBBH9apyPyWkbcxPOT/ADqVEdzVOpaJ kkeAfBYA9dIT/Go5tV0NCAPAXgr3zo6c/rWOXeU4Qf8A1q1NP0K5u38xgEj6+ZJwPwHU02ktxK7H R6ppUnK/D/wSB6nR1/xrcsLPTZVEt34D8F2sXX5tGTe30XPH1NOtbWx04Bok8yYD/WyAEj/dHQfz 96r3uoquSz5P1qG77FpW3L88PhVT8ngXwlj/AGtKj/wqpLL4Wi5bwL4QIH/UKjrzvxX4n1e51oaF oBhW58oyMzsASQM7Vz1Y/wBe3JHP2uv+KdOitp9YdUivJDHGZlUTR4x8+3rjJ64zx2yM5e0inZmn s21c9Z1Hwx8O/GcSWL6LbeF9Tk+WyvLFViRn7DYMBuccYz6MCa5Twrd6tp+taj4O8RkNqultgSA5 86PjDZ78FSCeSGGec1w13f38l4XaWXz1f7245DA9c16H8Qbtrv4yeEtS8sRy6l4chnnAGMsyzHn/ AL5A/CtqkPdaeqtf0MIytJSWmtjdooorzzvCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAM LxB/x+p/1zH8zWbWl4g/4/U/65j+ZrNoA6+iiigAooooAKKKKACiiigAooooAK4TxJHqFnqWrGDS bq4lv3VrOaBNysfLiTa5H3MFCckYxzmu7oqoycXdAZ3hmxl0zw3pemzsrS2lnFBIV6FlQKSPbIrj 9O8F6ubXV9MupLPTtMvtNnsjb2V1NLEzycCZYpBiDau4bEZgd3XgV6DRUgee6f4L1NbC5W4S0iup r3TZCx1S7vS8VrcrM2XnJK5G/aigAE8sc5FnU/BN1qOsa6J7m3j0q/s7iO3VATLFPcRJHK5GMYAj yMHJMj57V3NFAHnun+C9TWwuVuEtIrqa902QsdUu70vFa3KzNl5ySuRv2ooABPLHORs6jZeJZPH9 hq1tYaS+m2trNaF5NQkWZlme3dn2CErlfJIC7/myOV6V1NFABRRRQAUUUUAFFFFABRRRQAUUUUAF ed+N/wDkpOh/9u//AKOavRK878b/APJSdD/7d/8A0c1AHolFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQByGg/wDI9/Er/sTrv/0VDXiTqGGDXu3g2xutT+J3xA02xi826u/ClxBBHuC7 3dIFUZJAGSRyeK5D/hSPxP8A+hY/8n7b/wCOV6kVSnTcKtrNLR+h59OvicNXjXwzcZxbaa3Wp5oy SY25BFESOrZPA+tel/8ACkfif/0LH/k/bf8Axyj/AIUj8T/+hY/8n7b/AOOVxRyvCRrxre0d47e9 pp072+Z9RU42zSpgKmBdGmozvzNQs22rN6NR5muvKcn4GvtK0zxfpepa3FcTafaXKzzRwIrO+07g AGIBBIGeema73XPixaeJdA8S6RrXhvTbEakomtp9MtAsrXCuGRp2Z/mGMgsOeTxzWd/wpH4n/wDQ sf8Ak/bf/HKP+FI/E/8A6Fj/AMn7b/45XqSlRk7uS+8+MjGtFWUX9x0eofE/wVeSa/rJ0fW4vEGv aBJpt0++NrdJTGqKVGQdp2jJPI2jC8mjwh8T/BVjeeFda1nR9bfW9D07+zN9s8ZgMKo6q4ViCzYb GMgfMTzgVzn/AApH4n/9Cx/5P23/AMco/wCFI/E//oWP/J+2/wDjlRy0LW5vxL5q978v4HNfDnxK 3hDxrpviJbf7SLORi0WcFkZGRgD2O1jj3rp/EPi3wXaeC9W8OeCdJ1eAa1PFJey6jIh2JE29I4wm eA3c84z17N/4Uj8T/wDoWP8Ayftv/jlH/Ckfif8A9Cx/5P23/wAcq5Soyd3JfeZxjWirKL+4veMP iHoOrfDQeG401/U9QJhMdxq5gf7HsOW8qRFDtuHy/N2/Xb8Y/GuDX/B91ZpceIbXULy0+zz2aR2h ssldrkM0ZlweTjIPPBFct/wpH4n/APQsf+T9t/8AHKP+FI/E/wD6Fj/yftv/AI5U2od195d6/Z/c ZnjfxXYa3feE5rRdQhTRtGs7Cc7ljkMkJYs0TAtjqMMRnI6VtfFjx7oXinw3pul2EWs3t5bTmV9R 1dYPtATaR5QMQG5cnOW5yPyg/wCFI/E//oWP/J+2/wDjlH/Ckfif/wBCx/5P23/xyqvR095aeZNq 2vuvXyND4N/E3SfA3h29tJ9Pv21CS9W4Sa1EX76MKAYZGcEhOCflGeeoql4/8b+H9Z8LavpGj2+q RPf+KG1tTdKmAjwbXUlW6+YWIGPu45zTP+FI/E//AKFj/wAn7b/45R/wpH4n/wDQsf8Ak/bf/HKX 7nm5uZX9R/vuXl5Xb0NvU/iX4U1fxb40bVNO1hvD/iWG0UiDy0uont0UKcFiuNwPc9uO1cl8WfFG j+KdS0WbRLO8tLXTtGg0/wAq5KlgY2fowJ3DDAZOCcHgVpf8KR+J/wD0LH/k/bf/AByj/hSPxP8A +hY/8n7b/wCOURdGLupL7wkq0lZxf3Gt4W+I/hiO38P32u2uvWviDw/amys73SzAyyw7WVVdZgQM KzDgHqT9KfiT4l2Ou2vxBaTT7q1ufEx08WiIVdI1tmG7e2QclQOgPJI96q/8KR+J/wD0LH/k/bf/ AByj/hSPxP8A+hY/8n7b/wCOUv3F78y+/wA7j/f2tyv7vKxb8EePfCtl4e0C08TaTqtxe+GbuW60 prKRFjkLuJNsu7kAOAcjP88x6X488N3/AIZ1rSfGGkajcm81x9cg+wyqimZl2mNy3ITGRkAnBPTF Qf8ACkfif/0LH/k/bf8Axyj/AIUj8T/+hY/8n7b/AOOU/wBzvzfiL99ty/gd3F4o8NeKtP8Ait4k vrPVDod3/Y6yxRlI7lQD5eV5Zchl3AE4IHOM1yF18Q9Gl+I2navanxFpOjaZpkemWjWMsQu/LjBw XDgo2STlT7HPFU/+FI/E/wD6Fj/yftv/AI5R/wAKR+J//Qsf+T9t/wDHKmKoq/vL7/JIqTrO3uv7 vO5kfF3xLpfi7xT/AGnpNhLawi1jhd5kRZbl1zmWQRjaGOQOOOB9K5GfTrq48bWHi7TLdL94Wiku LIXKQyrIgxlS4Ix8oIODivRf+FI/E/8A6Fj/AMn7b/45SN8D/ic3XwuD/wBv9t/8cr18pzmWVVXU oNO6cWns0+mjT+5kclVu7i/uPOdOs7rTLC/Gp3gutV1O4WW5PneaUVckbn7sSfXtTq9EHwQ+J4GB 4Yx/2/23/wAcpf8AhSPxP/6Fj/yftv8A45WWPzR4/ESxFaS5pdtForJL0SJdKo/sv7jzqivRf+FI /E//AKFj/wAn7b/45R/wpH4n/wDQsf8Ak/bf/HK5PbU/5l95Psan8r+486or0X/hSPxP/wChY/8A J+2/+OUf8KR+J/8A0LH/AJP23/xyj21P+ZfeHsan8r+486or0X/hSPxP/wChY/8AJ+2/+OUf8KR+ J/8A0LH/AJP23/xyj21P+ZfeHsan8r+486or0X/hSPxP/wChY/8AJ+2/+OUf8KR+J/8A0LH/AJP2 3/xyj21P+ZfeHsan8r+486or0X/hSPxP/wChY/8AJ+2/+OUf8KR+J/8A0LH/AJP23/xyj21P+Zfe Hsan8r+486or0X/hSPxP/wChY/8AJ+2/+OUf8KR+J/8A0LH/AJP23/xyj21P+ZfeHsan8r+486or 0X/hSPxP/wChY/8AJ+2/+OUf8KR+J/8A0LH/AJP23/xyj21P+ZfeHsan8r+486or0X/hSPxP/wCh Y/8AJ+2/+OUf8KR+J/8A0LH/AJP23/xyj21P+ZfeHsan8r+486or0X/hSPxP/wChY/8AJ+2/+OUf 8KR+J/8A0LH/AJP23/xyj21P+ZfeHsan8r+486or0X/hSPxP/wChY/8AJ+2/+OUf8KR+J/8A0LH/ AJP23/xyj21P+ZfeHsan8r+486or0X/hSPxP/wChY/8AJ+2/+OUf8KR+J/8A0LH/AJP23/xyj21P +ZfeHsan8r+486or0X/hSPxP/wChY/8AJ+2/+OUf8KR+J/8A0LH/AJP23/xyj21P+ZfeHsan8r+4 86or0X/hSPxP/wChY/8AJ+2/+OUf8KR+J/8A0LH/AJP23/xyj21P+ZfeHsan8r+486or0X/hSPxP /wChY/8AJ+2/+OUf8KR+J/8A0LH/AJP23/xyj21P+ZfeHsan8r+486or0X/hSPxP/wChY/8AJ+2/ +OUf8KR+J/8A0LH/AJP23/xyj21P+ZfeHsan8r+486or0X/hSPxP/wChY/8AJ+2/+OUf8KR+J/8A 0LH/AJP23/xyj21P+ZfeHsan8r+486or0X/hSPxP/wChY/8AJ+2/+OUf8KR+J/8A0LH/AJP23/xy j21P+ZfeHsan8r+486or0X/hSPxP/wChY/8AJ+2/+OUf8KR+J/8A0LH/AJP23/xyj21P+ZfeHsan 8r+486or0X/hSPxP/wChY/8AJ+2/+OUf8KR+J/8A0LH/AJP23/xyj21P+ZfeHsan8r+486or0X/h SPxP/wChY/8AJ+2/+OUf8KR+J/8A0LH/AJP23/xyj21P+ZfeHsan8r+486or0X/hSPxP/wChY/8A J+2/+OUf8KR+J/8A0LH/AJP23/xyj21P+ZfeHsan8r+486or0X/hSPxP/wChY/8AJ+2/+OUf8KR+ J/8A0LH/AJP23/xyj21P+ZfeHsan8r+486rZ0HSZLqZXZFPAYBh8qj+83t6Dv9Ovc6V8D/iGJle7 8PKgDYAN5bsB/tEB+fp+fHXr9P8AhV4xhURnRtqZyxa6hLOfUnf1rOdeGyaNqeHlu0cppVgAvlxB iCcs7fec+p/wrqtO0+O3jEkuABXTWHw+8R20YJ0vc3p58f8A8VVr/hC/EyqJW0sSy/wJ58e1Pr83 JrmlVi+p1qm10Oebb5YknzHCfuoPvP8A4D3qvdXLzKEAWKFeiL0/+ua6CXwR4ukcyPphdz1JuIv/ AIqoD4C8XO2Dpe0ev2iL/wCKqVKPcfLLsc28nO1ASTx71a03Sbu/fKx5UdSThR+P9BXYaV8PtUiU SXdlub/nmJU/U7v0H61qzeHvEAjEcOmhUUYVVljAA/76pOrHoxqm+pztpplhYKGcLcSgfxD5AfYf 407UdTUJvdwNo5qbU/DXjMqfs2iNIf8Ar5hH83rkdU8C/E26c7NBKr/1+wf/ABdEeV6uQPmWyINa 8VQw5VH3H0Brj9S8R3VwSI2KD26/nXQt8JfiDM26TRNpPX/TIP8A4utvRvgxrwTztStwuP8AljHL GzH8dwH61sp0o9TPlqS6HlTMkOtQ67cWU97HHGGZI227ZVGELd9uQvp+OMGe7ubvx3qFlNPYtHfK +y6u1O2ARA8ZB6Ec9/zzx7WvgjxFZR+VpPhSGIYwZZ7iGRz+G7aPyrOl+H/jaRiW0jqc4FzCB+W7 FcbpQlK/NodKnJRtYxYrTw7pkrybX1C5Yklk+SPJ6/MeT+GKX4huJfi94IkVFjD+GYWCL0XKz8Ct X/hXPjP/AKA//k1D/wDF1mfEe2ms/jF4KtLlNk8HhuKORcg7WVbgEZHB5FdDcWnZ30f5HO01a66r 8zdooorzjvCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAMLxB/x+p/1zH8zWbWl4g/4/U/6 5j+ZrNoA6+iiigAooooAKKKKACiiigAooooAK5y9n1W/1W8hstSTTYdPkVMiNZDK5RHJcN0TDgYG DnJz0ro64TxJHqFnqWrGDSbq4lv3VrOaBNysfLiTa5H3MFCckYxzmrgk3qDOs8O30mp+H9N1KVUS S7tIp2VegLIGIHtzVHS/Fvh/U2lFrfNtigNyXmgkhR4R1lRnUK6DI+ZSRyOeRVzwzYy6Z4b0vTZ2 VpbSzigkK9CyoFJHtkVx+neC9XNrq+mXUlnp2mX2mz2Rt7K6mliZ5OBMsUgxBtXcNiMwO7rwKhgd DH4z8OPpM+q/b3jtbeSKOUyWsqOplZVjOxlDbWLLhsYOc5wDUlv4s0Ceytbxb5o4bmaWCPzreSJl eJXaQOrqGj2iNySwA49xnmdP8F6mthcrcJaRXU17pshY6pd3peK1uVmbLzklcjftRQACeWOcizqf gm61HWNdE9zbx6Vf2dxHbqgJlinuIkjlcjGMAR5GDkmR89qANmPxn4cfSZ9V+3vHa28kUcpktZUd TKyrGdjKG2sWXDYwc5zgGq9/4nvba9tZF0OT+yJ57a3F1NKYpi85UKVgZMlVLqG3FWGG+U7TWLp/ gvU1sLlbhLSK6mvdNkLHVLu9LxWtyszZeckrkb9qKAATyxzkal9pviWbxyupyWWk3ul2+xbIS6jJ E9vkYll8oQsrScsAS4wowNu5qAOuooooAKKKKACiiigAooooAKKKKACvO/G//JSdD/7d/wD0c1ei V5343/5KTof/AG7/APo5qAPRKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCn8Ev+ ThvEP/YG/rbV7tp1nZtp9uzWkDMYlJJjBJOBXhPwS/5OG8Q/9gb+ttXujX1rpfho6nfSiG0tLPz5 5CCQiIm5jx6AGt6/T0X5GFHr6ss/YbL/AJ87f/v0P8KPsNl/z52//fof4Vj6P4knv76G3m8L6/p0 U4JhubqKLy2wCfm8uRmjyB/Gq84HU4rRtNa0a81O40u01awuL+2GZ7WK4RpYu3zIDlfxFY3NrIn+ w2X/AD52/wD36H+FH2Gy/wCfO3/79D/Cq1hr+hX+pT6ZYa1pt1fW+fPtobpHliwcHcoORz6ioLbx V4YubW5urbxJo81vaRpLcyx30bJCjjKM5DYUMASCevai4WRofYbL/nzt/wDv0P8ACj7DZf8APnb/ APfof4Vzep+NtJsde0gS6xo8WhX+mXl2b+S5URlopbVE2ybtmCJ3z1yQMEYOeij1HT5IrOWO/tXj vTttGWZSLg7GfCHPzHarNxnhSegNFwsh32Gy/wCfO3/79D/Cj7DZf8+dv/36H+FWK4my0zw3F4c1 bXNU0LTLt4LvUZ5pJoIN7qlxMeXlwo4XGWYKO5A5ouwsjrvsNl/z52//AH6H+FH2Gy/587f/AL9D /CucksvhzFqqaTJaeFE1B38tbVo7cTM+0NtCdSdrK2MdGB71n6Pd/CvVNHvNWt7fwotlZXElvczS R2wWJkkZAWPRQ23cpJGVIPei7CyOz+w2X/Pnb/8Afof4UfYbL/nzt/8Av0P8K52bT/h3D9i86y8K x/bwDZ7orcfaASqjy+PnyXQcZ5ZfUU3TLT4b6m8sem2vhO9eGNZZVt47eQojDKs23OARyCeCKLsL I6T7DZf8+dv/AN+h/hR9hsv+fO3/AO/Q/wAK5CR/hq2ljUrDTPDmq23223sWawgt5gks8yQqCRwM NIpPOcZ4PSt7/hE/C3/QtaN/4Axf/E0XYWRo/YbL/nzt/wDv0P8ACj7DZf8APnb/APfof4Vnf8In 4W/6FrRv/AGL/wCJo/4RPwt/0LWjf+AMX/xNFwsjR+w2X/Pnb/8Afof4UfYbL/nzt/8Av0P8Kzv+ ET8Lf9C1o3/gDF/8TR/wifhb/oWtG/8AAGL/AOJouFkaP2Gy/wCfO3/79D/Cj7DZf8+dv/36H+FZ 3/CJ+Fv+ha0b/wAAYv8A4mj/AIRPwt/0LWjf+AMX/wATRcLI0fsNl/z52/8A36H+FH2Gy/587f8A 79D/AArO/wCET8Lf9C1o3/gDF/8AE0f8In4W/wCha0b/AMAYv/iaLhZGj9hsv+fO3/79D/Cj7DZf 8+dv/wB+h/hWd/wifhb/AKFrRv8AwBi/+Jo/4RPwt/0LWjf+AMX/AMTRcLI0fsNl/wA+dv8A9+h/ hR9hsv8Anzt/+/Q/wrO/4RPwt/0LWjf+AMX/AMTR/wAIn4W/6FrRv/AGL/4mi4WRo/YbL/nzt/8A v0P8KPsNl/z52/8A36H+FZ3/AAifhb/oWtG/8AYv/iaP+ET8Lf8AQtaN/wCAMX/xNFwsjR+w2X/P nb/9+h/hR9hsv+fO3/79D/Cs7/hE/C3/AELWjf8AgDF/8TR/wifhb/oWtG/8AYv/AImi4WRo/YbL /nzt/wDv0P8ACj7DZf8APnb/APfof4Vnf8In4W/6FrRv/AGL/wCJo/4RPwt/0LWjf+AMX/xNFwsj R+w2X/Pnb/8Afof4UfYbL/nzt/8Av0P8Kzv+ET8Lf9C1o3/gDF/8TR/wifhb/oWtG/8AAGL/AOJo uFkaP2Gy/wCfO3/79D/Cj7DZf8+dv/36H+Fc/d+G/DUUxVfDWi4682Mf+FcZ42g0/TPFPhC107R9 KsxdapG0kkNmiSfJLFgBgMgfMc49KLhZHqf2Gy/587f/AL9D/CuY1GKPztRuZryDTbGyZvMkMcYV VVA7MzMMKoDfoa6+vP8A4lDPw1+IB/6cL7/0jFFwsjV/sWX/AKCUn/gNF/8AE0f2LL/0EpP/AAGi /wDia3NlGykFkYf9iy/9BKT/AMBov/iaP7Fl/wCglJ/4DRf/ABNbmyjZQFkYf9iy/wDQSk/8Bov/ AImj+xZf+glJ/wCA0X/xNbuyjZQFkYX9iy/9BKT/AMBov/iaP7Fl/wCglJ/4DRf/ABNbuyjZQFkY X9iy/wDQSk/8Bov/AImj+xZf+glJ/wCA0X/xNbuyjZQFkYX9iy/9BKT/AMBov/iaP7Fl/wCglJ/4 DRf/ABNbuyjZQFkYX9iy/wDQSk/8Bov/AImj+xZf+glJ/wCA0X/xNbuyjZQFkYX9iy/9BKT/AMBo v/iaP7Fl/wCglJ/4DRf/ABNbuyjZQFkYX9iy/wDQSk/8Bov/AImj+xZf+glJ/wCA0X/xNbuyjZQF kYX9iy/9BKT/AMBov/iaP7Fl/wCglJ/4DRf/ABNbuyk2UBZGH/Ysv/QSk/8AAaL/AOJo/sWX/oJS f+A0X/xNbuyjZQFkYX9iy/8AQSk/8Bov/iaP7Fl/6CUn/gNF/wDE1u7KNlAWRhf2LL/0EpP/AAGi /wDiaP7Fl/6CUn/gNF/8TW7so2UBZGF/Ysv/AEEpP/AaL/4mj+xpf+glJ/4DRf8AxNbuyjZ7UBZG F/Y0v/QSk/8AAaL/AOJo/saX/oJSf+A0X/xNbuz2o2e1AWRhf2NL/wBBKT/wGi/+JqzodoE1Gezu khuAkKyo7RKCQzMOQBjqp/OtTZ7VBZDHiKf/AK8ov/RklFwsi79hsv8Anzt/+/Q/wo+w2X/Pnb/9 +h/hVKSG3nu7o3EEUxWUKpdQ2B5aHAz2ySfxNchquuXk3iG90Twp4R0zVZtOEYv7i9vBZwRO6h1i UrFKzPsKsRtAAdecnAeoWR3n2Gy/587f/v0P8KPsNl/z52//AH6H+FcFquv3Nnb6RYR+DLWTxJqh mMenPdRrDEkRHmSvOEbEY3R4IQsTIg2g5xd8H6vFq15qOk6v4dtdJ1nTTGbm3R1niaOQMY5Y5Nql kbY45VSCjAjoSahZHYfYbL/nzt/+/Q/wo+w2X/Pnb/8Afof4Vl6HhPEOp28QCQpBbssa8KGJlyQO mTgfkK3KLsLIr/YbL/nzt/8Av0P8KPsNl/z52/8A36H+FWKKLhZFf7DZf8+dv/36H+FH2Gy/587f /v0P8KsUUXCyK/2Gy/587f8A79D/AAo+w2X/AD52/wD36H+FWKKLhZFf7DZf8+dv/wB+h/hR9hsv +fO3/wC/Q/wqxRRcLIoajZ2a6fcMtpArCJiCIwCDg14T8bf+ThvD3/YG/rc177qf/INuv+uL/wAj XgXxt/5OG8Pf9gb+tzW1Hr6Mxr9PVfmXKKKKwNwooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igDC8Qf8fqf9cx/M1m1peIP+P1P+uY/mazaAOvooooAKKKKACiiigAorB8T+KtO8PTwxX8V0fOUs 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 an20m2gCHbRtqbbRtoAh20bam20baAIdtG2pttG2gCHbRtqbbRtoAh20bam20baAIdtVLYY8Rz/9 ecX/AKHJWjtrPtyreI7kqQQtrGhx2IZzj8iPzoAhlfbeXY/6bD/0WlcLrWg+IbTWtcudEstA1rS/ EIVtS03V53gXzBCsDEMsUodHijjUoyfwnnnFd5qOmXs1081nfW8CSYZlltjId2AOCHXjAHGPXn0r f2PrH/QVsf8AwAb/AOO0wPOND8Ca14a0fQrjw+2iR6rpU2pH7Dh4bFre+uTcPboyqWjCMIgrBDxH 90buOl8G6TrFvrOreI/EcliNU1NILf7PZOzw20EPmGNA7KrO26aVixVfvAY4yei/sfWP+grY/wDg A3/x2j+x9Y/6Ctj/AOADf/HaNAE0Bt3ibVj/ANO9t/OWugrL0TSpLG4ubq4ukuJ7gIrGOLy0Cpux wWY5yxyc+nHrqUgCiiigAooooAKKKKACiiigCvqf/INuv+uL/wAjXgXxt/5OG8Pf9gb+tzXvup/8 g26/64v/ACNeBfG3/k4bw9/2Bv63Nb0OvozCv09V+ZcooorA3CiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKAMLxB/x+p/1zH8zWbWl4g/4/U/65j+ZrNoA6+iiigAooooAKKKKAOe8faCdf0F7e EL9qibzICTjnuM+4/pWj4e0yHR9GttOhwREmGYD7zdz+JrQop3drCsFeD6lqZtPDmlaHaXMR1KFY 7JiXdQG8wDKnaSR6/d79e/vFcgfhr4MM/nnSpjLv3+Z9vuN27Oc539c85rnrxqzjyQas97nbgqtG jLnqJ3W1jhvhFcxWvjZ21TUGu9Sv4fs1qsLMyIihpXL71BA+QAYzyT9R3uneG9Qt/Fr3MtxatocE st5Y26g+bHczDEhbjG0bpSMHrM3oKl0XwH4V0bU4dT07TGhu4N3lubqV9uVKnhmI6EjpXTUsNTnS p8shY6vTr1nUgnr3PNz4I12bw3c6NPPpqi18OXWh6bIkjnzhKqKJJsr8hAij4Xf1Y56CtDV/DXiC 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 fE7XYZokngAvcXkcomDh9p/dKF+chv3YGMbc/SlFFkFz5cuPhf8AESx1fxnFY6BZ3um6nqWkx2xn W0mLadAkqN5aT7kWWNDEvzr2YgGszw38IfiBcWt1Y+J/Dkty9n4FvdIs5pr2F0mvvtUstrs/eZAC um1nChSvbAr62oosgufMF78KviMbeaPQ4JtLudT8AW1nqNyb1QZ9VS4RpVkIYsXaJWTzPu4bG6vT P2f/AAlqXhaPXPtenatpltdzRPDa313aOAyph3SK1jSKLJwDgtu2hjtOc+p0UWSAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAK8N+LvgvxXf+L7vxBoGj/wBrQ6v4HuPDTIlxHG1t LI5ZZW3sMphznbk8dK9yqKy/484f+ua/yoA+ctY+FnijRL3Qrrw9ora7qtpp2n2Up1a2s7jTE8hF jZo2eQXEHALHYhy36XbP4beMY/jPP4h1CDV7kP4hN/a6lb39rHDFZFeIH3RtcNgZQxArGQc5B5P0 LRRZAeW/sw+Cb3wT8LLCy1zSE0/X2Mq33zo7somkMQLoSGAV8gAkDc3Qk14z4F+EHxL8P/8ACD3E eg26y6bZ6y13BcTwyRw3k8U0cRcBiHR1Fsp25ACnOK+uKKLILnyHo/wq+J632n22peG5f7Pn8RaN q10kM1nDDaiGKWO8xFCyKpJdSBGp3KBkls56Wx+FPi3S7u2u9O0FrebTviUbyyaO6jHkaExJYJ8/ EZzzEPmPda+l6KLILnz38F/ht4w8N/EC01PxBDq8l5C179v1QX9qLa+WRyY8okZnlyCD+9ddhX5c g7a+hKKKNgCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAIb3/jyn/65t/KvE/jb /wAnDeHv+wN/W5r2y9/48p/+ubfyrxP42/8AJw3h7/sDf1uacd36Mxq9PVfmXKKKK4zpCiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKAMLxB/wAfqf8AXMfzNZtaXiD/AI/U/wCuY/mazaAOvooo oAKKKKACiiigAooooAKKKKACuQPw18GGfzzpUxl37/M+33G7dnOc7+uec119FTKEZfErlwqzh8La OZ0XwH4V0bU4dT07TGhu4N3lubqV9uVKnhmI6EjpXTUUURjGKtFWCdSU3eTuFFFFUQFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFed+N/+Sk6H/27/wDo5q9Erzvxv/yUnQ/+3f8A9HNQB6JRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAU/gl/ycN4h/7A39bavedNhhOnWxMUZJiUn5R6Cv Bvgl/wAnDeIf+wN/W2r33TP+Qba/9cU/kK3r7r0X5GFHr6sk8iD/AJ4x/wDfIo8iD/njH/3yKkor G7NrIj8iDOfJj/75FHkQf88Y/wDvkVJRRdhZEfkQf88Y/wDvkUeRB/zxj/75FSUUXYWRH5EH/PGP /vkUeRB/zxj/AO+RUlFF2FkR+RB/zxj/AO+RR5EH/PGP/vkVJRRdhZEfkQf88Y/++RR5EH/PGP8A 75FSUUXYWRH5EH/PGP8A75FHkQf88Y/++RUlFF2FkR+RB/zxj/75FHkQf88Y/wDvkVJRRdhZEfkQ f88Y/wDvkUeRB/zxj/75FSUUXYWRH5EH/PGP/vkUeRB/zxj/AO+RUlFF2FkR+RB/zxj/AO+RR5EH /PGP/vkVJRRdhZEfkQf88Y/++RR5EH/PGP8A75FSUUXYWRH5EH/PGP8A75FHkQf88Y/++RUlFF2F kR+RB/zxj/75FHkQf88Y/wDvkVJRRdhZEfkQf88Y/wDvkUeRB/zxj/75FSUUXYWRGIIAMCGP/vkU eRB/zxj/AO+RUlFF2FkR+RB/zxj/AO+RR5EH/PGP/vkVJRRdhZEfkQf88Y/++RR5EH/PGP8A75FS UUXYWRH5EH/PGP8A75FHkQf88Y/++RUlFF2FkR+RB/zxj/75FHkQf88Y/wDvkVJRRdhZEfkQf88Y /wDvkUeRB/zxj/75FSUUXYWRH5EH/PGP/vkUeRB/zxj/AO+RUlFF2FkR+RB/zxj/AO+RR5EH/PGP /vkVJRRdhZEfkQf88Y/++RR5EH/PGP8A75FSUUXYWRH5EH/PGP8A75FHkQf88Y/++RUlFF2FkR+R B/zxj/75FHkQf88Y/wDvkVJRRdhZEfkQf88Y/wDvkUeRB/zxj/75FSUUXYWRH5EH/PGP/vkUeRB/ zxj/AO+RUlFF2FkR+RB/zxj/AO+RQIIAMCGP/vkVJRRdhZEfkQf88Y/++RR5EH/PGP8A75FSUUXY WRH5EH/PGP8A75FHkQf88Y/++RUlFF2FkR+RB/zxj/75FHkQf88Y/wDvkVJRRdhZEfkQf88Y/wDv kUeRB/zxj/75FSUUXYWRH5EH/PGP/vkUeRB/zxj/AO+RUlFF2FkR+RB/zxj/AO+RR5EH/PGP/vkV JRRdhZEfkQf88Y/++RR5EH/PGP8A75FSUUXYWRH5EH/PGP8A75FHkQf88Y/++RUlFF2FkR+RB/zx j/75FHkQf88Y/wDvkVJRRdhZEfkQf88Y/wDvkUeRB/zxj/75FSUUXYWRH5EH/PGP/vkUeRB/zxj/ AO+RUlFF2FkR+RB/zxj/AO+RR5EH/PGP/vkVJRRdhZEfkQf88Y/++RR5EH/PGP8A75FSUUXYWRU1 KGEadckRRgiF8HaPQ14L8bf+ThvD3/YG/rc177qf/INuv+uL/wAjXgXxt/5OG8Pf9gb+tzW1Hr6M xr9PVfmXKKKKwNwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDC8Qf8fqf9cx/M1m1peIP+ P1P+uY/mazaAOvooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACvO/G/8AyUnQ/wDt3/8ARzV6JXnfjf8A5KTof/bv/wCjmoA9EooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKAKfwS/5OG8Q/8AYG/rbV77pn/INtf+uKfyFeBfBL/k4bxD /wBgb+ttXvumf8g21/64p/IVvX6ei/IwodfVliiiisDcKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigCvqf8AyDbr/ri/8jXgXxt/5OG8Pf8AYG/rc177qf8A yDbr/ri/8jXgXxt/5OG8Pf8AYG/rc1vQ6+jMK/T1X5lyiiisDcKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAwvEH/H6n/XMfzNZtaXiD/j9T/rmP5ms2gDr6KKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArzvxv/yUnQ/+3f8A9HNXoled+N/+ Sk6H/wBu/wD6OagD0SiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAp/BL/k4bxD/2 Bv621e+6Z/yDbX/rin8hXgXwS/5OG8Q/9gb+ttXvumf8g21/64p/IVvX6ei/IwodfVliiiisDcKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCvqf/INuv+uL /wAjXgXxt/5OG8Pf9gb+tzXvup/8g26/64v/ACNeBfG3/k4bw9/2Bv63Nb0OvozCv09V+ZcooorA 3CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAMLxB/x+p/1zH8zWbWl4g/4/U/65j+ZrNoA6 +iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK 878b/wDJSdD/AO3f/wBHNXoled+N/wDkpOh/9u//AKOagD0SiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAp/BL/k4bxD/wBgb+ttXvumf8g21/64p/IV4F8Ev+ThvEP/AGBv621e+6Z/ yDbX/rin8hW9fp6L8jCh19WWKKKKwNwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKAK+p/wDINuv+uL/yNeBfG3/k4bw9/wBgb+tzXvup/wDINuv+uL/yNeBf G3/k4bw9/wBgb+tzW9Dr6Mwr9PVfmXKKKKwNwooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig DC8Qf8fqf9cx/M1m1peIP+P1P+uY/mazaAOvooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACvO/G//JSdD/7d/wD0c1eiV5343/5KTof/AG7/APo5 qAPRKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCn8Ev+ThvEP/YG/rbV77pn/INt f+uKfyFeBfBL/k4bxD/2Bv621e+6Z/yDbX/rin8hW9fp6L8jCh19WWKKKKwNwooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAK+p/8g26/64v/ACNeBfG3/k4b w9/2Bv63Ne+6n/yDbr/ri/8AI14F8bf+ThvD3/YG/rc1vQ6+jMK/T1X5lyiiisDcKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAwvEH/H6n/XMfzNZtaXiD/j9T/rmP5ms2gDr6KKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArzvxv/AMlJ0P8A 7d//AEc1eiV5343/AOSk6H/27/8Ao5qAPRKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigCn8Ev+ThvEP/AGBv621e+6Z/yDbX/rin8hXgXwS/5OG8Q/8AYG/rbV77pn/INtf+uKfyFb1+ novyMKHX1ZYooorA3CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAr6n/AMg26/64v/I14F8bf+ThvD3/AGBv63Ne+6n/AMg26/64v/I14F8bf+ThvD3/AGBv 63Nb0OvozCv09V+ZcooorA3CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAMLxB/x+p/1zH8 zWbWl4g/4/U/65j+ZrNoA6+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAK878b/8lJ0P/t3/APRzV6JXnfjf/kpOh/8Abv8A+jmoA9EooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKAKfwS/5OG8Q/9gb+ttXvumf8g21/64p/IV4F8Ev+ ThvEP/YG/rbV77pn/INtf+uKfyFb1+novyMKHX1ZYooorA3CiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAr6n/yDbr/ri/8AI14F8bf+ThvD3/YG/rc177qf /INuv+uL/wAjXgXxt/5OG8Pf9gb+tzW9Dr6Mwr9PVfmXKKKKwNwooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigDC8Qf8fqf9cx/M1m1peIP+P1P+uY/mazaAOvooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvO/G/8AyUnQ/wDt3/8ARzV6JXnf jf8A5KTof/bv/wCjmoA9EooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKfwS/5OG8 Q/8AYG/rbV77pn/INtf+uKfyFeBfBL/k4bxD/wBgb+ttXvumf8g21/64p/IVvX6ei/IwodfVliii isDcKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCvqf8A yDbr/ri/8jXgXxt/5OG8Pf8AYG/rc177qf8AyDbr/ri/8jXgXxt/5OG8Pf8AYG/rc1vQ6+jMK/T1 X5lyiiisDcKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAwvEH/H6n/XMfzNZtaXiD/j9T/r mP5ms2gDr6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigArzvxv/yUnQ/+3f8A9HNXoled+N/+Sk6H/wBu/wD6OagD0SiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAp/BL/k4bxD/2Bv621e+6Z/yDbX/rin8hXgXwS/5OG8Q/9gb+ttXv umf8g21/64p/IVvX6ei/IwodfVliiiisDcKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigCvqf/INuv+uL/wAjXgXxt/5OG8Pf9gb+tzXvup/8g26/64v/ACNe BfG3/k4bw9/2Bv63Nb0OvozCv09V+ZcooorA3CiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK AMLxB/x+p/1zH8zWbWl4g/4/U/65j+ZrNoA6+iiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAK878b/wDJSdD/AO3f/wBHNXoled+N/wDkpOh/9u// AKOagD0SiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAp/BL/k4bxD/wBgb+ttXvum f8g21/64p/IV4F8Ev+ThvEP/AGBv621e+6Z/yDbX/rin8hW9fp6L8jCh19WWKKKKwNwooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAK+p/wDINuv+uL/yNeBf G3/k4bw9/wBgb+tzXvup/wDINuv+uL/yNeBfG3/k4bw9/wBgb+tzW9Dr6Mwr9PVfmXKKKKwNwooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigDC8Qf8fqf9cx/M1m1peIP+P1P+uY/mazaAOvoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvO/G/ /JSdD/7d/wD0c1eiV5343/5KTof/AG7/APo5qAPRKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigCn8Ev+ThvEP/YG/rbV77pn/INtf+uKfyFeBfBL/k4bxD/2Bv621e+6Z/yDbX/rin8h W9fp6L8jCh19WWKKKKwNwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKAK+p/8g26/64v/ACNeBfG3/k4bw9/2Bv63Ne+6n/yDbr/ri/8AI14F8bf+ThvD3/YG /rc1vQ6+jMK/T1X5lyiiisDcKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAwvEH/H6n/XMf zNZtaXiD/j9T/rmP5ms2gDr6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigArzvxv/AMlJ0P8A7d//AEc1eiV574yt5p/ibozJNDFHElu7Bzy/75uB +VAHoVFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBT+CX/Jw3iH/sDf1tq990z/kG 2v8A1xT+QrwL4Jf8nDeIf+wN/W2r33TP+Qba/wDXFP5Ct6/T0X5GFDr6ssUUUVgbhRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAV9T/5Bt1/1xf+RrwL42/8 nDeHv+wN/W5r33U/+Qbdf9cX/ka8C+Nv/Jw3h7/sDf1ua3odfRmFfp6r8y5RRRWBuFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAYXiD/j9T/rmP5ms2tLxB/x+p/1zH8zWbQB19FFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV5542J/4WTofP /Pv/AOjmr0OvO/G//JSdD/7d/wD0c1AHolFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQBT+CX/Jw3iH/sDf1tq990z/kG2v8A1xT+QrwL4Jf8nDeIf+wN/W2r33TP+Qba/wDXFP5Ct6/T 0X5GFDr6ssUUUVgbhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAV9T/5Bt1/1xf+RrwL42/8nDeHv+wN/W5r33U/+Qbdf9cX/ka8C+Nv/Jw3h7/sDf1ua3od fRmFfp6r8y5RRRWBuFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAYXiD/j9T/rmP5ms2tLx B/x+p/1zH8zWbQB19FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAV5343/wCSk6H/ANu//o5q9Erzvxv/AMlJ0P8A7d//AEc1AHolFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBT+CX/Jw3iH/sDf1tq990z/AJBtr/1xT+QrwL4Jf8nD eIf+wN/W2r33TP8AkG2v/XFP5Ct6/T0X5GFDr6ssUUUVgbhRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAV9T/wCQbdf9cX/ka8C+Nv8AycN4e/7A39bmvfdT /wCQbdf9cX/ka8C+Nv8AycN4e/7A39bmt6HX0ZhX6eq/MuUUUVgbhRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFAGF4g/wCP1P8ArmP5ms2tLxB/x+p/1zH8zWbQB19FFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV5343/5KTof/bv/AOjmr0Sv O/G//JSdD/7d/wD0c1AHolFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBT+CX/Jw3 iH/sDf1tq990z/kG2v8A1xT+QrwL4Jf8nDeIf+wN/W2r33TP+Qba/wDXFP5Ct6/T0X5GFDr6ssUU UVgbhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAV9T/5 Bt1/1xf+RrwL42/8nDeHv+wN/W5r33U/+Qbdf9cX/ka8C+Nv/Jw3h7/sDf1ua3odfRmFfp6r8y5R RRWBuFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAYXiD/j9T/rmP5ms2tLxB/x+p/1zH8zW bQB19FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAV5343/wCSk6H/ANu//o5q9Erzvxv/AMlJ0P8A7d//AEc1AHolFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQBT+CX/Jw3iH/sDf1tq990z/AJBtr/1xT+QrwL4Jf8nDeIf+wN/W2r33 TP8AkG2v/XFP5Ct6/T0X5GFDr6ssUUUVgbhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAV9T/wCQbdf9cX/ka8C+Nv8AycN4e/7A39bmvfdT/wCQbdf9cX/k a8C+Nv8AycN4e/7A39bmt6HX0ZhX6eq/MuUUUVgbhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFAGF4g/wCP1P8ArmP5ms2tLxB/x+p/1zH8zWbQB19FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV5343/5KTof/bv/AOjmr0SvO/G//JSdD/7d /wD0c1AHolFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBT+CX/Jw3iH/sDf1tq990 z/kG2v8A1xT+QrwL4Jf8nDeIf+wN/W2r3Gw1XTI7G3jk1KzR1iUMrTqCCByCM1vX6ei/IwodfVmp RVL+2NJ/6Clj/wCBC/40f2xpP/QUsf8AwIX/ABrA3LtFUv7Y0n/oKWP/AIEL/jR/bGk/9BSx/wDA hf8AGgC7RVL+2NJ/6Clj/wCBC/40f2xpP/QUsf8AwIX/ABoAu0VS/tjSf+gpY/8AgQv+NH9saT/0 FLH/AMCF/wAaALtFUv7Y0n/oKWP/AIEL/jR/bGk/9BSx/wDAhf8AGgC7RVL+2NJ/6Clj/wCBC/40 f2xpP/QUsf8AwIX/ABoAu0VS/tjSf+gpY/8AgQv+NH9saT/0FLH/AMCF/wAaALtFUv7Y0n/oKWP/ AIEL/jR/bGk/9BSx/wDAhf8AGgC7RVL+2NJ/6Clj/wCBC/40f2xpP/QUsf8AwIX/ABoAu0VS/tjS f+gpY/8AgQv+NH9saT/0FLH/AMCF/wAaALtFUv7Y0n/oKWP/AIEL/jR/bGk/9BSx/wDAhf8AGgC7 RVL+2NJ/6Clj/wCBC/40f2xpP/QUsf8AwIX/ABoAu0VS/tjSf+gpY/8AgQv+NH9saT/0FLH/AMCF /wAaALtFUv7Y0n/oKWP/AIEL/jR/bGk/9BSx/wDAhf8AGgC7RVL+2NJ/6Clj/wCBC/40f2xpP/QU sf8AwIX/ABoAu0VS/tjSf+gpY/8AgQv+NH9saT/0FLH/AMCF/wAaALtFUv7Y0n/oKWP/AIEL/jR/ bGk/9BSx/wDAhf8AGgC7RVL+2NJ/6Clj/wCBC/40f2xpP/QUsf8AwIX/ABoAu0VS/tjSf+gpY/8A gQv+NH9saT/0FLH/AMCF/wAaALtFUv7Y0n/oKWP/AIEL/jR/bGk/9BSx/wDAhf8AGgC7RVL+2NJ/ 6Clj/wCBC/40f2xpP/QUsf8AwIX/ABoAu0VS/tjSf+gpY/8AgQv+NH9saT/0FLH/AMCF/wAaALtF Uv7Y0n/oKWP/AIEL/jR/bGk/9BSx/wDAhf8AGgC7RVL+2NJ/6Clj/wCBC/40f2xpP/QUsf8AwIX/ ABoAu0VS/tjSf+gpY/8AgQv+NH9saT/0FLH/AMCF/wAaALtFUv7Y0n/oKWP/AIEL/jR/bGk/9BSx /wDAhf8AGgC7RVL+2NJ/6Clj/wCBC/40f2xpP/QUsf8AwIX/ABoAu0VS/tjSf+gpY/8AgQv+NH9s aT/0FLH/AMCF/wAaALtFUv7Y0n/oKWP/AIEL/jR/bGk/9BSx/wDAhf8AGgC7RVL+2NJ/6Clj/wCB C/40f2xpP/QUsf8AwIX/ABoAu0VS/tjSf+gpY/8AgQv+NH9saT/0FLH/AMCF/wAaALtFUv7Y0n/o KWP/AIEL/jR/bGk/9BSx/wDAhf8AGgC7RVL+2NJ/6Clj/wCBC/40f2xpP/QUsf8AwIX/ABoAu0VS /tjSf+gpY/8AgQv+NH9saT/0FLH/AMCF/wAaALtFUv7Y0n/oKWP/AIEL/jR/bGk/9BSx/wDAhf8A GgC7RVL+2NJ/6Clj/wCBC/40f2xpP/QUsf8AwIX/ABoAu0VS/tjSf+gpY/8AgQv+NH9saT/0FLH/ AMCF/wAaALtFUv7Y0n/oKWP/AIEL/jR/bGk/9BSx/wDAhf8AGgC7RVL+2NJ/6Clj/wCBC/40f2xp P/QUsf8AwIX/ABoAu0VS/tjSf+gpY/8AgQv+NH9saT/0FLH/AMCF/wAaALtFUv7Y0n/oKWP/AIEL /jR/bGk/9BSx/wDAhf8AGgC7RVL+2NJ/6Clj/wCBC/40f2xpP/QUsf8AwIX/ABoAl1P/AJBt1/1x f+RrwL42/wDJw3h7/sDf1ua9xv8AVdMksbiOPUrN3aJgqrOpJJHAAzXh3xt/5OG8Pf8AYG/rc1vQ 6+jMK/T1X5lyiiisDcKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAwvEH/H6n/XMfzNZtaX iD/j9T/rmP5ms2gDr6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigArzvxv/yUnQ/+3f8A9HNXoled+N/+Sk6H/wBu/wD6OagD0SiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAp/BL/k4bxD/2Bv621e+6Z/yDbX/rin8hXgXwS/5OG8Q/ 9gb+ttXvumf8g21/64p/IVvX6ei/IwodfVliiiisDcKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigCvqf/INuv+uL/wAjXgXxt/5OG8Pf9gb+tzXvup/8g26/ 64v/ACNeBfG3/k4bw9/2Bv63Nb0OvozCv09V+ZcooorA3CiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKAMLxB/x+p/1zH8zWbWl4g/4/U/65j+ZrNoA6+iiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK878b/wDJSdD/AO3f/wBHNXoled+N/wDk pOh/9u//AKOagD0SiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAp/BL/k4bxD/wBg b+ttXvumf8g21/64p/IV4F8Ev+ThvEP/AGBv621e+6Z/yDbX/rin8hW9fp6L8jCh19WWKKKKwNwo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAK+p/wDINuv+ uL/yNeBfG3/k4bw9/wBgb+tzXvup/wDINuv+uL/yNeBfG3/k4bw9/wBgb+tzW9Dr6Mwr9PVfmXKK KKwNwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDC8Qf8fqf9cx/M1m1peIP+P1P+uY/maz aAOvooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACvO/G//JSdD/7d/wD0c1eiV5343/5KTof/AG7/APo5qAPRKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigCn8Ev+ThvEP/YG/rbV77pn/INtf+uKfyFeBfBL/k4bxD/2Bv621e+6Z/yD bX/rin8hW9fp6L8jCh19WWKKKKwNwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKAK+p/8g26/64v/ACNeBfG3/k4bw9/2Bv63Ne+6n/yDbr/ri/8AI14F8bf+ ThvD3/YG/rc1vQ6+jMK/T1X5lyiiisDcKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAwvEH /H6n/XMfzNZtaXiD/j9T/rmP5ms2gDr6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigArzH4oSTxeMrCW1O2dLeNojgcMJHx146+tenV5j8T+PGenn /phH/wCjHoAqnxB42HW8/wDIcP8AhR/wkPjb/n8H/fuH/Cu00u0tP7Ot2a1gdmjViXiViSRnqRVn 7JZ/8+Vp/wB+E/woA4L/AISHxt/z+D/v3D/hR/wkPjb/AJ/B/wB+4f8ACu9+yWf/AD5Wn/fhP8KP sln/AM+Vp/34T/CgDgv+Eh8bf8/g/wC/cP8AhR/wkPjb/n8H/fuH/Cu9+yWf/Plaf9+E/wAKPsln /wA+Vp/34T/CgDgv+Eh8bf8AP4P+/cP+FH/CQ+Nv+fwf9+4f8K737JZ/8+Vp/wB+E/wo+yWf/Pla f9+E/wAKAOC/4SHxt/z+D/v3D/hSjxB43PS7/wDIcP8AhXefZLP/AJ8rT/vwn+FZHii3t4bOKWGC KJvM2/IgXIwfT6UAcyfEHjYdbz/yHD/hR/wkPjb/AJ/B/wB+4f8ACvQtH03T20m0d7K3kZoVZmeM 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 o2elokNzeiEPJLK7BvLYEZJyemfr3rQ/snRvIlh+y/LLKJnbzH37x0IbORjtg8UAW/C+pNqumm4e W3lZZWjJhV1HHYq/Kt6jn6mqWt/8jJZf9s//AEM1d06Oy0+BobOMRozl2+YsWY9WJJJJPqazdWlD 69aSA8L5f/oZoA6biuI8APeXehWl48Oqz3brLi7nvS9uWBcDdH5uSOg+715966z7WvrWbpem6Zpn lixFzEkWdkX2uVoxnOfkLFe5PTrzQBnWfiu5uIbeQW0WYrCa61BADlShKhV54yyt1zwKbp3ibVZ9 MvbuaxAVNNN7BL9mlSIMFJ8slvv9jlTgjOK17Ky0uzuLye3tkSS9bdcHJO889icDqeB61Db6To1v FcRRWoCXEJgkBkc/uzn5ASflHJ4GKAMh/Emry2dzEwtIpX0IanDJGjfJ6qct19D298c6cU92Phqb qW5drr+yTIJlJDZ8okHOSdw4yc8nnjpU6abpCuGFquRZfYRl2I8j+5gn9evvU0VvYR6SdKWM/YzE YfLaRj8hBBXJOehx147UAcpoOqahJq3hWxuby4aRopnmzIcTo0CvGzf3sEkc91NaejeJr/ULqwUx W0cOqLc/ZfkYtCYicF/m+YH0G361px6fpMd1Y3SWyiaxi8m2fe2UTbtx154J65os9P0mzvWvLa2W OY7sHcxC7jltoJwuT1wBQAfsi3dxffE/Uru7meaaTSJSzsSSf38P/wCqvqHTP+Qba/8AXFP5CvnL 9nC0tLL43a3bWUQigXR2KoCSBmS3J6+5NfRumf8AINtf+uKfyFb1+novyMKHX1ZYooorA3CiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAr6n/wAg26/64v8A yNfN37S//JadG/7Ay/8Aoy4r6R1P/kG3X/XF/wCRr5u/aX/5LTo3/YGX/wBGXFb0OvozCv09V+Zy VFFFYG4UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA 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 UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA FNr75mEdpcSqGK71KAEg4PVgeCCOnak+3Sf9A+6/76j/APi6r2z7Y3H/AE2m/wDRrV53bXHjPxRD rWu6T4sOjR2eoXdnp+nizhkgkNtK8LNcs6mQ73jY/u2jwpXqeS7AemfbpP8AoH3X/fUf/wAXSNqD qpZrC6AAyeY//i68Xi+Kmsal4p03SNJSGG58S+GdK1DS47wAW9nJObxp3dhhpGCRxbYgcsUONo3s PVrKK5s9CS1vNRm1K4jgKy3UyIjzNjliqKqj6ACiwGsL+B7OC7g3zJcKGhCjBcFdw+9jHAJ5xTPt 0n/QPuv++o//AIus3Rzjw14dP/TCL/0nasX4h6zqllDo2l6NcRWl9reprYR3ckfmC2XyZZncKeGb ZCwUHjcy5BHBQHWfbpP+gfdf99R//F0fbpP+gfdf99R//F1yIbWvCehalfX+v3HiVY1R4v7Q+y2Z i5w5eVFjjEYBDHK7gFbG8kCuUs/jJHdaJq9xZafo+salpl5ptuYNF11Ly3mF7crbx7Z9i4cNvJRl H3Rzhg1OwHrP26T/AKB91/31H/8AF0fbpP8AoH3X/fUf/wAXXnz/ABC1DTYtat/EHh2O21bTUsnh tbG/+0x3X2yZ4LcLIyR7WMqMhyuBwckU/wAUfEC78J+FodS8VaZpWlX1zqC2NtHJrKrZszIXDvcv GuxQqvnKZyuAGyuSwHffbpP+gfdf99R//F0LqUf2qC2mgmgeclYt+0hmCliPlJxwCefSvIbTxtZ+ NtS8DX1q1i0ll4vuLO5NjfLeWxkXR718xzKAHUrIhzgEEkEAg16Vfvu1/Qx/08y/+iJKAOhr56+N v/Jw3h7/ALA39bmvoWvnr42/8nDeHv8AsDf1ua1oby9GYV9o+qLlFFFYm4UUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA 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 pZ1GS4ScSA4C7o1MIySTgt1oEdTfeMfDsGlXeoWuq6fqK2gUzJbX9vlcsFGWeRUXkj7zD0GTgHT/ ALX0r+0/7L/tOy+343fZfPXzsYznZnd09q8r1L4c+LrrwrrHh62v7W2024toYrKynvnuVhdJkfcJ TErKuxSoXB5PWtH/AIV3q48SCcXdn9h/4SAa59o3N9pB2Y8jGMbM993TtRqM77Ttf0LUZ0g0/WtN vJZEMiJBdJIzIDgsADyMgjNaVeVeC/hxrOhyeCJJpdOL6E9/9uaJ2zKJ8+Xsyo3YzznGO2a9VoEF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAX6KKK5ywo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK858eIJP iLosbZwwgBx7zNXo1ed+N/8AkpOh/wDbv/6OagDvvs6erUfZ09WqavAPi3aeJ7/4i6osun6hqWnW 8UL6ckWtGySIeWCwVAuWdn3/ALw8cbc/LgRVrqlHml/X3l06bqOyPefs6erUjW0bFSS3ynI59sf1 rmvhC+tyfDjRn8QzTTaiYm3vM4dym9vL3MAN52bMt/F1yc5PWVoptq5DjZ2ZD9nT1aj7Onq1c3B4 j1q+vbkaXoNpcWltcyW7+bqXlXLeW5RmWLyyuMqcbnXIweM1sTa7pUP2rzLrb9kvYbGf923yzzeV 5adOc+fFyOBu5IwcPmYrFz7Onq1H2dPVqydP8V6Df6sdLtb1nuhJNEAbeRUMkTFZEDlQpZSpyoOc c9OaZD4y8OTW2oXMeonydPge5uHMEgUxJndIhK/vFG0jKbhnijmYWNn7Onq1H2dPVqytE8RW+r6z dWNpDJ5ENlb3STurIZBLJcR42MoIA8jIbowYEcYJqReNNLSwFzqCz27veXtvHDBBLcuy21w8LSbY 0JC/KpJIwu8AnuTmYWOg+zp6tR9nT1asq+8V+H7JrMT6iuLyJZonjieRPLYgLIzKCEQkgBmIHvVm 01zTbvW7zRraaSS9ssfaVED7YyVRgC+3bkrIpAzk84+6cHMwsXPs6erUfZ09WqaijmYWIfs6erUf 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 f40bm/55t+n+NAD6KZub/nm36f40bm/55t+n+NAD6KZub/nm36f40bm/55t+n+NAD6KZub/nm36f 40bm/wCebfp/jQA+imbm/wCebfp/jRub/nm36f40APopm5v+ebfp/jRub/nm36f40APopm5v+ebf p/jRub/nm36f40APopm5v+ebfp/jRub/AJ5t+n+NAD6KZub/AJ5t+n+NG5v+ebfp/jQA+imbm/55 t+n+NG5v+ebfp/jQA+imbm/55t+n+NG5v+ebfp/jQA+imbm/55t+n+NG5v8Anm36f40APopm5v8A nm36f40bm/55t+n+NAD6KZub/nm36f40bm/55t+n+NAD6KZub/nm36f40bm/55t+n+NAD6KZub/n m36f40bm/wCebfp/jQA+imbm/wCebfp/jRub/nm36f40APopm5v+ebfp/jRub/nm36f40APopm5v +ebfp/jRub/nm36f40APopm5v+ebfp/jRub/AJ5t+n+NAD6KZub/AJ5t+n+NG5v+ebfp/jQA+imb m/55t+n+NG5v+ebfp/jQA+imbm/55t+n+NG5v+ebfp/jQA+imbm/55t+n+NG5v8Anm36f40APopm 5v8Anm36f40bm/55t+n+NAD6KZub/nm36f40bm/55t+n+NAD6KZub/nm36f40bm/55t+n+NAD6KZ ub/nm36f40bm/wCebfp/jQA+imbm/wCebfp/jRub/nm36f40APopm5v+ebfp/jRub/nm36f40APo pm5v+ebfp/jRub/nm36f40APopm5v+ebfp/jRub/AJ5t+n+NAD6KZub/AJ5t+n+NG5v+ebfp/jQA +imbm/55t+n+NG5v+ebfp/jQA+imbm/55t+n+NG5v+ebfp/jQA+imbm/55t+n+NG5v8Anm36f40A Popm5v8Anm36f40bm/55t+n+NAD6KZub/nm36f40bm/55t+n+NAD6KZub/nm36f40bm/55t+n+NA D6KZub/nm36f40bm/wCebfp/jQA+imbm/wCebfp/jRub/nm36f40APopm5v+ebfp/jRub/nm36f4 0AYviD/j9T/rmP5ms2tHXyTeJlSP3Y6/U1nUAdfRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFed+N/+Sk6H/wBu/wD6OavRK878b/8AJSdD/wC3 f/0c1AHolFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQBheIP+P1P+uY/maza0vEH/AB+p/wBcx/M1m0AdfRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFed+N/wDk pOh/9u//AKOavRK878b/APJSdD/7d/8A0c1AHolFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBheIP+P1P+uY/maz a0vEH/H6n/XMfzNZtAHX0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABXnfjf/kpOh/8Abv8A+jmr0SvO/G//ACUnQ/8At3/9HNQB6JRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAYXiD/j9T/rmP5ms2tLxB/wAfqf8AXMfzNZtAHX0UUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXnfjf8A5KTof/bv/wCjmr0SvO/G /wDyUnQ/+3f/ANHNQB6JRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAYXiD/j9T/rmP5ms2tLxB/x+p/1zH8zWbQB 19FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA V5343/5KTof/AG7/APo5q9Erzvxv/wAlJ0P/ALd//RzUAeiUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGF4g/4/ U/65j+ZrNrS8Qf8AH6n/AFzH8zWbQB19FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAV5343/AOSk6H/27/8Ao5q9Erzvxv8A8lJ0P/t3/wDRzUAe iUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFAGF4g/4/U/65j+ZrNrS8Qf8fqf9cx/M1m0AdfRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFed+N/+Sk6H/wBu/wD6 OavRK878b/8AJSdD/wC3f/0c1AHolFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBheIP+P1P+uY/maza0vEH/AB+p /wBcx/M1m0AdfRUH2mP0b8qPtMfo35UAT0VB9pj9G/Kj7TH6N+VAE9FQfaY/Rvyo+0x+jflQBPRU H2mP0b8qPtMfo35UAT0VB9pj9G/Kj7TH6N+VAE9FQfaY/Rvyo+0x+jflQBPRUH2mP0b8qPtMfo35 UAT0VB9pj9G/Kj7TH6N+VAE9FQfaY/Rvyo+0x+jflQBPRUH2mP0b8qPtMfo35UAT0VB9pj9G/Kj7 TH6N+VAE9FQfaY/Rvyo+0x+jflQBPRUH2mP0b8qPtMfo35UAT0VB9pj9G/Kj7TH6N+VAE9ed+N/+ Sk6H/wBu/wD6Oau9+0x+jflXAeMnEnxH0NlB6245/wCuzUAejUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGF4g/ 4/U/65j+ZrNrS8Qf8fqf9cx/M1m0AdV5EX939TXB3fxJ0W3utRj/AOEd8STW+nXMltdXkNkHt42j OGJcPwO/POCOK9Br561fSdVN34rtBp3j4XF5q13Jax2URGnTKzfK0gP3gccnoV20Ae3yatoMOm2u o3OpWdtaXaK8Es84iEgYAjG4jsRVi9udKsrP7beXdtbWpx++lmCJz0+YnHNeZeLNKvLfV9C1PWfC M2u2MehCzexsoBKttdcEkJ2XHyhh0x7Cq1x4d1jTvCHgc6zodzrdtpTTHUdOhQTORID5XydG2Zxj +lAHfeJfENlpVvolxawRahDq2pwWCSR3GFUSbv3gIBDY29OM+taUmqaDHI0cmqWCOkwt2VrpQVlI JCEZ+8QCcdeK8nPhnXH8F6PbRadf6cLjxgl5BDFGWl062bcFYgAhNvXngZGalu9C1B/Dmi+FbvQb qVtO8UQC7mjtXMd3bt5hNwWxg5Bw5zweuMigD1K21XQLl7dLfVdPma53eQsd0rGXb124PzY74p/2 /Rf7S/sz+0LL7d/z7faF83pn7mc9PavH7LwhNZ3kN5a+HrmGeHx4BE62rApYA5BHHEWe/wB2q/iX TvE7/ER9XHhm5+z6drcdwBY6REDPAHB3iYYeR2GcryOckjpQB6zrfiLQ9P0vULqG9sbu5tIbhxap dqHkeFC7x8EkMAOeCR3FTaHq+m6lpml3Eslva3Wo2SXiWjXALhWQMcDgsBnGcVwOl+FgdB+IeoXG hSHVp73U1sZJLYmVo2jIUxZGcNvYZX72cc03wNoOoaRC+navp+pXsOt6DGv2lYSJrUrDte1JPCcH 5d2ORg5NAHpWm3+i6m0i6dqFlemI4kFvcLJsPvtJxVzyIv7v6mvL/gvYahp2t3tsNCuLbS47ULFd 32kx2d0X3D92ShPmrjnce4H4+q0AReRF/d/U0eRF/d/U1LRQBF5EX939TR5EX939TUtFAEXkRf3f 1NHkRf3f1NS0UAReRF/d/U0eRF/d/U1LRQBF5EX939TR5EX939TUtFAEXkRf3f1NHkRf3f1NS0UA ReRF/d/U0eRF/d/U1LRQBF5EX939TR5EX939TUtFAEXkRf3f1Nef+NEVPiRoYUYH+j/+jmr0WvO/ G/8AyUnQ/wDt3/8ARzUAeiUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGF4g/wCP1P8ArmP5ms2tLxB/x+p/1zH8 zWbQB0/2y39ZP+/Tf4UfbLf1k/79N/hSfZf+mn6Vk/234c/tD+z/APhI9K+2eb5P2f7XH5nmZxs2 7s7s8Y65oA1/tlv6yf8Afpv8KPtlv6yf9+m/wpPsv/TT9KPsv/TT9KAF+2W/rJ/36b/Cj7Zb+sn/ AH6b/Ck+y/8ATT9KPsv/AE0/SgBftlv6yf8Afpv8KPtlv6yf9+m/wpPsv/TT9KPsv/TT9KAF+2W/ rJ/36b/Cj7Zb+sn/AH6b/Ck+y/8ATT9KPsv/AE0/SgBftlv6yf8Afpv8KPtlv6yf9+m/wpPsv/TT 9KPsv/TT9KAF+2W/rJ/36b/Cj7Zb+sn/AH6b/Ck+y/8ATT9KPsv/AE0/SgBftlv6yf8Afpv8KPtl v6yf9+m/wpPsv/TT9KPsv/TT9KAF+2W/rJ/36b/Cj7Zb+sn/AH6b/Ck+y/8ATT9KPsv/AE0/SgBf tlv6yf8Afpv8KPtlv6yf9+m/wpPsv/TT9KPsv/TT9KAF+2W/rJ/36b/Cj7Zb+sn/AH6b/Ck+y/8A TT9KPsv/AE0/SgBftlv6yf8Afpv8KPtlv6yf9+m/wpPsv/TT9KPsv/TT9KAF+2W/rJ/36b/Cj7Zb +sn/AH6b/Ck+y/8ATT9KPsv/AE0/SgBftlv6yf8Afpv8KPtlv6yf9+m/wpPsv/TT9KPsv/TT9KAF +2W/rJ/36b/CuA8YypL8R9EZM4BtxypH/LZvWu++y/8ATT9K4HxjH5fxH0Rc55tz0/6bNQB6PRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAYXiD/AI/U/wCuY/maza0vEH/H6n/XMfzNZtAHX15v/Y2kf8L9/wCQVY/8 gD7Z/wAe6f8AHx9q/wBd0/1n+11969Iqv9js/wC0P7Q+yQfbPK8n7R5Y8zy852buu3POOmaAPEPA /jK6ufifpgTV9U/svUZbiJ01HU4ptxCt5YESqvkEuAAD97OB71tK1/UbiXw5fS+M9RfVdQ8RxxX+ ki5wkMYlI27Byq4wCOh3dPlr29NC0RJBImj6crib7QGFsgIl/v5x97361yMfw6kl8Uw6xqWvLdww XgvUgj02GB2lXOwySIAXxnuKAOdbVr7TviyItV8RXl3Ddal5FpDp+qxNHCGOFjmtSpYY6FuPzr2G qI0jSRqf9pjS7IX/APz8/Z183pj7+M9Per1ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFed+N/wDkpOh/9u//AKOavRK878b/APJSdD/7d/8A0c1AHolFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB 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 xNcDRQB33/Cxdc/6DH/ksn/xNH/Cxdc/6DH/AJLJ/wDE1wNFAHff8LF1z/oMf+Syf/E0f8LF1z/o Mf8Aksn/AMTXA0UAd9/wsXXP+gx/5LJ/8TR/wsXXP+gx/wCSyf8AxNcDRQB33/Cxdc/6DH/ksn/x NH/Cxdc/6DH/AJLJ/wDE1wNFAHff8LF1z/oMf+Syf/E0f8LF1z/oMf8Aksn/AMTXA0UAd9/wsXXP +gx/5LJ/8TR/wsXXP+gx/wCSyf8AxNcDRQB33/Cxdc/6DH/ksn/xNH/Cxdc/6DH/AJLJ/wDE1wNF AHff8LF1z/oMf+Syf/E0f8LF1z/oMf8Aksn/AMTXA0UAd9/wsXXP+gx/5LJ/8TR/wsXXP+gx/wCS yf8AxNcDRQB33/Cxdc/6DH/ksn/xNH/Cxdc/6DH/AJLJ/wDE1wNFAHff8LF1z/oMf+Syf/E0f8LF 1z/oMf8Aksn/AMTXA0UAd9/wsXXP+gx/5LJ/8TR/wsXXP+gx/wCSyf8AxNcDRQB33/Cxdc/6DH/k sn/xNH/Cxdc/6DH/AJLJ/wDE1wNFAHff8LF1z/oMf+Syf/E0f8LF1z/oMf8Aksn/AMTXA0UAd9/w sXXP+gx/5LJ/8TR/wsXXP+gx/wCSyf8AxNcDRQB33/Cxdc/6DH/ksn/xNH/Cxdc/6DH/AJLJ/wDE 1wNFAHff8LF1z/oMf+Syf/E0f8LF1z/oMf8Aksn/AMTXA0UAd9/wsXXP+gx/5LJ/8TR/wsXXP+gx /wCSyf8AxNcDRQB33/Cxdc/6DH/ksn/xNH/Cxdc/6DH/AJLJ/wDE1wNFAHff8LF1z/oMf+Syf/E0 f8LF1z/oMf8Aksn/AMTXA0UAd9/wsXXP+gx/5LJ/8TR/wsXXP+gx/wCSyf8AxNcDRQB33/Cxdc/6 DH/ksn/xNH/Cxdc/6DH/AJLJ/wDE1wNFAHff8LF1z/oMf+Syf/E0f8LF1z/oMf8Aksn/AMTXA0UA d9/wsXXP+gx/5LJ/8TR/wsXXP+gx/wCSyf8AxNcDRQB33/Cxdc/6DH/ksn/xNH/Cxdc/6DH/AJLJ /wDE1wNFAHff8LF1z/oMf+Syf/E0f8LF1z/oMf8Aksn/AMTXA0UAd9/wsXXP+gx/5LJ/8TR/wsXX P+gx/wCSyf8AxNcDRQB33/Cxdc/6DH/ksn/xNH/Cxdc/6DH/AJLJ/wDE1wNFAHff8LF1z/oMf+Sy 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 wo/4RrxH/wBADVf/AADk/wAKAMmitb/hGvEf/QA1X/wDk/wo/wCEa8R/9ADVf/AOT/CgDJorW/4R rxH/ANADVf8AwDk/wo/4RrxH/wBADVf/AADk/wAKAMmitb/hGvEf/QA1X/wDk/wo/wCEa8R/9ADV f/AOT/CgDJorW/4RrxH/ANADVf8AwDk/wo/4RrxH/wBADVf/AADk/wAKAMmitb/hGvEf/QA1X/wD k/wo/wCEa8R/9ADVf/AOT/CgDJorW/4RrxH/ANADVf8AwDk/wo/4RrxH/wBADVf/AADk/wAKAMmi tb/hGvEf/QA1X/wDk/wo/wCEa8R/9ADVf/AOT/CgDJorW/4RrxH/ANADVf8AwDk/wo/4RrxH/wBA DVf/AADk/wAKAMmitb/hGvEf/QA1X/wDk/wo/wCEa8R/9ADVf/AOT/CgDJorW/4RrxH/ANADVf8A wDk/wo/4RrxH/wBADVf/AADk/wAKAMmitb/hGvEf/QA1X/wDk/wo/wCEa8R/9ADVf/AOT/CgDJor W/4RrxH/ANADVf8AwDk/wo/4RrxH/wBADVf/AADk/wAKAMmitb/hGvEf/QA1X/wDk/wo/wCEa8R/ 9ADVf/AOT/CgDJorW/4RrxH/ANADVf8AwDk/wo/4RrxH/wBADVf/AADk/wAKAMmitb/hGvEf/QA1 X/wDk/wo/wCEa8R/9ADVf/AOT/CgDJorW/4RrxH/ANADVf8AwDk/wo/4RrxH/wBADVf/AADk/wAK AMmitb/hGvEf/QA1X/wDk/wo/wCEa8R/9ADVf/AOT/CgDJorW/4RrxH/ANADVf8AwDk/wo/4RrxH /wBADVf/AADk/wAKAMmitb/hGvEf/QA1X/wDk/wo/wCEa8R/9ADVf/AOT/CgDJorW/4RrxH/ANAD Vf8AwDk/wo/4RrxH/wBADVf/AADk/wAKAMmitb/hGvEf/QA1X/wDk/wo/wCEa8R/9ADVf/AOT/Cg DJorW/4RrxH/ANADVf8AwDk/wo/4RrxH/wBADVf/AADk/wAKAMmitb/hGvEf/QA1X/wDk/wo/wCE a8R/9ADVf/AOT/CgDJorW/4RrxH/ANADVf8AwDk/wo/4RrxH/wBADVf/AADk/wAKAMmitb/hGvEf /QA1X/wDk/wo/wCEa8R/9ADVf/AOT/CgDJorW/4RrxH/ANADVf8AwDk/wo/4RrxH/wBADVf/AADk /wAKAMmitb/hGvEf/QA1X/wDk/wo/wCEa8R/9ADVf/AOT/CgDJorW/4RrxH/ANADVf8AwDk/wo/4 RrxH/wBADVf/AADk/wAKAMmitb/hGvEf/QA1X/wDk/wo/wCEa8R/9ADVf/AOT/CgDJorW/4RrxH/ ANADVf8AwDk/wo/4RrxH/wBADVf/AADk/wAKAMmitb/hGvEf/QA1X/wDk/wo/wCEa8R/9ADVf/AO T/CgDJorW/4RrxH/ANADVf8AwDk/wo/4RrxH/wBADVf/AADk/wAKAMmitb/hGvEf/QA1X/wDk/wo /wCEa8R/9ADVf/AOT/CgDJorW/4RrxH/ANADVf8AwDk/wo/4RrxH/wBADVf/AADk/wAKAMmitb/h GvEf/QA1X/wDk/wo/wCEa8R/9ADVf/AOT/CgDJorW/4RrxH/ANADVf8AwDk/wo/4RrxH/wBADVf/ AADk/wAKAMmitb/hGvEf/QA1X/wDk/wo/wCEa8R/9ADVf/AOT/CgDJorW/4RrxH/ANADVf8AwDk/ wo/4RrxH/wBADVf/AADk/wAKAMmitb/hGvEf/QA1X/wDk/wo/wCEa8R/9ADVf/AOT/CgDJorW/4R rxH/ANADVf8AwDk/wo/4RrxH/wBADVf/AADk/wAKAMmitb/hGvEf/QA1X/wDk/wo/wCEa8R/9ADV f/AOT/CgDJorW/4RrxH/ANADVf8AwDk/wo/4RrxH/wBADVf/AADk/wAKAMmitb/hGvEf/QA1X/wD k/wo/wCEa8R/9ADVf/AOT/CgDJorW/4RrxH/ANADVf8AwDk/wo/4RrxH/wBADVf/AADk/wAKAMmi tb/hGvEf/QA1X/wDk/wo/wCEa8R/9ADVf/AOT/CgDJorW/4RrxH/ANADVf8AwDk/wo/4RrxH/wBA DVf/AADk/wAKAMmitb/hGvEf/QA1X/wDk/wo/wCEa8R/9ADVf/AOT/CgDJorW/4RrxH/ANADVf8A wDk/wo/4RrxH/wBADVf/AADk/wAKAMmitb/hGvEf/QA1X/wDk/wo/wCEa8R/9ADVf/AOT/CgDJor W/4RrxH/ANADVf8AwDk/wo/4RrxH/wBADVf/AADk/wAKAMmitb/hGvEf/QA1X/wDk/wo/wCEa8R/ 9ADVf/AOT/CgDJorW/4RrxH/ANADVf8AwDk/wo/4RrxH/wBADVf/AADk/wAKAMmitb/hGvEf/QA1 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 /oAar/4Byf4UAf/Z --===============4020214455623519253==-- From ovedo at redhat.com Mon Dec 2 02:01:55 2013 Content-Type: multipart/mixed; boundary="===============8551074680045844032==" MIME-Version: 1.0 From: Oved Ourfalli To: devel at ovirt.org Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt Date: Mon, 02 Dec 2013 02:01:52 -0500 Message-ID: <1286130035.32994182.1385967712137.JavaMail.root@redhat.com> In-Reply-To: 529C192D.106@redhat.com --===============8551074680045844032== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Your E-mail made me look a bit and check the different flows. I think the only use-case for adding users without giving any permissions i= s when you add a user for notification reasons. You can add a user, and then in the Event Notifier sub-tab define what even= ts he will get via E-mail. afaik (and I'm not an event notifier expert), this user doesn't have to be = able to login, or to have permissions of any kind. He just gets events. Other than that you're right. A user which is added to the system can't do = much without assigning him roles. I think adding roles assignment to this dialog may be a bit cumbersome. Per= haps some wizard is required in that case. Or at least some checkbox saying= "allow user to login". That way the new user will be able to login, and he= will have some default permissions as well (permissions granted to Everyon= e). Let's see what others think. Regards, Oved ----- Original Message ----- > From: "Ramesh" > To: engine-devel(a)ovirt.org > Sent: Monday, December 2, 2013 7:22:53 AM > Subject: [Engine-devel] Adding users and assigning roles in Ovirt > = > Hi All, > = > We have 'Add' action under 'Users' main tab to add users in Ovirt . > It looks slightly different from the "Add user" option of the Configure > option. Actually, this one is missing the "Role to Assign" option. I > think without assigning any role, adding a user is not meaningful and it > didn't complete the flow. > = > Currently to assign any role to the user, either we have to use > 'Configure' option ( to add system permission) or we have to go to the > specific entity and add permission for that entity. It will be nice if > we can assign roles( system level permissions) while adding users in > 'Users' tab itself. It will be a clear user flow where one can add user > and assign role in the same place. > = > I have attached both the screen shots. > = > please share your thoughts. > = > Regards, > Ramesh > = > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============8551074680045844032==-- From gchaplik at redhat.com Mon Dec 2 03:47:58 2013 Content-Type: multipart/mixed; boundary="===============1391665481176638134==" MIME-Version: 1.0 From: Gilad Chaplik To: devel at ovirt.org Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt Date: Mon, 02 Dec 2013 03:47:56 -0500 Message-ID: <1561192373.43408976.1385974076894.JavaMail.root@redhat.com> In-Reply-To: 1286130035.32994182.1385967712137.JavaMail.root@redhat.com --===============1391665481176638134== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Ramesh, You're right, I also think that the 'add users' is a bit pointless, but add= ing a system permission in that dialog can be dangerous (if admin doesn't f= ully understand what he's doing, and MLA is complicated enough ;-) ). Currently when adding a permission we can specify a AD-user (regardless to = the fact he's added or not), So eventually power users can add users to the= system. I can think of a case, that admins will want to manage the users by themsel= ves, i.e- power users can add permissions for the added users only. this way this dialog can be useful. Thanks, = Gilad. ----- Original Message ----- > From: "Oved Ourfalli" > To: "Ramesh" > Cc: engine-devel(a)ovirt.org > Sent: Monday, December 2, 2013 9:01:52 AM > Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt > = > Your E-mail made me look a bit and check the different flows. > = > I think the only use-case for adding users without giving any permissions= is > when you add a user for notification reasons. > You can add a user, and then in the Event Notifier sub-tab define what ev= ents > he will get via E-mail. > afaik (and I'm not an event notifier expert), this user doesn't have to be > able to login, or to have permissions of any kind. He just gets events. > = > Other than that you're right. A user which is added to the system can't do > much without assigning him roles. > I think adding roles assignment to this dialog may be a bit cumbersome. > Perhaps some wizard is required in that case. Or at least some checkbox > saying "allow user to login". That way the new user will be able to login, > and he will have some default permissions as well (permissions granted to > Everyone). > = > Let's see what others think. > = > Regards, > Oved > = > = > ----- Original Message ----- > > From: "Ramesh" > > To: engine-devel(a)ovirt.org > > Sent: Monday, December 2, 2013 7:22:53 AM > > Subject: [Engine-devel] Adding users and assigning roles in Ovirt > > = > > Hi All, > > = > > We have 'Add' action under 'Users' main tab to add users in Ovirt . > > It looks slightly different from the "Add user" option of the Configure > > option. Actually, this one is missing the "Role to Assign" option. I > > think without assigning any role, adding a user is not meaningful and it > > didn't complete the flow. > > = > > Currently to assign any role to the user, either we have to use > > 'Configure' option ( to add system permission) or we have to go to the > > specific entity and add permission for that entity. It will be nice if > > we can assign roles( system level permissions) while adding users in > > 'Users' tab itself. It will be a clear user flow where one can add user > > and assign role in the same place. > > = > > I have attached both the screen shots. > > = > > please share your thoughts. > > = > > Regards, > > Ramesh > > = > > = > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============1391665481176638134==-- From jhernand at redhat.com Mon Dec 2 03:57:28 2013 Content-Type: multipart/mixed; boundary="===============8636486771932804070==" MIME-Version: 1.0 From: Juan Hernandez To: devel at ovirt.org Subject: [Engine-devel] Increasing the HTTP keep alive to 30 seconds Date: Mon, 02 Dec 2013 09:57:17 +0100 Message-ID: <529C4B6D.4080006@redhat.com> --===============8636486771932804070== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hello, We have an RFE that has been open for quite a long time requesting an increase of the keep alive time in the HTTP communications between the GUI applications and the web server: https://bugzilla.redhat.com/833799 Implementing it should be as simple as modifying the setup application so that it includes the modified KeepAlive directives in the web server configuration, something like this: KeepAlive on KeepAliveTimeout 30 Is someone with knowledge of the setup application interested on taking this? Regards, Juan Hernandez -- = Direcci=C3=B3n Comercial: C/Jose Bardasano Baos, 9, Edif. Gorbea 3, planta 3=C2=BAD, 28016 Madrid, Spain Inscrita en el Reg. Mercantil de Madrid =E2=80=93 C.I.F. B82657941 - Red Ha= t S.L. --===============8636486771932804070==-- From ecohen at redhat.com Mon Dec 2 12:30:46 2013 Content-Type: multipart/mixed; boundary="===============1224579837447997628==" MIME-Version: 1.0 From: Einav Cohen To: devel at ovirt.org Subject: Re: [Engine-devel] Remove Comment column in main tabs Date: Mon, 02 Dec 2013 12:30:45 -0500 Message-ID: <1740158774.21709080.1386005445607.JavaMail.root@redhat.com> In-Reply-To: 1993200129.42184923.1385618604601.JavaMail.root@redhat.com --===============1224579837447997628== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable > I opened a bug for this: https://bugzilla.redhat.com/show_bug.cgi?id=3D10= 35566 > While at it, I also opened a BZ to fixate the icon column size: > https://bugzilla.redhat.com/show_bug.cgi?id=3D1035567 Thanks, Mike. > Not sure but I think these bugs should be fixed (if and when) for user po= rtal > as well.. I think that the comment field is not displayed in the user portal at all (= maybe = need a separate RFE?); regarding icon columns - there is a chance that there are some icon columns= in = the sub-tabs within the power-user portal, which should indeed be taken car= e of. = ---- Regards, Einav ----- Original Message ----- > From: "Mike Kolesnik" > To: "Einav Cohen" > Cc: "engine-devel" > Sent: Thursday, November 28, 2013 1:03:24 AM > Subject: Re: [Engine-devel] Remove Comment column in main tabs > = > ----- Original Message ----- > > > For the reasons stated in my earlier comment, let's place this column= to > > > the > > > right of the name. > > = > > I am OK with that. > > @Mike/others - any objections for placing the Comment column with an > > icon-ed > > tooltip-ed title to the right of the Name column? > = > No objections, I'm actually +1 for it :) > = > > [are we tracking it in a BZ? is someone volunteering to take care of th= is?] > = > I opened a bug for this: https://bugzilla.redhat.com/show_bug.cgi?id=3D10= 35566 > While at it, I also opened a BZ to fixate the icon column size: > https://bugzilla.redhat.com/show_bug.cgi?id=3D1035567 > = > Not sure but I think these bugs should be fixed (if and when) for user po= rtal > as well.. > = > > = > > > OK.. so we are on the same page and potentially, it can then be > > > incorporated > > > into a sort sequence of the name column. > > = > > Malini, I missed your earlier reference to sort sequence, I apologize. > > I am not familiar with sort sequence other than Ascending/Descending; > > do you happen to have an example for something that uses sort sequence > > for something other than/in addition to Ascending/Descending? It sounds > > interesting. > > = > > ---- > > Thanks, > > Einav > > = > > ----- Original Message ----- > > > From: "Malini Rao" > > > To: "Einav Cohen" > > > Cc: "engine-devel" > > > Sent: Wednesday, November 27, 2013 9:24:21 AM > > > Subject: Re: [Engine-devel] Remove Comment column in main tabs > > > = > > > --- Original Message ----- > > > > From: "Einav Cohen" > > > > To: "Malini Rao" > > > > Cc: "engine-devel" , "Mike Kolesnik" > > > > > > > > Sent: Wednesday, November 27, 2013 8:18:38 AM > > > > Subject: Re: [Engine-devel] Remove Comment column in main tabs > > > > = > > > > > That is a good point. I guess the question is if sorting will be > > > > > necessary > > > > > on > > > > > comments since it is available on hover only anyway and I am not = sure > > > > > an > > > > > alphabetical sort would be very useful in finding a particular > > > > > comment > > > > = > > > > what I had in mind is Boolean sorting (i.e. similar to sorting > > > > according > > > > to > > > > the 'attachment' field in e-mail - sort by existence, and not by > > > > content). > > > = > > > OK.. so we are on the same page and potentially, it can then be > > > incorporated > > > into a sort sequence of the name column. > > > = > > > > = > > > > > If the comment is relatively unimportant, then I think it would be > > > > > reasonable > > > > > to leave it where it is today. > > > > = > > > > In my view (and I think that Mike implied that on his last reply as > > > > well), > > > > the comment can be pretty important; the comment is meant for dynam= ic > > > > notifications on the object. So I would imagine a comment to be > > > > something > > > > like "!! do not shutdown this VM! it is being installed with xyz!!" > > > > which > > > > is probably important enough to not be "hidden" in a distant column. > > > > = > > > > [my suggestion earlier to keep it in its current location was merely > > > > for > > > > doing minimal changes, without changing anything in the primary-col= umns > > > > area or "making things worse" comment-wise, while saving real-estat= e; > > > > but > > > > if we can easily do a change that will also make the 'comment' colu= mn > > > > more > > > > noticeable, it is better] > > > = > > > I am sure many examples abound for good and not so god paradigms. Even > > > though > > > I recommend other means of displaying info that apply only to some ca= ses > > > instead of dedicating a column for it, to come to a consensus for the > > > short > > > term, I think we can all agree to place this column to the right of t= he > > > name > > > column. This way, it is separated from the other two icons but still > > > close > > > to the name to gather attention. > > > = > > > > = > > > > > Maybe if we decide not to implement the recommendation I sent > > > > > earlier, > > > > > we > > > > > could move the comment column to display after the name column. T= his > > > > > way > > > > > it > > > > > is not lost at the very end esp because its presence is known only > > > > > via > > > > > a > > > > > small icon. > > > > = > > > > I don't feel strongly one way or another; I think it is acceptable = to > > > > make > > > > this column adjacent to the 'Name' column either on its left or rig= ht > > > > side > > > > (see also Mike's Gmail example from his last reply on this thread -= it > > > > is > > > > really not that bad, in my view, to have another column to the left= ). > > > = > > > For the reasons stated in my earlier comment, let's place this column= to > > > the > > > right of the name. > > > = > > > Thanks > > > Malini > > > > = > > > > ----- > > > > Thanks, > > > > Einav > > > > = > > > > = > > > > > ----- Original Message ----- > > > > > From: "Malini Rao" > > > > > Sent: Tuesday, November 26, 2013 5:03:44 PM > > > > > = > > > > > = > > > > > ----- Original Message ----- > > > > > > From: "Einav Cohen" > > > > > > To: "Malini Rao" > > > > > > Cc: "engine-devel" > > > > > > Sent: Tuesday, November 26, 2013 4:19:55 PM > > > > > > Subject: Re: [Engine-devel] Remove Comment column in main tabs > > > > > > = > > > > > > Hi Malini, > > > > > > = > > > > > > > This could work but I am not a big fan of simply adding iconic > > > > > > > columns > > > > > > > preceding the name. This is actually a good example where 2 i= con > > > > > > > columns > > > > > > > are > > > > > > > already there and adding another column is making the primary > > > > > > > column > > > > > > > ( > > > > > > > i.e > > > > > > > the name column) not seem like the first column the eye focus= es > > > > > > > on. > > > > > > = > > > > > > not sure that I completely agree with that: if I am taking my > > > > > > e-mail > > > > > > client, > > > > > > for example - it has a lot of icon columns that precede the pri= mary > > > > > > columns > > > > > > ('From', 'Subject'), however I don't think that it makes the > > > > > > primary > > > > > > columns > > > > > > any less 'catchy' (see attached > > > > > > 'e-mail-client--a-lot-of-preceding-icons.png'). > > > > > > Having said that - it may depend on the actual content of the i= con > > > > > > columns > > > > > > (i.e. in my e-mail example, the icon-columns are mostly empty, > > > > > > whereas > > > > > > in > > > > > > the > > > > > > VMs main tab example, at least the 'status' and 'vm-type' icon > > > > > > columns > > > > > > are > > > > > > expected to always contain some icon), so not sure. > > > > > = > > > > > Einav, I do take your point. That said, I don't think the screens= hot > > > > > you > > > > > sent > > > > > me would be considered a good example of something well designed = - at > > > > > least > > > > > not in terms of the number of columns with icons. Also, it kind of > > > > > works > > > > > because the subject column which is possibly what the user will f= ocus > > > > > on > > > > > is > > > > > the widest. > > > > > = > > > > > > = > > > > > > > I understand that it is not as easy implementation-wise but in > > > > > > > the > > > > > > > effort > > > > > > > to > > > > > > > start moving towards a more elegant solution, I am wondering = if > > > > > > > we > > > > > > > can > > > > > > > cash > > > > > > > in on what users may have learned in spreadsheet software and= use > > > > > > > a > > > > > > > dog > > > > > > > ear > > > > > > > image at the corner of the name cell ( See attached). This wa= y, > > > > > > > we > > > > > > > are > > > > > > > not > > > > > > > dedicating any more space and it does not take away space > > > > > > > allotted > > > > > > > to > > > > > > > the > > > > > > > text string either. The visual details of the icon are not fi= nal > > > > > > > and > > > > > > > this > > > > > > > is > > > > > > > sent to communicate an idea only. If we agree on this, I will > > > > > > > send > > > > > > > the > > > > > > > final > > > > > > > icon to use. > > > > > > = > > > > > > this solution is nice and elegant - I like it; > > > > > > my main concern is that I am not sure how will we be able to so= rt > > > > > > the > > > > > > items > > > > > > by that field if we won't have a dedicated column for it (once > > > > > > column > > > > > > sorting > > > > > > will be available in general, of course). > > > > > = > > > > > That is a good point. I guess the question is if sorting will be > > > > > necessary > > > > > on > > > > > comments since it is available on hover only anyway and I am not = sure > > > > > an > > > > > alphabetical sort would be very useful in finding a particular > > > > > comment. > > > > > In > > > > > general, once we have that feature, it may be worthwhile to consi= der > > > > > what > > > > > columns need sorting and not necessarily have every available col= umn > > > > > in > > > > > the > > > > > list have that ability. What could be useful in this case is to s= ort > > > > > by > > > > > all > > > > > the rows that do have a comment on them and that could potentiall= y be > > > > > incorporated into the sort sequence - for e.g, unsorted, alphanum= eric > > > > > Asc,alphanumeric desc, presence of comment on top, unsorted. > > > > > = > > > > > = > > > > > > my other concern is indeed the implementation effort that would > > > > > > need > > > > > > to > > > > > > be > > > > > > involved in it. > > > > > > = > > > > > > Question is if it is something that is worth considering if we > > > > > > decide > > > > > > that > > > > > > the > > > > > > extra-icon-column solution is acceptable. > > > > > = > > > > > The extra-icon-column solution is not whacky or unacceptable but = it > > > > > creates > > > > > these empty spaces or tiled patterns depending on whether it is > > > > > filled > > > > > or > > > > > not and it also takes up space all the time. > > > > > = > > > > > > = > > > > > > Another option (at least for the short term) for solving the > > > > > > real-estate > > > > > > problem > > > > > > without changing anything in the primary column area is to keep= the > > > > > > 'Comment' > > > > > > column in its current location, only replace its textual title = with > > > > > > an > > > > > > icon > > > > > > title > > > > > > (see attached 'move-comment-column--option-1-variation.png'). > > > > > = > > > > > I was thinking along these lines as well. Maybe if we decide not = to > > > > > implement > > > > > the recommendation I sent earlier, we could move the comment colu= mn > > > > > to > > > > > display after the name column. This way it is not lost at the very > > > > > end > > > > > esp > > > > > because its presence is known only via a small icon. If the comme= nt > > > > > is > > > > > relatively unimportant, then I think it would be reasonable to le= ave > > > > > it > > > > > where it is today. > > > > > = > > > > > > = > > > > > > > = > > > > > > > Thoughts? > > > > > > > = > > > > > > > -Malini > > > > > > > = > > > > > > > ----- Original Message ----- > > > > > > > From: "Einav Cohen" > > > > > > > To: "Daniel Erez" > > > > > > > Cc: "Malini Rao" , "Mike Kolesnik" > > > > > > > , > > > > > > > "engine-devel" > > > > > > > Sent: Tuesday, November 26, 2013 11:44:49 AM > > > > > > > Subject: Re: [Engine-devel] Remove Comment column in main tabs > > > > > > > = > > > > > > > > ----- Original Message ----- > > > > > > > > From: "Daniel Erez" > > > > > > > > Sent: Tuesday, November 26, 2013 11:24:30 AM > > > > > > > > = > > > > > > > > = > > > > > > > > = > > > > > > > > ----- Original Message ----- > > > > > > > > > From: "Einav Cohen" > > > > > > > > > To: "Malini Rao" , "Mike Kolesnik" > > > > > > > > > > > > > > > > > > Cc: "engine-devel" > > > > > > > > > Sent: Tuesday, November 26, 2013 6:17:18 PM > > > > > > > > > Subject: Re: [Engine-devel] Remove Comment column in main > > > > > > > > > tabs > > > > > > > > > = > > > > > > > > > > ----- Original Message ----- > > > > > > > > > > From: "Malini Rao" > > > > > > > > > > Sent: Tuesday, November 26, 2013 11:06:17 AM > > > > > > > > > > = > > > > > > > > > > = > > > > > > > > > > ----- Original Message ----- > > > > > > > > > > > From: "Eli Mesika" > > > > > > > > > > > To: "Mike Kolesnik" > > > > > > > > > > > Cc: "engine-devel" > > > > > > > > > > > Sent: Tuesday, November 26, 2013 4:05:37 AM > > > > > > > > > > > Subject: Re: [Engine-devel] Remove Comment column in = main > > > > > > > > > > > tabs > > > > > > > > > > > = > > > > > > > > > > > = > > > > > > > > > > > = > > > > > > > > > > > ----- Original Message ----- > > > > > > > > > > > > From: "Mike Kolesnik" > > > > > > > > > > > > To: "engine-devel" > > > > > > > > > > > > Sent: Tuesday, November 26, 2013 8:44:34 AM > > > > > > > > > > > > Subject: [Engine-devel] Remove Comment column in ma= in > > > > > > > > > > > > tabs > > > > > > > > > > > > = > > > > > > > > > > > > Hi, > > > > > > > > > > > > = > > > > > > > > > > > > When the comment RFE was added (in 3.3), there was = also > > > > > > > > > > > > a > > > > > > > > > > > > column > > > > > > > > > > > > added > > > > > > > > > > > > to > > > > > > > > > > > > many main tabs. > > > > > > > > > > > > = > > > > > > > > > > > > I would like to propose to get rid of the column (w= hich > > > > > > > > > > > > can > > > > > > > > > > > > only > > > > > > > > > > > > house > > > > > > > > > > > > one > > > > > > > > > > > > icon or no icon), > > > > > > > > > > > > and instead if there's a comment on an entity just > > > > > > > > > > > > display > > > > > > > > > > > > the > > > > > > > > > > > > icon > > > > > > > > > > > > with > > > > > > > > > > > > the > > > > > > > > > > > > tooltip adjacent to the name. > > > > > > > > > > > > = > > > > > > > > > > > > In this case the icon should probably be scaled dow= n a > > > > > > > > > > > > bit > > > > > > > > > > > > since > > > > > > > > > > > > its > > > > > > > > > > > > huge. > > > > > > > > > > > > = > > > > > > > > > > > > I think this would be a good alternative and save us > > > > > > > > > > > > some > > > > > > > > > > > > valued > > > > > > > > > > > > screen > > > > > > > > > > > > real > > > > > > > > > > > > estate. > > > > > > > > > > > > = > > > > > > > > > > > > Thoughts, opinions? > > > > > > > > > > > = > > > > > > > > > > > +1 > > > > > > > > > > = > > > > > > > > > > +1. But isn't there a limitation on appending an icon t= o a > > > > > > > > > > column > > > > > > > > > > that > > > > > > > > > > already has content? Also to fully consider pros and co= ns - > > > > > > > > > > if > > > > > > > > > > it > > > > > > > > > > is > > > > > > > > > > possible, we have to think of where to append this icon= - > > > > > > > > > > prefix > > > > > > > > > > or > > > > > > > > > > suffix. > > > > > > > > > > If we prefix, then it is likely that some names will be > > > > > > > > > > preceded > > > > > > > > > > by > > > > > > > > > > 2 > > > > > > > > > > icons > > > > > > > > > > because many of our lists have an icon already in the f= irst > > > > > > > > > > column. > > > > > > > > > > If > > > > > > > > > > it > > > > > > > > > > is > > > > > > > > > > suffixed, the relative position on the icon will change > > > > > > > > > > based > > > > > > > > > > on > > > > > > > > > > how > > > > > > > > > > long > > > > > > > > > > the name is and if the object names tend to be long, th= en > > > > > > > > > > potentially, > > > > > > > > > > the > > > > > > > > > > icon is taking some room away. > > > > > > > > > = > > > > > > > > > see attached two options (both comparing the current state > > > > > > > > > and > > > > > > > > > a > > > > > > > > > suggested > > > > > > > > > state in the VMs main tab) - not sure which one Mike had = in > > > > > > > > > mind. > > > > > > > > > option #1 is easy to implement while option #2, as Malini > > > > > > > > > mentioned, > > > > > > > > > may > > > > > > > > > be more difficult to implement. > > > > > > > > > also need to keep in mind that the today, the comment col= umn > > > > > > > > > real-estate > > > > > > > > > is > > > > > > > > > taken mostly by the column title; therefore if we lose the > > > > > > > > > title, > > > > > > > > > we > > > > > > > > > should > > > > > > > > > indicate in some other manner that this is the comment fi= eld > > > > > > > > > of > > > > > > > > > the > > > > > > > > > object > > > > > > > > > (e.g. within the tooltip - also demonstrated in the > > > > > > > > > attached). > > > > > > > > = > > > > > > > > +1 > > > > > > > > I think that an image header might be a good solution. > > > > > > > > E.g. an image of a post-it note instead of the title. > > > > > > > = > > > > > > > good idea - we can display a "comment" tool-tip when hovering= on > > > > > > > the > > > > > > > title-icon > > > > > > > and, like today, display only the comment value within the > > > > > > > tool-tip > > > > > > > when > > > > > > > hovering > > > > > > > on the regular-row-icon (see attached). > > > > > > > [we already have icon-column-titles in the application, e.g. > > > > > > > "shareable", > > > > > > > "bootable" > > > > > > > in the Disks grid, so it shouldn't be hard to implement] > > > > > > > = > > > > > > > > = > > > > > > > > > = > > > > > > > > > > = > > > > > > > > > > Also worth considering is the fact that if we prefix the > > > > > > > > > > icon > > > > > > > > > > only > > > > > > > > > > on > > > > > > > > > > the > > > > > > > > > > rows where it is needed, it will be in a position that = will > > > > > > > > > > definitely > > > > > > > > > > grab > > > > > > > > > > attention. So, it may be worthwhile to see if this is t= he > > > > > > > > > > icon > > > > > > > > > > that > > > > > > > > > > we > > > > > > > > > > should place here or if there is any other icon that > > > > > > > > > > deserves > > > > > > > > > > this > > > > > > > > > > attention > > > > > > > > > > in a consistent manner across entities. > > > > > > > > > > = > > > > > > > > > > While on the topic, it will also be a great idea IMHO to > > > > > > > > > > take > > > > > > > > > > a > > > > > > > > > > look > > > > > > > > > > at > > > > > > > > > > our > > > > > > > > > > various lists and see what columns are actually valuable > > > > > > > > > > for > > > > > > > > > > a > > > > > > > > > > default > > > > > > > > > > display. I think we are working on adding the ability to > > > > > > > > > > select > > > > > > > > > > columns > > > > > > > > > > for > > > > > > > > > > display and so the columns that we remove can be added = back > > > > > > > > > > in > > > > > > > > > > by > > > > > > > > > > users > > > > > > > > > > when > > > > > > > > > > they want but do not sit there taking up room permanent= ly. > > > > > > > > > > If > > > > > > > > > > anyone > > > > > > > > > > has > > > > > > > > > > ideas on what the default columns should be for one or = many > > > > > > > > > > of > > > > > > > > > > the > > > > > > > > > > lists > > > > > > > > > > in > > > > > > > > > > our product, do send it to me. I will be willing to com= pile > > > > > > > > > > and > > > > > > > > > > consolidate > > > > > > > > > > the list and then post it back to the group for > > > > > > > > > > consideration. > > > > > > > > > > = > > > > > > > > > > = > > > > > > > > > > = > > > > > > > > > > > = > > > > > > > > > > > > = > > > > > > > > > > > > Regards, > > > > > > > > > > > > Mike > > > > > > > > > > > > = > > > > > > > > > > > > = > > > > > > > > > > > > _______________________________________________ > > > > > > > > > > > > Engine-devel mailing list > > > > > > > > > > > > Engine-devel(a)ovirt.org > > > > > > > > > > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > > > > > > > > > > = > > > > > > > > > > > _______________________________________________ > > > > > > > > > > > Engine-devel mailing list > > > > > > > > > > > Engine-devel(a)ovirt.org > > > > > > > > > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > > > > > > > > > = > > > > > > > > > > _______________________________________________ > > > > > > > > > > Engine-devel mailing list > > > > > > > > > > Engine-devel(a)ovirt.org > > > > > > > > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > > > > > > > > = > > > > > > > > > = > > > > > > > > > _______________________________________________ > > > > > > > > > Engine-devel mailing list > > > > > > > > > Engine-devel(a)ovirt.org > > > > > > > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > > > > > > > = > > > > > > > > = > > > > > > > = > > > > > > > _______________________________________________ > > > > > > > Engine-devel mailing list > > > > > > > Engine-devel(a)ovirt.org > > > > > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > > > > > > > > > > _______________________________________________ > > > > > Engine-devel mailing list > > > > > Engine-devel(a)ovirt.org > > > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > > > = > > > > > = > > > > > = > > > > = > > > _______________________________________________ > > > Engine-devel mailing list > > > Engine-devel(a)ovirt.org > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > = > > > = > > > = > > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel > = > = >=20 --===============1224579837447997628==-- From ecohen at redhat.com Mon Dec 2 13:37:57 2013 Content-Type: multipart/mixed; boundary="===============2742216349888707657==" MIME-Version: 1.0 From: Einav Cohen To: devel at ovirt.org Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt Date: Mon, 02 Dec 2013 13:37:57 -0500 Message-ID: <1960288549.21771993.1386009477305.JavaMail.root@redhat.com> In-Reply-To: 1561192373.43408976.1385974076894.JavaMail.root@redhat.com --===============2742216349888707657== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable we should definitely not completely remove the possibility to add permissio= n-less users to the system, = due to possible use-cases as Gilad mentioned and/or simply to allow the fle= xibility of adding the user = first, and only then adding the relevant (business entity and) permissions,= should the admin choose to = do so. = the more correct location to add system permissions to a user would probabl= y be a 'Add System Permission' = dialog that will be available from the Permissions sub-tab of the Users mai= n tab, however it won't allow = to assign system permissions to several users at once, so I understand the = need for this ability within = the 'Add User(s)' dialog. = I think that adding an "allow user to login" check-box would not be good en= ough, since once a user = would be able to login, he won't be able to do (or even see) anything (well= , other than the 'Blank' = Template, maybe), so the admin would need to assign additional permissions = to this user anyway. = The minimal solution in my view is to add a "assign these users the followi= ng system permissions" = check-box, with a Roles drop down; as Gilad mentioned - need to be very car= eful with that, as = system-wide permissions are powerful. = A more comprehensive solution (more complex for implementation) would proba= bly be, as Oved mentioned, = some sort of a user-adding-wizard, that will allow easy permissions-assignm= ent (maybe even not only = system-wide permissions) to the newly-added users. = ---- Thanks, Einav ----- Original Message ----- > From: "Gilad Chaplik" > To: "Oved Ourfalli" > Cc: engine-devel(a)ovirt.org > Sent: Monday, December 2, 2013 3:47:56 AM > Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt > = > Hi Ramesh, > = > You're right, I also think that the 'add users' is a bit pointless, but > adding a system permission in that dialog can be dangerous (if admin does= n't > fully understand what he's doing, and MLA is complicated enough ;-) ). > = > Currently when adding a permission we can specify a AD-user (regardless to > the fact he's added or not), So eventually power users can add users to t= he > system. > I can think of a case, that admins will want to manage the users by > themselves, i.e- power users can add permissions for the added users only. > this way this dialog can be useful. > = > Thanks, > Gilad. > = > ----- Original Message ----- > > From: "Oved Ourfalli" > > To: "Ramesh" > > Cc: engine-devel(a)ovirt.org > > Sent: Monday, December 2, 2013 9:01:52 AM > > Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt > > = > > Your E-mail made me look a bit and check the different flows. > > = > > I think the only use-case for adding users without giving any permissio= ns > > is > > when you add a user for notification reasons. > > You can add a user, and then in the Event Notifier sub-tab define what > > events > > he will get via E-mail. > > afaik (and I'm not an event notifier expert), this user doesn't have to= be > > able to login, or to have permissions of any kind. He just gets events. > > = > > Other than that you're right. A user which is added to the system can't= do > > much without assigning him roles. > > I think adding roles assignment to this dialog may be a bit cumbersome. > > Perhaps some wizard is required in that case. Or at least some checkbox > > saying "allow user to login". That way the new user will be able to log= in, > > and he will have some default permissions as well (permissions granted = to > > Everyone). > > = > > Let's see what others think. > > = > > Regards, > > Oved > > = > > = > > ----- Original Message ----- > > > From: "Ramesh" > > > To: engine-devel(a)ovirt.org > > > Sent: Monday, December 2, 2013 7:22:53 AM > > > Subject: [Engine-devel] Adding users and assigning roles in Ovirt > > > = > > > Hi All, > > > = > > > We have 'Add' action under 'Users' main tab to add users in Ovirt . > > > It looks slightly different from the "Add user" option of the Configu= re > > > option. Actually, this one is missing the "Role to Assign" option. I > > > think without assigning any role, adding a user is not meaningful and= it > > > didn't complete the flow. > > > = > > > Currently to assign any role to the user, either we have to use > > > 'Configure' option ( to add system permission) or we have to go to the > > > specific entity and add permission for that entity. It will be nice if > > > we can assign roles( system level permissions) while adding users in > > > 'Users' tab itself. It will be a clear user flow where one can add us= er > > > and assign role in the same place. > > > = > > > I have attached both the screen shots. > > > = > > > please share your thoughts. > > > = > > > Regards, > > > Ramesh > > > = > > > = > > > _______________________________________________ > > > Engine-devel mailing list > > > Engine-devel(a)ovirt.org > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > = > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============2742216349888707657==-- From mrao at redhat.com Mon Dec 2 14:20:12 2013 Content-Type: multipart/mixed; boundary="===============3126438346545327181==" MIME-Version: 1.0 From: Malini Rao To: devel at ovirt.org Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt Date: Mon, 02 Dec 2013 14:20:06 -0500 Message-ID: <423545477.33455738.1386012006240.JavaMail.root@redhat.com> In-Reply-To: 1960288549.21771993.1386009477305.JavaMail.root@redhat.com --===============3126438346545327181== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Joining in the thread a bit green but wouldn't it be ok to add the new user= with the most basic permissions by default ( may be just read only permiss= ions)until the admin goes and deliberately tweaks permissions or assigns a = role? = Also, if we add that roles drop down as Einav mentioned, isn't there a way = to only show that drop down if the logged in user is an admin role? +1 on the user adding wizard. I think in general connecting related task fl= ows together will improve the overall UX too. Thanks Malini ----- Original Message ----- From: "Einav Cohen" To: "Gilad Chaplik" , "Ramesh" , "Oved Ourfalli" Cc: engine-devel(a)ovirt.org Sent: Monday, December 2, 2013 1:37:57 PM Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt we should definitely not completely remove the possibility to add permissio= n-less users to the system, = due to possible use-cases as Gilad mentioned and/or simply to allow the fle= xibility of adding the user = first, and only then adding the relevant (business entity and) permissions,= should the admin choose to = do so. = the more correct location to add system permissions to a user would probabl= y be a 'Add System Permission' = dialog that will be available from the Permissions sub-tab of the Users mai= n tab, however it won't allow = to assign system permissions to several users at once, so I understand the = need for this ability within = the 'Add User(s)' dialog. = I think that adding an "allow user to login" check-box would not be good en= ough, since once a user = would be able to login, he won't be able to do (or even see) anything (well= , other than the 'Blank' = Template, maybe), so the admin would need to assign additional permissions = to this user anyway. = The minimal solution in my view is to add a "assign these users the followi= ng system permissions" = check-box, with a Roles drop down; as Gilad mentioned - need to be very car= eful with that, as = system-wide permissions are powerful. = A more comprehensive solution (more complex for implementation) would proba= bly be, as Oved mentioned, = some sort of a user-adding-wizard, that will allow easy permissions-assignm= ent (maybe even not only = system-wide permissions) to the newly-added users. = ---- Thanks, Einav ----- Original Message ----- > From: "Gilad Chaplik" > To: "Oved Ourfalli" > Cc: engine-devel(a)ovirt.org > Sent: Monday, December 2, 2013 3:47:56 AM > Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt > = > Hi Ramesh, > = > You're right, I also think that the 'add users' is a bit pointless, but > adding a system permission in that dialog can be dangerous (if admin does= n't > fully understand what he's doing, and MLA is complicated enough ;-) ). > = > Currently when adding a permission we can specify a AD-user (regardless to > the fact he's added or not), So eventually power users can add users to t= he > system. > I can think of a case, that admins will want to manage the users by > themselves, i.e- power users can add permissions for the added users only. > this way this dialog can be useful. > = > Thanks, > Gilad. > = > ----- Original Message ----- > > From: "Oved Ourfalli" > > To: "Ramesh" > > Cc: engine-devel(a)ovirt.org > > Sent: Monday, December 2, 2013 9:01:52 AM > > Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt > > = > > Your E-mail made me look a bit and check the different flows. > > = > > I think the only use-case for adding users without giving any permissio= ns > > is > > when you add a user for notification reasons. > > You can add a user, and then in the Event Notifier sub-tab define what > > events > > he will get via E-mail. > > afaik (and I'm not an event notifier expert), this user doesn't have to= be > > able to login, or to have permissions of any kind. He just gets events. > > = > > Other than that you're right. A user which is added to the system can't= do > > much without assigning him roles. > > I think adding roles assignment to this dialog may be a bit cumbersome. > > Perhaps some wizard is required in that case. Or at least some checkbox > > saying "allow user to login". That way the new user will be able to log= in, > > and he will have some default permissions as well (permissions granted = to > > Everyone). > > = > > Let's see what others think. > > = > > Regards, > > Oved > > = > > = > > ----- Original Message ----- > > > From: "Ramesh" > > > To: engine-devel(a)ovirt.org > > > Sent: Monday, December 2, 2013 7:22:53 AM > > > Subject: [Engine-devel] Adding users and assigning roles in Ovirt > > > = > > > Hi All, > > > = > > > We have 'Add' action under 'Users' main tab to add users in Ovirt . > > > It looks slightly different from the "Add user" option of the Configu= re > > > option. Actually, this one is missing the "Role to Assign" option. I > > > think without assigning any role, adding a user is not meaningful and= it > > > didn't complete the flow. > > > = > > > Currently to assign any role to the user, either we have to use > > > 'Configure' option ( to add system permission) or we have to go to the > > > specific entity and add permission for that entity. It will be nice if > > > we can assign roles( system level permissions) while adding users in > > > 'Users' tab itself. It will be a clear user flow where one can add us= er > > > and assign role in the same place. > > > = > > > I have attached both the screen shots. > > > = > > > please share your thoughts. > > > = > > > Regards, > > > Ramesh > > > = > > > = > > > _______________________________________________ > > > Engine-devel mailing list > > > Engine-devel(a)ovirt.org > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > = > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel > = _______________________________________________ Engine-devel mailing list Engine-devel(a)ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel --===============3126438346545327181==-- From ecohen at redhat.com Mon Dec 2 14:55:46 2013 Content-Type: multipart/mixed; boundary="===============0214664294744318496==" MIME-Version: 1.0 From: Einav Cohen To: devel at ovirt.org Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt Date: Mon, 02 Dec 2013 14:55:45 -0500 Message-ID: <652830843.21821507.1386014145780.JavaMail.root@redhat.com> In-Reply-To: 423545477.33455738.1386012006240.JavaMail.root@redhat.com --===============0214664294744318496== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable > ----- Original Message ----- > From: "Malini Rao" > Sent: Monday, December 2, 2013 2:20:06 PM > = > Joining in the thread a bit green but wouldn't it be ok to add the new us= er > with the most basic permissions by default ( may be just read only > permissions)until the admin goes and deliberately tweaks permissions or > assigns a role? this is similar to what Oved has suggested, but I think that it won't reall= y = make any difference, since there is very little chance, in my view, that th= ese = permissions would be sufficient for anything - the admin would need to assi= gn = additional/different permissions at some point anyway, so not much point in = allowing that default minimal assignment in the first place - we might as w= ell = keep the 'Add User(s)' dialog as is. = > = > Also, if we add that roles drop down as Einav mentioned, isn't there a wa= y to > only show that drop down if the logged in user is an admin role? the logged in user must be an admin, as the 'Add User(s)' dialog (which is = available from the Users main tab) exists only in the web-admin, which is = accessible only to admins by definition. = > = > +1 on the user adding wizard. I think in general connecting related task > flows together will improve the overall UX too. = agreed. = > = > Thanks > Malini > = > ----- Original Message ----- > From: "Einav Cohen" > To: "Gilad Chaplik" , "Ramesh" , > "Oved Ourfalli" > Cc: engine-devel(a)ovirt.org > Sent: Monday, December 2, 2013 1:37:57 PM > Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt > = > we should definitely not completely remove the possibility to add > permission-less users to the system, > due to possible use-cases as Gilad mentioned and/or simply to allow the > flexibility of adding the user > first, and only then adding the relevant (business entity and) permission= s, > should the admin choose to > do so. > = > the more correct location to add system permissions to a user would proba= bly > be a 'Add System Permission' > dialog that will be available from the Permissions sub-tab of the Users m= ain > tab, however it won't allow > to assign system permissions to several users at once, so I understand the > need for this ability within > the 'Add User(s)' dialog. > = > I think that adding an "allow user to login" check-box would not be good > enough, since once a user > would be able to login, he won't be able to do (or even see) anything (we= ll, > other than the 'Blank' > Template, maybe), so the admin would need to assign additional permission= s to > this user anyway. > The minimal solution in my view is to add a "assign these users the follo= wing > system permissions" > check-box, with a Roles drop down; as Gilad mentioned - need to be very > careful with that, as > system-wide permissions are powerful. > A more comprehensive solution (more complex for implementation) would > probably be, as Oved mentioned, > some sort of a user-adding-wizard, that will allow easy > permissions-assignment (maybe even not only > system-wide permissions) to the newly-added users. > = > ---- > Thanks, > Einav > = > ----- Original Message ----- > > From: "Gilad Chaplik" > > To: "Oved Ourfalli" > > Cc: engine-devel(a)ovirt.org > > Sent: Monday, December 2, 2013 3:47:56 AM > > Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt > > = > > Hi Ramesh, > > = > > You're right, I also think that the 'add users' is a bit pointless, but > > adding a system permission in that dialog can be dangerous (if admin > > doesn't > > fully understand what he's doing, and MLA is complicated enough ;-) ). > > = > > Currently when adding a permission we can specify a AD-user (regardless= to > > the fact he's added or not), So eventually power users can add users to= the > > system. > > I can think of a case, that admins will want to manage the users by > > themselves, i.e- power users can add permissions for the added users on= ly. > > this way this dialog can be useful. > > = > > Thanks, > > Gilad. > > = > > ----- Original Message ----- > > > From: "Oved Ourfalli" > > > To: "Ramesh" > > > Cc: engine-devel(a)ovirt.org > > > Sent: Monday, December 2, 2013 9:01:52 AM > > > Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt > > > = > > > Your E-mail made me look a bit and check the different flows. > > > = > > > I think the only use-case for adding users without giving any permiss= ions > > > is > > > when you add a user for notification reasons. > > > You can add a user, and then in the Event Notifier sub-tab define what > > > events > > > he will get via E-mail. > > > afaik (and I'm not an event notifier expert), this user doesn't have = to > > > be > > > able to login, or to have permissions of any kind. He just gets event= s. > > > = > > > Other than that you're right. A user which is added to the system can= 't > > > do > > > much without assigning him roles. > > > I think adding roles assignment to this dialog may be a bit cumbersom= e. > > > Perhaps some wizard is required in that case. Or at least some checkb= ox > > > saying "allow user to login". That way the new user will be able to > > > login, > > > and he will have some default permissions as well (permissions grante= d to > > > Everyone). > > > = > > > Let's see what others think. > > > = > > > Regards, > > > Oved > > > = > > > = > > > ----- Original Message ----- > > > > From: "Ramesh" > > > > To: engine-devel(a)ovirt.org > > > > Sent: Monday, December 2, 2013 7:22:53 AM > > > > Subject: [Engine-devel] Adding users and assigning roles in Ovirt > > > > = > > > > Hi All, > > > > = > > > > We have 'Add' action under 'Users' main tab to add users in Ovir= t . > > > > It looks slightly different from the "Add user" option of the Confi= gure > > > > option. Actually, this one is missing the "Role to Assign" option. I > > > > think without assigning any role, adding a user is not meaningful a= nd > > > > it > > > > didn't complete the flow. > > > > = > > > > Currently to assign any role to the user, either we have to use > > > > 'Configure' option ( to add system permission) or we have to go to = the > > > > specific entity and add permission for that entity. It will be nice= if > > > > we can assign roles( system level permissions) while adding users in > > > > 'Users' tab itself. It will be a clear user flow where one can add = user > > > > and assign role in the same place. > > > > = > > > > I have attached both the screen shots. > > > > = > > > > please share your thoughts. > > > > = > > > > Regards, > > > > Ramesh > > > > = > > > > = > > > > _______________________________________________ > > > > Engine-devel mailing list > > > > Engine-devel(a)ovirt.org > > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > > = > > > _______________________________________________ > > > Engine-devel mailing list > > > Engine-devel(a)ovirt.org > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > = > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel > = > = >=20 --===============0214664294744318496==-- From yzaslavs at redhat.com Mon Dec 2 16:09:11 2013 Content-Type: multipart/mixed; boundary="===============9094638827598945085==" MIME-Version: 1.0 From: Yair Zaslavsky To: devel at ovirt.org Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt Date: Mon, 02 Dec 2013 16:09:10 -0500 Message-ID: <83819078.10898841.1386018550425.JavaMail.root@redhat.com> In-Reply-To: 652830843.21821507.1386014145780.JavaMail.root@redhat.com --===============9094638827598945085== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Einav Cohen" > To: "Malini Rao" > Cc: "Oved Ourfalli" , engine-devel(a)ovirt.org > Sent: Monday, December 2, 2013 9:55:45 PM > Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt > = > > ----- Original Message ----- > > From: "Malini Rao" > > Sent: Monday, December 2, 2013 2:20:06 PM > > = > > Joining in the thread a bit green but wouldn't it be ok to add the new = user > > with the most basic permissions by default ( may be just read only > > permissions)until the admin goes and deliberately tweaks permissions or > > assigns a role? > = > this is similar to what Oved has suggested, but I think that it won't rea= lly > make any difference, since there is very little chance, in my view, that > these > permissions would be sufficient for anything - the admin would need to as= sign > additional/different permissions at some point anyway, so not much point = in > allowing that default minimal assignment in the first place - we might as > well > keep the 'Add User(s)' dialog as is. > = > > = > > Also, if we add that roles drop down as Einav mentioned, isn't there a = way > > to > > only show that drop down if the logged in user is an admin role? > = > the logged in user must be an admin, as the 'Add User(s)' dialog (which is > available from the Users main tab) exists only in the web-admin, which is > accessible only to admins by definition. > = > > = > > +1 on the user adding wizard. I think in general connecting related task > > flows together will improve the overall UX too. +1 here > = > agreed. > = > > = > > Thanks > > Malini > > = > > ----- Original Message ----- > > From: "Einav Cohen" > > To: "Gilad Chaplik" , "Ramesh" , > > "Oved Ourfalli" > > Cc: engine-devel(a)ovirt.org > > Sent: Monday, December 2, 2013 1:37:57 PM > > Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt > > = > > we should definitely not completely remove the possibility to add > > permission-less users to the system, > > due to possible use-cases as Gilad mentioned and/or simply to allow the > > flexibility of adding the user > > first, and only then adding the relevant (business entity and) permissi= ons, > > should the admin choose to > > do so. > > = > > the more correct location to add system permissions to a user would > > probably > > be a 'Add System Permission' > > dialog that will be available from the Permissions sub-tab of the Users > > main > > tab, however it won't allow > > to assign system permissions to several users at once, so I understand = the > > need for this ability within > > the 'Add User(s)' dialog. > > = > > I think that adding an "allow user to login" check-box would not be good > > enough, since once a user > > would be able to login, he won't be able to do (or even see) anything > > (well, > > other than the 'Blank' > > Template, maybe), so the admin would need to assign additional permissi= ons > > to > > this user anyway. > > The minimal solution in my view is to add a "assign these users the > > following > > system permissions" > > check-box, with a Roles drop down; as Gilad mentioned - need to be very > > careful with that, as > > system-wide permissions are powerful. > > A more comprehensive solution (more complex for implementation) would > > probably be, as Oved mentioned, > > some sort of a user-adding-wizard, that will allow easy > > permissions-assignment (maybe even not only > > system-wide permissions) to the newly-added users. > > = > > ---- > > Thanks, > > Einav > > = > > ----- Original Message ----- > > > From: "Gilad Chaplik" > > > To: "Oved Ourfalli" > > > Cc: engine-devel(a)ovirt.org > > > Sent: Monday, December 2, 2013 3:47:56 AM > > > Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt > > > = > > > Hi Ramesh, > > > = > > > You're right, I also think that the 'add users' is a bit pointless, b= ut > > > adding a system permission in that dialog can be dangerous (if admin > > > doesn't > > > fully understand what he's doing, and MLA is complicated enough ;-) ). > > > = > > > Currently when adding a permission we can specify a AD-user (regardle= ss > > > to > > > the fact he's added or not), So eventually power users can add users = to > > > the > > > system. > > > I can think of a case, that admins will want to manage the users by > > > themselves, i.e- power users can add permissions for the added users > > > only. > > > this way this dialog can be useful. > > > = > > > Thanks, > > > Gilad. > > > = > > > ----- Original Message ----- > > > > From: "Oved Ourfalli" > > > > To: "Ramesh" > > > > Cc: engine-devel(a)ovirt.org > > > > Sent: Monday, December 2, 2013 9:01:52 AM > > > > Subject: Re: [Engine-devel] Adding users and assigning roles in Ovi= rt > > > > = > > > > Your E-mail made me look a bit and check the different flows. > > > > = > > > > I think the only use-case for adding users without giving any > > > > permissions > > > > is > > > > when you add a user for notification reasons. > > > > You can add a user, and then in the Event Notifier sub-tab define w= hat > > > > events > > > > he will get via E-mail. > > > > afaik (and I'm not an event notifier expert), this user doesn't hav= e to > > > > be > > > > able to login, or to have permissions of any kind. He just gets eve= nts. +1 - this is due to the fact a user has an email account - no need to login= to ovirt-engine in order to read your emails :) > > > > = > > > > Other than that you're right. A user which is added to the system c= an't > > > > do > > > > much without assigning him roles. > > > > I think adding roles assignment to this dialog may be a bit cumbers= ome. > > > > Perhaps some wizard is required in that case. Or at least some chec= kbox > > > > saying "allow user to login". That way the new user will be able to > > > > login, > > > > and he will have some default permissions as well (permissions gran= ted > > > > to > > > > Everyone). > > > > = > > > > Let's see what others think. > > > > = > > > > Regards, > > > > Oved > > > > = > > > > = > > > > ----- Original Message ----- > > > > > From: "Ramesh" > > > > > To: engine-devel(a)ovirt.org > > > > > Sent: Monday, December 2, 2013 7:22:53 AM > > > > > Subject: [Engine-devel] Adding users and assigning roles in Ovirt > > > > > = > > > > > Hi All, > > > > > = > > > > > We have 'Add' action under 'Users' main tab to add users in Ov= irt > > > > > . > > > > > It looks slightly different from the "Add user" option of the > > > > > Configure > > > > > option. Actually, this one is missing the "Role to Assign" option= . I > > > > > think without assigning any role, adding a user is not meaningful= and > > > > > it > > > > > didn't complete the flow. > > > > > = > > > > > Currently to assign any role to the user, either we have to use > > > > > 'Configure' option ( to add system permission) or we have to go to > > > > > the > > > > > specific entity and add permission for that entity. It will be ni= ce > > > > > if > > > > > we can assign roles( system level permissions) while adding users= in > > > > > 'Users' tab itself. It will be a clear user flow where one can add > > > > > user > > > > > and assign role in the same place. > > > > > = > > > > > I have attached both the screen shots. > > > > > = > > > > > please share your thoughts. > > > > > = > > > > > Regards, > > > > > Ramesh > > > > > = > > > > > = > > > > > _______________________________________________ > > > > > Engine-devel mailing list > > > > > Engine-devel(a)ovirt.org > > > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > > > = > > > > _______________________________________________ > > > > Engine-devel mailing list > > > > Engine-devel(a)ovirt.org > > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > > = > > > _______________________________________________ > > > Engine-devel mailing list > > > Engine-devel(a)ovirt.org > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > = > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > = > > = > > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============9094638827598945085==-- From sbonazzo at redhat.com Tue Dec 3 02:09:07 2013 Content-Type: multipart/mixed; boundary="===============6709526112437335928==" MIME-Version: 1.0 From: Sandro Bonazzola To: devel at ovirt.org Subject: [Engine-devel] oVirt 3.3.2 Beta now available Date: Tue, 03 Dec 2013 08:09:04 +0100 Message-ID: <529D8390.30200@redhat.com> --===============6709526112437335928== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable The oVirt team is pleased to announce that the 3.3.2 Release is now availab= le in beta. Release notes and information on the changes for this update are still bein= g worked on and will be available soon on the wiki[1]. A new oVirt Node build will be available soon as well. You're welcome to join us testing [2] this beta release. [1] http://www.ovirt.org/OVirt_3.3.2_release_notes [2] http://www.ovirt.org/Testing/Ovirt_3.3.2_testing -- = Sandro Bonazzola Better technology. Faster innovation. Powered by community collaboration. See how it works at redhat.com --===============6709526112437335928==-- From mpastern at redhat.com Tue Dec 3 06:45:27 2013 Content-Type: multipart/mixed; boundary="===============0514023060937221962==" MIME-Version: 1.0 From: Michael Pasternak To: devel at ovirt.org Subject: Re: [Engine-devel] Using REST API in web UI - review call summary Date: Tue, 03 Dec 2013 13:45:35 +0200 Message-ID: <529DC45F.5090007@redhat.com> In-Reply-To: 305092398.32429154.1385667456789.JavaMail.root@redhat.com --===============0514023060937221962== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 11/28/2013 09:37 PM, Vojtech Szocs wrote: > = > = > ----- Original Message ----- >> From: "Michael Pasternak" >> To: "Itamar Heim" >> Cc: "Vojtech Szocs" , "engine-devel" , "Einav Cohen" >> Sent: Sunday, November 24, 2013 9:37:22 AM >> Subject: Re: Using REST API in web UI - review call summary >> >> On 11/22/2013 12:00 AM, Itamar Heim wrote: >>> On 11/21/2013 11:56 PM, Vojtech Szocs wrote: >>>> >>>> >>>> ----- Original Message ----- >>>>> From: "Itamar Heim" >>>>> To: "Vojtech Szocs" , "engine-devel" >>>>> >>>>> Cc: "Einav Cohen" >>>>> Sent: Thursday, November 21, 2013 10:25:04 PM >>>>> Subject: Re: Using REST API in web UI - review call summary >>>>> >>>>> On 11/21/2013 11:18 PM, Vojtech Szocs wrote: >>>>>> Hi guys, >>>>>> >>>>>> this is a summary of yesterday's review call, I'll try to highlight >>>>>> important Q/A and things we agreed on. Feel free to add anything in = case >>>>>> I've missed something. >>>>>> >>>>>> -- >>>>>> >>>>>> Q: Why don't we simply try to use existing Java SDK and adapt it for= GWT >>>>>> apps? (asked by Michael & Gilad) >>>>>> >>>>>> A: This might be a viable option to consider if we wanted to skip >>>>>> JavaScript-based SDK altogether and target Java/GWT code directly; we >>>>>> could simply take Java SDK and customize its abstractions where >>>>>> necessary, >>>>>> i.e. using HTTP transport layer implementation that works with GWT. = In >>>>>> any >>>>>> case, this would mean coupling ourselves to Java SDK (which has its = own >>>>>> release cycle) and I think this would complicate things for us. >>>>>> >>>>>> As proposed on the meeting, I think it's best to aim for JavaScript = SDK >>>>>> as >>>>>> the lowest common denominator for *any* web application that wants to >>>>>> work >>>>>> with REST API. oVirt GWT-based UI can simply bind to JavaScript SDK, >>>>>> i.e. >>>>>> Java/GWT code that just overlays objects and functions provided by >>>>>> JavaScript SDK. Another reason is ease of maintenance - I'd rather s= ee >>>>>> JavaScript SDK's code generation process to be independent of any ot= her >>>>>> SDK (people responsible for maintaining JavaScript SDK should have f= ull >>>>>> control over generated code). >>>>>> >>>>>> -- >>>>>> >>>>>> Q: What about functionality currently used by oVirt UI but not suppo= rted >>>>>> by >>>>>> REST API? (asked by Einav) >>>>>> [For example, fetching VM entity over GWT RPC also returns rela= ted >>>>>> data >>>>>> such as Cluster name.] >>>>>> >>>>>> A: Based on discussion I've had with other colleagues after yesterda= y's >>>>>> review call, I don't think that separate support-like backend layer = is a >>>>>> good idea. Instead, this is the kind of functionality that could be >>>>>> placed >>>>>> in oVirt.js library. Logical operations like "get VMs and related da= ta" >>>>>> would be exposed through oVirt.js (callback-based) API and ultimately >>>>>> realized as multiple physical requests to REST API via JavaScript >>>>>> Binding. >>>>>> >>>>>> oVirt.js client would be completely oblivious to the fact that multi= ple >>>>>> physical requests are dispatched. In fact, since HTTP communication = is >>>>>> asynchronous in nature, oVirt.js client wouldn't even notice any >>>>>> difference in terms of API consumption. This assumes JavaScript SDK >>>>>> would >>>>>> use callback-based (non-blocking) API instead of blocking one - after >>>>>> all, >>>>>> blocking API on top of non-blocking implementation sounds pretty much >>>>>> like >>>>>> leaky abstraction [1]. >>>>>> >>>>>> For example: >>>>>> >>>>>> sdk.getVmsWithExtraData( >>>>>> callbackToGetExtraDataForGivenVm, // might cause extra >>>>>> physical >>>>>> requests to REST API >>>>>> callbackFiredWhenAllDataIsReady // update client only wh= en >>>>>> all >>>>>> data is ready >>>>>> ) >>>>> >>>>> would this also resolve RunMultipleActions? >>>> >>>> Yes, I think so. There could be API to pass multiple "actions" and get >>>> notified when they complete. >>>> >>>>> sounds like no reason to have RunMultipleQueries, although i'm still >>>>> sure a single call to engine for multiple keys would be much more >>>>> efficient than multiple async calls? >>>>> (I understand we may not be able to model this). >>>> >>>> Efficiency-wise, yes, single call to get all data seems optimal. API-w= ise, >>>> I don't think it really matters from oVirt.js client perspective. >>>> >>>> We can proceed with simple (possibly inefficient) solution and improve= as >>>> needed. We're making baby steps now.. >>>> >>>>> >>>>>> >>>>>> [1] http://en.wikipedia.org/wiki/Leaky_abstraction >>>>>> >>>>>> -- >>>>>> >>>>>> Last but not least, where to maintain JavaScript SDK projects: low-l= evel >>>>>> JavaScript Binding + high-level oVirt.js library. >>>>>> >>>>>> I agree that conceptually both above mentioned projects should go in= to >>>>>> dedicated "ovirt-engine-sdk-js" git repository and have their own >>>>>> build/release process. However, for now, we're just making baby step= s so >>>>>> let's keep things simple and prototype these projects as part of >>>>>> "ovirt-engine" git repository. >>>>>> >>>>>> ... we can complicate things anytime, but we should know that any >>>>>> complex >>>>>> system that works has inevitably evolved from simple system that wor= ks >>>>>> ... >>>>>> (quote from http://en.wikipedia.org/wiki/Gall%27s_law) >>>>> >>>>> I think the entities should just be generated from the xsd. >>>> >>>> +1 >>>> >>>> The JavaScript Binding (aka low-level SDK) module should follow same >>>> concepts as existing Java SDK - generated entities decorated with >>>> operations to form fluent API. >>>> >>>> Everything Java SDK currently offers should be available in JavaScript >>>> Binding. oVirt.js is our opportunity to build on top of that. >>>> >>>>> for the rsdl, makes sense to start with clean code to see what works >>>>> best, then see about generating it (but you should adhere the rsdl as >>>>> guidlines i guess). >>>> >>>> +1 >>>> >>>> The initial prototype should be written by hand, things will get gener= ated >>>> as soon as we have better idea how the end result should look like. >>> >>> i can understand that for the methods and maybe for populating the enti= ties >>> for the first few. >>> the entities themselves, no point in hand coding - just generated them = from >>> the api.xsd. >>> and once you decide how you want to fill them, not worth hand coding th= is - >>> either json gives this out of the box, or should be generated as well. >>> >>>> >>>>> >>>>> lets try to plan for lightweight entities while at it - the API has a >>>>> mechanism for different level of details - maybe we need a custom lev= el >>>>> where the client specifies which fields they want back or something l= ike >>>>> that. >>>> >>>> Good idea! We should definitely think about the granularity of entitie= s. >>>> >>>> I didn't know REST API supports different level of detail per entity, = is >>>> there some documentation for this feature? >> >> currently it's about adding adding extra information (by supplying header >> [1]), >> this is driven by the properties that require extra query against the en= gine >> to >> fill them, >> >> obviously the default is [2] >> >> [1] All-Content: True >> [2] All-Content: False > = > OK so if I understand correctly, "All-Content: False" (default) just retu= rns data of given entity plus IDs of related entities, whereas "All-Content= : True" returns data of given entity plus (embedded) data of related entiti= es, is that correct? not exactly, "All-Content: True" will return other fields of this entity (not the entity's your resource has relation with, as it was non-RESTful), the differences is in cost of feeling these properties, if it's expensive like running extra query to the engine (like Payload/Certificate/Ballooning= in vm) it's not shown by default. > = >> >>>> >>>> Since JavaScript is dynamic, one possible solution would be to let cli= ent >>>> define the entity structure (i.e. what data client needs) on the fly, >>>> during runtime :) >> >> we talked about this solution couple of years ago, but it was obvious >> that there is no real "demand" for it till UI moves to REST, > = > I assume you mean to let client selectively specify properties of given e= ntity when making REST call, correct? If yes, are you planning to support s= uch feature? obviously this is one of the steps to take down the road to enhance the res= tapi. > = >> >> btw it won't solve the problem where to fill UI entity you need combinat= ion >> of N REST entities, you still will have to perform N + 1 queries to API > = > Of course. But we can make improvements with regard to: > = > - optimizing queries so that client receives/parses only data it needs (s= ee my question above) > - if necessary, combine such optimized queries into bigger "logical" quer= ies (utilizing callback mechanism) not sure about "bigger" (you can't change api interface), but combining few= requests for the same entity (in sake of less verbose communication) in to single GET call, is a well kn= own pattern in distributed systems. > = >> (maybe asking for entity with fewer details), - all it address is a capa= city >> of the data being send. > = > Not only that, capacity of data sent goes proportionally with time needed= to parse & process such data on client. (Imagine big XML marshalling on cl= ient. This is why everyone prefers JSON nowadays, JSON naturally maps to na= tive JavaScript structures with minimal computational overhead.) > = >> >>> >>> michael? >>> >>>> >>>>> >>>>> Good luck, >>>>> Itamar >>>>> >>> >> >> >> -- >> >> Michael Pasternak >> RedHat, ENG-Virtualization R&D >> -- = Michael Pasternak RedHat, ENG-Virtualization R&D --===============0514023060937221962==-- From ecohen at redhat.com Tue Dec 3 15:42:45 2013 Content-Type: multipart/mixed; boundary="===============7880296292321940080==" MIME-Version: 1.0 From: Einav Cohen To: devel at ovirt.org Subject: [Engine-devel] Fwd: Adding users and assigning roles in Ovirt Date: Tue, 03 Dec 2013 15:42:44 -0500 Message-ID: <121876212.22757913.1386103364703.JavaMail.root@redhat.com> In-Reply-To: 83819078.10898841.1386018550425.JavaMail.root@redhat.com --===============7880296292321940080== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable [moving discussion to the users mailing list] while it seems that we all agree that adding some sort of a wizard = that will allow easy permission assignment to newly-added users, it = doesn't seem like something that can be accomplished soon (e.g. for = ovirt 3.4). = maybe we can utilize Ramesh's initial suggestion [1] for the short term - = allow assignment of *System* permissions in the context of the 'Add = User(s)' dialog [with an explicit clarification within the dialog that = we are talking about *System* permissions, so that the admin will be = aware that the privileges that he can assign in this context would be = very permissive] any thoughts? how extensively are system permissions used in oVirt in general? = [if adding a system permission is not a common/popular action, there = is no reason to expose it in the 'Add User(s)' dialog, since it will = probably be hardly used anyway] maybe different ideas for short-term solutions? ---- Thanks, Einav [1] http://lists.ovirt.org/pipermail/engine-devel/2013-December/006059.html ----- Forwarded Message ----- From: "Yair Zaslavsky" To: "Einav Cohen" Cc: "Oved Ourfalli" , engine-devel(a)ovirt.org Sent: Monday, December 2, 2013 4:09:10 PM Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt ----- Original Message ----- > From: "Einav Cohen" > To: "Malini Rao" > Cc: "Oved Ourfalli" , engine-devel(a)ovirt.org > Sent: Monday, December 2, 2013 9:55:45 PM > Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt > = > > ----- Original Message ----- > > From: "Malini Rao" > > Sent: Monday, December 2, 2013 2:20:06 PM > > = > > Joining in the thread a bit green but wouldn't it be ok to add the new = user > > with the most basic permissions by default ( may be just read only > > permissions)until the admin goes and deliberately tweaks permissions or > > assigns a role? > = > this is similar to what Oved has suggested, but I think that it won't rea= lly > make any difference, since there is very little chance, in my view, that > these > permissions would be sufficient for anything - the admin would need to as= sign > additional/different permissions at some point anyway, so not much point = in > allowing that default minimal assignment in the first place - we might as > well > keep the 'Add User(s)' dialog as is. > = > > = > > Also, if we add that roles drop down as Einav mentioned, isn't there a = way > > to > > only show that drop down if the logged in user is an admin role? > = > the logged in user must be an admin, as the 'Add User(s)' dialog (which is > available from the Users main tab) exists only in the web-admin, which is > accessible only to admins by definition. > = > > = > > +1 on the user adding wizard. I think in general connecting related task > > flows together will improve the overall UX too. +1 here > = > agreed. > = > > = > > Thanks > > Malini > > = > > ----- Original Message ----- > > From: "Einav Cohen" > > To: "Gilad Chaplik" , "Ramesh" , > > "Oved Ourfalli" > > Cc: engine-devel(a)ovirt.org > > Sent: Monday, December 2, 2013 1:37:57 PM > > Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt > > = > > we should definitely not completely remove the possibility to add > > permission-less users to the system, > > due to possible use-cases as Gilad mentioned and/or simply to allow the > > flexibility of adding the user > > first, and only then adding the relevant (business entity and) permissi= ons, > > should the admin choose to > > do so. > > = > > the more correct location to add system permissions to a user would > > probably > > be a 'Add System Permission' > > dialog that will be available from the Permissions sub-tab of the Users > > main > > tab, however it won't allow > > to assign system permissions to several users at once, so I understand = the > > need for this ability within > > the 'Add User(s)' dialog. > > = > > I think that adding an "allow user to login" check-box would not be good > > enough, since once a user > > would be able to login, he won't be able to do (or even see) anything > > (well, > > other than the 'Blank' > > Template, maybe), so the admin would need to assign additional permissi= ons > > to > > this user anyway. > > The minimal solution in my view is to add a "assign these users the > > following > > system permissions" > > check-box, with a Roles drop down; as Gilad mentioned - need to be very > > careful with that, as > > system-wide permissions are powerful. > > A more comprehensive solution (more complex for implementation) would > > probably be, as Oved mentioned, > > some sort of a user-adding-wizard, that will allow easy > > permissions-assignment (maybe even not only > > system-wide permissions) to the newly-added users. > > = > > ---- > > Thanks, > > Einav > > = > > ----- Original Message ----- > > > From: "Gilad Chaplik" > > > To: "Oved Ourfalli" > > > Cc: engine-devel(a)ovirt.org > > > Sent: Monday, December 2, 2013 3:47:56 AM > > > Subject: Re: [Engine-devel] Adding users and assigning roles in Ovirt > > > = > > > Hi Ramesh, > > > = > > > You're right, I also think that the 'add users' is a bit pointless, b= ut > > > adding a system permission in that dialog can be dangerous (if admin > > > doesn't > > > fully understand what he's doing, and MLA is complicated enough ;-) ). > > > = > > > Currently when adding a permission we can specify a AD-user (regardle= ss > > > to > > > the fact he's added or not), So eventually power users can add users = to > > > the > > > system. > > > I can think of a case, that admins will want to manage the users by > > > themselves, i.e- power users can add permissions for the added users > > > only. > > > this way this dialog can be useful. > > > = > > > Thanks, > > > Gilad. > > > = > > > ----- Original Message ----- > > > > From: "Oved Ourfalli" > > > > To: "Ramesh" > > > > Cc: engine-devel(a)ovirt.org > > > > Sent: Monday, December 2, 2013 9:01:52 AM > > > > Subject: Re: [Engine-devel] Adding users and assigning roles in Ovi= rt > > > > = > > > > Your E-mail made me look a bit and check the different flows. > > > > = > > > > I think the only use-case for adding users without giving any > > > > permissions > > > > is > > > > when you add a user for notification reasons. > > > > You can add a user, and then in the Event Notifier sub-tab define w= hat > > > > events > > > > he will get via E-mail. > > > > afaik (and I'm not an event notifier expert), this user doesn't hav= e to > > > > be > > > > able to login, or to have permissions of any kind. He just gets eve= nts. +1 - this is due to the fact a user has an email account - no need to login= to ovirt-engine in order to read your emails :) > > > > = > > > > Other than that you're right. A user which is added to the system c= an't > > > > do > > > > much without assigning him roles. > > > > I think adding roles assignment to this dialog may be a bit cumbers= ome. > > > > Perhaps some wizard is required in that case. Or at least some chec= kbox > > > > saying "allow user to login". That way the new user will be able to > > > > login, > > > > and he will have some default permissions as well (permissions gran= ted > > > > to > > > > Everyone). > > > > = > > > > Let's see what others think. > > > > = > > > > Regards, > > > > Oved > > > > = > > > > = > > > > ----- Original Message ----- > > > > > From: "Ramesh" > > > > > To: engine-devel(a)ovirt.org > > > > > Sent: Monday, December 2, 2013 7:22:53 AM > > > > > Subject: [Engine-devel] Adding users and assigning roles in Ovirt > > > > > = > > > > > Hi All, > > > > > = > > > > > We have 'Add' action under 'Users' main tab to add users in Ov= irt > > > > > . > > > > > It looks slightly different from the "Add user" option of the > > > > > Configure > > > > > option. Actually, this one is missing the "Role to Assign" option= . I > > > > > think without assigning any role, adding a user is not meaningful= and > > > > > it > > > > > didn't complete the flow. > > > > > = > > > > > Currently to assign any role to the user, either we have to use > > > > > 'Configure' option ( to add system permission) or we have to go to > > > > > the > > > > > specific entity and add permission for that entity. It will be ni= ce > > > > > if > > > > > we can assign roles( system level permissions) while adding users= in > > > > > 'Users' tab itself. It will be a clear user flow where one can add > > > > > user > > > > > and assign role in the same place. > > > > > = > > > > > I have attached both the screen shots. > > > > > = > > > > > please share your thoughts. > > > > > = > > > > > Regards, > > > > > Ramesh > > > > > = > > > > > = > > > > > _______________________________________________ > > > > > Engine-devel mailing list > > > > > Engine-devel(a)ovirt.org > > > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > > > = > > > > _______________________________________________ > > > > Engine-devel mailing list > > > > Engine-devel(a)ovirt.org > > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > > = > > > _______________________________________________ > > > Engine-devel mailing list > > > Engine-devel(a)ovirt.org > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > = > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > = > > = > > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel > = _______________________________________________ Engine-devel mailing list Engine-devel(a)ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel --===============7880296292321940080==-- From tjelinek at redhat.com Wed Dec 4 07:14:07 2013 Content-Type: multipart/mixed; boundary="===============0357000222773603066==" MIME-Version: 1.0 From: Tomas Jelinek To: devel at ovirt.org Subject: [Engine-devel] [engine-devel] instance type as top-level entity Date: Wed, 04 Dec 2013 07:14:06 -0500 Message-ID: <220898566.1749726.1386159246739.JavaMail.root@redhat.com> In-Reply-To: 942100091.1721704.1386151932263.JavaMail.root@redhat.com --===============0357000222773603066== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hey all, I have started to work on the instance types[1] again and hit an issue. Sin= ce the instance types are supposed to be top-level entities (e.g. without the connection to DC/Cluster) but they are modeled as templat= es it is not possible to store them to DB since the DB constraints violatio= n on vm_static table = (e.g. the vds_group_id has to be unique and point to an existing vds_group). So, I see 4 options: 1: drop the constraints on the vm_static.vds_group_id (the vds_groups_vm_st= atic constraint) (most simple approach but would open the door to some issues which are n= ow guard on the DB level) 2: do the same magic [well, hacks :) ] as with the "blank" template which i= s in the same situation (not exactly a nice solution to have the instance types wired to one spe= cific cluster just to satisfy the constraint but return them all the time) 3: do not store this data in vm_static but create some new table called e.g= . instance_type which would contain all of the fields from vm_static which = are needed by it (actually the best approach AFAIK but to do it correctly it would requir= e some more refactoring to do some hierarchy of tables and not copy the fie= lds from table to table) 4: make the instance types not top-level (e.g. bound to specific DC/Cluster) (would bring some issues for example with the default instance types whi= ch should be present for all the DC/Clusters) Thoughts? Thank you, Tomas [1]: http://www.ovirt.org/Features/Instance_Types --===============0357000222773603066==-- From ofrenkel at redhat.com Wed Dec 4 07:17:53 2013 Content-Type: multipart/mixed; boundary="===============2871774531630585880==" MIME-Version: 1.0 From: Omer Frenkel To: devel at ovirt.org Subject: Re: [Engine-devel] [engine-devel] instance type as top-level entity Date: Wed, 04 Dec 2013 07:17:52 -0500 Message-ID: <711610057.23141349.1386159472456.JavaMail.root@redhat.com> In-Reply-To: 220898566.1749726.1386159246739.JavaMail.root@redhat.com --===============2871774531630585880== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Tomas Jelinek" > To: "engine-devel" > Cc: "Omer Frenkel" > Sent: Wednesday, December 4, 2013 2:14:06 PM > Subject: [engine-devel] instance type as top-level entity > = > Hey all, > = > I have started to work on the instance types[1] again and hit an issue. S= ince > the instance types are supposed to be top-level entities > (e.g. without the connection to DC/Cluster) but they are modeled as templ= ates > it is not possible to store them to DB since the DB constraints violation= on > vm_static table > (e.g. the vds_group_id has to be unique and point to an existing vds_grou= p). > = > So, I see 4 options: > = > 1: drop the constraints on the vm_static.vds_group_id (the > vds_groups_vm_static constraint) > (most simple approach but would open the door to some issues which are= now > guard on the DB level) > = > 2: do the same magic [well, hacks :) ] as with the "blank" template which= is > in the same situation > (not exactly a nice solution to have the instance types wired to one > specific cluster just to satisfy the constraint but return them all the > time) > = > 3: do not store this data in vm_static but create some new table called e= .g. > instance_type which would contain all of the fields from vm_static which = are > needed by it > (actually the best approach AFAIK but to do it correctly it would requ= ire > some more refactoring to do some hierarchy of tables and not copy the > fields from table to table) > = > 4: make the instance types not top-level (e.g. bound to specific DC/Clust= er) > (would bring some issues for example with the default instance types w= hich > should be present for all the DC/Clusters) > = > Thoughts? > = > Thank you, > Tomas > = > [1]: http://www.ovirt.org/Features/Instance_Types > = according to the wiki (and discussions we had) instance type is bounded to = a cluster (even if only as a changeable default) so i dont think there is an issue.. --===============2871774531630585880==-- From iheim at redhat.com Wed Dec 4 11:29:59 2013 Content-Type: multipart/mixed; boundary="===============5582437816737674963==" MIME-Version: 1.0 From: Itamar Heim To: devel at ovirt.org Subject: Re: [Engine-devel] [engine-devel] instance type as top-level entity Date: Wed, 04 Dec 2013 18:29:57 +0200 Message-ID: <529F5885.9020103@redhat.com> In-Reply-To: 711610057.23141349.1386159472456.JavaMail.root@redhat.com --===============5582437816737674963== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 12/04/2013 02:17 PM, Omer Frenkel wrote: > > > ----- Original Message ----- >> From: "Tomas Jelinek" >> To: "engine-devel" >> Cc: "Omer Frenkel" >> Sent: Wednesday, December 4, 2013 2:14:06 PM >> Subject: [engine-devel] instance type as top-level entity >> >> Hey all, >> >> I have started to work on the instance types[1] again and hit an issue. = Since >> the instance types are supposed to be top-level entities >> (e.g. without the connection to DC/Cluster) but they are modeled as temp= lates >> it is not possible to store them to DB since the DB constraints violatio= n on >> vm_static table >> (e.g. the vds_group_id has to be unique and point to an existing vds_gro= up). >> >> So, I see 4 options: >> >> 1: drop the constraints on the vm_static.vds_group_id (the >> vds_groups_vm_static constraint) >> (most simple approach but would open the door to some issues which a= re now >> guard on the DB level) >> >> 2: do the same magic [well, hacks :) ] as with the "blank" template whic= h is >> in the same situation >> (not exactly a nice solution to have the instance types wired to one >> specific cluster just to satisfy the constraint but return them all = the >> time) >> >> 3: do not store this data in vm_static but create some new table called = e.g. >> instance_type which would contain all of the fields from vm_static which= are >> needed by it >> (actually the best approach AFAIK but to do it correctly it would re= quire >> some more refactoring to do some hierarchy of tables and not copy the >> fields from table to table) >> >> 4: make the instance types not top-level (e.g. bound to specific DC/Clus= ter) >> (would bring some issues for example with the default instance types= which >> should be present for all the DC/Clusters) >> >> Thoughts? >> >> Thank you, >> Tomas >> >> [1]: http://www.ovirt.org/Features/Instance_Types >> > > according to the wiki (and discussions we had) instance type is bounded t= o a cluster (even if only as a changeable default) > so i dont think there is an issue.. where in the wiki please? the way i read the wiki its DC level, just like templates? --===============5582437816737674963==-- From iheim at redhat.com Wed Dec 4 11:33:56 2013 Content-Type: multipart/mixed; boundary="===============0211708395415968445==" MIME-Version: 1.0 From: Itamar Heim To: devel at ovirt.org Subject: Re: [Engine-devel] Using config values Date: Wed, 04 Dec 2013 18:33:54 +0200 Message-ID: <529F5972.6040802@redhat.com> In-Reply-To: 1728493072.3569411.1385889804043.JavaMail.root@redhat.com --===============0211708395415968445== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 12/01/2013 11:23 AM, Moti Asayag wrote: > > > ----- Original Message ----- >> From: "Omer Frenkel" >> To: "Mike Kolesnik" >> Cc: "engine-devel" >> Sent: Sunday, December 1, 2013 11:09:32 AM >> Subject: Re: [Engine-devel] Using config values >> >> >> >> >> >> >> From: "Mike Kolesnik" >> To: "Omer Frenkel" >> Cc: "Kanagaraj" , "engine-devel" >> >> Sent: Sunday, December 1, 2013 11:01:50 AM >> Subject: Re: [Engine-devel] Using config values >> >> >> >> >> >> >> >> >> >> >> From: "Mike Kolesnik" >> To: "Kanagaraj" >> Cc: "engine-devel" >> Sent: Sunday, December 1, 2013 8:08:42 AM >> Subject: Re: [Engine-devel] Using config values >> >> >> >> >> Hi All, >> >> Hi Kanagaraj, >> >> >> >> >> The are some issues arising in configurations whenever we move up on the >> versions(3.3 =3D> 3.4), because of the way we store and interpret them. >> >> Whenever there is a new cluster level, you will need to add a new entry = for >> all(most) of the configuration. Mostly a copy paste if you see from 3.2 = to >> 3.3, except some CPU/PM type related configurations. >> Better option would be to have the defaul config value in ConfigValues.j= ava >> and the overrides will go to config.sql. In this approach you don't need= a >> new entries to config.sql when there is a new cluster level. >> >> Lets take an exmaple, "SupportForceCreateVG" - This is supported from 3.1 >> onwards, >> >> If you look at config.sql, you will see following entries >> select fn_db_add_config_value('SupportForceCreateVG','false','3.0'); >> select fn_db_add_config_value('SupportForceCreateVG','true','3.1'); >> select fn_db_add_config_value('SupportForceCreateVG','true','3.2'); >> select fn_db_add_config_value('SupportForceCreateVG','true','3.3'); >> >> And in ConfigValues.java >> >> @TypeConverterAttribute(Boolean.class) >> @DefaultValueAttribute("false") >> SupportForceCreateVG, >> >> Now if there is 3.4 and 3.5, the user needs to add 2 more entries, which= i >> feel is redundant. >> >> Instead we can make >> >> @TypeConverterAttribute(Boolean.class) >> @DefaultValueAttribute("true") >> SupportForceCreateVG, >> >> and have only the following in config.sql >> select fn_db_add_config_value('SupportForceCreateVG','false','3.0'); >> >> if a particular value(for a specific cluster level) is not found in >> Config.sql, the fallback is to use the value available in ConfigValues.j= ava. >> >> This has already been implemented, there are many "feature supported" >> configurations working like this (for example GlusterSupport). >> >> I think a more interesting approach would be to move these out of the DB >> since these values don't really hav e a reson to be there. >> Since the entire thing is abstracted by "Gluster/FeatureSupported" class= es >> then we can easily change mechanism (of course whatever code is not usin= g it >> can be easily converted to use the mechanism) >> >> For example a simple enum could do the trick: >> ------------------------------------- EXAMPLE >> ------------------------------------- >> /** >> * Convenience class to check if a gluster feature is supported or not in= any >> given version.
>> * Methods should be named by feature and accept version to check against. >> */ >> public class GlusterFeatureSupported { >> /** >> * @param version >> * Compatibility version to check for. >> * @return true if gluster support is enabled, false >> if it's not. >> */ >> public static boolean gluster(Version version) { >> return SupportedFeatures.GLUSTER.isSupportedOn(version); >> } >> >> /** >> * @param version >> * Compatibility version to check for. >> * @return true if gluster heavyweight refresh is enabled, >> false if it's not. >> */ >> public static boolean refreshHeavyWeight(Version version) { >> return SupportedFeatures.REFRESH_HEAVYWEIGHT.isSupportedOn(version); >> } >> >> /* More methods... */ >> >> enum SupportedFeatures { >> GLUSTER(Version.v3_0), >> REFRESH_HEAVYWEIGHT(Version.v3_0, Version.v3_1), >> /* More members */; >> >> private Set unsupportedVersions =3D new HashSet(); >> >> private SupportedFeatures(Version... versions) { >> unsupportedVersions.addAll(Arrays.asList(versions)); >> } >> >> public boolean isSupportedOn(Version version) { >> return !unsupportedVersions.contains(version); >> } >> } >> ------------------------------------- END EXAMPLE >> ------------------------------------- >> >> Thoughts? >> >> unless i didn't understand something, this is not good, >> this should stay configurable by the users, >> for example if some user experience some issues with a feature and want = to >> turn it off/change the values.. >> (not all version configuration are boolean, some are different values to >> different versions, like cpu-list) >> >> This is for API level compatibility. >> If VDSM doesn't support for example hot plug in 3.1 then the user can't = just >> decide that it does and change it. >> Also, this is not changeable by user since it's not exposed by engine-co= nfig >> (nor should it be). >> some are exposed >> >> >> >> This is strictly for the engine-VDSM API compatibility, not for other co= nfigs >> which are version specific. >> right, but still user should be able to turn features off in case of >> problems, >> or change in some cases (for example it is possible to add support for m= ore >> power management devices, i know it was done by users) >> no reason to block this >> > > In this case you add additional protection level to block user from enabl= ing features > for unsupported cluster levels. > > However it sounds more reasonable than requiring the user to use a lower = cluster level > which enforces him to give up on other features. lowering the cluster level is not supported. there is a difference between the configs we expose to users, and the = configs we prefer to not be changed, but are used to workaround issues = in some cases. --===============0211708395415968445==-- From iheim at redhat.com Wed Dec 4 11:35:15 2013 Content-Type: multipart/mixed; boundary="===============1370094228860168314==" MIME-Version: 1.0 From: Itamar Heim To: devel at ovirt.org Subject: Re: [Engine-devel] Using config values Date: Wed, 04 Dec 2013 18:35:12 +0200 Message-ID: <529F59C0.1030603@redhat.com> In-Reply-To: 1044736237.33757114.1385891934497.JavaMail.root@redhat.com --===============1370094228860168314== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 12/01/2013 11:58 AM, Eli Mesika wrote: > > > ----- Original Message ----- >> From: "Omer Frenkel" >> To: "Eli Mesika" >> Cc: "Dusmant Kumar Pati" , "engine-devel" >> Sent: Sunday, December 1, 2013 11:02:46 AM >> Subject: Re: [Engine-devel] Using config values >> >> >> >> ----- Original Message ----- >>> From: "Eli Mesika" >>> To: "Dusmant Kumar Pati" >>> Cc: "engine-devel" >>> Sent: Saturday, November 30, 2013 10:58:35 PM >>> Subject: Re: [Engine-devel] Using config values >>> >>> >>> >>> ----- Original Message ----- >>>> From: "Dusmant Kumar Pati" >>>> To: "Kanagaraj" , "engine-devel" >>>> >>>> Sent: Friday, November 29, 2013 1:40:09 PM >>>> Subject: Re: [Engine-devel] Using config values >>>> >>>> On 11/29/2013 01:46 PM, Kanagaraj wrote: >>>> >>>> >>>> Hi All, >>>> >>>> The are some issues arising in configurations whenever we move up on t= he >>>> versions(3.3 =3D> 3.4), because of the way we store and interpret them. >>>> >>>> Whenever there is a new cluster level, you will need to add a new entry >>>> for >>>> all(most) of the configuration. Mostly a copy paste if you see from 3.2 >>>> to >>>> 3.3, except some CPU/PM type related configurations. >>>> Better option would be to have the defaul config value in >>>> ConfigValues.java >>>> and the overrides will go to config.sql. In this approach you don't ne= ed >>>> a >>>> new entries to config.sql when there is a new cluster level. >>>> >>>> Lets take an exmaple, "SupportForceCreateVG" - This is supported from = 3.1 >>>> onwards, >>>> >>>> If you look at config.sql, you will see following entries >>>> select fn_db_add_config_value('SupportForceCreateVG','false','3.0'); >>>> select fn_db_add_config_value('SupportForceCreateVG','true','3.1'); >>>> select fn_db_add_config_value('SupportForceCreateVG','true','3.2'); >>>> select fn_db_add_config_value('SupportForceCreateVG','true','3.3'); >>>> >>>> And in ConfigValues.java >>>> >>>> @TypeConverterAttribute(Boolean.class) >>>> @DefaultValueAttribute("false") >>>> SupportForceCreateVG, >>>> >>>> Now if there is 3.4 and 3.5, the user needs to add 2 more entries, whi= ch >>>> i >>>> feel is redundant. >>>> >>>> Instead we can make >>>> >>>> @TypeConverterAttribute(Boolean.class) >>>> @DefaultValueAttribute("true") >>>> SupportForceCreateVG, >>>> >>>> and have only the following in config.sql >>>> select fn_db_add_config_value('SupportForceCreateVG','false','3.0'); >>>> >>>> if a particular value(for a specific cluster level) is not found in >>>> Config.sql, the fallback is to use the value available in >>>> ConfigValues.java. >>>> >>>> Please share your thoughts on this. >>> >>> Hi >>> >>> First of all I think its a good idea >>> I have 2 questions >>> >>> 1) Which value will be stored as default in the java class for >>> configuration >>> values that are not a boolean, that represents if a feature is active or >>> not. >>> Is that the latest version value ? sounds not obvious to me >>> >> >> i guess this will have to have a configuration values for each version i= n the >> db. >> >>> 2) There are some configuration values that are exposed to the user via= the >>> engine-config tool, how this will work, we can not remove the entries t= heir >>> since the user may change and override those values. >>> >> >> in your suggestion below, there is the same issue, >> if user want to change the 3.3 value, engine config will fail with "No s= uch >> entry" >> because 3.3 will not be in the db.. >> so if we are not fixing this, i think using the current implementation is >> good enough, > > In this case engine-config will add this key with the given value for tha= t version, so , I see no problem in that... > In addition the getConfigValue will lookup for version matching only the = first time, so , if it was given a 3.4 version for key K and found a matchi= ng only for 3.2 , it will add to the cache K with the same value for versio= n 3.4 I don't think 3.4 should inherit from 3.2, only from the default value. i do think the code knowing if it should ask by cluster or dc level, or = at 'general' level is wrong, and asking by cluster level should fetch = the 'general' level before going to code level default. --===============1370094228860168314==-- From tjelinek at redhat.com Thu Dec 5 02:40:07 2013 Content-Type: multipart/mixed; boundary="===============0624331705919615072==" MIME-Version: 1.0 From: Tomas Jelinek To: devel at ovirt.org Subject: Re: [Engine-devel] [engine-devel] instance type as top-level entity Date: Thu, 05 Dec 2013 02:40:01 -0500 Message-ID: <308092418.2259849.1386229201991.JavaMail.root@redhat.com> In-Reply-To: 529F5885.9020103@redhat.com --===============0624331705919615072== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Itamar Heim" > To: "Omer Frenkel" , "Tomas Jelinek" > Cc: "engine-devel" > Sent: Wednesday, December 4, 2013 5:29:57 PM > Subject: Re: [Engine-devel] [engine-devel] instance type as top-level ent= ity > = > On 12/04/2013 02:17 PM, Omer Frenkel wrote: > > > > > > ----- Original Message ----- > >> From: "Tomas Jelinek" > >> To: "engine-devel" > >> Cc: "Omer Frenkel" > >> Sent: Wednesday, December 4, 2013 2:14:06 PM > >> Subject: [engine-devel] instance type as top-level entity > >> > >> Hey all, > >> > >> I have started to work on the instance types[1] again and hit an issue. > >> Since > >> the instance types are supposed to be top-level entities > >> (e.g. without the connection to DC/Cluster) but they are modeled as > >> templates > >> it is not possible to store them to DB since the DB constraints violat= ion > >> on > >> vm_static table > >> (e.g. the vds_group_id has to be unique and point to an existing > >> vds_group). > >> > >> So, I see 4 options: > >> > >> 1: drop the constraints on the vm_static.vds_group_id (the > >> vds_groups_vm_static constraint) > >> (most simple approach but would open the door to some issues which= are > >> now > >> guard on the DB level) > >> > >> 2: do the same magic [well, hacks :) ] as with the "blank" template wh= ich > >> is > >> in the same situation > >> (not exactly a nice solution to have the instance types wired to o= ne > >> specific cluster just to satisfy the constraint but return them all > >> the > >> time) > >> > >> 3: do not store this data in vm_static but create some new table called > >> e.g. > >> instance_type which would contain all of the fields from vm_static whi= ch > >> are > >> needed by it > >> (actually the best approach AFAIK but to do it correctly it would > >> require > >> some more refactoring to do some hierarchy of tables and not copy = the > >> fields from table to table) > >> > >> 4: make the instance types not top-level (e.g. bound to specific > >> DC/Cluster) > >> (would bring some issues for example with the default instance typ= es > >> which > >> should be present for all the DC/Clusters) > >> > >> Thoughts? > >> > >> Thank you, > >> Tomas > >> > >> [1]: http://www.ovirt.org/Features/Instance_Types > >> > > > > according to the wiki (and discussions we had) instance type is bounded= to > > a cluster (even if only as a changeable default) > > so i dont think there is an issue.. > = > where in the wiki please? > the way i read the wiki its DC level, just like templates? OK, it seems I have not asked the question correctly. Let me rephrase it: Since we are going to provide default (predefined) instance types which the= user is not allowed to delete I assume this instance types should = be available for the whole system (not only for the default cluster) just l= ike blank template. This brings up a question if all the other instance types are going to be a= lso system level and if yes, how are we going to solve it technically. We still have the option to implement the instance types as templates and t= he default instance types as blank template, but the question is if this is what makes most sense. = The wiki currently says that the instance type is connected to cluster usin= g vds_group_id field but as I have started some implementation this question popped up in my mind (not yet documented on wiki - will be accordi= ng to the result of this discussion). BTW the question if the instance types are top level or not leads us to a d= ifferent question - where to put them in GUI? - If the instance type is a top level entity the best place to have it is t= he configure dialog (top right corner) - If the instance type is not a top level entity the best place to have it = is possibly a main tab (or part of the template main tab) > = >=20 --===============0624331705919615072==-- From sbonazzo at redhat.com Fri Dec 6 05:27:10 2013 Content-Type: multipart/mixed; boundary="===============5716678969636080196==" MIME-Version: 1.0 From: Sandro Bonazzola To: devel at ovirt.org Subject: [Engine-devel] [QE] oVirt 3.3.2 RC status Date: Fri, 06 Dec 2013 11:27:03 +0100 Message-ID: <52A1A677.4040508@redhat.com> --===============5716678969636080196== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, we've scheduled oVirt 3.3.2 RC build on 2013-12-11 [1] A bug tracker is available at [2] and it shows only 4 bugs still blocking t= he release: Whiteboard Bug ID Summary integration 1036209 [AIO] ssh issues storage 1022961 Running a VM from a gluster domain uses mount instead of g= luster URI virt 1029885 cloud-init testcase does not work in engine 3.3.1 virt 1025829 sysprep floppy is not attached to Windows 2008 R2 machine - e= ven when specifically checked in Run Once Please provide an ETA for the above bugs. 1036209 [AIO] ssh issues: patch merged on master branch, ready to be merged= (hopefully today) on 3.3 and 3.3.2 branches. For those who want to help testing the bugs, I suggest to add yourself as Q= A contact for the bug and add yourself to the testing page [3]. Thanks to all which have already started testing beta release! Maintainers should fill release notes before RC build, the page has been cr= eated here [4] [1] http://www.ovirt.org/OVirt_3.3.z_release-management [2] https://bugzilla.redhat.com/1027349 [3] http://www.ovirt.org/Testing/Ovirt_3.3.2_testing [4] http://www.ovirt.org/OVirt_3.3.2_release_notes Thanks, -- = Sandro Bonazzola Better technology. Faster innovation. Powered by community collaboration. See how it works at redhat.com --===============5716678969636080196==-- From S.Kieske at mittwald.de Fri Dec 6 05:45:48 2013 Content-Type: multipart/mixed; boundary="===============2005677777249310290==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: [Engine-devel] Fwd: [Users] oVirt Cloud-Init integration REST-API Date: Fri, 06 Dec 2013 10:42:41 +0000 Message-ID: <52A1AAD8.101@mittwald.de> In-Reply-To: 52A1A6DD.4020100@mittwald.de --===============2005677777249310290== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, I think this may be the more appropriate list to discuss this issue? I fear this isn't integrated yet and can't be integrated in 3.3.1 or 3.3.2? -------- Original-Nachricht -------- Betreff: [Users] oVirt Cloud-Init integration REST-API Datum: Fri, 6 Dec 2013 10:25:42 +0000 Von: Sven Kieske An: gpadgett(a)redhat.com , users(a)ovirt.org Hi, we want to utilize Cloud-Init via REST-API, like mentioned on the feature page in the wiki: http://www.ovirt.org/Features/Cloud-Init_Integration but looking at api?rsdl I do not find any clue if this is implemented already in 3.3.1? if yes, how to call this function? if no, can we hack something in the db to activate it or at least use the function to automatic build the cd-roms which get passed to the vms? I really need this feature. Thanks for your help. -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen _______________________________________________ Users mailing list Users(a)ovirt.org http://lists.ovirt.org/mailman/listinfo/users --===============2005677777249310290==-- From S.Kieske at mittwald.de Fri Dec 6 05:55:01 2013 Content-Type: multipart/mixed; boundary="===============1921997760539479920==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: Re: [Engine-devel] Fwd: [Users] oVirt Cloud-Init integration REST-API Date: Fri, 06 Dec 2013 10:51:53 +0000 Message-ID: <52A1AD01.4080301@mittwald.de> In-Reply-To: 52A1AAD8.101@mittwald.de --===============1921997760539479920== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable I created a BZ for this one as I can't find this function in the API: https://bugzilla.redhat.com/show_bug.cgi?id=3D1039009 Am 06.12.2013 11:42, schrieb Sven Kieske: > Hi, > = > I think this may be the more appropriate list to discuss this issue? > = > I fear this isn't integrated yet and can't be integrated in 3.3.1 or 3.3.= 2? > = > = > -------- Original-Nachricht -------- > Betreff: [Users] oVirt Cloud-Init integration REST-API > Datum: Fri, 6 Dec 2013 10:25:42 +0000 > Von: Sven Kieske > An: gpadgett(a)redhat.com , users(a)ovirt.org > > = > Hi, > = > we want to utilize Cloud-Init via REST-API, like mentioned on > the feature page in the wiki: > http://www.ovirt.org/Features/Cloud-Init_Integration > = > but looking at api?rsdl I do not find any clue > if this is implemented already in 3.3.1? > = > if yes, how to call this function? > = > if no, can we hack something in the db to activate it > or at least use the function to automatic build the > cd-roms which get passed to the vms? > = > I really need this feature. > = > Thanks for your help. > = -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============1921997760539479920==-- From iheim at redhat.com Fri Dec 6 07:24:15 2013 Content-Type: multipart/mixed; boundary="===============6590469903052963439==" MIME-Version: 1.0 From: Itamar Heim To: devel at ovirt.org Subject: Re: [Engine-devel] Jenkins JAVA_HOME Date: Fri, 06 Dec 2013 14:24:10 +0200 Message-ID: <52A1C1EA.4000903@redhat.com> In-Reply-To: EF26FC1776F7FF46BFC072393EFD13A2557F0977@SERV070.corp.eldorado.org.br --===============6590469903052963439== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 12/05/2013 09:55 PM, Gustavo Frederico Temple Pedrosa wrote: > Hello all, > > I have two changes that the build failed with "Error: JAVA_HOME is not > defined correctly." > > Anyone knows how I fix this? more details/link? --===============6590469903052963439==-- From iheim at redhat.com Fri Dec 6 07:31:22 2013 Content-Type: multipart/mixed; boundary="===============4936440244703254470==" MIME-Version: 1.0 From: Itamar Heim To: devel at ovirt.org Subject: Re: [Engine-devel] Fwd: [Users] oVirt Cloud-Init integration REST-API Date: Fri, 06 Dec 2013 14:31:17 +0200 Message-ID: <52A1C395.7080803@redhat.com> In-Reply-To: 52A1AAD8.101@mittwald.de --===============4936440244703254470== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 12/06/2013 12:42 PM, Sven Kieske wrote: > Hi, > > I think this may be the more appropriate list to discuss this issue? > > I fear this isn't integrated yet and can't be integrated in 3.3.1 or 3.3.= 2? its already fixed for stable 3.3, but just after 3.3.2 was created... http://gerrit.ovirt.org/gitweb?p=3Dovirt-engine.git;a=3Dcommit;h=3D45cfd195= 1d87293d3aad661372cdd4391b7116f8 http://gerrit.ovirt.org/gitweb?p=3Dovirt-engine.git;a=3Dcommit;h=3D4eb464ce= c2b4f529a6b6a76bbcb5bd76a5302188 > > > -------- Original-Nachricht -------- > Betreff: [Users] oVirt Cloud-Init integration REST-API > Datum: Fri, 6 Dec 2013 10:25:42 +0000 > Von: Sven Kieske > An: gpadgett(a)redhat.com , users(a)ovirt.org > > > Hi, > > we want to utilize Cloud-Init via REST-API, like mentioned on > the feature page in the wiki: > http://www.ovirt.org/Features/Cloud-Init_Integration > > but looking at api?rsdl I do not find any clue > if this is implemented already in 3.3.1? > > if yes, how to call this function? > > if no, can we hack something in the db to activate it > or at least use the function to automatic build the > cd-roms which get passed to the vms? > > I really need this feature. > > Thanks for your help. > --===============4936440244703254470==-- From gustavo.pedrosa at eldorado.org.br Fri Dec 6 07:49:14 2013 Content-Type: multipart/mixed; boundary="===============4154752475394187577==" MIME-Version: 1.0 From: Gustavo Frederico Temple Pedrosa To: devel at ovirt.org Subject: [Engine-devel] RES: Jenkins JAVA_HOME Date: Fri, 06 Dec 2013 12:48:23 +0000 Message-ID: In-Reply-To: 52A1C1EA.4000903@redhat.com --===============4154752475394187577== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable (#22107) http://jenkins.ovirt.org/job/ovirt_engine_master_find_bugs_gerrit/1098/cons= ole (#18226) http://jenkins.ovirt.org/job/ovirt_engine_master_find_bugs_gerrit/1095/cons= ole (#17972) http://jenkins.ovirt.org/job/ovirt_engine_master_find_bugs_gerrit/1039/cons= ole ________________________________________ De: Itamar Heim [iheim(a)redhat.com] Enviado: sexta-feira, 6 de dezembro de 2013 10:24 Para: Gustavo Frederico Temple Pedrosa; infra(a)ovirt.org; engine-devel Assunto: Re: Jenkins JAVA_HOME On 12/05/2013 09:55 PM, Gustavo Frederico Temple Pedrosa wrote: > Hello all, > > I have two changes that the build failed with "Error: JAVA_HOME is not > defined correctly." > > Anyone knows how I fix this? more details/link? --===============4154752475394187577==-- From S.Kieske at mittwald.de Fri Dec 6 08:47:04 2013 Content-Type: multipart/mixed; boundary="===============3660306052411614712==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: Re: [Engine-devel] Fwd: [Users] oVirt Cloud-Init integration REST-API Date: Fri, 06 Dec 2013 13:43:56 +0000 Message-ID: <52A1D552.1000901@mittwald.de> In-Reply-To: 52A1C395.7080803@redhat.com --===============3660306052411614712== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, cool that there are patches, but is there any chance to get this into 3.3.1 or at least 3.3.2? we need this feature asap. This is really urgent. Am 06.12.2013 13:31, schrieb Itamar Heim: > On 12/06/2013 12:42 PM, Sven Kieske wrote: >> Hi, >> >> I think this may be the more appropriate list to discuss this issue? >> >> I fear this isn't integrated yet and can't be integrated in 3.3.1 or >> 3.3.2? > = > its already fixed for stable 3.3, but just after 3.3.2 was created... > = > http://gerrit.ovirt.org/gitweb?p=3Dovirt-engine.git;a=3Dcommit;h=3D45cfd1= 951d87293d3aad661372cdd4391b7116f8 > = > http://gerrit.ovirt.org/gitweb?p=3Dovirt-engine.git;a=3Dcommit;h=3D4eb464= cec2b4f529a6b6a76bbcb5bd76a5302188 -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============3660306052411614712==-- From eedri at redhat.com Fri Dec 6 15:17:08 2013 Content-Type: multipart/mixed; boundary="===============7824567631677119122==" MIME-Version: 1.0 From: Eyal Edri To: devel at ovirt.org Subject: Re: [Engine-devel] RES: Jenkins JAVA_HOME Date: Fri, 06 Dec 2013 15:17:06 -0500 Message-ID: <658125983.1472129.1386361026064.JavaMail.root@redhat.com> In-Reply-To: EF26FC1776F7FF46BFC072393EFD13A2557F0A53@SERV070.corp.eldorado.org.br --===============7824567631677119122== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Gustavo, The problem was misconfigured jnlp jenkins slave, please see other reply i = sent to infra. should be ok now, you can try and retrigger any jobs that failed on gerrit = here: http://jenkins.ovirt.org/gerrit_manual_trigger/? eyal. ----- Original Message ----- > From: "Gustavo Frederico Temple Pedrosa" > To: "Itamar Heim" , infra(a)ovirt.org, "engine-devel"= > Sent: Friday, December 6, 2013 2:48:23 PM > Subject: RES: Jenkins JAVA_HOME > = > (#22107) > http://jenkins.ovirt.org/job/ovirt_engine_master_find_bugs_gerrit/1098/co= nsole > = > (#18226) > http://jenkins.ovirt.org/job/ovirt_engine_master_find_bugs_gerrit/1095/co= nsole > = > (#17972) > http://jenkins.ovirt.org/job/ovirt_engine_master_find_bugs_gerrit/1039/co= nsole > = > = > = > ________________________________________ > De: Itamar Heim [iheim(a)redhat.com] > Enviado: sexta-feira, 6 de dezembro de 2013 10:24 > Para: Gustavo Frederico Temple Pedrosa; infra(a)ovirt.org; engine-devel > Assunto: Re: Jenkins JAVA_HOME > = > On 12/05/2013 09:55 PM, Gustavo Frederico Temple Pedrosa wrote: > > Hello all, > > > > I have two changes that the build failed with "Error: JAVA_HOME is not > > defined correctly." > > > > Anyone knows how I fix this? > = > more details/link? > _______________________________________________ > Infra mailing list > Infra(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/infra >=20 --===============7824567631677119122==-- From iheim at redhat.com Sat Dec 7 03:09:17 2013 Content-Type: multipart/mixed; boundary="===============6593859172795348448==" MIME-Version: 1.0 From: Itamar Heim To: devel at ovirt.org Subject: Re: [Engine-devel] Fwd: [Users] oVirt Cloud-Init integration REST-API Date: Sat, 07 Dec 2013 10:09:05 +0200 Message-ID: <52A2D7A1.90405@redhat.com> In-Reply-To: 52A1D552.1000901@mittwald.de --===============6593859172795348448== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 12/06/2013 03:43 PM, Sven Kieske wrote: > Hi, > > cool that there are patches, but is there any chance to get this into > 3.3.1 or at least 3.3.2? we need this feature asap. > > This is really urgent. > 3.3.1 was released, i don't see it being re-spin for anything but a = critical regression. 3.3.2 is in beta, so still planned to re-spin. omer/michal - thoughts = about backporting this to 3.3.2? > Am 06.12.2013 13:31, schrieb Itamar Heim: >> On 12/06/2013 12:42 PM, Sven Kieske wrote: >>> Hi, >>> >>> I think this may be the more appropriate list to discuss this issue? >>> >>> I fear this isn't integrated yet and can't be integrated in 3.3.1 or >>> 3.3.2? >> >> its already fixed for stable 3.3, but just after 3.3.2 was created... >> >> http://gerrit.ovirt.org/gitweb?p=3Dovirt-engine.git;a=3Dcommit;h=3D45cfd= 1951d87293d3aad661372cdd4391b7116f8 >> >> http://gerrit.ovirt.org/gitweb?p=3Dovirt-engine.git;a=3Dcommit;h=3D4eb46= 4cec2b4f529a6b6a76bbcb5bd76a5302188 > --===============6593859172795348448==-- From ofrenkel at redhat.com Sun Dec 8 03:41:50 2013 Content-Type: multipart/mixed; boundary="===============0047447050612685268==" MIME-Version: 1.0 From: Omer Frenkel To: devel at ovirt.org Subject: Re: [Engine-devel] Fwd: [Users] oVirt Cloud-Init integration REST-API Date: Sun, 08 Dec 2013 03:41:43 -0500 Message-ID: <338654880.26210590.1386492103177.JavaMail.root@redhat.com> In-Reply-To: 52A2D7A1.90405@redhat.com --===============0047447050612685268== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Itamar Heim" > To: "Sven Kieske" , engine-devel(a)ovirt.org, "Om= er Frenkel" , "Michal > Skrivanek" > Sent: Saturday, December 7, 2013 10:09:05 AM > Subject: Re: [Engine-devel] Fwd: [Users] oVirt Cloud-Init integration RES= T-API > = > On 12/06/2013 03:43 PM, Sven Kieske wrote: > > Hi, > > > > cool that there are patches, but is there any chance to get this into > > 3.3.1 or at least 3.3.2? we need this feature asap. > > > > This is really urgent. > > > = > 3.3.1 was released, i don't see it being re-spin for anything but a > critical regression. > 3.3.2 is in beta, so still planned to re-spin. omer/michal - thoughts > about backporting this to 3.3.2? sent http://gerrit.ovirt.org/#/c/22139/ > = > > Am 06.12.2013 13:31, schrieb Itamar Heim: > >> On 12/06/2013 12:42 PM, Sven Kieske wrote: > >>> Hi, > >>> > >>> I think this may be the more appropriate list to discuss this issue? > >>> > >>> I fear this isn't integrated yet and can't be integrated in 3.3.1 or > >>> 3.3.2? > >> > >> its already fixed for stable 3.3, but just after 3.3.2 was created... > >> > >> http://gerrit.ovirt.org/gitweb?p=3Dovirt-engine.git;a=3Dcommit;h=3D45c= fd1951d87293d3aad661372cdd4391b7116f8 > >> > >> http://gerrit.ovirt.org/gitweb?p=3Dovirt-engine.git;a=3Dcommit;h=3D4eb= 464cec2b4f529a6b6a76bbcb5bd76a5302188 > > > = >=20 --===============0047447050612685268==-- From S.Kieske at mittwald.de Mon Dec 9 03:11:43 2013 Content-Type: multipart/mixed; boundary="===============5864855410407863076==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: Re: [Engine-devel] Fwd: [Users] oVirt Cloud-Init integration REST-API Date: Mon, 09 Dec 2013 08:08:25 +0000 Message-ID: <52A57B35.4040001@mittwald.de> In-Reply-To: 338654880.26210590.1386492103177.JavaMail.root@redhat.com --===============5864855410407863076== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, I appreciate your backport! Are the RPMs in the beta repo also updated? I would test this feature intensive, so you might get valuable feedback. -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============5864855410407863076==-- From sbonazzo at redhat.com Mon Dec 9 04:31:09 2013 Content-Type: multipart/mixed; boundary="===============0363956044557428966==" MIME-Version: 1.0 From: Sandro Bonazzola To: devel at ovirt.org Subject: Re: [Engine-devel] [QE] oVirt 3.3.2 RC status Date: Mon, 09 Dec 2013 10:30:58 +0100 Message-ID: <52A58DD2.4070504@redhat.com> In-Reply-To: 52A1A677.4040508@redhat.com --===============0363956044557428966== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, we've scheduled oVirt 3.3.2 RC build on 2013-12-11 [1] A bug tracker is available at [2] and it shows only 3 bugs still blocking t= he release: Whiteboard Bug ID Summary storage 1022961 Running a VM from a gluster domain uses mount instead of g= luster URI virt 1029885 cloud-init testcase does not work in engine 3.3.1 virt 1025829 sysprep floppy is not attached to Windows 2008 R2 machine - e= ven when specifically checked in Run Once Please provide an ETA for the above bugs. oVirt 3.3.2 beta testing is in progress, thanks to all who already started = testing it! For those willing to help testing the bugs, I suggest to add yourself as QA= contact for the bug and add yourself to the testing page [3]. Maintainers should fill release notes before RC build, the page has been cr= eated here [4] [1] http://www.ovirt.org/OVirt_3.3.z_release-management [2] https://bugzilla.redhat.com/1027349 [3] http://www.ovirt.org/Testing/Ovirt_3.3.2_testing [4] http://www.ovirt.org/OVirt_3.3.2_release_notes Thanks, -- = Sandro Bonazzola Better technology. Faster innovation. Powered by community collaboration. See how it works at redhat.com --===============0363956044557428966==-- From ofrenkel at redhat.com Mon Dec 9 04:47:08 2013 Content-Type: multipart/mixed; boundary="===============4939542783362025569==" MIME-Version: 1.0 From: Omer Frenkel To: devel at ovirt.org Subject: Re: [Engine-devel] [QE] oVirt 3.3.2 RC status Date: Mon, 09 Dec 2013 04:47:05 -0500 Message-ID: <317716930.26551595.1386582425882.JavaMail.root@redhat.com> In-Reply-To: 52A58DD2.4070504@redhat.com --===============4939542783362025569== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Sandro Bonazzola" > To: "engine-devel" , Users(a)ovirt.org, "VDSM P= roject Development" > , "Eduardo Warszawski" , "Roy Golan" , > "Omer Frenkel" , "vdsm-devel" > Cc: "Itamar Heim" > Sent: Monday, December 9, 2013 11:30:58 AM > Subject: Re: [Engine-devel] [QE] oVirt 3.3.2 RC status > = > Hi, > = > we've scheduled oVirt 3.3.2 RC build on 2013-12-11 [1] > = > A bug tracker is available at [2] and it shows only 3 bugs still blocking= the > release: > Whiteboard Bug ID Summary > storage 1022961 Running a VM from a gluster domain uses mount instead of > gluster URI > virt 1029885 cloud-init testcase does not work in engine 3.3.1 3.3.2 backported and wait for review from REST > virt 1025829 sysprep floppy is not attached to Windows 2008 R2 machine - > even when specifically checked in Run Once > = > Please provide an ETA for the above bugs. > = > oVirt 3.3.2 beta testing is in progress, thanks to all who already started > testing it! > For those willing to help testing the bugs, I suggest to add yourself as = QA > contact for the bug and add yourself to the testing page [3]. > = > Maintainers should fill release notes before RC build, the page has been > created here [4] > = > [1] http://www.ovirt.org/OVirt_3.3.z_release-management > [2] https://bugzilla.redhat.com/1027349 > [3] http://www.ovirt.org/Testing/Ovirt_3.3.2_testing > [4] http://www.ovirt.org/OVirt_3.3.2_release_notes > = > Thanks, > = > = > -- > Sandro Bonazzola > Better technology. Faster innovation. Powered by community collaboration. > See how it works at redhat.com >=20 --===============4939542783362025569==-- From mpastern at redhat.com Mon Dec 9 05:46:54 2013 Content-Type: multipart/mixed; boundary="===============0521362822407569534==" MIME-Version: 1.0 From: Michael Pasternak To: devel at ovirt.org Subject: [Engine-devel] master is broken by Common#VdcActionUtilsTest ?? Date: Mon, 09 Dec 2013 12:47:12 +0200 Message-ID: <52A59FB0.3070007@redhat.com> --===============0521362822407569534== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plug= in:2.3.2:testCompile (default-testCompile) on project common: Compilation f= ailure: Compilation failure: [ERROR] /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/co= mmon/src/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[13= ,42] error: package org.ovirt.engine.core.common.action does not exist [ERROR] /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/co= mmon/src/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[14= ,52] error: cannot find symbol [ERROR] package org.ovirt.engine.core.common.businessentities [ERROR] /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/co= mmon/src/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[15= ,52] error: cannot find symbol [ERROR] package org.ovirt.engine.core.common.businessentities [ERROR] /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/co= mmon/src/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[16= ,52] error: cannot find symbol [ERROR] package org.ovirt.engine.core.common.businessentities [ERROR] /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/co= mmon/src/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[17= ,52] error: cannot find symbol [ERROR] package org.ovirt.engine.core.common.businessentities [ERROR] /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/co= mmon/src/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[18= ,52] error: cannot find symbol [ERROR] package org.ovirt.engine.core.common.businessentities [ERROR] /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/co= mmon/src/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[19= ,52] error: cannot find symbol [ERROR] package org.ovirt.engine.core.common.businessentities [ERROR] /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/co= mmon/src/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[20= ,52] error: cannot find symbol [ERROR] package org.ovirt.engine.core.common.businessentities [ERROR] /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/co= mmon/src/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[21= ,52] error: cannot find symbol ... org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute g= oal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:testCompile (defau= lt-testCompile) on project common: Compilation failure at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExe= cutor.java:213) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExe= cutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExe= cutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.build= Project(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.build= Project(LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThrea= dedBuild(LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Lif= ecycleStarter.java:161) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessor= Impl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethod= AccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced= (Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launche= r.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCo= de(Launcher.java:414) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.= java:357) Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation= failure at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCom= pilerMojo.java:656) at org.apache.maven.plugin.TestCompilerMojo.execute(TestCompilerMoj= o.java:161) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(De= faultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExe= cutor.java:209) ... 19 more -- = Michael Pasternak RedHat, ENG-Virtualization R&D --===============0521362822407569534==-- From oliel at redhat.com Mon Dec 9 05:59:04 2013 Content-Type: multipart/mixed; boundary="===============2059819804235028682==" MIME-Version: 1.0 From: Ori Liel To: devel at ovirt.org Subject: [Engine-devel] restapi: Permissions in Capabilities (#859225) Date: Mon, 09 Dec 2013 05:59:03 -0500 Message-ID: <86150267.1879702.1386586743183.JavaMail.root@redhat.com> In-Reply-To: 757316122.1866024.1386585197262.JavaMail.root@redhat.com --===============2059819804235028682== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable When listing the application's capabilities we currently show 'permissions'= both for each version, and outside versions altogether: = GET .../api/capabilities ... ... 1) Permissions should only exist within a version; their current existence = outside 'version' is for backwards compatibility only. We assume that no on= e (except perhaps Automation) uses these non-version-specific permissions t= hese days, and we'd like to remove them. = 2) Regarding permissions within a version - Oded brought up that some permi= ssions which are only relevant for 3.1 are listed also under 3.0 (for examp= le, quota related permissions). In order for the API layer to be able to gr= oup permissions by version, permission<-->version metadata must exist somew= here. The permissions enum in the engine seems a natural place to put it, a= s Michael commented. Setting out to do this, I realized that which-permissi= on-belongs-to-which-version is knowledge that I don't have, and don't reall= y know how to get efficiently, and I sort of got stuck because of this. Ide= as regarding this issue? = Thanks, = Ori. = --===============2059819804235028682==-- From yzaslavs at redhat.com Mon Dec 9 06:11:47 2013 Content-Type: multipart/mixed; boundary="===============1401492718542454966==" MIME-Version: 1.0 From: Yair Zaslavsky To: devel at ovirt.org Subject: Re: [Engine-devel] master is broken by Common#VdcActionUtilsTest ?? Date: Mon, 09 Dec 2013 06:11:46 -0500 Message-ID: <184197218.13543831.1386587506493.JavaMail.root@redhat.com> In-Reply-To: 52A59FB0.3070007@redhat.com --===============1401492718542454966== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Michael Pasternak" > To: "engine-devel" > Sent: Monday, December 9, 2013 12:47:12 PM > Subject: [Engine-devel] master is broken by Common#VdcActionUtilsTest ?? Please provide the commit hash you tried to compile with ? > = > = > = > = > [ERROR] Failed to execute goal > org.apache.maven.plugins:maven-compiler-plugin:2.3.2:testCompile > (default-testCompile) on project common: Compilation failure: Compilation > failure: > [ERROR] > /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/common/s= rc/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[13,42] > error: package > org.ovirt.engine.core.common.action does not exist > [ERROR] > /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/common/s= rc/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[14,52] > error: cannot > find symbol > [ERROR] package org.ovirt.engine.core.common.businessentities > [ERROR] > /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/common/s= rc/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[15,52] > error: cannot > find symbol > [ERROR] package org.ovirt.engine.core.common.businessentities > [ERROR] > /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/common/s= rc/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[16,52] > error: cannot > find symbol > [ERROR] package org.ovirt.engine.core.common.businessentities > [ERROR] > /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/common/s= rc/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[17,52] > error: cannot > find symbol > [ERROR] package org.ovirt.engine.core.common.businessentities > [ERROR] > /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/common/s= rc/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[18,52] > error: cannot > find symbol > [ERROR] package org.ovirt.engine.core.common.businessentities > [ERROR] > /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/common/s= rc/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[19,52] > error: cannot > find symbol > [ERROR] package org.ovirt.engine.core.common.businessentities > [ERROR] > /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/common/s= rc/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[20,52] > error: cannot > find symbol > [ERROR] package org.ovirt.engine.core.common.businessentities > [ERROR] > /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/common/s= rc/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[21,52] > error: cannot > find symbol > = > ... > = > org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute > goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:testCompile > (default-testCompile) on > project common: Compilation failure > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExec= utor.java:213) > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExec= utor.java:153) > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExec= utor.java:145) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildP= roject(LifecycleModuleBuilder.java:84) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildP= roject(LifecycleModuleBuilder.java:59) > at > org.apache.maven.lifecycle.internal.LifecycleStarter.singleThread= edBuild(LifecycleStarter.java:183) > at > org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Life= cycleStarter.java:161) > at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) > at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) > at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) > at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) > at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorI= mpl.java:57) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodA= ccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > at > org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(= Launcher.java:290) > at > org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher= .java:230) > at > org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCod= e(Launcher.java:414) > at > org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.j= ava:357) > Caused by: org.apache.maven.plugin.CompilationFailureException: Compilati= on > failure > at > org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractComp= ilerMojo.java:656) > at > org.apache.maven.plugin.TestCompilerMojo.execute(TestCompilerMojo= .java:161) > at > org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Def= aultBuildPluginManager.java:101) > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExec= utor.java:209) > ... 19 more > = > = > -- > = > Michael Pasternak > RedHat, ENG-Virtualization R&D > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============1401492718542454966==-- From iheim at redhat.com Mon Dec 9 06:22:32 2013 Content-Type: multipart/mixed; boundary="===============8970726018498736705==" MIME-Version: 1.0 From: Itamar Heim To: devel at ovirt.org Subject: Re: [Engine-devel] Fwd: [Users] oVirt Cloud-Init integration REST-API Date: Mon, 09 Dec 2013 13:22:21 +0200 Message-ID: <52A5A7ED.5070104@redhat.com> In-Reply-To: 52A57B35.4040001@mittwald.de --===============8970726018498736705== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 12/09/2013 10:08 AM, Sven Kieske wrote: > Hi, > > I appreciate your backport! > Are the RPMs in the beta repo also updated? > I would test this feature intensive, so > you might get valuable feedback. > iirc, 3.3.2 is slated to be refreshed wednesday, assuming all blockers = are fixed. --===============8970726018498736705==-- From sbonazzo at redhat.com Mon Dec 9 06:27:18 2013 Content-Type: multipart/mixed; boundary="===============5111994640686927985==" MIME-Version: 1.0 From: Sandro Bonazzola To: devel at ovirt.org Subject: Re: [Engine-devel] Fwd: [Users] oVirt Cloud-Init integration REST-API Date: Mon, 09 Dec 2013 12:27:11 +0100 Message-ID: <52A5A90F.2020906@redhat.com> In-Reply-To: 52A5A7ED.5070104@redhat.com --===============5111994640686927985== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Il 09/12/2013 12:22, Itamar Heim ha scritto: > On 12/09/2013 10:08 AM, Sven Kieske wrote: >> Hi, >> >> I appreciate your backport! >> Are the RPMs in the beta repo also updated? >> I would test this feature intensive, so >> you might get valuable feedback. >> > = > iirc, 3.3.2 is slated to be refreshed wednesday, assuming all blockers ar= e fixed. Well, we can refresh anyway on Wednesday also if not all blockers are fixed, allowing to test the fixed bugs. We'll discuss this on Wednesday sync meeting. -- = Sandro Bonazzola Better technology. Faster innovation. Powered by community collaboration. See how it works at redhat.com --===============5111994640686927985==-- From mpastern at redhat.com Mon Dec 9 06:36:05 2013 Content-Type: multipart/mixed; boundary="===============1030916550431954410==" MIME-Version: 1.0 From: Michael Pasternak To: devel at ovirt.org Subject: Re: [Engine-devel] master is broken by Common#VdcActionUtilsTest ?? Date: Mon, 09 Dec 2013 13:36:22 +0200 Message-ID: <52A5AB36.10600@redhat.com> In-Reply-To: 184197218.13543831.1386587506493.JavaMail.root@redhat.com --===============1030916550431954410== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 12/09/2013 01:11 PM, Yair Zaslavsky wrote: > = > = > ----- Original Message ----- >> From: "Michael Pasternak" >> To: "engine-devel" >> Sent: Monday, December 9, 2013 12:47:12 PM >> Subject: [Engine-devel] master is broken by Common#VdcActionUtilsTest ?? > = > Please provide the commit hash you tried to compile with ? 30ff53078b18063e1ee94f68db11e91d49515e27 thanks. > = >> >> >> >> >> [ERROR] Failed to execute goal >> org.apache.maven.plugins:maven-compiler-plugin:2.3.2:testCompile >> (default-testCompile) on project common: Compilation failure: Compilation >> failure: >> [ERROR] >> /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/common/= src/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[13,42] >> error: package >> org.ovirt.engine.core.common.action does not exist >> [ERROR] >> /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/common/= src/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[14,52] >> error: cannot >> find symbol >> [ERROR] package org.ovirt.engine.core.common.businessentities >> [ERROR] >> /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/common/= src/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[15,52] >> error: cannot >> find symbol >> [ERROR] package org.ovirt.engine.core.common.businessentities >> [ERROR] >> /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/common/= src/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[16,52] >> error: cannot >> find symbol >> [ERROR] package org.ovirt.engine.core.common.businessentities >> [ERROR] >> /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/common/= src/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[17,52] >> error: cannot >> find symbol >> [ERROR] package org.ovirt.engine.core.common.businessentities >> [ERROR] >> /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/common/= src/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[18,52] >> error: cannot >> find symbol >> [ERROR] package org.ovirt.engine.core.common.businessentities >> [ERROR] >> /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/common/= src/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[19,52] >> error: cannot >> find symbol >> [ERROR] package org.ovirt.engine.core.common.businessentities >> [ERROR] >> /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/common/= src/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[20,52] >> error: cannot >> find symbol >> [ERROR] package org.ovirt.engine.core.common.businessentities >> [ERROR] >> /home/mpastern/Coding/ovirt/ovirt-engine/backend/manager/modules/common/= src/test/java/org/ovirt/engine/core/common/VdcActionUtilsTest.java:[21,52] >> error: cannot >> find symbol >> >> ... >> >> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute >> goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:testCompile >> (default-testCompile) on >> project common: Compilation failure >> at >> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExe= cutor.java:213) >> at >> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExe= cutor.java:153) >> at >> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExe= cutor.java:145) >> at >> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.build= Project(LifecycleModuleBuilder.java:84) >> at >> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.build= Project(LifecycleModuleBuilder.java:59) >> at >> org.apache.maven.lifecycle.internal.LifecycleStarter.singleThrea= dedBuild(LifecycleStarter.java:183) >> at >> org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Lif= ecycleStarter.java:161) >> at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) >> at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) >> at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) >> at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) >> at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessor= Impl.java:57) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethod= AccessorImpl.java:43) >> at java.lang.reflect.Method.invoke(Method.java:606) >> at >> org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced= (Launcher.java:290) >> at >> org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launche= r.java:230) >> at >> org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCo= de(Launcher.java:414) >> at >> org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.= java:357) >> Caused by: org.apache.maven.plugin.CompilationFailureException: Compilat= ion >> failure >> at >> org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCom= pilerMojo.java:656) >> at >> org.apache.maven.plugin.TestCompilerMojo.execute(TestCompilerMoj= o.java:161) >> at >> org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(De= faultBuildPluginManager.java:101) >> at >> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExe= cutor.java:209) >> ... 19 more >> >> >> -- >> >> Michael Pasternak >> RedHat, ENG-Virtualization R&D >> _______________________________________________ >> Engine-devel mailing list >> Engine-devel(a)ovirt.org >> http://lists.ovirt.org/mailman/listinfo/engine-devel >> -- = Michael Pasternak RedHat, ENG-Virtualization R&D --===============1030916550431954410==-- From kmayilsa at redhat.com Mon Dec 9 06:52:56 2013 Content-Type: multipart/mixed; boundary="===============2946115283974866461==" MIME-Version: 1.0 From: Kanagaraj To: devel at ovirt.org Subject: [Engine-devel] make is failing in ovirt-engine master Date: Mon, 09 Dec 2013 17:22:50 +0530 Message-ID: <52A5AF12.5080501@redhat.com> --===============2946115283974866461== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, make clean install-dev PREFIX=3D"$HOME/ovirt-engine" is failing with = following error on master branch. if [ "1" !=3D 0 ]; then \ build/python-check.sh; \ fi packaging/setup/ovirt_engine_setup/database.py:365:80: E501 line too = long (82 > 79 characters) make[1]: *** [python-validation] Error 1 make[1]: Leaving directory `/home/kanagaraj/workspace/ovirt-engine' make: *** [all-dev] Error 2 Can someone please fix this? Thanks, Kanagaraj --===============2946115283974866461==-- From alonbl at redhat.com Mon Dec 9 06:57:39 2013 Content-Type: multipart/mixed; boundary="===============2343962150949805243==" MIME-Version: 1.0 From: Alon Bar-Lev To: devel at ovirt.org Subject: Re: [Engine-devel] make is failing in ovirt-engine master Date: Mon, 09 Dec 2013 06:57:38 -0500 Message-ID: <992051532.23934018.1386590258861.JavaMail.root@redhat.com> In-Reply-To: 52A5AF12.5080501@redhat.com --===============2343962150949805243== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable http://gerrit.ovirt.org/#/c/22188/ ----- Original Message ----- > From: "Kanagaraj" > To: "engine-devel" > Sent: Monday, December 9, 2013 1:52:50 PM > Subject: [Engine-devel] make is failing in ovirt-engine master > = > Hi, > = > make clean install-dev PREFIX=3D"$HOME/ovirt-engine" is failing with > following error on master branch. > = > if [ "1" !=3D 0 ]; then \ > build/python-check.sh; \ > fi > packaging/setup/ovirt_engine_setup/database.py:365:80: E501 line too > long (82 > 79 characters) > make[1]: *** [python-validation] Error 1 > make[1]: Leaving directory `/home/kanagaraj/workspace/ovirt-engine' > make: *** [all-dev] Error 2 > = > Can someone please fix this? > = > Thanks, > Kanagaraj > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============2343962150949805243==-- From sbonazzo at redhat.com Mon Dec 9 09:01:52 2013 Content-Type: multipart/mixed; boundary="===============8382726042268963201==" MIME-Version: 1.0 From: Sandro Bonazzola To: devel at ovirt.org Subject: [Engine-devel] Setting cluster CPU Date: Mon, 09 Dec 2013 15:01:47 +0100 Message-ID: <52A5CD4B.1000806@redhat.com> --===============8382726042268963201== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, I'm trying to set the cluster CPU type while adding the first host to the D= efault cluster. I know how to set the CPU type on a new cluster, since I'll do that in AIO = plugin. But I'm not sure to understand how to set the CPU on an existing cluster. Should it be enough to specify cpu arg while adding the host to the cluster? (before adding an host, cpu is None on the cluster) Because I'm trying to do that without success (obtaining a sandybridge clus= ter while specifying westmere cpu). Michael, can you take a look at http://gerrit.ovirt.org/22129 and advise? -- = Sandro Bonazzola Better technology. Faster innovation. Powered by community collaboration. See how it works at redhat.com --===============8382726042268963201==-- From emesika at redhat.com Mon Dec 9 10:21:01 2013 Content-Type: multipart/mixed; boundary="===============2288322457601960109==" MIME-Version: 1.0 From: Eli Mesika To: devel at ovirt.org Subject: Re: [Engine-devel] make is failing in ovirt-engine master Date: Mon, 09 Dec 2013 10:21:00 -0500 Message-ID: <429386882.37165287.1386602460634.JavaMail.root@redhat.com> In-Reply-To: 52A5AF12.5080501@redhat.com --===============2288322457601960109== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Kanagaraj" > To: "engine-devel" > Sent: Monday, December 9, 2013 1:52:50 PM > Subject: [Engine-devel] make is failing in ovirt-engine master > = > Hi, > = > make clean install-dev PREFIX=3D"$HOME/ovirt-engine" is failing with > following error on master branch. > = > if [ "1" !=3D 0 ]; then \ > build/python-check.sh; \ > fi > packaging/setup/ovirt_engine_setup/database.py:365:80: E501 line too > long (82 > 79 characters) > make[1]: *** [python-validation] Error 1 > make[1]: Leaving directory `/home/kanagaraj/workspace/ovirt-engine' > make: *** [all-dev] Error 2 > = > Can someone please fix this? merged , please take latest = > = > Thanks, > Kanagaraj > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============2288322457601960109==-- From michal.skrivanek at redhat.com Mon Dec 9 10:50:55 2013 Content-Type: multipart/mixed; boundary="===============2606507041978893664==" MIME-Version: 1.0 From: Michal Skrivanek To: devel at ovirt.org Subject: Re: [Engine-devel] Setting cluster CPU Date: Mon, 09 Dec 2013 17:50:49 +0200 Message-ID: <44A1E27A-9973-4D4F-B9D7-03C1DAF7161B@redhat.com> In-Reply-To: 52A5CD4B.1000806@redhat.com --===============2606507041978893664== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On Dec 9, 2013, at 16:01 , Sandro Bonazzola wrote: > Hi, > I'm trying to set the cluster CPU type while adding the first host to the= Default cluster. > = > I know how to set the CPU type on a new cluster, since I'll do that in AI= O plugin. > But I'm not sure to understand how to set the CPU on an existing cluster. > = > Should it be enough to specify cpu arg while adding the host to the clust= er? > (before adding an host, cpu is None on the cluster) > Because I'm trying to do that without success (obtaining a sandybridge cl= uster while specifying westmere cpu). The CPU should be set from the first host if None. That is needed for the P= PC support. Roy, we talked about it recently, where are we with this patch. Thanks, michal > = > Michael, can you take a look at http://gerrit.ovirt.org/22129 and advise? > = > = > -- = > Sandro Bonazzola > Better technology. Faster innovation. Powered by community collaboration. > See how it works at redhat.com > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel --===============2606507041978893664==-- From ovedo at redhat.com Mon Dec 9 11:58:29 2013 Content-Type: multipart/mixed; boundary="===============0107581419246887198==" MIME-Version: 1.0 From: Oved Ourfalli To: devel at ovirt.org Subject: Re: [Engine-devel] Setting cluster CPU Date: Mon, 09 Dec 2013 11:58:29 -0500 Message-ID: <1421132832.38152228.1386608309092.JavaMail.root@redhat.com> In-Reply-To: 44A1E27A-9973-4D4F-B9D7-03C1DAF7161B@redhat.com --===============0107581419246887198== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Michal Skrivanek" > To: "Sandro Bonazzola" , "Roy Golan" > Cc: "engine-devel" > Sent: Monday, December 9, 2013 5:50:49 PM > Subject: Re: [Engine-devel] Setting cluster CPU > = > = > On Dec 9, 2013, at 16:01 , Sandro Bonazzola wrote: > = > > Hi, > > I'm trying to set the cluster CPU type while adding the first host to t= he > > Default cluster. > > = > > I know how to set the CPU type on a new cluster, since I'll do that in = AIO > > plugin. > > But I'm not sure to understand how to set the CPU on an existing cluste= r. > > = > > Should it be enough to specify cpu arg while adding the host to the > > cluster? > > (before adding an host, cpu is None on the cluster) > > Because I'm trying to do that without success (obtaining a sandybridge > > cluster while specifying westmere cpu). > = > The CPU should be set from the first host if None. That is needed for the= PPC > support. Roy, we talked about it recently, where are we with this patch. > = We already support modifying the CPU level of an existing cluster. If chang= ing it to a higher level then we just change it. If changing it to a lower level, and there are running VMs on the cluster, = then we warn the user that some VMs might not be migrate-able, as we added = a scheduling filter to filter out hosts with improper CPU level. Unless I'm missing something, that covers the use-case, isn't it? > Thanks, > michal > = > > = > > Michael, can you take a look at http://gerrit.ovirt.org/22129 and advis= e? > > = > > = > > -- > > Sandro Bonazzola > > Better technology. Faster innovation. Powered by community collaboratio= n. > > See how it works at redhat.com > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============0107581419246887198==-- From michal.skrivanek at redhat.com Mon Dec 9 13:37:01 2013 Content-Type: multipart/mixed; boundary="===============1698617920577821945==" MIME-Version: 1.0 From: Michal Skrivanek To: devel at ovirt.org Subject: Re: [Engine-devel] Setting cluster CPU Date: Mon, 09 Dec 2013 13:37:00 -0500 Message-ID: <211CC433-A88D-4C6B-A851-E3A8443DC49B@redhat.com> In-Reply-To: 1421132832.38152228.1386608309092.JavaMail.root@redhat.com --===============1698617920577821945== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable > On 09 Dec 2013, at 18:58, Oved Ourfalli wrote: > = > = > = > ----- Original Message ----- >> From: "Michal Skrivanek" >> To: "Sandro Bonazzola" , "Roy Golan" >> Cc: "engine-devel" >> Sent: Monday, December 9, 2013 5:50:49 PM >> Subject: Re: [Engine-devel] Setting cluster CPU >> = >> = >>> On Dec 9, 2013, at 16:01 , Sandro Bonazzola wro= te: >>> = >>> Hi, >>> I'm trying to set the cluster CPU type while adding the first host to t= he >>> Default cluster. >>> = >>> I know how to set the CPU type on a new cluster, since I'll do that in = AIO >>> plugin. >>> But I'm not sure to understand how to set the CPU on an existing cluste= r. >>> = >>> Should it be enough to specify cpu arg while adding the host to the >>> cluster? >>> (before adding an host, cpu is None on the cluster) >>> Because I'm trying to do that without success (obtaining a sandybridge >>> cluster while specifying westmere cpu). >> = >> The CPU should be set from the first host if None. That is needed for th= e PPC >> support. Roy, we talked about it recently, where are we with this patch. > = > We already support modifying the CPU level of an existing cluster. If cha= nging it to a higher level then we just change it. > If changing it to a lower level, and there are running VMs on the cluster= , then we warn the user that some VMs might not be migrate-able, as we adde= d a scheduling filter to filter out hosts with improper CPU level. > = > Unless I'm missing something, that covers the use-case, isn't it? Not sure. I thought this is None to something, where it should work automat= ically without specifying anything. Just add an operational host > = >> Thanks, >> michal >> = >>> = >>> Michael, can you take a look at http://gerrit.ovirt.org/22129 and advis= e? >>> = >>> = >>> -- >>> Sandro Bonazzola >>> Better technology. Faster innovation. Powered by community collaboratio= n. >>> See how it works at redhat.com >>> _______________________________________________ >>> Engine-devel mailing list >>> Engine-devel(a)ovirt.org >>> http://lists.ovirt.org/mailman/listinfo/engine-devel >> = >> _______________________________________________ >> Engine-devel mailing list >> Engine-devel(a)ovirt.org >> http://lists.ovirt.org/mailman/listinfo/engine-devel >>=20 --===============1698617920577821945==-- From sbonazzo at redhat.com Tue Dec 10 02:12:17 2013 Content-Type: multipart/mixed; boundary="===============2487027223196614362==" MIME-Version: 1.0 From: Sandro Bonazzola To: devel at ovirt.org Subject: Re: [Engine-devel] Setting cluster CPU Date: Tue, 10 Dec 2013 08:12:14 +0100 Message-ID: <52A6BECE.7030608@redhat.com> In-Reply-To: 211CC433-A88D-4C6B-A851-E3A8443DC49B@redhat.com --===============2487027223196614362== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Il 09/12/2013 19:37, Michal Skrivanek ha scritto: > = > = >> On 09 Dec 2013, at 18:58, Oved Ourfalli wrote: >> >> >> >> ----- Original Message ----- >>> From: "Michal Skrivanek" >>> To: "Sandro Bonazzola" , "Roy Golan" >>> Cc: "engine-devel" >>> Sent: Monday, December 9, 2013 5:50:49 PM >>> Subject: Re: [Engine-devel] Setting cluster CPU >>> >>> >>>> On Dec 9, 2013, at 16:01 , Sandro Bonazzola wr= ote: >>>> >>>> Hi, >>>> I'm trying to set the cluster CPU type while adding the first host to = the >>>> Default cluster. >>>> >>>> I know how to set the CPU type on a new cluster, since I'll do that in= AIO >>>> plugin. >>>> But I'm not sure to understand how to set the CPU on an existing clust= er. >>>> >>>> Should it be enough to specify cpu arg while adding the host to the >>>> cluster? >>>> (before adding an host, cpu is None on the cluster) >>>> Because I'm trying to do that without success (obtaining a sandybridge >>>> cluster while specifying westmere cpu). >>> >>> The CPU should be set from the first host if None. That is needed for t= he PPC >>> support. Roy, we talked about it recently, where are we with this patch. >> >> We already support modifying the CPU level of an existing cluster. If ch= anging it to a higher level then we just change it. >> If changing it to a lower level, and there are running VMs on the cluste= r, then we warn the user that some VMs might not be migrate-able, as we add= ed a scheduling filter to filter out hosts with improper CPU level. >> >> Unless I'm missing something, that covers the use-case, isn't it? > = > Not sure. I thought this is None to something, where it should work autom= atically without specifying anything. Just add an operational host Well, here the issue is that while deploying hosted-engine VM, I'm on a San= dyBridge host, with 1 VM running on it (the hosted engine VM). That VM has been created with CPU model Westmere to be able to migrate it t= o other hosts Westmere compatible. But the Default cluster is automatically set to SandyBridge when I add the = host also if I specify Westmere as CPU family in Host parameter. We may be able to set manually the CPU level later somehow, but since we've= already asked the user about the CPU level I think we should avoid to ask the user to change it again later. See Bug 1034821 - Hosted-setup asks for = CPU type but it doesn't set cluster to that CPU Level > = >> >>> Thanks, >>> michal >>> >>>> >>>> Michael, can you take a look at http://gerrit.ovirt.org/22129 and advi= se? >>>> >>>> >>>> -- >>>> Sandro Bonazzola >>>> Better technology. Faster innovation. Powered by community collaborati= on. >>>> See how it works at redhat.com >>>> _______________________________________________ >>>> Engine-devel mailing list >>>> Engine-devel(a)ovirt.org >>>> http://lists.ovirt.org/mailman/listinfo/engine-devel >>> >>> _______________________________________________ >>> Engine-devel mailing list >>> Engine-devel(a)ovirt.org >>> http://lists.ovirt.org/mailman/listinfo/engine-devel >>> -- = Sandro Bonazzola Better technology. Faster innovation. Powered by community collaboration. See how it works at redhat.com --===============2487027223196614362==-- From ovedo at redhat.com Tue Dec 10 02:14:45 2013 Content-Type: multipart/mixed; boundary="===============4583006957209376880==" MIME-Version: 1.0 From: Oved Ourfalli To: devel at ovirt.org Subject: Re: [Engine-devel] Setting cluster CPU Date: Tue, 10 Dec 2013 02:14:44 -0500 Message-ID: <1947325153.38937830.1386659684527.JavaMail.root@redhat.com> In-Reply-To: 52A6BECE.7030608@redhat.com --===============4583006957209376880== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Sandro Bonazzola" > To: "Michal Skrivanek" , "Oved Ourfalli" <= ovedo(a)redhat.com>, "Roy Golan" > > Cc: "engine-devel" > Sent: Tuesday, December 10, 2013 9:12:14 AM > Subject: Re: [Engine-devel] Setting cluster CPU > = > Il 09/12/2013 19:37, Michal Skrivanek ha scritto: > > = > > = > >> On 09 Dec 2013, at 18:58, Oved Ourfalli wrote: > >> > >> > >> > >> ----- Original Message ----- > >>> From: "Michal Skrivanek" > >>> To: "Sandro Bonazzola" , "Roy Golan" > >>> > >>> Cc: "engine-devel" > >>> Sent: Monday, December 9, 2013 5:50:49 PM > >>> Subject: Re: [Engine-devel] Setting cluster CPU > >>> > >>> > >>>> On Dec 9, 2013, at 16:01 , Sandro Bonazzola = wrote: > >>>> > >>>> Hi, > >>>> I'm trying to set the cluster CPU type while adding the first host to > >>>> the > >>>> Default cluster. > >>>> > >>>> I know how to set the CPU type on a new cluster, since I'll do that = in > >>>> AIO > >>>> plugin. > >>>> But I'm not sure to understand how to set the CPU on an existing > >>>> cluster. > >>>> > >>>> Should it be enough to specify cpu arg while adding the host to the > >>>> cluster? > >>>> (before adding an host, cpu is None on the cluster) > >>>> Because I'm trying to do that without success (obtaining a sandybrid= ge > >>>> cluster while specifying westmere cpu). > >>> > >>> The CPU should be set from the first host if None. That is needed for= the > >>> PPC > >>> support. Roy, we talked about it recently, where are we with this pat= ch. > >> > >> We already support modifying the CPU level of an existing cluster. If > >> changing it to a higher level then we just change it. > >> If changing it to a lower level, and there are running VMs on the clus= ter, > >> then we warn the user that some VMs might not be migrate-able, as we > >> added a scheduling filter to filter out hosts with improper CPU level. > >> > >> Unless I'm missing something, that covers the use-case, isn't it? > > = > > Not sure. I thought this is None to something, where it should work > > automatically without specifying anything. Just add an operational host > = > Well, here the issue is that while deploying hosted-engine VM, I'm on a > SandyBridge host, with 1 VM running on it (the hosted engine VM). > That VM has been created with CPU model Westmere to be able to migrate it= to > other hosts Westmere compatible. > But the Default cluster is automatically set to SandyBridge when I add the > host also if I specify Westmere as CPU family in Host parameter. > We may be able to set manually the CPU level later somehow, but since we'= ve > already asked the user about the CPU level I think we should avoid to ask > the user to change it again later. See Bug 1034821 - Hosted-setup asks for > CPU type but it doesn't set cluster to that CPU Level > = You can set the CPU level through the SDK, after you add the host (didn't c= heck that, but see no reason it won't work). > = > > = > >> > >>> Thanks, > >>> michal > >>> > >>>> > >>>> Michael, can you take a look at http://gerrit.ovirt.org/22129 and > >>>> advise? > >>>> > >>>> > >>>> -- > >>>> Sandro Bonazzola > >>>> Better technology. Faster innovation. Powered by community > >>>> collaboration. > >>>> See how it works at redhat.com > >>>> _______________________________________________ > >>>> Engine-devel mailing list > >>>> Engine-devel(a)ovirt.org > >>>> http://lists.ovirt.org/mailman/listinfo/engine-devel > >>> > >>> _______________________________________________ > >>> Engine-devel mailing list > >>> Engine-devel(a)ovirt.org > >>> http://lists.ovirt.org/mailman/listinfo/engine-devel > >>> > = > = > -- > Sandro Bonazzola > Better technology. Faster innovation. Powered by community collaboration. > See how it works at redhat.com > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============4583006957209376880==-- From S.Kieske at mittwald.de Tue Dec 10 04:14:19 2013 Content-Type: multipart/mixed; boundary="===============8214312518681428859==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: [Engine-devel] [Bug] Small Typo in api.xsd Date: Tue, 10 Dec 2013 09:09:46 +0000 Message-ID: <52A6DB14.5030803@mittwald.de> --===============8214312518681428859== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, I just was reading through the new cloud-init api integration and found a small typo in: backend/manager/modules/restapi/interface/definition/src/main/resources/api= .xsd Line 606: It is: " " but should be " ", I guess. -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============8214312518681428859==-- From S.Kieske at mittwald.de Tue Dec 10 04:28:08 2013 Content-Type: multipart/mixed; boundary="===============8548576264216643231==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: Re: [Engine-devel] [Bug] Small Typo in api.xsd Date: Tue, 10 Dec 2013 09:24:53 +0000 Message-ID: <52A6DEA0.3090402@mittwald.de> In-Reply-To: 52A6DB14.5030803@mittwald.de --===============8548576264216643231== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable I forgot: this was in engine-3.3.2 branch may be as well in master (didn't check that). Am 10.12.2013 10:09, schrieb Sven Kieske: > Hi, > = > I just was reading through the new cloud-init api integration and found > a small typo in: > backend/manager/modules/restapi/interface/definition/src/main/resources/a= pi.xsd > = > Line 606: > It is: " " but should be > " ", I guess. > = -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============8548576264216643231==-- From emesika at redhat.com Tue Dec 10 04:35:33 2013 Content-Type: multipart/mixed; boundary="===============7413955138469585828==" MIME-Version: 1.0 From: Eli Mesika To: devel at ovirt.org Subject: Re: [Engine-devel] [Bug] Small Typo in api.xsd Date: Tue, 10 Dec 2013 04:35:28 -0500 Message-ID: <1136847585.37538866.1386668128281.JavaMail.root@redhat.com> In-Reply-To: 52A6DB14.5030803@mittwald.de --===============7413955138469585828== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Sven Kieske" > To: engine-devel(a)ovirt.org > Sent: Tuesday, December 10, 2013 11:09:46 AM > Subject: [Engine-devel] [Bug] Small Typo in api.xsd > = > Hi, > = > I just was reading through the new cloud-init api integration and found > a small typo in: > backend/manager/modules/restapi/interface/definition/src/main/resources/a= pi.xsd > = > Line 606: > It is: " " but should be > " ", I guess. Yes, thanks for reporting that I had sent a patch fixing that : http://gerrit.ovirt.org/#/c/22226/ > = > -- > Mit freundlichen Gr=C3=BC=C3=9Fen / Regards > = > Sven Kieske > = > Systemadministrator > Mittwald CM Service GmbH & Co. KG > K=C3=B6nigsberger Stra=C3=9Fe 6 > 32339 Espelkamp > T: +49-5772-293-100 > F: +49-5772-293-333 > https://www.mittwald.de > Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer > St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen > Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oey= nhausen > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============7413955138469585828==-- From emesika at redhat.com Tue Dec 10 09:30:21 2013 Content-Type: multipart/mixed; boundary="===============2392103407956839870==" MIME-Version: 1.0 From: Eli Mesika To: devel at ovirt.org Subject: [Engine-devel] Problems debugging client code Date: Tue, 10 Dec 2013 09:30:16 -0500 Message-ID: <511605606.37663551.1386685816918.JavaMail.root@redhat.com> In-Reply-To: 1330910277.37663054.1386685701002.JavaMail.root@redhat.com --===============2392103407956839870== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Debugging client code I got this when trying to connect from Google Chrom : ******************************************************** Oops! Google Chrome could not connect to 127.0.0.1:8080 Try reloading the page ******************************************************** any ideas ??? I am following instructions from README.developer and using f19 with google= -chrome-stable-31.0.1650.63-1.x86_64 Thanks = Eli --===============2392103407956839870==-- From awels at redhat.com Tue Dec 10 09:37:18 2013 Content-Type: multipart/mixed; boundary="===============3261269548716165433==" MIME-Version: 1.0 From: Alexander Wels To: devel at ovirt.org Subject: Re: [Engine-devel] Problems debugging client code Date: Tue, 10 Dec 2013 09:37:16 -0500 Message-ID: <2783210.cTXeGUkJVu@awels> In-Reply-To: 511605606.37663551.1386685816918.JavaMail.root@redhat.com --===============3261269548716165433== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, 1. Is your engine runnning? [1] 2. Did you also start separately the debug mode [2] (This is debugging the = webadmin) 3. Did you go to the right URL [3] 4. Make when you compile you compile for the correct browser. I usually = compile for FF and chrome [4] [1] $HOME/ovirt-engine/share/ovirt-engine/services/ovirt-engine/ovirt- engine.py start [2] make gwt-debug DEBUG_MODULE=3Dwebadmin DEV_EXTRA_BUILD_FLAGS_GWT_DEFAUL= TS=3D"- D gwt.userAgent=3Dgecko1_8,safari" [3] http://127.0.0.1:8080/ovirt-engine/webadmin/?gwt.codesvr=3D127.0.0.1:99= 97 [4] make clean install-dev PREFIX=3D$HOME/ovirt-engine BUILD_UT=3D0 BUILD_G= WT=3D1 = DEV_EXTRA_BUILD_FLAGS_GWT_DEFAULTS=3D"-D gwt.userAgent=3Dgecko1_8,safari" On Tuesday, December 10, 2013 09:30:16 AM Eli Mesika wrote: > Hi > = > = > Debugging client code I got this when trying to connect from Google Chrom= : > = > ******************************************************** > Oops! Google Chrome could not connect to 127.0.0.1:8080 > Try reloading the page > ******************************************************** > = > any ideas ??? > = > I am following instructions from README.developer and using f19 with > google-chrome-stable-31.0.1650.63-1.x86_64 > = > Thanks > = > Eli > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel --===============3261269548716165433==-- From emesika at redhat.com Tue Dec 10 10:18:52 2013 Content-Type: multipart/mixed; boundary="===============3719983443771099854==" MIME-Version: 1.0 From: Eli Mesika To: devel at ovirt.org Subject: Re: [Engine-devel] Problems debugging client code Date: Tue, 10 Dec 2013 10:18:51 -0500 Message-ID: <2100567012.37698348.1386688731052.JavaMail.root@redhat.com> In-Reply-To: 2783210.cTXeGUkJVu@awels --===============3719983443771099854== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable That worked !!! Thanks :-) ----- Original Message ----- > From: "Alexander Wels" > To: engine-devel(a)ovirt.org > Cc: "Eli Mesika" , "Gilad Chaplik" , "Daniel Erez" > Sent: Tuesday, December 10, 2013 4:37:16 PM > Subject: Re: [Engine-devel] Problems debugging client code > = > Hi, > = > 1. Is your engine runnning? [1] > 2. Did you also start separately the debug mode [2] (This is debugging the > webadmin) > 3. Did you go to the right URL [3] > 4. Make when you compile you compile for the correct browser. I usually > compile for FF and chrome [4] > = > [1] $HOME/ovirt-engine/share/ovirt-engine/services/ovirt-engine/ovirt- > engine.py start > = > [2] make gwt-debug DEBUG_MODULE=3Dwebadmin > DEV_EXTRA_BUILD_FLAGS_GWT_DEFAULTS=3D"- > D gwt.userAgent=3Dgecko1_8,safari" > = > [3] http://127.0.0.1:8080/ovirt-engine/webadmin/?gwt.codesvr=3D127.0.0.1:= 9997 > = > [4] make clean install-dev PREFIX=3D$HOME/ovirt-engine BUILD_UT=3D0 BUILD= _GWT=3D1 > DEV_EXTRA_BUILD_FLAGS_GWT_DEFAULTS=3D"-D gwt.userAgent=3Dgecko1_8,safari" > = > On Tuesday, December 10, 2013 09:30:16 AM Eli Mesika wrote: > > Hi > > = > > = > > Debugging client code I got this when trying to connect from Google Chr= om : > > = > > ******************************************************** > > Oops! Google Chrome could not connect to 127.0.0.1:8080 > > Try reloading the page > > ******************************************************** > > = > > any ideas ??? > > = > > I am following instructions from README.developer and using f19 with > > google-chrome-stable-31.0.1650.63-1.x86_64 > > = > > Thanks > > = > > Eli > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > = >=20 --===============3719983443771099854==-- From obasan at redhat.com Tue Dec 10 11:28:52 2013 Content-Type: multipart/mixed; boundary="===============7489451131501731273==" MIME-Version: 1.0 From: Ohad Basan To: devel at ovirt.org Subject: [Engine-devel] daotest failure Date: Tue, 10 Dec 2013 11:28:52 -0500 Message-ID: <1581093273.27805204.1386692931995.JavaMail.root@redhat.com> --===============7489451131501731273== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hello I've performed some changed to the daotest jobs on jenkins 1. we were created and populating the db with user "postgres". now we're do= ing it with engine as we should 2. structure of the job was changed according to readme.DEVELOPER = since these changes I experience some test failure which I suspect that are= true failures. could you please look? http://jenkins.ovirt.org/job/ovirt_engine_dao_unit_tests/5400/console thanks, Ohad --===============7489451131501731273==-- From michal.skrivanek at redhat.com Tue Dec 10 13:01:18 2013 Content-Type: multipart/mixed; boundary="===============5080471384831317628==" MIME-Version: 1.0 From: Michal Skrivanek To: devel at ovirt.org Subject: Re: [Engine-devel] Setting cluster CPU Date: Tue, 10 Dec 2013 20:01:08 +0200 Message-ID: <8FE86632-29E8-4458-BE05-2138B1D8354E@redhat.com> In-Reply-To: 1947325153.38937830.1386659684527.JavaMail.root@redhat.com --===============5080471384831317628== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On Dec 10, 2013, at 09:14 , Oved Ourfalli wrote: > = > = > ----- Original Message ----- >> From: "Sandro Bonazzola" >> To: "Michal Skrivanek" , "Oved Ourfalli" = , "Roy Golan" >> >> Cc: "engine-devel" >> Sent: Tuesday, December 10, 2013 9:12:14 AM >> Subject: Re: [Engine-devel] Setting cluster CPU >> = >> Il 09/12/2013 19:37, Michal Skrivanek ha scritto: >>> = >>> = >>>> On 09 Dec 2013, at 18:58, Oved Ourfalli wrote: >>>> = >>>> = >>>> = >>>> ----- Original Message ----- >>>>> From: "Michal Skrivanek" >>>>> To: "Sandro Bonazzola" , "Roy Golan" >>>>> >>>>> Cc: "engine-devel" >>>>> Sent: Monday, December 9, 2013 5:50:49 PM >>>>> Subject: Re: [Engine-devel] Setting cluster CPU >>>>> = >>>>> = >>>>>> On Dec 9, 2013, at 16:01 , Sandro Bonazzola = wrote: >>>>>> = >>>>>> Hi, >>>>>> I'm trying to set the cluster CPU type while adding the first host to >>>>>> the >>>>>> Default cluster. >>>>>> = >>>>>> I know how to set the CPU type on a new cluster, since I'll do that = in >>>>>> AIO >>>>>> plugin. >>>>>> But I'm not sure to understand how to set the CPU on an existing >>>>>> cluster. >>>>>> = >>>>>> Should it be enough to specify cpu arg while adding the host to the >>>>>> cluster? >>>>>> (before adding an host, cpu is None on the cluster) >>>>>> Because I'm trying to do that without success (obtaining a sandybrid= ge >>>>>> cluster while specifying westmere cpu). >>>>> = >>>>> The CPU should be set from the first host if None. That is needed for= the >>>>> PPC >>>>> support. Roy, we talked about it recently, where are we with this pat= ch. >>>> = >>>> We already support modifying the CPU level of an existing cluster. If >>>> changing it to a higher level then we just change it. >>>> If changing it to a lower level, and there are running VMs on the clus= ter, >>>> then we warn the user that some VMs might not be migrate-able, as we >>>> added a scheduling filter to filter out hosts with improper CPU level. >>>> = >>>> Unless I'm missing something, that covers the use-case, isn't it? >>> = >>> Not sure. I thought this is None to something, where it should work >>> automatically without specifying anything. Just add an operational host >> = >> Well, here the issue is that while deploying hosted-engine VM, I'm on a >> SandyBridge host, with 1 VM running on it (the hosted engine VM). >> That VM has been created with CPU model Westmere to be able to migrate i= t to >> other hosts Westmere compatible. >> But the Default cluster is automatically set to SandyBridge when I add t= he because it's created with None in the first place, and then set by the firs= t host. If you'd create it with Westmere initially the joining host would n= ot change it IMHO the setting should be done during the installation not via calling SDK= on already created empty cluster but directly in the db when the db is dep= loyed. Unless I'm missing the sequence of deployment. = >> host also if I specify Westmere as CPU family in Host parameter. >> We may be able to set manually the CPU level later somehow, but since we= 've >> already asked the user about the CPU level I think we should avoid to ask >> the user to change it again later. See Bug 1034821 - Hosted-setup asks f= or >> CPU type but it doesn't set cluster to that CPU Level >> = > = > You can set the CPU level through the SDK, after you add the host (didn't= check that, but see no reason it won't work). why so late in the process? > = >> = >>> = >>>> = >>>>> Thanks, >>>>> michal >>>>> = >>>>>> = >>>>>> Michael, can you take a look at http://gerrit.ovirt.org/22129 and >>>>>> advise? >>>>>> = >>>>>> = >>>>>> -- >>>>>> Sandro Bonazzola >>>>>> Better technology. Faster innovation. Powered by community >>>>>> collaboration. >>>>>> See how it works at redhat.com >>>>>> _______________________________________________ >>>>>> Engine-devel mailing list >>>>>> Engine-devel(a)ovirt.org >>>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel >>>>> = >>>>> _______________________________________________ >>>>> Engine-devel mailing list >>>>> Engine-devel(a)ovirt.org >>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel >>>>> = >> = >> = >> -- >> Sandro Bonazzola >> Better technology. Faster innovation. Powered by community collaboration. >> See how it works at redhat.com >> _______________________________________________ >> Engine-devel mailing list >> Engine-devel(a)ovirt.org >> http://lists.ovirt.org/mailman/listinfo/engine-devel >> = --===============5080471384831317628==-- From yzaslavs at redhat.com Tue Dec 10 20:42:04 2013 Content-Type: multipart/mixed; boundary="===============4431045741995035844==" MIME-Version: 1.0 From: Yair Zaslavsky To: devel at ovirt.org Subject: Re: [Engine-devel] daotest failure Date: Tue, 10 Dec 2013 20:42:04 -0500 Message-ID: <1177802687.14789464.1386726124119.JavaMail.root@redhat.com> In-Reply-To: 1581093273.27805204.1386692931995.JavaMail.root@redhat.com --===============4431045741995035844== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Ohad Basan" > To: engine-devel(a)ovirt.org > Cc: "Yair Zaslavsky" > Sent: Tuesday, December 10, 2013 6:28:52 PM > Subject: daotest failure > = > Hello > = > I've performed some changed to the daotest jobs on jenkins > 1. we were created and populating the db with user "postgres". now we're > doing it with engine as we should > 2. structure of the job was changed according to readme.DEVELOPER > = > since these changes I experience some test failure which I suspect that a= re > true failures. > could you please look? > http://jenkins.ovirt.org/job/ovirt_engine_dao_unit_tests/5400/console > = > thanks, > = > Ohad > = 1. = Hi, I am using the commit hash of a992aed8e7435b804b52b02e7192265f73de9c40 = as stated at the job, and managed to run tests, according to the way it is = ran in the job. I tried sshing to the machine that ran the build but with no luck. Can you please provide the content of the surefire reports directory - see = the following line from the console for the correct path - /home/jenkins/workspace/ovirt_engine_dao_unit_tests/backend/manager/modules= /common/target/surefire-reports In addition, as you can see , the failures are not at DAL tests, but at com= mon unit tests, I tried running again the unit tests of common in a separat= e way - and it worked for me. Yair --===============4431045741995035844==-- From ovedo at redhat.com Wed Dec 11 01:18:24 2013 Content-Type: multipart/mixed; boundary="===============4793181749372332823==" MIME-Version: 1.0 From: Oved Ourfalli To: devel at ovirt.org Subject: Re: [Engine-devel] Setting cluster CPU Date: Wed, 11 Dec 2013 01:18:23 -0500 Message-ID: <1161617116.39883433.1386742703725.JavaMail.root@redhat.com> In-Reply-To: 8FE86632-29E8-4458-BE05-2138B1D8354E@redhat.com --===============4793181749372332823== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Michal Skrivanek" > To: "Oved Ourfalli" , "Sandro Bonazzola" > Cc: "Roy Golan" , "engine-devel" > Sent: Tuesday, December 10, 2013 8:01:08 PM > Subject: Re: [Engine-devel] Setting cluster CPU > = > = > On Dec 10, 2013, at 09:14 , Oved Ourfalli wrote: > = > > = > > = > > ----- Original Message ----- > >> From: "Sandro Bonazzola" > >> To: "Michal Skrivanek" , "Oved Ourfalli" > >> , "Roy Golan" > >> > >> Cc: "engine-devel" > >> Sent: Tuesday, December 10, 2013 9:12:14 AM > >> Subject: Re: [Engine-devel] Setting cluster CPU > >> = > >> Il 09/12/2013 19:37, Michal Skrivanek ha scritto: > >>> = > >>> = > >>>> On 09 Dec 2013, at 18:58, Oved Ourfalli wrote: > >>>> = > >>>> = > >>>> = > >>>> ----- Original Message ----- > >>>>> From: "Michal Skrivanek" > >>>>> To: "Sandro Bonazzola" , "Roy Golan" > >>>>> > >>>>> Cc: "engine-devel" > >>>>> Sent: Monday, December 9, 2013 5:50:49 PM > >>>>> Subject: Re: [Engine-devel] Setting cluster CPU > >>>>> = > >>>>> = > >>>>>> On Dec 9, 2013, at 16:01 , Sandro Bonazzola > >>>>>> wrote: > >>>>>> = > >>>>>> Hi, > >>>>>> I'm trying to set the cluster CPU type while adding the first host= to > >>>>>> the > >>>>>> Default cluster. > >>>>>> = > >>>>>> I know how to set the CPU type on a new cluster, since I'll do tha= t in > >>>>>> AIO > >>>>>> plugin. > >>>>>> But I'm not sure to understand how to set the CPU on an existing > >>>>>> cluster. > >>>>>> = > >>>>>> Should it be enough to specify cpu arg while adding the host to the > >>>>>> cluster? > >>>>>> (before adding an host, cpu is None on the cluster) > >>>>>> Because I'm trying to do that without success (obtaining a sandybr= idge > >>>>>> cluster while specifying westmere cpu). > >>>>> = > >>>>> The CPU should be set from the first host if None. That is needed f= or > >>>>> the > >>>>> PPC > >>>>> support. Roy, we talked about it recently, where are we with this > >>>>> patch. > >>>> = > >>>> We already support modifying the CPU level of an existing cluster. If > >>>> changing it to a higher level then we just change it. > >>>> If changing it to a lower level, and there are running VMs on the > >>>> cluster, > >>>> then we warn the user that some VMs might not be migrate-able, as we > >>>> added a scheduling filter to filter out hosts with improper CPU leve= l. > >>>> = > >>>> Unless I'm missing something, that covers the use-case, isn't it? > >>> = > >>> Not sure. I thought this is None to something, where it should work > >>> automatically without specifying anything. Just add an operational ho= st > >> = > >> Well, here the issue is that while deploying hosted-engine VM, I'm on a > >> SandyBridge host, with 1 VM running on it (the hosted engine VM). > >> That VM has been created with CPU model Westmere to be able to migrate= it > >> to > >> other hosts Westmere compatible. > >> But the Default cluster is automatically set to SandyBridge when I add= the > = > because it's created with None in the first place, and then set by the fi= rst > host. If you'd create it with Westmere initially the joining host would n= ot > change it > IMHO the setting should be done during the installation not via calling S= DK > on already created empty cluster but directly in the db when the db is > deployed. Unless I'm missing the sequence of deployment. > = The hosted engine setup doesn't access the DB, so no reason to access it if= it is possible to do that via the SDK. Didn't test that, but see no reason for it not to work. = > >> host also if I specify Westmere as CPU family in Host parameter. > >> We may be able to set manually the CPU level later somehow, but since > >> we've > >> already asked the user about the CPU level I think we should avoid to = ask > >> the user to change it again later. See Bug 1034821 - Hosted-setup asks= for > >> CPU type but it doesn't set cluster to that CPU Level > >> = > > = > > You can set the CPU level through the SDK, after you add the host (didn= 't > > check that, but see no reason it won't work). > = > why so late in the process? > = why does it matter? The setup is still running, so, imo, the order is less = relevant, as long as the result is okay. > > = > >> = > >>> = > >>>> = > >>>>> Thanks, > >>>>> michal > >>>>> = > >>>>>> = > >>>>>> Michael, can you take a look at http://gerrit.ovirt.org/22129 and > >>>>>> advise? > >>>>>> = > >>>>>> = > >>>>>> -- > >>>>>> Sandro Bonazzola > >>>>>> Better technology. Faster innovation. Powered by community > >>>>>> collaboration. > >>>>>> See how it works at redhat.com > >>>>>> _______________________________________________ > >>>>>> Engine-devel mailing list > >>>>>> Engine-devel(a)ovirt.org > >>>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel > >>>>> = > >>>>> _______________________________________________ > >>>>> Engine-devel mailing list > >>>>> Engine-devel(a)ovirt.org > >>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel > >>>>> = > >> = > >> = > >> -- > >> Sandro Bonazzola > >> Better technology. Faster innovation. Powered by community collaborati= on. > >> See how it works at redhat.com > >> _______________________________________________ > >> Engine-devel mailing list > >> Engine-devel(a)ovirt.org > >> http://lists.ovirt.org/mailman/listinfo/engine-devel > >> = > = >=20 --===============4793181749372332823==-- From michal.skrivanek at redhat.com Wed Dec 11 01:45:46 2013 Content-Type: multipart/mixed; boundary="===============7467748223229731111==" MIME-Version: 1.0 From: Michal Skrivanek To: devel at ovirt.org Subject: Re: [Engine-devel] Setting cluster CPU Date: Wed, 11 Dec 2013 08:45:41 +0200 Message-ID: <6066CF2A-7E14-4E41-B3D0-ED853582F622@redhat.com> In-Reply-To: 1161617116.39883433.1386742703725.JavaMail.root@redhat.com --===============7467748223229731111== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On Dec 11, 2013, at 08:18 , Oved Ourfalli wrote: > = > = > ----- Original Message ----- >> From: "Michal Skrivanek" >> To: "Oved Ourfalli" , "Sandro Bonazzola" >> Cc: "Roy Golan" , "engine-devel" >> Sent: Tuesday, December 10, 2013 8:01:08 PM >> Subject: Re: [Engine-devel] Setting cluster CPU >> = >> = >> On Dec 10, 2013, at 09:14 , Oved Ourfalli wrote: >> = >>> = >>> = >>> ----- Original Message ----- >>>> From: "Sandro Bonazzola" >>>> To: "Michal Skrivanek" , "Oved Ourfalli" >>>> , "Roy Golan" >>>> >>>> Cc: "engine-devel" >>>> Sent: Tuesday, December 10, 2013 9:12:14 AM >>>> Subject: Re: [Engine-devel] Setting cluster CPU >>>> = >>>> Il 09/12/2013 19:37, Michal Skrivanek ha scritto: >>>>> = >>>>> = >>>>>> On 09 Dec 2013, at 18:58, Oved Ourfalli wrote: >>>>>> = >>>>>> = >>>>>> = >>>>>> ----- Original Message ----- >>>>>>> From: "Michal Skrivanek" >>>>>>> To: "Sandro Bonazzola" , "Roy Golan" >>>>>>> >>>>>>> Cc: "engine-devel" >>>>>>> Sent: Monday, December 9, 2013 5:50:49 PM >>>>>>> Subject: Re: [Engine-devel] Setting cluster CPU >>>>>>> = >>>>>>> = >>>>>>>> On Dec 9, 2013, at 16:01 , Sandro Bonazzola >>>>>>>> wrote: >>>>>>>> = >>>>>>>> Hi, >>>>>>>> I'm trying to set the cluster CPU type while adding the first host= to >>>>>>>> the >>>>>>>> Default cluster. >>>>>>>> = >>>>>>>> I know how to set the CPU type on a new cluster, since I'll do tha= t in >>>>>>>> AIO >>>>>>>> plugin. >>>>>>>> But I'm not sure to understand how to set the CPU on an existing >>>>>>>> cluster. >>>>>>>> = >>>>>>>> Should it be enough to specify cpu arg while adding the host to the >>>>>>>> cluster? >>>>>>>> (before adding an host, cpu is None on the cluster) >>>>>>>> Because I'm trying to do that without success (obtaining a sandybr= idge >>>>>>>> cluster while specifying westmere cpu). >>>>>>> = >>>>>>> The CPU should be set from the first host if None. That is needed f= or >>>>>>> the >>>>>>> PPC >>>>>>> support. Roy, we talked about it recently, where are we with this >>>>>>> patch. >>>>>> = >>>>>> We already support modifying the CPU level of an existing cluster. If >>>>>> changing it to a higher level then we just change it. >>>>>> If changing it to a lower level, and there are running VMs on the >>>>>> cluster, >>>>>> then we warn the user that some VMs might not be migrate-able, as we >>>>>> added a scheduling filter to filter out hosts with improper CPU leve= l. >>>>>> = >>>>>> Unless I'm missing something, that covers the use-case, isn't it? >>>>> = >>>>> Not sure. I thought this is None to something, where it should work >>>>> automatically without specifying anything. Just add an operational ho= st >>>> = >>>> Well, here the issue is that while deploying hosted-engine VM, I'm on a >>>> SandyBridge host, with 1 VM running on it (the hosted engine VM). >>>> That VM has been created with CPU model Westmere to be able to migrate= it >>>> to >>>> other hosts Westmere compatible. >>>> But the Default cluster is automatically set to SandyBridge when I add= the >> = >> because it's created with None in the first place, and then set by the f= irst >> host. If you'd create it with Westmere initially the joining host would = not >> change it >> IMHO the setting should be done during the installation not via calling = SDK >> on already created empty cluster but directly in the db when the db is >> deployed. Unless I'm missing the sequence of deployment. >> = > = > The hosted engine setup doesn't access the DB, so no reason to access it = if it is possible to do that via the SDK. > Didn't test that, but see no reason for it not to work. > = >>>> host also if I specify Westmere as CPU family in Host parameter. >>>> We may be able to set manually the CPU level later somehow, but since >>>> we've >>>> already asked the user about the CPU level I think we should avoid to = ask >>>> the user to change it again later. See Bug 1034821 - Hosted-setup asks= for >>>> CPU type but it doesn't set cluster to that CPU Level >>>> = >>> = >>> You can set the CPU level through the SDK, after you add the host (didn= 't >>> check that, but see no reason it won't work). >> = >> why so late in the process? >> = > = > why does it matter? The setup is still running, so, imo, the order is les= s relevant, as long as the result is okay. depends. if hosted engine is part of the installation, it should do the mod= ifications during installation the same way as anything else, forcefully, a= nd not depend on working sdk or any other precondition if it is something you are/should be able to deploy over an existing setup = it's better via sdk... >>> = >>>> = >>>>> = >>>>>> = >>>>>>> Thanks, >>>>>>> michal >>>>>>> = >>>>>>>> = >>>>>>>> Michael, can you take a look at http://gerrit.ovirt.org/22129 and >>>>>>>> advise? >>>>>>>> = >>>>>>>> = >>>>>>>> -- >>>>>>>> Sandro Bonazzola >>>>>>>> Better technology. Faster innovation. Powered by community >>>>>>>> collaboration. >>>>>>>> See how it works at redhat.com >>>>>>>> _______________________________________________ >>>>>>>> Engine-devel mailing list >>>>>>>> Engine-devel(a)ovirt.org >>>>>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel >>>>>>> = >>>>>>> _______________________________________________ >>>>>>> Engine-devel mailing list >>>>>>> Engine-devel(a)ovirt.org >>>>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel >>>>>>> = >>>> = >>>> = >>>> -- >>>> Sandro Bonazzola >>>> Better technology. Faster innovation. Powered by community collaborati= on. >>>> See how it works at redhat.com >>>> _______________________________________________ >>>> Engine-devel mailing list >>>> Engine-devel(a)ovirt.org >>>> http://lists.ovirt.org/mailman/listinfo/engine-devel >>>> = >> = >> = --===============7467748223229731111==-- From ovedo at redhat.com Wed Dec 11 01:53:33 2013 Content-Type: multipart/mixed; boundary="===============0895283128108645745==" MIME-Version: 1.0 From: Oved Ourfalli To: devel at ovirt.org Subject: Re: [Engine-devel] Setting cluster CPU Date: Wed, 11 Dec 2013 01:53:32 -0500 Message-ID: <1844887159.39886512.1386744812543.JavaMail.root@redhat.com> In-Reply-To: 6066CF2A-7E14-4E41-B3D0-ED853582F622@redhat.com --===============0895283128108645745== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Michal Skrivanek" > To: "Oved Ourfalli" > Cc: "Sandro Bonazzola" , "Roy Golan" , "engine-devel" > > Sent: Wednesday, December 11, 2013 8:45:41 AM > Subject: Re: [Engine-devel] Setting cluster CPU > = > = > On Dec 11, 2013, at 08:18 , Oved Ourfalli wrote: > = > > = > > = > > ----- Original Message ----- > >> From: "Michal Skrivanek" > >> To: "Oved Ourfalli" , "Sandro Bonazzola" > >> > >> Cc: "Roy Golan" , "engine-devel" > >> > >> Sent: Tuesday, December 10, 2013 8:01:08 PM > >> Subject: Re: [Engine-devel] Setting cluster CPU > >> = > >> = > >> On Dec 10, 2013, at 09:14 , Oved Ourfalli wrote: > >> = > >>> = > >>> = > >>> ----- Original Message ----- > >>>> From: "Sandro Bonazzola" > >>>> To: "Michal Skrivanek" , "Oved Ourfal= li" > >>>> , "Roy Golan" > >>>> > >>>> Cc: "engine-devel" > >>>> Sent: Tuesday, December 10, 2013 9:12:14 AM > >>>> Subject: Re: [Engine-devel] Setting cluster CPU > >>>> = > >>>> Il 09/12/2013 19:37, Michal Skrivanek ha scritto: > >>>>> = > >>>>> = > >>>>>> On 09 Dec 2013, at 18:58, Oved Ourfalli wrote: > >>>>>> = > >>>>>> = > >>>>>> = > >>>>>> ----- Original Message ----- > >>>>>>> From: "Michal Skrivanek" > >>>>>>> To: "Sandro Bonazzola" , "Roy Golan" > >>>>>>> > >>>>>>> Cc: "engine-devel" > >>>>>>> Sent: Monday, December 9, 2013 5:50:49 PM > >>>>>>> Subject: Re: [Engine-devel] Setting cluster CPU > >>>>>>> = > >>>>>>> = > >>>>>>>> On Dec 9, 2013, at 16:01 , Sandro Bonazzola > >>>>>>>> wrote: > >>>>>>>> = > >>>>>>>> Hi, > >>>>>>>> I'm trying to set the cluster CPU type while adding the first ho= st > >>>>>>>> to > >>>>>>>> the > >>>>>>>> Default cluster. > >>>>>>>> = > >>>>>>>> I know how to set the CPU type on a new cluster, since I'll do t= hat > >>>>>>>> in > >>>>>>>> AIO > >>>>>>>> plugin. > >>>>>>>> But I'm not sure to understand how to set the CPU on an existing > >>>>>>>> cluster. > >>>>>>>> = > >>>>>>>> Should it be enough to specify cpu arg while adding the host to = the > >>>>>>>> cluster? > >>>>>>>> (before adding an host, cpu is None on the cluster) > >>>>>>>> Because I'm trying to do that without success (obtaining a > >>>>>>>> sandybridge > >>>>>>>> cluster while specifying westmere cpu). > >>>>>>> = > >>>>>>> The CPU should be set from the first host if None. That is needed= for > >>>>>>> the > >>>>>>> PPC > >>>>>>> support. Roy, we talked about it recently, where are we with this > >>>>>>> patch. > >>>>>> = > >>>>>> We already support modifying the CPU level of an existing cluster.= If > >>>>>> changing it to a higher level then we just change it. > >>>>>> If changing it to a lower level, and there are running VMs on the > >>>>>> cluster, > >>>>>> then we warn the user that some VMs might not be migrate-able, as = we > >>>>>> added a scheduling filter to filter out hosts with improper CPU le= vel. > >>>>>> = > >>>>>> Unless I'm missing something, that covers the use-case, isn't it? > >>>>> = > >>>>> Not sure. I thought this is None to something, where it should work > >>>>> automatically without specifying anything. Just add an operational = host > >>>> = > >>>> Well, here the issue is that while deploying hosted-engine VM, I'm o= n a > >>>> SandyBridge host, with 1 VM running on it (the hosted engine VM). > >>>> That VM has been created with CPU model Westmere to be able to migra= te > >>>> it > >>>> to > >>>> other hosts Westmere compatible. > >>>> But the Default cluster is automatically set to SandyBridge when I a= dd > >>>> the > >> = > >> because it's created with None in the first place, and then set by the > >> first > >> host. If you'd create it with Westmere initially the joining host would > >> not > >> change it > >> IMHO the setting should be done during the installation not via calling > >> SDK > >> on already created empty cluster but directly in the db when the db is > >> deployed. Unless I'm missing the sequence of deployment. > >> = > > = > > The hosted engine setup doesn't access the DB, so no reason to access i= t if > > it is possible to do that via the SDK. > > Didn't test that, but see no reason for it not to work. > > = > >>>> host also if I specify Westmere as CPU family in Host parameter. > >>>> We may be able to set manually the CPU level later somehow, but since > >>>> we've > >>>> already asked the user about the CPU level I think we should avoid to > >>>> ask > >>>> the user to change it again later. See Bug 1034821 - Hosted-setup as= ks > >>>> for > >>>> CPU type but it doesn't set cluster to that CPU Level > >>>> = > >>> = > >>> You can set the CPU level through the SDK, after you add the host (di= dn't > >>> check that, but see no reason it won't work). > >> = > >> why so late in the process? > >> = > > = > > why does it matter? The setup is still running, so, imo, the order is l= ess > > relevant, as long as the result is okay. > = > = > depends. if hosted engine is part of the installation, it should do the > modifications during installation the same way as anything else, forceful= ly, > and not depend on working sdk or any other precondition > if it is something you are/should be able to deploy over an existing setup > it's better via sdk... > = Well... it is somewhere in between. One of the steps in the hosted engine setup is to start a VM in which the u= ser needs to install the engine. So, adding the host is done via the SDK after the engine installation is co= mpleted. That's why I thought it would be best to change the CPU level also after th= e engine installation is complete, and not during it. In addition, it will probably also help covering the use-case of migrating = an existing engine to a hosted engine environment (although I'm not familia= r enough with the current proposed solution for this use-case). > >>> = > >>>> = > >>>>> = > >>>>>> = > >>>>>>> Thanks, > >>>>>>> michal > >>>>>>> = > >>>>>>>> = > >>>>>>>> Michael, can you take a look at http://gerrit.ovirt.org/22129 and > >>>>>>>> advise? > >>>>>>>> = > >>>>>>>> = > >>>>>>>> -- > >>>>>>>> Sandro Bonazzola > >>>>>>>> Better technology. Faster innovation. Powered by community > >>>>>>>> collaboration. > >>>>>>>> See how it works at redhat.com > >>>>>>>> _______________________________________________ > >>>>>>>> Engine-devel mailing list > >>>>>>>> Engine-devel(a)ovirt.org > >>>>>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel > >>>>>>> = > >>>>>>> _______________________________________________ > >>>>>>> Engine-devel mailing list > >>>>>>> Engine-devel(a)ovirt.org > >>>>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel > >>>>>>> = > >>>> = > >>>> = > >>>> -- > >>>> Sandro Bonazzola > >>>> Better technology. Faster innovation. Powered by community > >>>> collaboration. > >>>> See how it works at redhat.com > >>>> _______________________________________________ > >>>> Engine-devel mailing list > >>>> Engine-devel(a)ovirt.org > >>>> http://lists.ovirt.org/mailman/listinfo/engine-devel > >>>> = > >> = > >> = > = >=20 --===============0895283128108645745==-- From michal.skrivanek at redhat.com Wed Dec 11 01:58:02 2013 Content-Type: multipart/mixed; boundary="===============5691094857426551355==" MIME-Version: 1.0 From: Michal Skrivanek To: devel at ovirt.org Subject: Re: [Engine-devel] Setting cluster CPU Date: Wed, 11 Dec 2013 08:57:56 +0200 Message-ID: In-Reply-To: 1844887159.39886512.1386744812543.JavaMail.root@redhat.com --===============5691094857426551355== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On Dec 11, 2013, at 08:53 , Oved Ourfalli wrote: > = > = > ----- Original Message ----- >> From: "Michal Skrivanek" >> To: "Oved Ourfalli" >> Cc: "Sandro Bonazzola" , "Roy Golan" , "engine-devel" >> >> Sent: Wednesday, December 11, 2013 8:45:41 AM >> Subject: Re: [Engine-devel] Setting cluster CPU >> = >> = >> On Dec 11, 2013, at 08:18 , Oved Ourfalli wrote: >> = >>> = >>> = >>> ----- Original Message ----- >>>> From: "Michal Skrivanek" >>>> To: "Oved Ourfalli" , "Sandro Bonazzola" >>>> >>>> Cc: "Roy Golan" , "engine-devel" >>>> >>>> Sent: Tuesday, December 10, 2013 8:01:08 PM >>>> Subject: Re: [Engine-devel] Setting cluster CPU >>>> = >>>> = >>>> On Dec 10, 2013, at 09:14 , Oved Ourfalli wrote: >>>> = >>>>> = >>>>> = >>>>> ----- Original Message ----- >>>>>> From: "Sandro Bonazzola" >>>>>> To: "Michal Skrivanek" , "Oved Ourfal= li" >>>>>> , "Roy Golan" >>>>>> >>>>>> Cc: "engine-devel" >>>>>> Sent: Tuesday, December 10, 2013 9:12:14 AM >>>>>> Subject: Re: [Engine-devel] Setting cluster CPU >>>>>> = >>>>>> Il 09/12/2013 19:37, Michal Skrivanek ha scritto: >>>>>>> = >>>>>>> = >>>>>>>> On 09 Dec 2013, at 18:58, Oved Ourfalli wrote: >>>>>>>> = >>>>>>>> = >>>>>>>> = >>>>>>>> ----- Original Message ----- >>>>>>>>> From: "Michal Skrivanek" >>>>>>>>> To: "Sandro Bonazzola" , "Roy Golan" >>>>>>>>> >>>>>>>>> Cc: "engine-devel" >>>>>>>>> Sent: Monday, December 9, 2013 5:50:49 PM >>>>>>>>> Subject: Re: [Engine-devel] Setting cluster CPU >>>>>>>>> = >>>>>>>>> = >>>>>>>>>> On Dec 9, 2013, at 16:01 , Sandro Bonazzola >>>>>>>>>> wrote: >>>>>>>>>> = >>>>>>>>>> Hi, >>>>>>>>>> I'm trying to set the cluster CPU type while adding the first ho= st >>>>>>>>>> to >>>>>>>>>> the >>>>>>>>>> Default cluster. >>>>>>>>>> = >>>>>>>>>> I know how to set the CPU type on a new cluster, since I'll do t= hat >>>>>>>>>> in >>>>>>>>>> AIO >>>>>>>>>> plugin. >>>>>>>>>> But I'm not sure to understand how to set the CPU on an existing >>>>>>>>>> cluster. >>>>>>>>>> = >>>>>>>>>> Should it be enough to specify cpu arg while adding the host to = the >>>>>>>>>> cluster? >>>>>>>>>> (before adding an host, cpu is None on the cluster) >>>>>>>>>> Because I'm trying to do that without success (obtaining a >>>>>>>>>> sandybridge >>>>>>>>>> cluster while specifying westmere cpu). >>>>>>>>> = >>>>>>>>> The CPU should be set from the first host if None. That is needed= for >>>>>>>>> the >>>>>>>>> PPC >>>>>>>>> support. Roy, we talked about it recently, where are we with this >>>>>>>>> patch. >>>>>>>> = >>>>>>>> We already support modifying the CPU level of an existing cluster.= If >>>>>>>> changing it to a higher level then we just change it. >>>>>>>> If changing it to a lower level, and there are running VMs on the >>>>>>>> cluster, >>>>>>>> then we warn the user that some VMs might not be migrate-able, as = we >>>>>>>> added a scheduling filter to filter out hosts with improper CPU le= vel. >>>>>>>> = >>>>>>>> Unless I'm missing something, that covers the use-case, isn't it? >>>>>>> = >>>>>>> Not sure. I thought this is None to something, where it should work >>>>>>> automatically without specifying anything. Just add an operational = host >>>>>> = >>>>>> Well, here the issue is that while deploying hosted-engine VM, I'm o= n a >>>>>> SandyBridge host, with 1 VM running on it (the hosted engine VM). >>>>>> That VM has been created with CPU model Westmere to be able to migra= te >>>>>> it >>>>>> to >>>>>> other hosts Westmere compatible. >>>>>> But the Default cluster is automatically set to SandyBridge when I a= dd >>>>>> the >>>> = >>>> because it's created with None in the first place, and then set by the >>>> first >>>> host. If you'd create it with Westmere initially the joining host would >>>> not >>>> change it >>>> IMHO the setting should be done during the installation not via calling >>>> SDK >>>> on already created empty cluster but directly in the db when the db is >>>> deployed. Unless I'm missing the sequence of deployment. >>>> = >>> = >>> The hosted engine setup doesn't access the DB, so no reason to access i= t if >>> it is possible to do that via the SDK. >>> Didn't test that, but see no reason for it not to work. >>> = >>>>>> host also if I specify Westmere as CPU family in Host parameter. >>>>>> We may be able to set manually the CPU level later somehow, but since >>>>>> we've >>>>>> already asked the user about the CPU level I think we should avoid to >>>>>> ask >>>>>> the user to change it again later. See Bug 1034821 - Hosted-setup as= ks >>>>>> for >>>>>> CPU type but it doesn't set cluster to that CPU Level >>>>>> = >>>>> = >>>>> You can set the CPU level through the SDK, after you add the host (di= dn't >>>>> check that, but see no reason it won't work). >>>> = >>>> why so late in the process? >>>> = >>> = >>> why does it matter? The setup is still running, so, imo, the order is l= ess >>> relevant, as long as the result is okay. >> = >> = >> depends. if hosted engine is part of the installation, it should do the >> modifications during installation the same way as anything else, forcefu= lly, >> and not depend on working sdk or any other precondition >> if it is something you are/should be able to deploy over an existing set= up >> it's better via sdk... >> = > = > Well... it is somewhere in between. > One of the steps in the hosted engine setup is to start a VM in which the= user needs to install the engine. > So, adding the host is done via the SDK after the engine installation is = completed. ah, ok, I thought it's before that, as the host is the one your engine is a= t, so I thought it can be created right at the beginning then it all makes sense:) = > That's why I thought it would be best to change the CPU level also after = the engine installation is complete, and not during it. > In addition, it will probably also help covering the use-case of migratin= g an existing engine to a hosted engine environment (although I'm not famil= iar enough with the current proposed solution for this use-case). > = >>>>> = >>>>>> = >>>>>>> = >>>>>>>> = >>>>>>>>> Thanks, >>>>>>>>> michal >>>>>>>>> = >>>>>>>>>> = >>>>>>>>>> Michael, can you take a look at http://gerrit.ovirt.org/22129 and >>>>>>>>>> advise? >>>>>>>>>> = >>>>>>>>>> = >>>>>>>>>> -- >>>>>>>>>> Sandro Bonazzola >>>>>>>>>> Better technology. Faster innovation. Powered by community >>>>>>>>>> collaboration. >>>>>>>>>> See how it works at redhat.com >>>>>>>>>> _______________________________________________ >>>>>>>>>> Engine-devel mailing list >>>>>>>>>> Engine-devel(a)ovirt.org >>>>>>>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel >>>>>>>>> = >>>>>>>>> _______________________________________________ >>>>>>>>> Engine-devel mailing list >>>>>>>>> Engine-devel(a)ovirt.org >>>>>>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel >>>>>>>>> = >>>>>> = >>>>>> = >>>>>> -- >>>>>> Sandro Bonazzola >>>>>> Better technology. Faster innovation. Powered by community >>>>>> collaboration. >>>>>> See how it works at redhat.com >>>>>> _______________________________________________ >>>>>> Engine-devel mailing list >>>>>> Engine-devel(a)ovirt.org >>>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel >>>>>> = >>>> = >>>> = >> = >> = --===============5691094857426551355==-- From sbonazzo at redhat.com Wed Dec 11 03:29:46 2013 Content-Type: multipart/mixed; boundary="===============5788831818962293909==" MIME-Version: 1.0 From: Sandro Bonazzola To: devel at ovirt.org Subject: Re: [Engine-devel] [QE] oVirt 3.3.2 RC status Date: Wed, 11 Dec 2013 09:29:41 +0100 Message-ID: <52A82275.8090709@redhat.com> In-Reply-To: 52A58DD2.4070504@redhat.com --===============5788831818962293909== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, we should decide today at oVirt sync meeting about oVirt 3.3.2 RC build sch= eduled for today [1] A bug tracker is available at [2] and it shows only 2 bugs still blocking t= he release: Whiteboard Bug ID Summary virt 1029885 cloud-init testcase does not work in engine 3.3.1 virt 1025829 sysprep floppy is not attached to Windows 2008 R2 machine - e= ven when specifically checked in Run Once Omer: "3.3.2 backported and wait for review from REST" - Is 1029885 solved by fix introduced for bug 1039009 ? I can't see any pen= ding patches about this pushed to 3.3.2 branch. Roy: - ETA for 1025829? oVirt 3.3.2 beta testing is in progress, thanks to all who already started = testing it! For those willing to help testing the bugs, I suggest to add yourself as QA= contact for the bug and add yourself to the testing page [3]. Maintainers should fill release notes before RC build if not already done, = the page has been created here [4] [1] http://www.ovirt.org/OVirt_3.3.z_release-management [2] https://bugzilla.redhat.com/1027349 [3] http://www.ovirt.org/Testing/Ovirt_3.3.2_testing [4] http://www.ovirt.org/OVirt_3.3.2_release_notes -- = Sandro Bonazzola Better technology. Faster innovation. Powered by community collaboration. See how it works at redhat.com --===============5788831818962293909==-- From ofrenkel at redhat.com Wed Dec 11 05:22:16 2013 Content-Type: multipart/mixed; boundary="===============4766114137642706965==" MIME-Version: 1.0 From: Omer Frenkel To: devel at ovirt.org Subject: Re: [Engine-devel] [QE] oVirt 3.3.2 RC status Date: Wed, 11 Dec 2013 05:22:13 -0500 Message-ID: <1095144316.28422389.1386757333944.JavaMail.root@redhat.com> In-Reply-To: 52A82275.8090709@redhat.com --===============4766114137642706965== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Sandro Bonazzola" > To: "engine-devel" , Users(a)ovirt.org, "VDSM P= roject Development" > , "Roy Golan" ,= "Omer Frenkel" > Cc: "Itamar Heim" > Sent: Wednesday, December 11, 2013 10:29:41 AM > Subject: Re: [QE] oVirt 3.3.2 RC status > = > Hi, > we should decide today at oVirt sync meeting about oVirt 3.3.2 RC build > scheduled for today [1] > A bug tracker is available at [2] and it shows only 2 bugs still blocking= the > release: > Whiteboard Bug ID Summary > virt 1029885 cloud-init testcase does not work in engine 3.3.1 > virt 1025829 sysprep floppy is not attached to Windows 2008 R2 machine - > even when specifically checked in Run Once > = > Omer: "3.3.2 backported and wait for review from REST" > - Is 1029885 solved by fix introduced for bug 1039009 ? I can't see any > pending patches about this pushed to 3.3.2 branch. > = you are right, i mixed up those 2 bugs, 'Bug 1039009 - can't use cloud-init= /run once via api' - fixed, = '1029885 - cloud-init testcase does not work in engine 3.3.1' - no fix exce= pt upgrading guest right now > Roy: > - ETA for 1025829? > = > oVirt 3.3.2 beta testing is in progress, thanks to all who already started > testing it! > For those willing to help testing the bugs, I suggest to add yourself as = QA > contact for the bug and add yourself to the testing page [3]. > = > Maintainers should fill release notes before RC build if not already done, > the page has been created here [4] > = > [1] http://www.ovirt.org/OVirt_3.3.z_release-management > [2] https://bugzilla.redhat.com/1027349 > [3] http://www.ovirt.org/Testing/Ovirt_3.3.2_testing > [4] http://www.ovirt.org/OVirt_3.3.2_release_notes > = > -- > Sandro Bonazzola > Better technology. Faster innovation. Powered by community collaboration. > See how it works at redhat.com >=20 --===============4766114137642706965==-- From S.Kieske at mittwald.de Wed Dec 11 07:15:34 2013 Content-Type: multipart/mixed; boundary="===============6096615742413730506==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: Re: [Engine-devel] [QE] oVirt 3.3.2 RC status Date: Wed, 11 Dec 2013 12:12:47 +0000 Message-ID: <52A8575A.5010607@mittwald.de> In-Reply-To: 1095144316.28422389.1386757333944.JavaMail.root@redhat.com --===============6096615742413730506== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, just wanted to add, that I will test if 'Bug 1039009 - can't use cloud-init /run once via api' is fixed, but I have to wait for the new RPMs in the beta repo. It would be cool if someone could ping me via mail when they are available. I will add myself to the wiki test page, once I installed 3.3.2 beta. Thanks! -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============6096615742413730506==-- From S.Kieske at mittwald.de Thu Dec 12 03:17:04 2013 Content-Type: multipart/mixed; boundary="===============2868478946650817042==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: [Engine-devel] CodeQuality/Automated Checking Date: Thu, 12 Dec 2013 08:14:16 +0000 Message-ID: <52A970F3.3070608@mittwald.de> --===============2868478946650817042== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, I just stumbled upon this: http://gerrit.ovirt.org/#/c/22310/1/vdsm.spec.in such errors could be prevented easily. either by using bash -n $scriptname.sh before commit or by automated syntaxchecking via jenkins ? what do you think? -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============2868478946650817042==-- From emesika at redhat.com Thu Dec 12 06:10:29 2013 Content-Type: multipart/mixed; boundary="===============4206434012565150980==" MIME-Version: 1.0 From: Eli Mesika To: devel at ovirt.org Subject: Re: [Engine-devel] CodeQuality/Automated Checking Date: Thu, 12 Dec 2013 06:10:20 -0500 Message-ID: <1318413862.38922007.1386846620941.JavaMail.root@redhat.com> In-Reply-To: 52A970F3.3070608@mittwald.de --===============4206434012565150980== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Sven Kieske" > To: engine-devel(a)ovirt.org > Sent: Thursday, December 12, 2013 10:14:16 AM > Subject: [Engine-devel] CodeQuality/Automated Checking > = > Hi, > = > I just stumbled upon this: > = > http://gerrit.ovirt.org/#/c/22310/1/vdsm.spec.in > = > such errors could be prevented easily. > either by using bash -n $scriptname.sh before commit > or by automated syntaxchecking via jenkins ? +1 > = > what do you think? > -- > Mit freundlichen Gr=C3=BC=C3=9Fen / Regards > = > Sven Kieske > = > Systemadministrator > Mittwald CM Service GmbH & Co. KG > K=C3=B6nigsberger Stra=C3=9Fe 6 > 32339 Espelkamp > T: +49-5772-293-100 > F: +49-5772-293-333 > https://www.mittwald.de > Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer > St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen > Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oey= nhausen > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============4206434012565150980==-- From emesika at redhat.com Thu Dec 12 06:12:36 2013 Content-Type: multipart/mixed; boundary="===============6512388843408527701==" MIME-Version: 1.0 From: Eli Mesika To: devel at ovirt.org Subject: Re: [Engine-devel] [QE] oVirt 3.3.2 RC status Date: Thu, 12 Dec 2013 06:12:36 -0500 Message-ID: <1585381233.38922603.1386846756346.JavaMail.root@redhat.com> In-Reply-To: 52A8575A.5010607@mittwald.de --===============6512388843408527701== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Sven Kieske" > To: engine-devel(a)ovirt.org > Sent: Wednesday, December 11, 2013 2:12:47 PM > Subject: Re: [Engine-devel] [QE] oVirt 3.3.2 RC status > = > Hi, > = > just wanted to add, that I will test if > 'Bug 1039009 - can't use cloud-init /run once via api' > is fixed, but I have to wait for the new RPMs in the beta repo. > It would be cool if someone could ping me via mail when they are > available. > = > I will add myself to the wiki test page, once I installed 3.3.2 beta. > = > Thanks! Please note that I had flagged https://bugzilla.redhat.com/show_bug.cgi?id= =3D1040875 to 3.3.2 as well since it can corrupt other PM agents and not th= e reported one. A patch fixing that is available : http://gerrit.ovirt.org/#/c/22326/ > = > -- > Mit freundlichen Gr=C3=BC=C3=9Fen / Regards > = > Sven Kieske > = > Systemadministrator > Mittwald CM Service GmbH & Co. KG > K=C3=B6nigsberger Stra=C3=9Fe 6 > 32339 Espelkamp > T: +49-5772-293-100 > F: +49-5772-293-333 > https://www.mittwald.de > Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer > St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen > Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oey= nhausen > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============6512388843408527701==-- From alonbl at redhat.com Thu Dec 12 06:15:20 2013 Content-Type: multipart/mixed; boundary="===============0461969715379327665==" MIME-Version: 1.0 From: Alon Bar-Lev To: devel at ovirt.org Subject: Re: [Engine-devel] CodeQuality/Automated Checking Date: Thu, 12 Dec 2013 06:15:17 -0500 Message-ID: <476502120.25330244.1386846917674.JavaMail.root@redhat.com> In-Reply-To: 1318413862.38922007.1386846620941.JavaMail.root@redhat.com --===============0461969715379327665== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Eli Mesika" > To: "Sven Kieske" > Cc: engine-devel(a)ovirt.org > Sent: Thursday, December 12, 2013 1:10:20 PM > Subject: Re: [Engine-devel] CodeQuality/Automated Checking > = > = > = > ----- Original Message ----- > > From: "Sven Kieske" > > To: engine-devel(a)ovirt.org > > Sent: Thursday, December 12, 2013 10:14:16 AM > > Subject: [Engine-devel] CodeQuality/Automated Checking > > = > > Hi, > > = > > I just stumbled upon this: > > = > > http://gerrit.ovirt.org/#/c/22310/1/vdsm.spec.in > > = > > such errors could be prevented easily. > > either by using bash -n $scriptname.sh before commit > > or by automated syntaxchecking via jenkins ? > = > +1 first, using bash is not a good idea... better to use POSIX compliant shell. second, these changes should be part of Makefile just like we validate pyth= on scripts. I can workout some patch to do this. > = > > = > > what do you think? > > -- > > Mit freundlichen Gr=C3=BC=C3=9Fen / Regards > > = > > Sven Kieske > > = > > Systemadministrator > > Mittwald CM Service GmbH & Co. KG > > K=C3=B6nigsberger Stra=C3=9Fe 6 > > 32339 Espelkamp > > T: +49-5772-293-100 > > F: +49-5772-293-333 > > https://www.mittwald.de > > Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer > > St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhau= sen > > Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad O= eynhausen > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============0461969715379327665==-- From alonbl at redhat.com Thu Dec 12 07:11:31 2013 Content-Type: multipart/mixed; boundary="===============1810964427315991255==" MIME-Version: 1.0 From: Alon Bar-Lev To: devel at ovirt.org Subject: Re: [Engine-devel] CodeQuality/Automated Checking Date: Thu, 12 Dec 2013 07:11:31 -0500 Message-ID: <1455746512.25339980.1386850291130.JavaMail.root@redhat.com> In-Reply-To: 476502120.25330244.1386846917674.JavaMail.root@redhat.com --===============1810964427315991255== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Alon Bar-Lev" > To: "Eli Mesika" > Cc: engine-devel(a)ovirt.org > Sent: Thursday, December 12, 2013 1:15:17 PM > Subject: Re: [Engine-devel] CodeQuality/Automated Checking > = > = > = > ----- Original Message ----- > > From: "Eli Mesika" > > To: "Sven Kieske" > > Cc: engine-devel(a)ovirt.org > > Sent: Thursday, December 12, 2013 1:10:20 PM > > Subject: Re: [Engine-devel] CodeQuality/Automated Checking > > = > > = > > = > > ----- Original Message ----- > > > From: "Sven Kieske" > > > To: engine-devel(a)ovirt.org > > > Sent: Thursday, December 12, 2013 10:14:16 AM > > > Subject: [Engine-devel] CodeQuality/Automated Checking > > > = > > > Hi, > > > = > > > I just stumbled upon this: > > > = > > > http://gerrit.ovirt.org/#/c/22310/1/vdsm.spec.in > > > = > > > such errors could be prevented easily. > > > either by using bash -n $scriptname.sh before commit > > > or by automated syntaxchecking via jenkins ? > > = > > +1 > = > first, using bash is not a good idea... better to use POSIX compliant she= ll. > = > second, these changes should be part of Makefile just like we validate py= thon > scripts. > = > I can workout some patch to do this. well, I did not notice two important facts... 1. the assumption that bash -n can be executed on spec, which is incorrect.= .. I thought we are discussing proper scripts. 2. that the project is vdsm and not engine. anyway, this is indeed nice to have, available for engine[1] [1] http://gerrit.ovirt.org/22332 > = > > = > > > = > > > what do you think? > > > -- > > > Mit freundlichen Gr=C3=BC=C3=9Fen / Regards > > > = > > > Sven Kieske > > > = > > > Systemadministrator > > > Mittwald CM Service GmbH & Co. KG > > > K=C3=B6nigsberger Stra=C3=9Fe 6 > > > 32339 Espelkamp > > > T: +49-5772-293-100 > > > F: +49-5772-293-333 > > > https://www.mittwald.de > > > Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer > > > St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad > > > Oeynhausen > > > Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad > > > Oeynhausen > > > _______________________________________________ > > > Engine-devel mailing list > > > Engine-devel(a)ovirt.org > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > = > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============1810964427315991255==-- From S.Kieske at mittwald.de Thu Dec 12 07:19:50 2013 Content-Type: multipart/mixed; boundary="===============1700777404151202479==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: Re: [Engine-devel] CodeQuality/Automated Checking Date: Thu, 12 Dec 2013 12:16:53 +0000 Message-ID: <52A9A9D0.7020904@mittwald.de> In-Reply-To: 476502120.25330244.1386846917674.JavaMail.root@redhat.com --===============1700777404151202479== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Yeah of course it's always better you stay POSIX compliant, if it's needed :) The bash example was just the first one I thought of. Glad to see this idea got picked up so fast! Am 12.12.2013 12:15, schrieb Alon Bar-Lev: > first, using bash is not a good idea... better to use POSIX compliant she= ll. -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============1700777404151202479==-- From ybronhei at redhat.com Thu Dec 12 10:19:22 2013 Content-Type: multipart/mixed; boundary="===============4267525429202604988==" MIME-Version: 1.0 From: Yaniv Bronheim To: devel at ovirt.org Subject: Re: [Engine-devel] CodeQuality/Automated Checking Date: Thu, 12 Dec 2013 10:18:35 -0500 Message-ID: <1178855771.25399224.1386861515049.JavaMail.root@redhat.com> In-Reply-To: 52A9A9D0.7020904@mittwald.de --===============4267525429202604988== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Sven Kieske" > To: "Alon Bar-Lev" , "Eli Mesika" > Cc: engine-devel(a)ovirt.org > Sent: Thursday, December 12, 2013 2:16:53 PM > Subject: Re: [Engine-devel] CodeQuality/Automated Checking > = > Yeah of course it's always better you stay POSIX compliant, if it's > needed :) > The bash example was just the first one I thought of. > = > Glad to see this idea got picked up so fast! glad to cause this thread :) as it was my glitch leaving a "fi" out there I'll be glad to review such patch as http://gerrit.ovirt.org/22332 for Vdsm = doesn't look complicate to integrate it to vdsm code and run it as part of = the make +1 > = > Am 12.12.2013 12:15, schrieb Alon Bar-Lev: > > first, using bash is not a good idea... better to use POSIX compliant > > shell. > = > -- > Mit freundlichen Gr=C3=BC=C3=9Fen / Regards > = > Sven Kieske > = > Systemadministrator > Mittwald CM Service GmbH & Co. KG > K=C3=B6nigsberger Stra=C3=9Fe 6 > 32339 Espelkamp > T: +49-5772-293-100 > F: +49-5772-293-333 > https://www.mittwald.de > Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer > St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen > Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oey= nhausen > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel > --===============4267525429202604988==-- From eedri at redhat.com Thu Dec 12 11:56:56 2013 Content-Type: multipart/mixed; boundary="===============9147775463527306041==" MIME-Version: 1.0 From: Eyal Edri To: devel at ovirt.org Subject: Re: [Engine-devel] Please add an account for me in oVirt Jenkins. Date: Thu, 12 Dec 2013 11:56:56 -0500 Message-ID: <2069917934.4226140.1386867416162.JavaMail.root@redhat.com> In-Reply-To: 448108020.51310345.1386867033939.JavaMail.root@redhat.com --===============9147775463527306041== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable +1. (adding engine-devel also) yaniv should have access to build ovirt dwh & reports projects on jenkins. Eyal. ----- Original Message ----- > From: "Yaniv Dary" > To: infra(a)ovirt.org > Sent: Thursday, December 12, 2013 6:50:33 PM > Subject: Please add an account for me in oVirt Jenkins. > = > Hi, > I need access to Jenkins to build projects and add/manage jobs. Can you > please create an account for me? > My fedora openID is ydary. > = > = > Thanks! > = > --- > Yaniv Dary > BI Software Engineer > Red Hat Israel Ltd. > 34 Jerusalem Road > Building A, 4th floor > Ra'anana, Israel 43501 > = > Tel : +972 (9) 7692306 > 72306 > Email: ydary(a)redhat.com > IRC : ydary > = > _______________________________________________ > Infra mailing list > Infra(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/infra >=20 --===============9147775463527306041==-- From sbonazzo at redhat.com Fri Dec 13 01:38:54 2013 Content-Type: multipart/mixed; boundary="===============1150716716560723696==" MIME-Version: 1.0 From: Sandro Bonazzola To: devel at ovirt.org Subject: Re: [Engine-devel] Please add an account for me in oVirt Jenkins. Date: Fri, 13 Dec 2013 07:38:43 +0100 Message-ID: <52AAAB73.2080001@redhat.com> In-Reply-To: 2069917934.4226140.1386867416162.JavaMail.root@redhat.com --===============1150716716560723696== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Il 12/12/2013 17:56, Eyal Edri ha scritto: > +1. (adding engine-devel also) > = > yaniv should have access to build ovirt dwh & reports projects on jenkins. +1 from me too > = > Eyal. > = > ----- Original Message ----- >> From: "Yaniv Dary" >> To: infra(a)ovirt.org >> Sent: Thursday, December 12, 2013 6:50:33 PM >> Subject: Please add an account for me in oVirt Jenkins. >> >> Hi, >> I need access to Jenkins to build projects and add/manage jobs. Can you >> please create an account for me? >> My fedora openID is ydary. >> >> >> Thanks! >> >> --- >> Yaniv Dary >> BI Software Engineer >> Red Hat Israel Ltd. >> 34 Jerusalem Road >> Building A, 4th floor >> Ra'anana, Israel 43501 >> >> Tel : +972 (9) 7692306 >> 72306 >> Email: ydary(a)redhat.com >> IRC : ydary >> >> _______________________________________________ >> Infra mailing list >> Infra(a)ovirt.org >> http://lists.ovirt.org/mailman/listinfo/infra >> > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel > = -- = Sandro Bonazzola Better technology. Faster innovation. Powered by community collaboration. See how it works at redhat.com --===============1150716716560723696==-- From chuan.liao at hp.com Fri Dec 13 02:38:39 2013 Content-Type: multipart/mixed; boundary="===============1542345472562071098==" MIME-Version: 1.0 From: Liao, Chuan (Jason, MCXS-CQ) To: devel at ovirt.org Subject: [Engine-devel] Help to review the design of Feature/NUMA and Virtual NUMA Date: Fri, 13 Dec 2013 07:37:59 +0000 Message-ID: --===============1542345472562071098== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable --_000_B63C858E777679458338A30A991BB5240155E248G1W3780americas_ Content-Type: text/plain; charset=3D"us-ascii" Content-Transfer-Encoding: quoted-printable Hi Everyone, I am Jason Liao from HP, now focus on the NUMA feature integration into oVi= =3D rt. Now we finish the first step of High-level design document. Please help to review the design of Features/NUMA_and_Virtual_NUMA on oVirt community wiki page. If anyone have some question and suggestion, please let me know. Thanks all. Best Regards, Jason Liao --_000_B63C858E777679458338A30A991BB5240155E248G1W3780americas_ Content-Type: text/html; charset=3D"us-ascii" Content-Transfer-Encoding: quoted-printable

Hi Everyone,

 

I am Jason Liao from HP, now focus = =3D on the NUMA feature integration into oVirt.

 

Now we finish the first step of Hig= =3D h-level design document.

 

Please help to review the design of Features/NUMA_and_Virtual_NUMA on oVirt community wiki= =3D page.

 

If anyone have some questio= n an=3D d suggestion, please let me know.

 

Thanks all.

 

Best= =3D Regards,
Jason Liao= =3D

 

--_000_B63C858E777679458338A30A991BB5240155E248G1W3780americas_-- --===============1542345472562071098== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS1fMDAwX0I2M0M4NThFNzc3Njc5NDU4MzM4QTMwQTk5MUJCNTI0MDE1NUUyNDhHMVczNzgwYW1l cmljYXNfCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiCkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKCkhpIEV2ZXJ5b25lLAoKSSBh bSBKYXNvbiBMaWFvIGZyb20gSFAsIG5vdyBmb2N1cyBvbiB0aGUgTlVNQSBmZWF0dXJlIGludGVn cmF0aW9uIGludG8gb1ZpPQpydC4KCk5vdyB3ZSBmaW5pc2ggdGhlIGZpcnN0IHN0ZXAgb2YgSGln aC1sZXZlbCBkZXNpZ24gZG9jdW1lbnQuCgpQbGVhc2UgaGVscCB0byByZXZpZXcgdGhlIGRlc2ln biBvZiBGZWF0dXJlcy9OVU1BX2FuZF9WaXJ0dWFsX05VTUE8aHR0cDovL3c9Cnd3Lm92aXJ0Lm9y Zy9GZWF0dXJlcy9OVU1BX2FuZF9WaXJ0dWFsX05VTUE+IG9uIG9WaXJ0IGNvbW11bml0eSB3aWtp IHBhZ2UuCgpJZiBhbnlvbmUgaGF2ZSBzb21lIHF1ZXN0aW9uIGFuZCBzdWdnZXN0aW9uLCBwbGVh c2UgbGV0IG1lIGtub3cuCgpUaGFua3MgYWxsLgoKQmVzdCBSZWdhcmRzLApKYXNvbiBMaWFvCgoK LS1fMDAwX0I2M0M4NThFNzc3Njc5NDU4MzM4QTMwQTk5MUJCNTI0MDE1NUUyNDhHMVczNzgwYW1l cmljYXNfCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSJ1cy1hc2NpaSIKQ29udGVu dC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQoKPGh0bWwgeG1sbnM6dj0zRCJ1 cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbCIgeG1sbnM6bz0zRCJ1cm46c2NoZW1hcy1taWNy PQpvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0zRCJ1cm46c2NoZW1hcy1taWNyb3Nv ZnQtY29tOm9mZmljZTp3b3JkIiA9CnhtbG5zOm09M0QiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0 LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0zRCJodHRwOj0KLy93d3cudzMub3JnL1RS L1JFQy1odG1sNDAiPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0zRCJDb250ZW50LVR5cGUiIGNv bnRlbnQ9M0QidGV4dC9odG1sOyBjaGFyc2V0PTNEdXMtYXNjaWkiPQo+CjxtZXRhIG5hbWU9M0Qi R2VuZXJhdG9yIiBjb250ZW50PTNEIk1pY3Jvc29mdCBXb3JkIDE1IChmaWx0ZXJlZCBtZWRpdW0p Ij4KPHN0eWxlPjwhLS0KLyogRm9udCBEZWZpbml0aW9ucyAqLwpAZm9udC1mYWNlCgl7Zm9udC1m YW1pbHk6U2ltU3VuOwoJcGFub3NlLTE6MiAxIDYgMCAzIDEgMSAxIDEgMTt9CkBmb250LWZhY2UK CXtmb250LWZhbWlseToiQ2FtYnJpYSBNYXRoIjsKCXBhbm9zZS0xOjIgNCA1IDMgNSA0IDYgMyAy IDQ7fQpAZm9udC1mYWNlCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaTsKCXBhbm9zZS0xOjIgMTUgNSAy IDIgMiA0IDMgMiA0O30KQGZvbnQtZmFjZQoJe2ZvbnQtZmFtaWx5OiJIUCBTaW1wbGlmaWVkIjsK CXBhbm9zZS0xOjIgMTEgNiA0IDIgMiA0IDIgMiA0O30KQGZvbnQtZmFjZQoJe2ZvbnQtZmFtaWx5 OlNpbVN1bjsKCXBhbm9zZS0xOjIgMSA2IDAgMyAxIDEgMSAxIDE7fQpAZm9udC1mYWNlCgl7Zm9u dC1mYW1pbHk6IllhSGVpIENvbnNvbGFzIEh5YnJpZCI7CglwYW5vc2UtMToyIDExIDUgOSAyIDIg NCAyIDIgNDt9CkBmb250LWZhY2UKCXtmb250LWZhbWlseToiXEBZYUhlaSBDb25zb2xhcyBIeWJy aWQiOwoJcGFub3NlLTE6MiAxMSA1IDkgMiAyIDQgMiAyIDQ7fQovKiBTdHlsZSBEZWZpbml0aW9u cyAqLwpwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsCgl7bWFyZ2luOjBj bTsKCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKCXRleHQtYWxpZ246anVzdGlmeTsKCXRleHQtanVz dGlmeTppbnRlci1pZGVvZ3JhcGg7Cglmb250LXNpemU6MTAuNXB0OwoJZm9udC1mYW1pbHk6IkNh bGlicmkiLCJzYW5zLXNlcmlmIjt9CmE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsKCXttc28tc3R5 bGUtcHJpb3JpdHk6OTk7Cgljb2xvcjojMDU2M0MxOwoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGlu ZTt9CmE6dmlzaXRlZCwgc3Bhbi5Nc29IeXBlcmxpbmtGb2xsb3dlZAoJe21zby1zdHlsZS1wcmlv cml0eTo5OTsKCWNvbG9yOiM5NTRGNzI7Cgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30Kc3Bh bi5FbWFpbFN0eWxlMTcKCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbC1jb21wb3NlOwoJZm9udC1m YW1pbHk6IkhQIFNpbXBsaWZpZWQiLCJzYW5zLXNlcmlmIjsKCWNvbG9yOndpbmRvd3RleHQ7fQou TXNvQ2hwRGVmYXVsdAoJe21zby1zdHlsZS10eXBlOmV4cG9ydC1vbmx5O30KLyogUGFnZSBEZWZp bml0aW9ucyAqLwpAcGFnZSBXb3JkU2VjdGlvbjEKCXtzaXplOjYxMi4wcHQgNzkyLjBwdDsKCW1h cmdpbjo3Mi4wcHQgOTAuMHB0IDcyLjBwdCA5MC4wcHQ7fQpkaXYuV29yZFNlY3Rpb24xCgl7cGFn ZTpXb3JkU2VjdGlvbjE7fQotLT48L3N0eWxlPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgo8bzpz aGFwZWRlZmF1bHRzIHY6ZXh0PTNEImVkaXQiIHNwaWRtYXg9M0QiMTAyNiIgLz4KPC94bWw+PCFb ZW5kaWZdLS0+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+CjxvOnNoYXBlbGF5b3V0IHY6ZXh0PTNE ImVkaXQiPgo8bzppZG1hcCB2OmV4dD0zRCJlZGl0IiBkYXRhPTNEIjEiIC8+CjwvbzpzaGFwZWxh eW91dD48L3htbD48IVtlbmRpZl0tLT4KPC9oZWFkPgo8Ym9keSBsYW5nPTNEIlpILUNOIiBsaW5r PTNEIiMwNTYzQzEiIHZsaW5rPTNEIiM5NTRGNzIiIHN0eWxlPTNEInRleHQtanVzdGk9CmZ5LXRy aW06cHVuY3R1YXRpb24iPgo8ZGl2IGNsYXNzPTNEIldvcmRTZWN0aW9uMSI+CjxwIGNsYXNzPTNE Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0zRCJFTi1VUyIgc3R5bGU9M0QiZm9udC1mYW1pbHk6JnF1 b3Q7SFAgUz0KaW1wbGlmaWVkJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsiPkhpIEV2ZXJ5 b25lLDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBs YW5nPTNEIkVOLVVTIiBzdHlsZT0zRCJmb250LWZhbWlseTomcXVvdDtIUCBTPQppbXBsaWZpZWQm cXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9w Pgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiIHN0eWxlPTNEImZv bnQtZmFtaWx5OiZxdW90O0hQIFM9CmltcGxpZmllZCZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1 b3Q7Ij5JIGFtIEphc29uIExpYW8gZnJvbSBIUCwgbm93IGZvY3VzID0Kb24gdGhlIE5VTUEgZmVh dHVyZSBpbnRlZ3JhdGlvbiBpbnRvIG9WaXJ0LjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xh c3M9M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5nPTNEIkVOLVVTIiBzdHlsZT0zRCJmb250LWZhbWls eTomcXVvdDtIUCBTPQppbXBsaWZpZWQmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+PG86 cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIGxh bmc9M0QiRU4tVVMiIHN0eWxlPTNEImZvbnQtZmFtaWx5OiZxdW90O0hQIFM9CmltcGxpZmllZCZx dW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij5Ob3cgd2UgZmluaXNoIHRoZSBmaXJzdCBzdGVw IG9mIEhpZz0KaC1sZXZlbCBkZXNpZ24gZG9jdW1lbnQuPG86cD48L286cD48L3NwYW4+PC9wPgo8 cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiIHN0eWxlPTNEImZvbnQt ZmFtaWx5OiZxdW90O0hQIFM9CmltcGxpZmllZCZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7 Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNw YW4gbGFuZz0zRCJFTi1VUyIgc3R5bGU9M0QiZm9udC1mYW1pbHk6JnF1b3Q7SFAgUz0KaW1wbGlm aWVkJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsiPlBsZWFzZSBoZWxwIHRvIHJldmlldyB0 aGUgZGVzaWduIG9mCjwvc3Bhbj48c3BhbiBsYW5nPTNEIkVOLVVTIj48YSBocmVmPTNEImh0dHA6 Ly93d3cub3ZpcnQub3JnL0ZlYXR1cmVzL05VTUFfYT0KbmRfVmlydHVhbF9OVU1BIj5GZWF0dXJl cy9OVU1BX2FuZF9WaXJ0dWFsX05VTUE8L2E+IG9uIG9WaXJ0IGNvbW11bml0eSB3aWtpPQogcGFn ZS48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNwYW4gbGFu Zz0zRCJFTi1VUyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29O b3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiPklmIGFueW9uZSBoYXZlIHNvbWUgcXVlc3Rpb24g YW49CmQgc3VnZ2VzdGlvbiwgcGxlYXNlIGxldCBtZSBrbm93LjxvOnA+PC9vOnA+PC9zcGFuPjwv cD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5nPTNEIkVOLVVTIj48bzpwPiZuYnNw OzwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNwYW4gbGFuZz0zRCJF Ti1VUyI+VGhhbmtzIGFsbC48bzpwPjwvbzpwPjwvc3Bhbj48Lz0KcD4KPHAgY2xhc3M9M0QiTXNv Tm9ybWFsIj48c3BhbiBsYW5nPTNEIkVOLVVTIiBzdHlsZT0zRCJmb250LWZhbWlseTomcXVvdDtI UCBTPQppbXBsaWZpZWQmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+PG86cD4mbmJzcDs8 L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxiPjxzcGFuIGxhbmc9M0Qi RU4tVVMiIHN0eWxlPTNEImZvbnQtc2l6ZTo5LjBwdDtmb249CnQtZmFtaWx5OiZxdW90O0hQIFNp bXBsaWZpZWQmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjpibGFjayI+QmVzdD0K IFJlZ2FyZHMsPGJyPgo8L3NwYW4+PC9iPjxzcGFuIGxhbmc9M0QiRU4tVVMiIHN0eWxlPTNEImZv bnQtc2l6ZTo5LjBwdDtmb250LWZhbWlseTomcXVvdDs9CkhQIFNpbXBsaWZpZWQmcXVvdDssJnF1 b3Q7c2Fucy1zZXJpZiZxdW90Oztjb2xvcjojNzE3MTcyIj5KYXNvbiBMaWFvPC9zcGFuPj0KPHNw YW4gbGFuZz0zRCJFTi1VUyI+PG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29O b3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4K PC9kaXY+CjwvYm9keT4KPC9odG1sPgoKLS1fMDAwX0I2M0M4NThFNzc3Njc5NDU4MzM4QTMwQTk5 MUJCNTI0MDE1NUUyNDhHMVczNzgwYW1lcmljYXNfLS0K --===============1542345472562071098==-- From sbonazzo at redhat.com Fri Dec 13 03:11:40 2013 Content-Type: multipart/mixed; boundary="===============1748877283536752690==" MIME-Version: 1.0 From: Sandro Bonazzola To: devel at ovirt.org Subject: [Engine-devel] [QE] ovirt-docs? Date: Fri, 13 Dec 2013 09:11:36 +0100 Message-ID: <52AAC138.2060009@redhat.com> --===============1748877283536752690== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, both wiki page http://www.ovirt.org/User_Guides and git://gerrit.ovirt.org/= ovirt-docs are a bit outdated. We also have a few bugs for components: - doc-Installation-Guide - doc-REST_API_Guide Anybody willing to update docs for 3.3.2 release? -- = Sandro Bonazzola Better technology. Faster innovation. Powered by community collaboration. See how it works at redhat.com --===============1748877283536752690==-- From S.Kieske at mittwald.de Fri Dec 13 03:20:17 2013 Content-Type: multipart/mixed; boundary="===============7780968887124043334==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: [Engine-devel] Fwd: Re: [Users] Ubuntu & Debian guest agent Date: Fri, 13 Dec 2013 08:17:28 +0000 Message-ID: <52AAC332.5010701@mittwald.de> In-Reply-To: 52A98DAB.7060407@mittwald.de --===============7780968887124043334== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Forwarding to devel: In short: does the guest agent really need to use "usermode" for shutdown? Simple sudoer rights should suffice and greatly reduce the dependency tree. -------- Original-Nachricht -------- Betreff: Re: [Users] Ubuntu & Debian guest agent Datum: Thu, 12 Dec 2013 10:16:48 +0000 Von: Sven Kieske An: users(a)ovirt.org Okay, i was able to resolve some of my questions already with the help of Vinzenz Feenstra in ovirt IRC (Thanks again). I'm somewhat impressed, the agent reports IPv4 addresses and even multiple ipv6 addresses from the vm. But I have some additional question: There is a huge dependency tree, resulting in the download of the following packages on Ubuntu 12.04.3: fontconfig fontconfig-config hicolor-icon-theme libatk1.0-0 libatk1.0-data libavahi-client3 libavahi-common-data libavahi-common3 libcairo2 libcups2 libdatrie1 libfontconfig1 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libjasper1 libjpeg-turbo8 libjpeg8 libnl1 libpango1.0-0 libpixman-1-0 libthai-data libthai0 libtiff4 libuser1 libxcb-render0 libxcb-shm0 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxft2 libxi6 libxinerama1 libxrandr2 libxrender1 python-ethtool shared-mime-info ttf-dejavu-core usermode I investigated a little and it seems that most of this stuff (graphic libs) gets pulled in by the package "usermode" which is a graphical tool for end users for manipulating passwords etc. I can understand that this tool might be needed for SSO and okay for desktop users. But I want to ask if it can't be substituted through sudo or similar commandline tools for the purpose of installing the agent on a server. from a security perspective you don't want files like libjpeg on your server if you don't need them. I don't know how/why exactly usermode is used/needed so maybe this can be changed? -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen _______________________________________________ Users mailing list Users(a)ovirt.org http://lists.ovirt.org/mailman/listinfo/users --===============7780968887124043334==-- From ecohen at redhat.com Fri Dec 13 12:56:27 2013 Content-Type: multipart/mixed; boundary="===============2531585999427747693==" MIME-Version: 1.0 From: Einav Cohen To: devel at ovirt.org Subject: [Engine-devel] developmen environment: logs Date: Fri, 13 Dec 2013 12:56:26 -0500 Message-ID: <1075093769.31102444.1386957386516.JavaMail.root@redhat.com> In-Reply-To: 1339982467.31090644.1386956442894.JavaMail.root@redhat.com --===============2531585999427747693== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable [working on development environment] (1) I tried following instructions in [1] in order to have my engine.log = log messages from the bll module in DEBUG level. = After adding section [2] to the relevant file, I got an error message [3] = (probably since a logger for category "org.ovirt.engine.core.bll" already = exists in the file). = I removed that new section, and changed the relevant string within the = already-existing from "INFO= " = to "DEBUG"; however, log for bll messages kept being logged only in the = "INFO" level. = [I restarted ovirt-engine.py after every change] Any ideas? (2) Does anyone know why queries invocation isn't being logged into the = engine.log [maybe they are being logged in DEBUG level and due to (1) I = cannot see them]? it seems that only action invocations are being logged. = Many thanks in advance. = ---- Regards, = Einav [1] http://www.ovirt.org/OVirt_Engine_Development_Environment#Enable_DEBUG_= log [2] = --- --- [3] [ovirt-engine-devel-env]$ ./ovirt-engine.py start Listening for transport dt_socket at address: 8787 ovirt-engine[13794] ERROR run:485 Error: process terminated with status cod= e 1 [ovirt-engine-devel-env]$ --===============2531585999427747693==-- From awels at redhat.com Fri Dec 13 13:01:14 2013 Content-Type: multipart/mixed; boundary="===============5226633139616234500==" MIME-Version: 1.0 From: Alexander Wels To: devel at ovirt.org Subject: Re: [Engine-devel] developmen environment: logs Date: Fri, 13 Dec 2013 13:01:09 -0500 Message-ID: <2812174.GLULMYJF7Q@awels> In-Reply-To: 1075093769.31102444.1386957386516.JavaMail.root@redhat.com --===============5226633139616234500== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable The attached ovirt-engine.xml.in.debug should be what you are looking for. Save it as ~/ovirt-engine/share/ovirt-engine/services/ovirt-engine/ovirt- engine.xml.in (maybe backup the original first). Restart the engine and you should be running in debug mode. On Friday, December 13, 2013 12:56:26 PM Einav Cohen wrote: > [working on development environment] > = > (1) I tried following instructions in [1] in order to have my engine.log > log messages from the bll module in DEBUG level. > = > After adding section [2] to the relevant file, I got an error message [3] > (probably since a logger for category "org.ovirt.engine.core.bll" already > exists in the file). > = > I removed that new section, and changed the relevant string within the > already-existing from "IN= FO" > to "DEBUG"; however, log for bll messages kept being logged only in the > "INFO" level. > = > [I restarted ovirt-engine.py after every change] > = > Any ideas? > = > (2) Does anyone know why queries invocation isn't being logged into the > engine.log [maybe they are being logged in DEBUG level and due to (1) I > cannot see them]? it seems that only action invocations are being logged. > = > Many thanks in advance. > = > ---- > Regards, > Einav > = > [1] > http://www.ovirt.org/OVirt_Engine_Development_Environment#Enable_DEBUG_log > = > [2] > --- > > > > --- > = > [3] [ovirt-engine-devel-env]$ ./ovirt-engine.py start > Listening for transport dt_socket at address: 8787 > ovirt-engine[13794] ERROR run:485 Error: process terminated with status c= ode > 1 [ovirt-engine-devel-env]$ > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel --===============5226633139616234500== Content-Type: application/xml MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ovirt-engine.xml.in.debug" PD94bWwgdmVyc2lvbj0iMS4wIiA/PgoKPHNlcnZlciB4bWxucz0idXJuOmpib3NzOmRvbWFpbjox LjEiPgoKICA8ZXh0ZW5zaW9ucz4KICAgIDxleHRlbnNpb24gbW9kdWxlPSJvcmcuamJvc3MuYXMu Y2x1c3RlcmluZy5pbmZpbmlzcGFuIi8+CiAgICA8ZXh0ZW5zaW9uIG1vZHVsZT0ib3JnLmpib3Nz LmFzLmNvbm5lY3RvciIvPgogICAgPGV4dGVuc2lvbiBtb2R1bGU9Im9yZy5qYm9zcy5hcy5kZXBs b3ltZW50LXNjYW5uZXIiLz4KICAgIDxleHRlbnNpb24gbW9kdWxlPSJvcmcuamJvc3MuYXMuZWUi Lz4KICAgIDxleHRlbnNpb24gbW9kdWxlPSJvcmcuamJvc3MuYXMuZWpiMyIvPgogICAgPGV4dGVu c2lvbiBtb2R1bGU9Im9yZy5qYm9zcy5hcy5qYXhycyIvPgogICAgPGV4dGVuc2lvbiBtb2R1bGU9 Im9yZy5qYm9zcy5hcy5qbXgiLz4KICAgIDxleHRlbnNpb24gbW9kdWxlPSJvcmcuamJvc3MuYXMu anBhIi8+CiAgICA8ZXh0ZW5zaW9uIG1vZHVsZT0ib3JnLmpib3NzLmFzLmxvZ2dpbmciLz4KICAg IDxleHRlbnNpb24gbW9kdWxlPSJvcmcuamJvc3MuYXMubmFtaW5nIi8+CiAgICA8ZXh0ZW5zaW9u IG1vZHVsZT0ib3JnLmpib3NzLmFzLnJlbW90aW5nIi8+CiAgICA8ZXh0ZW5zaW9uIG1vZHVsZT0i b3JnLmpib3NzLmFzLnNlY3VyaXR5Ii8+CiAgICA8ZXh0ZW5zaW9uIG1vZHVsZT0ib3JnLmpib3Nz LmFzLnRocmVhZHMiLz4KICAgIDxleHRlbnNpb24gbW9kdWxlPSJvcmcuamJvc3MuYXMudHJhbnNh Y3Rpb25zIi8+CiAgICA8ZXh0ZW5zaW9uIG1vZHVsZT0ib3JnLmpib3NzLmFzLndlYiIvPgogIDwv ZXh0ZW5zaW9ucz4KCiAgPHN5c3RlbS1wcm9wZXJ0aWVzPgogICAgPCEtLSBEb24ndCBsZXQgcXVh cnR6IGNhbGwgaG9tZSB0byBjaGVjayBmb3IgdXBkYXRlczogLS0+CiAgICA8cHJvcGVydHkgbmFt ZT0ib3JnLnF1YXJ0ei5zY2hlZHVsZXIuc2tpcFVwZGF0ZUNoZWNrIiB2YWx1ZT0idHJ1ZSIvPgoK ICAgIDwhLS0gQ29uZmlndXJlIHF1YXJ0eiB0aHJlYWQgcG9vbDogLS0+CiAgICA8cHJvcGVydHkg bmFtZT0ib3JnLnF1YXJ0ei50aHJlYWRQb29sLmNsYXNzIiB2YWx1ZT0ib3JnLnF1YXJ0ei5zaW1w bC5TaW1wbGVUaHJlYWRQb29sIi8+CiAgICA8cHJvcGVydHkgbmFtZT0ib3JnLnF1YXJ0ei50aHJl YWRQb29sLnRocmVhZENvdW50IiB2YWx1ZT0iMTAwIi8+CiAgICA8cHJvcGVydHkgbmFtZT0ib3Jn LnF1YXJ0ei5qb2JTdG9yZS5taXNmaXJlVGhyZXNob2xkIiB2YWx1ZT0iNjAwMDAiLz4KICAgIDxw cm9wZXJ0eSBuYW1lPSJvcmcucXVhcnR6LmpvYlN0b3JlLmNsYXNzIiB2YWx1ZT0ib3JnLnF1YXJ0 ei5zaW1wbC5SQU1Kb2JTdG9yZSIvPgoKICAgIDwhLS0gRW5hYmxlIGNvbXByZXNzaW9uIGZvciBo dG1sIGNvbnRlbnQgYW5kIFJFU1QgYXBpIC0tPgogICAgPHByb3BlcnR5IG5hbWU9Im9yZy5hcGFj aGUuY295b3RlLmh0dHAxMS5IdHRwMTFQcm90b2NvbC5DT01QUkVTU0lPTiIgdmFsdWU9Im9uIi8+ CiAgICA8cHJvcGVydHkgbmFtZT0ib3JnLmFwYWNoZS5jb3lvdGUuaHR0cDExLkh0dHAxMVByb3Rv Y29sLkNPTVBSRVNTSU9OX01JTUVfVFlQRVMiIHZhbHVlPSJ0ZXh0L2phdmFzY3JpcHQsdGV4dC9j c3MsdGV4dC9odG1sLHRleHQveG1sLHRleHQvanNvbixhcHBsaWNhdGlvbi94LXlhbWwsYXBwbGlj YXRpb24veG1sLGFwcGxpY2F0aW9uL2pzb24iLz4KCiAgPC9zeXN0ZW0tcHJvcGVydGllcz4KCiAg PCEtLSBXZSBuZWVkIHRvIGVuYWJsZSB0aGUgbWFuYWdlbWVudCBzdWJzeXN0ZW0gYmVjYXVzZSBp dCBpcyBhbgogICAgICAgaW5kaXJlY3QgZGVwZW5kZW5jeSBvZiB0aGUgSW5maW5pc3BhbiBzdWJz eXN0ZW0gKHNpbmNlIHZlcnNpb24KICAgICAgIDcuMiBvZiB0aGUgYXBwbGljYXRpb24gc2VydmVy KSBidXQgYXQgdGhlIHNhbWUgdGltZSB3ZSBkb24ndAogICAgICAgd2FudCBhbnlvbmUgKG90aGVy IHRoYW4gdGhlIHJvb3QgYW5kIG92aXJ0IHVzZXJzKSB0byBiZSBhYmxlCiAgICAgICB0byBjb25u ZWN0IHRvIHRoZSBtYW5hZ2VtZW50IHBvcnQsIHNvIHdlIGp1c3QgdXNlIGFuIGVtcHR5CiAgICAg ICB1c2VycyBmaWxlOiAtLT4KICA8bWFuYWdlbWVudD4KICAgIDxzZWN1cml0eS1yZWFsbXM+CiAg ICAgIDxzZWN1cml0eS1yZWFsbSBuYW1lPSJtYW5hZ2VtZW50Ij4KICAgICAgICA8YXV0aGVudGlj YXRpb24+CiAgICAgICAgICA8cHJvcGVydGllcyBwYXRoPSIvZGV2L251bGwiLz4KICAgICAgICA8 L2F1dGhlbnRpY2F0aW9uPgogICAgICA8L3NlY3VyaXR5LXJlYWxtPgogICAgPC9zZWN1cml0eS1y ZWFsbXM+CiAgICA8bWFuYWdlbWVudC1pbnRlcmZhY2VzPgogICAgICA8bmF0aXZlLWludGVyZmFj ZSBzZWN1cml0eS1yZWFsbT0ibWFuYWdlbWVudCI+CiAgICAgICAgPHNvY2tldC1iaW5kaW5nIG5h dGl2ZT0ibWFuYWdlbWVudCIvPgogICAgICA8L25hdGl2ZS1pbnRlcmZhY2U+CiAgICA8L21hbmFn ZW1lbnQtaW50ZXJmYWNlcz4KICA8L21hbmFnZW1lbnQ+CgogIDxwcm9maWxlPgoKICAgIDxzdWJz eXN0ZW0geG1sbnM9InVybjpqYm9zczpkb21haW46bG9nZ2luZzoxLjEiPgoKICAgICAgPCEtLSBB bGwgdGhlIGFwcGxpY2F0aW9uIHNlcnZlciBtZXNzYWdlcyBnbyBoZXJlOiAtLT4KICAgICAgPGZp bGUtaGFuZGxlciBuYW1lPSJTRVJWRVIiPgogICAgICAgIDxsZXZlbCBuYW1lPSJJTkZPIi8+CiAg ICAgICAgPGZvcm1hdHRlcj4KICAgICAgICAgIDxwYXR0ZXJuLWZvcm1hdHRlciBwYXR0ZXJuPSIl ZCAlLTVwIFslY10gKCV0KSAlcyVFJW4iLz4KICAgICAgICA8L2Zvcm1hdHRlcj4KICAgICAgICA8 ZmlsZSBwYXRoPSIkZ2V0c3RyaW5nKCdFTkdJTkVfTE9HJykvc2VydmVyLmxvZyIvPgogICAgICAg IDxhcHBlbmQgdmFsdWU9InRydWUiLz4KICAgICAgPC9maWxlLWhhbmRsZXI+CgogICAgICA8IS0t IE9ubHkgdGhlIGVuZ2luZSBtZXNzYWdlcyBnbyBoZXJlOiAtLT4KICAgICAgPGZpbGUtaGFuZGxl ciBuYW1lPSJFTkdJTkUiIGF1dG9mbHVzaD0idHJ1ZSI+CiAgICAgICAgPGxldmVsIG5hbWU9IkRF QlVHIi8+CiAgICAgICAgPGZvcm1hdHRlcj4KICAgICAgICAgIDxwYXR0ZXJuLWZvcm1hdHRlciBw YXR0ZXJuPSIlZCAlLTVwIFslY10gKCV0KSAlcyVFJW4iLz4KICAgICAgICA8L2Zvcm1hdHRlcj4K ICAgICAgICA8ZmlsZSBwYXRoPSIkZ2V0c3RyaW5nKCdFTkdJTkVfTE9HJykvZW5naW5lLmxvZyIv PgogICAgICAgIDxhcHBlbmQgdmFsdWU9InRydWUiLz4KICAgICAgPC9maWxlLWhhbmRsZXI+Cgog ICAgICA8IS0tIENvbnNvbGUgLS0+CiAgICAgIDxjb25zb2xlLWhhbmRsZXIgbmFtZT0iQ09OU09M RSIgYXV0b2ZsdXNoPSJ0cnVlIj4KICAgICAgICA8bGV2ZWwgbmFtZT0iREVCVUciLz4KICAgICAg ICA8Zm9ybWF0dGVyPgogICAgICAgICAgPHBhdHRlcm4tZm9ybWF0dGVyIHBhdHRlcm49IiVkICUt NXAgWyVjXSAoJXQpICVzJUUlbiIvPgogICAgICAgIDwvZm9ybWF0dGVyPgogICAgICA8L2NvbnNv bGUtaGFuZGxlcj4KCiAgICAgIDwhLS0gTG9nZ2VycyBmb3IgdGhlIGFwcGxpY2F0aW9uIHNlcnZl cjogLS0+CiAgICAgIDxsb2dnZXIgY2F0ZWdvcnk9ImNvbS5hcmp1bmEiPgogICAgICAgIDxsZXZl bCBuYW1lPSJXQVJOIi8+CiAgICAgIDwvbG9nZ2VyPgogICAgICA8bG9nZ2VyIGNhdGVnb3J5PSJv cmcuYXBhY2hlLnRvbWNhdC51dGlsIj4KICAgICAgICA8bGV2ZWwgbmFtZT0iV0FSTiIvPgogICAg ICA8L2xvZ2dlcj4KICAgICAgPGxvZ2dlciBjYXRlZ29yeT0ic3VuLnJtaSI+CiAgICAgICAgPGxl dmVsIG5hbWU9IldBUk4iLz4KICAgICAgPC9sb2dnZXI+CgogICAgICA8IS0tIExvZ2dlcnMgZm9y IHRoZSBlbmdpbmU6IC0tPgogICAgICA8bG9nZ2VyIGNhdGVnb3J5PSJvcmcub3ZpcnQiIHVzZS1w YXJlbnQtaGFuZGxlcnM9ImZhbHNlIj4KICAgICAgICA8bGV2ZWwgbmFtZT0iREVCVUciLz4KICAg ICAgICA8aGFuZGxlcnM+CiAgICAgICAgICA8aGFuZGxlciBuYW1lPSJFTkdJTkUiLz4KICAgICAg ICAgICNpZiAkZ2V0Ym9vbGVhbignRU5HSU5FX0xPR19UT19DT05TT0xFJykKICAgICAgICAgICAg ICA8aGFuZGxlciBuYW1lPSJDT05TT0xFIi8+CiAgICAgICAgICAjZW5kIGlmCiAgICAgICAgPC9o YW5kbGVycz4KICAgICAgPC9sb2dnZXI+CiAgICAgIDxsb2dnZXIgY2F0ZWdvcnk9Im9yZy5vdmly dC5lbmdpbmUuY29yZS5ibGwiPgogICAgICAgIDxsZXZlbCBuYW1lPSJERUJVRyIvPgogICAgICA8 L2xvZ2dlcj4KICAgICAgPGxvZ2dlciBjYXRlZ29yeT0ib3JnLm92aXJ0LmVuZ2luZS5jb3JlLmRh bC5kYmJyb2tlci5Qb3N0Z3Jlc0RiRW5naW5lRGlhbGVjdFwkUG9zdGdyZXNKZGJjVGVtcGxhdGUi PgogICAgICAgIDxsZXZlbCBuYW1lPSJXQVJOIi8+CiAgICAgIDwvbG9nZ2VyPgogICAgICA8bG9n Z2VyIGNhdGVnb3J5PSJvcmcuc3ByaW5nZnJhbWV3b3JrLmxkYXAiPgogICAgICAgIDxsZXZlbCBu YW1lPSJFUlJPUiIvPgogICAgICA8L2xvZ2dlcj4KCiAgICAgIDxyb290LWxvZ2dlcj4KICAgICAg ICA8bGV2ZWwgbmFtZT0iREVCVUciLz4KICAgICAgICA8aGFuZGxlcnM+CiAgICAgICAgICA8aGFu ZGxlciBuYW1lPSJTRVJWRVIiLz4KICAgICAgICA8L2hhbmRsZXJzPgogICAgICA8L3Jvb3QtbG9n Z2VyPgoKICAgIDwvc3Vic3lzdGVtPgoKICAgIDxzdWJzeXN0ZW0geG1sbnM9InVybjpqYm9zczpk b21haW46ZGF0YXNvdXJjZXM6MS4wIj4KCiAgICAgIDxkYXRhc291cmNlcz4KCiAgICAgICAgPGRh dGFzb3VyY2Ugam5kaS1uYW1lPSJqYXZhOi9FTkdJTkVEYXRhU291cmNlIiBwb29sLW5hbWU9IkVO R0lORURhdGFTb3VyY2UiIGVuYWJsZWQ9InRydWUiIHVzZS1jY209ImZhbHNlIj4KICAgICAgICAg IDxjb25uZWN0aW9uLXVybD48IVtDREFUQVskZ2V0c3RyaW5nKCdFTkdJTkVfREJfVVJMJyldXT48 L2Nvbm5lY3Rpb24tdXJsPgogICAgICAgICAgPGRyaXZlcj5wb3N0Z3Jlc3FsPC9kcml2ZXI+CiAg ICAgICAgICA8dHJhbnNhY3Rpb24taXNvbGF0aW9uPlRSQU5TQUNUSU9OX1JFQURfQ09NTUlUVEVE PC90cmFuc2FjdGlvbi1pc29sYXRpb24+CiAgICAgICAgICA8cG9vbD4KICAgICAgICAgICAgPG1p bi1wb29sLXNpemU+JGdldGludGVnZXIoJ0VOR0lORV9EQl9NSU5fQ09OTkVDVElPTlMnKTwvbWlu LXBvb2wtc2l6ZT4KICAgICAgICAgICAgPG1heC1wb29sLXNpemU+JGdldGludGVnZXIoJ0VOR0lO RV9EQl9NQVhfQ09OTkVDVElPTlMnKTwvbWF4LXBvb2wtc2l6ZT4KICAgICAgICAgICAgPHByZWZp bGw+dHJ1ZTwvcHJlZmlsbD4KICAgICAgICAgIDwvcG9vbD4KICAgICAgICAgIDxzZWN1cml0eT4K ICAgICAgICAgICAgPHVzZXItbmFtZT48IVtDREFUQVskZ2V0c3RyaW5nKCdFTkdJTkVfREJfVVNF UicpXV0+PC91c2VyLW5hbWU+CiAgICAgICAgICAgIDxwYXNzd29yZD48IVtDREFUQVskZ2V0c3Ry aW5nKCdFTkdJTkVfREJfUEFTU1dPUkQnKV1dPjwvcGFzc3dvcmQ+CiAgICAgICAgICA8L3NlY3Vy aXR5PgogICAgICAgICAgPHN0YXRlbWVudD4KICAgICAgICAgICAgPHByZXBhcmVkLXN0YXRlbWVu dC1jYWNoZS1zaXplPjEwMDwvcHJlcGFyZWQtc3RhdGVtZW50LWNhY2hlLXNpemU+CiAgICAgICAg ICAgIDxzaGFyZS1wcmVwYXJlZC1zdGF0ZW1lbnRzLz4KICAgICAgICAgIDwvc3RhdGVtZW50Pgog ICAgICAgICAgPHZhbGlkYXRpb24+CiAgICAgICAgICAgIDxjaGVjay12YWxpZC1jb25uZWN0aW9u LXNxbD5zZWxlY3QgMTwvY2hlY2stdmFsaWQtY29ubmVjdGlvbi1zcWw+CiAgICAgICAgICA8L3Zh bGlkYXRpb24+CiAgICAgICAgPC9kYXRhc291cmNlPgoKICAgICAgICA8ZHJpdmVycz4KICAgICAg ICAgIDxkcml2ZXIgbmFtZT0icG9zdGdyZXNxbCIgbW9kdWxlPSJvcmcucG9zdGdyZXNxbCI+CiAg ICAgICAgICAgIDx4YS1kYXRhc291cmNlLWNsYXNzPm9yZy5wb3N0Z3Jlc3FsLnhhLlBHWEFEYXRh U291cmNlPC94YS1kYXRhc291cmNlLWNsYXNzPgogICAgICAgICAgPC9kcml2ZXI+CiAgICAgICAg PC9kcml2ZXJzPgoKICAgICAgPC9kYXRhc291cmNlcz4KCiAgICA8L3N1YnN5c3RlbT4KCiAgICA8 c3Vic3lzdGVtIHhtbG5zPSJ1cm46amJvc3M6ZG9tYWluOmRlcGxveW1lbnQtc2Nhbm5lcjoxLjEi PgogICAgICA8ZGVwbG95bWVudC1zY2FubmVyIHNjYW4taW50ZXJ2YWw9IjUwMDAiIHBhdGg9IiRn ZXRzdHJpbmcoJ0VOR0lORV9WQVInKS9kZXBsb3ltZW50cyIvPgogICAgPC9zdWJzeXN0ZW0+Cgog ICAgPHN1YnN5c3RlbSB4bWxucz0idXJuOmpib3NzOmRvbWFpbjplZToxLjAiLz4KCiAgICA8c3Vi c3lzdGVtIHhtbG5zPSJ1cm46amJvc3M6ZG9tYWluOmVqYjM6MS4yIj4KICAgICAgPHNlc3Npb24t YmVhbj4KICAgICAgICA8c3RhdGVsZXNzPgogICAgICAgICAgPGJlYW4taW5zdGFuY2UtcG9vbC1y ZWYgcG9vbC1uYW1lPSJzbHNiLXN0cmljdC1tYXgtcG9vbCIvPgogICAgICAgIDwvc3RhdGVsZXNz PgogICAgICAgIDxzdGF0ZWZ1bCBkZWZhdWx0LWFjY2Vzcy10aW1lb3V0PSIzMDAwMDAiIGNhY2hl LXJlZj0ic2ltcGxlIi8+CiAgICAgICAgPHNpbmdsZXRvbiBkZWZhdWx0LWFjY2Vzcy10aW1lb3V0 PSIzMDAwMDAiLz4KICAgICAgPC9zZXNzaW9uLWJlYW4+CiAgICAgIDxtZGI+CiAgICAgICAgPHJl c291cmNlLWFkYXB0ZXItcmVmIHJlc291cmNlLWFkYXB0ZXItbmFtZT0iaG9ybmV0cS1yYSIvPgog ICAgICAgIDxiZWFuLWluc3RhbmNlLXBvb2wtcmVmIHBvb2wtbmFtZT0ibWRiLXN0cmljdC1tYXgt cG9vbCIvPgogICAgICA8L21kYj4KICAgICAgPHBvb2xzPgogICAgICAgIDxiZWFuLWluc3RhbmNl LXBvb2xzPgogICAgICAgICAgPHN0cmljdC1tYXgtcG9vbCBuYW1lPSJzbHNiLXN0cmljdC1tYXgt cG9vbCIgbWF4LXBvb2wtc2l6ZT0iMjAiIGluc3RhbmNlLWFjcXVpc2l0aW9uLXRpbWVvdXQ9IjUi IGluc3RhbmNlLWFjcXVpc2l0aW9uLXRpbWVvdXQtdW5pdD0iTUlOVVRFUyIvPgogICAgICAgICAg PHN0cmljdC1tYXgtcG9vbCBuYW1lPSJtZGItc3RyaWN0LW1heC1wb29sIiBtYXgtcG9vbC1zaXpl PSIyMCIgaW5zdGFuY2UtYWNxdWlzaXRpb24tdGltZW91dD0iNSIgaW5zdGFuY2UtYWNxdWlzaXRp b24tdGltZW91dC11bml0PSJNSU5VVEVTIi8+CiAgICAgICAgPC9iZWFuLWluc3RhbmNlLXBvb2xz PgogICAgICA8L3Bvb2xzPgogICAgICA8Y2FjaGVzPgogICAgICAgIDxjYWNoZSBuYW1lPSJzaW1w bGUiIGFsaWFzZXM9Ik5vUGFzc2l2YXRpb25DYWNoZSIvPgogICAgICA8L2NhY2hlcz4KICAgICAg PGFzeW5jIHRocmVhZC1wb29sLW5hbWU9ImRlZmF1bHQiLz4KICAgICAgPHRpbWVyLXNlcnZpY2Ug dGhyZWFkLXBvb2wtbmFtZT0iZGVmYXVsdCI+CiAgICAgICAgPGRhdGEtc3RvcmUgcGF0aD0iJGdl dHN0cmluZygnRU5HSU5FX1ZBUicpL3RpbWVyLXNlcnZpY2UtZGF0YSIvPgogICAgICA8L3RpbWVy LXNlcnZpY2U+CiAgICAgIDxyZW1vdGUgY29ubmVjdG9yLXJlZj0icmVtb3RpbmctY29ubmVjdG9y IiB0aHJlYWQtcG9vbC1uYW1lPSJkZWZhdWx0Ii8+CiAgICAgIDx0aHJlYWQtcG9vbHM+CiAgICAg ICAgPHRocmVhZC1wb29sIG5hbWU9ImRlZmF1bHQiPgogICAgICAgICAgPG1heC10aHJlYWRzIGNv dW50PSIxMCIvPgogICAgICAgICAgPGtlZXBhbGl2ZS10aW1lIHRpbWU9IjEwMCIgdW5pdD0ibWls bGlzZWNvbmRzIi8+CiAgICAgICAgPC90aHJlYWQtcG9vbD4KICAgICAgPC90aHJlYWQtcG9vbHM+ CiAgICA8L3N1YnN5c3RlbT4KCiAgICA8c3Vic3lzdGVtIHhtbG5zPSJ1cm46amJvc3M6ZG9tYWlu OmluZmluaXNwYW46MS4xIiBkZWZhdWx0LWNhY2hlLWNvbnRhaW5lcj0ib3ZpcnQtZW5naW5lIj4K ICAgICAgICA8Y2FjaGUtY29udGFpbmVyIG5hbWU9Im92aXJ0LWVuZ2luZSIgZGVmYXVsdC1jYWNo ZT0idGltZW91dC1iYXNlIiBqbmRpLW5hbWU9ImphdmE6amJvc3MvaW5maW5pc3Bhbi9vdmlydC1l bmdpbmUiIHN0YXJ0PSJFQUdFUiI+CiAgICAgICAgIDxsb2NhbC1jYWNoZSBuYW1lPSJ0aW1lb3V0 LWJhc2UiPgogICAgICAgICAgIDx0cmFuc2FjdGlvbiBtb2RlPSJOT05FIi8+CiAgICAgICAgICAg PGV2aWN0aW9uIG1heC1lbnRyaWVzPSIxMDAwMCIvPgogICAgICAgICAgIDxleHBpcmF0aW9uIGlu dGVydmFsPSI2MDAwMCIvPgogICAgICAgICA8L2xvY2FsLWNhY2hlPgogICAgICAgIDwvY2FjaGUt Y29udGFpbmVyPgogICAgPC9zdWJzeXN0ZW0+CgogICAgPHN1YnN5c3RlbSB4bWxucz0idXJuOmpi b3NzOmRvbWFpbjpqYXhyczoxLjAiLz4KCiAgICA8c3Vic3lzdGVtIHhtbG5zPSJ1cm46amJvc3M6 ZG9tYWluOmpjYToxLjEiPgogICAgICA8YXJjaGl2ZS12YWxpZGF0aW9uIGVuYWJsZWQ9ImZhbHNl IiBmYWlsLW9uLWVycm9yPSJmYWxzZSIgZmFpbC1vbi13YXJuPSJmYWxzZSIvPgogICAgICA8YmVh bi12YWxpZGF0aW9uIGVuYWJsZWQ9InRydWUiLz4KICAgICAgPGRlZmF1bHQtd29ya21hbmFnZXI+ CiAgICAgICAgPHNob3J0LXJ1bm5pbmctdGhyZWFkcz4KICAgICAgICAgIDxjb3JlLXRocmVhZHMg Y291bnQ9IjUwIi8+CiAgICAgICAgICA8cXVldWUtbGVuZ3RoIGNvdW50PSI1MCIvPgogICAgICAg ICAgPG1heC10aHJlYWRzIGNvdW50PSI1MCIvPgogICAgICAgICAgPGtlZXBhbGl2ZS10aW1lIHRp bWU9IjEwIiB1bml0PSJzZWNvbmRzIi8+CiAgICAgICAgPC9zaG9ydC1ydW5uaW5nLXRocmVhZHM+ CiAgICAgICAgPGxvbmctcnVubmluZy10aHJlYWRzPgogICAgICAgICAgPGNvcmUtdGhyZWFkcyBj b3VudD0iNTAiLz4KICAgICAgICAgIDxxdWV1ZS1sZW5ndGggY291bnQ9IjUwIi8+CiAgICAgICAg ICA8bWF4LXRocmVhZHMgY291bnQ9IjUwIi8+CiAgICAgICAgICA8a2VlcGFsaXZlLXRpbWUgdGlt ZT0iMTAiIHVuaXQ9InNlY29uZHMiLz4KICAgICAgICA8L2xvbmctcnVubmluZy10aHJlYWRzPgog ICAgICA8L2RlZmF1bHQtd29ya21hbmFnZXI+CiAgICA8L3N1YnN5c3RlbT4KCiAgICA8c3Vic3lz dGVtIHhtbG5zPSJ1cm46amJvc3M6ZG9tYWluOmpteDoxLjEiPgogICAgICA8c2hvdy1tb2RlbCB2 YWx1ZT0idHJ1ZSIvPgogICAgICA8cmVtb3RpbmctY29ubmVjdG9yLz4KICAgIDwvc3Vic3lzdGVt PgoKICAgIDxzdWJzeXN0ZW0geG1sbnM9InVybjpqYm9zczpkb21haW46anBhOjEuMCI+CiAgICAg IDxqcGEgZGVmYXVsdC1kYXRhc291cmNlPSIiLz4KICAgIDwvc3Vic3lzdGVtPgoKICAgIDxzdWJz eXN0ZW0geG1sbnM9InVybjpqYm9zczpkb21haW46bmFtaW5nOjEuMSIvPgoKICAgIDxzdWJzeXN0 ZW0geG1sbnM9InVybjpqYm9zczpkb21haW46cmVtb3Rpbmc6MS4xIj4KICAgICAgPGNvbm5lY3Rv ciBuYW1lPSJyZW1vdGluZy1jb25uZWN0b3IiIHNvY2tldC1iaW5kaW5nPSJyZW1vdGluZyIvPgog ICAgPC9zdWJzeXN0ZW0+CgogICAgPHN1YnN5c3RlbSB4bWxucz0idXJuOmpib3NzOmRvbWFpbjpy ZXNvdXJjZS1hZGFwdGVyczoxLjAiLz4KCiAgICA8c3Vic3lzdGVtIHhtbG5zPSJ1cm46amJvc3M6 ZG9tYWluOnNlY3VyaXR5OjEuMSI+CiAgICAgIDxzZWN1cml0eS1kb21haW5zPgogICAgICAgIDxz ZWN1cml0eS1kb21haW4gbmFtZT0ib3RoZXIiIGNhY2hlLXR5cGU9ImRlZmF1bHQiPgogICAgICAg ICAgPGF1dGhlbnRpY2F0aW9uPgogICAgICAgICAgICA8bG9naW4tbW9kdWxlIGNvZGU9IlJlbW90 aW5nIiBmbGFnPSJvcHRpb25hbCI+CiAgICAgICAgICAgICAgPG1vZHVsZS1vcHRpb24gbmFtZT0i cGFzc3dvcmQtc3RhY2tpbmciIHZhbHVlPSJ1c2VGaXJzdFBhc3MiLz4KICAgICAgICAgICAgPC9s b2dpbi1tb2R1bGU+CiAgICAgICAgICA8L2F1dGhlbnRpY2F0aW9uPgogICAgICAgIDwvc2VjdXJp dHktZG9tYWluPgogICAgICAgIDxzZWN1cml0eS1kb21haW4gbmFtZT0iamJvc3Mtd2ViLXBvbGlj eSIgY2FjaGUtdHlwZT0iZGVmYXVsdCI+CiAgICAgICAgICA8YXV0aG9yaXphdGlvbj4KICAgICAg ICAgICAgPHBvbGljeS1tb2R1bGUgY29kZT0iRGVsZWdhdGluZyIgZmxhZz0icmVxdWlyZWQiLz4K ICAgICAgICAgIDwvYXV0aG9yaXphdGlvbj4KICAgICAgICA8L3NlY3VyaXR5LWRvbWFpbj4KICAg ICAgICA8c2VjdXJpdHktZG9tYWluIG5hbWU9Impib3NzLWVqYi1wb2xpY3kiIGNhY2hlLXR5cGU9 ImRlZmF1bHQiPgogICAgICAgICAgPGF1dGhvcml6YXRpb24+CiAgICAgICAgICAgIDxwb2xpY3kt bW9kdWxlIGNvZGU9IkRlbGVnYXRpbmciIGZsYWc9InJlcXVpcmVkIi8+CiAgICAgICAgICA8L2F1 dGhvcml6YXRpb24+CiAgICAgICAgPC9zZWN1cml0eS1kb21haW4+CgogICAgICAgIDxzZWN1cml0 eS1kb21haW4gbmFtZT0iRW5naW5lS2VyYmVyb3NBdXRoIj4KICAgICAgICAgIDxhdXRoZW50aWNh dGlvbj4KICAgICAgICAgICAgPGxvZ2luLW1vZHVsZSBjb2RlPSJjb20uc3VuLnNlY3VyaXR5LmF1 dGgubW9kdWxlLktyYjVMb2dpbk1vZHVsZSIgZmxhZz0icmVxdWlyZWQiLz4KICAgICAgICAgIDwv YXV0aGVudGljYXRpb24+CiAgICAgICAgPC9zZWN1cml0eS1kb21haW4+CgogICAgICA8L3NlY3Vy aXR5LWRvbWFpbnM+CiAgICA8L3N1YnN5c3RlbT4KCiAgICA8c3Vic3lzdGVtIHhtbG5zPSJ1cm46 amJvc3M6ZG9tYWluOnRyYW5zYWN0aW9uczoxLjEiPgogICAgICA8Y29yZS1lbnZpcm9ubWVudD4K ICAgICAgICA8cHJvY2Vzcy1pZD4KICAgICAgICAgIDx1dWlkLz4KICAgICAgICA8L3Byb2Nlc3Mt aWQ+CiAgICAgIDwvY29yZS1lbnZpcm9ubWVudD4KICAgICAgPHJlY292ZXJ5LWVudmlyb25tZW50 IHNvY2tldC1iaW5kaW5nPSJ0eG4tcmVjb3ZlcnktZW52aXJvbm1lbnQiIHN0YXR1cy1zb2NrZXQt YmluZGluZz0idHhuLXN0YXR1cy1tYW5hZ2VyIi8+CiAgICAgIDxjb29yZGluYXRvci1lbnZpcm9u bWVudCBkZWZhdWx0LXRpbWVvdXQ9IjYwMCIvPgogICAgPC9zdWJzeXN0ZW0+CgogICAgPHN1YnN5 c3RlbSB4bWxucz0idXJuOmpib3NzOmRvbWFpbjp0aHJlYWRzOjEuMSIvPgoKICAgIDxzdWJzeXN0 ZW0geG1sbnM9InVybjpqYm9zczpkb21haW46d2ViOjEuMSIgbmF0aXZlPSJmYWxzZSIgZGVmYXVs dC12aXJ0dWFsLXNlcnZlcj0iZGVmYXVsdC1ob3N0Ij4KICAgICAgI2lmICRnZXRib29sZWFuKCdF TkdJTkVfSFRUUF9FTkFCTEVEJykKICAgICAgICA8Y29ubmVjdG9yIG5hbWU9Imh0dHAiIHByb3Rv Y29sPSJIVFRQLzEuMSIgc2NoZW1lPSJodHRwIiBzb2NrZXQtYmluZGluZz0iaHR0cCIgcmVkaXJl Y3QtcG9ydD0iJGdldGludGVnZXIoJ0VOR0lORV9IVFRQU19QT1JUJykiLz4KICAgICAgI2VuZCBp ZgogICAgICAjaWYgJGdldGJvb2xlYW4oJ0VOR0lORV9IVFRQU19FTkFCTEVEJykKICAgICAgICA8 Y29ubmVjdG9yIG5hbWU9Imh0dHBzIiBwcm90b2NvbD0iSFRUUC8xLjEiIHNjaGVtZT0iaHR0cHMi IHNvY2tldC1iaW5kaW5nPSJodHRwcyIgc2VjdXJlPSJ0cnVlIj4KICAgICAgICAgIDxzc2wgbmFt ZT0ic3NsIiBwYXNzd29yZD0ibXlwYXNzIiBjZXJ0aWZpY2F0ZS1rZXktZmlsZT0iJGdldHN0cmlu ZygnRU5HSU5FX1BLSScpL2tleXMvamJvc3MucDEyIiBrZXlzdG9yZS10eXBlPSJQS0NTMTIiIGtl eS1hbGlhcz0iMSIgcHJvdG9jb2w9IiRnZXRzdHJpbmcoJ0VOR0lORV9IVFRQU19QUk9UT0NPTFMn KSIgdmVyaWZ5LWNsaWVudD0iZmFsc2UiLz4KICAgICAgICA8L2Nvbm5lY3Rvcj4KICAgICAgI2Vu ZCBpZgogICAgICAjaWYgJGdldGJvb2xlYW4oJ0VOR0lORV9BSlBfRU5BQkxFRCcpCiAgICAgICAg PGNvbm5lY3RvciBuYW1lPSJhanAiIHByb3RvY29sPSJBSlAvMS4zIiBzY2hlbWU9Imh0dHAiIHNv Y2tldC1iaW5kaW5nPSJhanAiIHJlZGlyZWN0LXBvcnQ9IiRnZXRpbnRlZ2VyKCdFTkdJTkVfUFJP WFlfSFRUUFNfUE9SVCcpIi8+CiAgICAgICNlbmQgaWYKICAgICAgPHZpcnR1YWwtc2VydmVyIG5h bWU9ImRlZmF1bHQtaG9zdCIgZW5hYmxlLXdlbGNvbWUtcm9vdD0iZmFsc2UiPgogICAgICAgIDxh bGlhcyBuYW1lPSJsb2NhbGhvc3QiLz4KICAgICAgICA8cmV3cml0ZSBwYXR0ZXJuPSJeL1JIRVZN YW5hZ2VyKC4qKSQiIHN1YnN0aXR1dGlvbj0iL092aXJ0RW5naW5lJDEiIGZsYWdzPSJsYXN0Ii8+ CiAgICAgIDwvdmlydHVhbC1zZXJ2ZXI+CiAgICA8L3N1YnN5c3RlbT4KCiAgPC9wcm9maWxlPgoK ICA8aW50ZXJmYWNlcz4KICAgIDxpbnRlcmZhY2UgbmFtZT0ibG9vcGJhY2siPgogICAgICA8bG9v cGJhY2svPgogICAgPC9pbnRlcmZhY2U+CiAgICA8aW50ZXJmYWNlIG5hbWU9InB1YmxpYyI+CiAg ICAgIDxhbnktYWRkcmVzcy8+CiAgICA8L2ludGVyZmFjZT4KICA8L2ludGVyZmFjZXM+CgogIDxz b2NrZXQtYmluZGluZy1ncm91cCBuYW1lPSJzdGFuZGFyZC1zb2NrZXRzIiBkZWZhdWx0LWludGVy ZmFjZT0ibG9vcGJhY2siPgogICAgI2lmICRnZXRib29sZWFuKCdFTkdJTkVfSFRUUF9FTkFCTEVE JykKICAgICAgPHNvY2tldC1iaW5kaW5nIG5hbWU9Imh0dHAiIHBvcnQ9IiRnZXRpbnRlZ2VyKCdF TkdJTkVfSFRUUF9QT1JUJykiIGludGVyZmFjZT0icHVibGljIi8+CiAgICAjZW5kIGlmCiAgICAj aWYgJGdldGJvb2xlYW4oJ0VOR0lORV9IVFRQU19FTkFCTEVEJykKICAgICAgPHNvY2tldC1iaW5k aW5nIG5hbWU9Imh0dHBzIiBwb3J0PSIkZ2V0aW50ZWdlcignRU5HSU5FX0hUVFBTX1BPUlQnKSIg aW50ZXJmYWNlPSJwdWJsaWMiLz4KICAgICNlbmQgaWYKICAgICNpZiAkZ2V0Ym9vbGVhbignRU5H SU5FX0FKUF9FTkFCTEVEJykKICAgICAgPHNvY2tldC1iaW5kaW5nIG5hbWU9ImFqcCIgcG9ydD0i JGdldGludGVnZXIoJ0VOR0lORV9BSlBfUE9SVCcpIi8+CiAgICAjZW5kIGlmCiAgICA8c29ja2V0 LWJpbmRpbmcgbmFtZT0icmVtb3RpbmciIHBvcnQ9Ijg3MDMiLz4KICAgIDxzb2NrZXQtYmluZGlu ZyBuYW1lPSJ0eG4tcmVjb3ZlcnktZW52aXJvbm1lbnQiIHBvcnQ9Ijg3MDQiLz4KICAgIDxzb2Nr ZXQtYmluZGluZyBuYW1lPSJ0eG4tc3RhdHVzLW1hbmFnZXIiIHBvcnQ9Ijg3MDUiLz4KICAgIDxz b2NrZXQtYmluZGluZyBuYW1lPSJtYW5hZ2VtZW50IiBwb3J0PSI4NzA2Ii8+CiAgPC9zb2NrZXQt YmluZGluZy1ncm91cD4KCjwvc2VydmVyPgo= --===============5226633139616234500==-- From ecohen at redhat.com Fri Dec 13 14:59:54 2013 Content-Type: multipart/mixed; boundary="===============0022761967086578609==" MIME-Version: 1.0 From: Einav Cohen To: devel at ovirt.org Subject: Re: [Engine-devel] developmen environment: logs Date: Fri, 13 Dec 2013 14:59:53 -0500 Message-ID: <1675330976.31206642.1386964793391.JavaMail.root@redhat.com> In-Reply-To: 2812174.GLULMYJF7Q@awels --===============0022761967086578609== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable thanks, Alexander - it worked. ---- Regards, Einav ----- Original Message ----- > From: "Alexander Wels" > To: engine-devel(a)ovirt.org > Sent: Friday, December 13, 2013 1:01:09 PM > Subject: Re: [Engine-devel] developmen environment: logs > = > The attached ovirt-engine.xml.in.debug should be what you are looking for. > = > Save it as ~/ovirt-engine/share/ovirt-engine/services/ovirt-engine/ovirt- > engine.xml.in (maybe backup the original first). > = > Restart the engine and you should be running in debug mode. > = > On Friday, December 13, 2013 12:56:26 PM Einav Cohen wrote: > > [working on development environment] > > = > > (1) I tried following instructions in [1] in order to have my engine.log > > log messages from the bll module in DEBUG level. > > = > > After adding section [2] to the relevant file, I got an error message [= 3] > > (probably since a logger for category "org.ovirt.engine.core.bll" alrea= dy > > exists in the file). > > = > > I removed that new section, and changed the relevant string within the > > already-existing from "= INFO" > > to "DEBUG"; however, log for bll messages kept being logged only in the > > "INFO" level. > > = > > [I restarted ovirt-engine.py after every change] > > = > > Any ideas? > > = > > (2) Does anyone know why queries invocation isn't being logged into the > > engine.log [maybe they are being logged in DEBUG level and due to (1) I > > cannot see them]? it seems that only action invocations are being logge= d. > > = > > Many thanks in advance. > > = > > ---- > > Regards, > > Einav > > = > > [1] > > http://www.ovirt.org/OVirt_Engine_Development_Environment#Enable_DEBUG_= log > > = > > [2] > > --- > > > > > > > > --- > > = > > [3] [ovirt-engine-devel-env]$ ./ovirt-engine.py start > > Listening for transport dt_socket at address: 8787 > > ovirt-engine[13794] ERROR run:485 Error: process terminated with status > > code > > 1 [ovirt-engine-devel-env]$ > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============0022761967086578609==-- From eedri at redhat.com Sun Dec 15 05:10:13 2013 Content-Type: multipart/mixed; boundary="===============8786449399152624697==" MIME-Version: 1.0 From: Eyal Edri To: devel at ovirt.org Subject: [Engine-devel] [jenkins] dao tests broken Date: Sun, 15 Dec 2013 05:10:11 -0500 Message-ID: <2045137911.4982023.1387102211598.JavaMail.root@redhat.com> In-Reply-To: 901914100.4981981.1387102060376.JavaMail.root@redhat.com --===============8786449399152624697== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable fyi, dao tests are broken for some time now, who can look into it? current failing tests are: Tests in error: = testAdUserConstrcutor(org.ovirt.engine.core.common.users.VdcUserTest): or= g.ovirt.engine.core.common.businessentities.LdapUser.setPassword(Ljava/lang= /String;)V testAdUserAndFalseBooleanConstrcutor(org.ovirt.engine.core.common.users.V= dcUserTest): org.ovirt.engine.core.common.businessentities.LdapUser.setPass= word(Ljava/lang/String;)V testAdUserAndTrueBooleanConstrcutor(org.ovirt.engine.core.common.users.Vd= cUserTest): org.ovirt.engine.core.common.businessentities.LdapUser.setPassw= ord(Ljava/lang/String;)V getUserFQN(org.ovirt.engine.core.common.users.VdcUserTest): org.ovirt.eng= ine.core.common.businessentities.LdapUser.setPassword(Ljava/lang/String;)V http://jenkins.ovirt.org/job/ovirt_engine_dao_unit_tests/5446/console looks like it started after commit : http://jenkins.ovirt.org/job/ovirt_eng= ine_dao_unit_tests/5438/ core: scheduling: handle cpu load duration (detail / gitweb) Eyal. --===============8786449399152624697==-- From gchaplik at redhat.com Sun Dec 15 06:06:05 2013 Content-Type: multipart/mixed; boundary="===============8785503994080738795==" MIME-Version: 1.0 From: Gilad Chaplik To: devel at ovirt.org Subject: Re: [Engine-devel] [jenkins] dao tests broken Date: Sun, 15 Dec 2013 06:06:04 -0500 Message-ID: <964579659.52022882.1387105564105.JavaMail.root@redhat.com> In-Reply-To: 2045137911.4982023.1387102211598.JavaMail.root@redhat.com --===============8785503994080738795== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Eyal Edri" > To: "engine-devel" > Cc: "infra" , "Gilad Chaplik" > Sent: Sunday, December 15, 2013 12:10:11 PM > Subject: [jenkins] dao tests broken > = > fyi, > = > dao tests are broken for some time now, who can look into it? > current failing tests are: Hi Eyal, = what fails is unit tests and not dao tests (fails on dao job), = it looks like you're trying to rebase ovirt-engine-3.3 on top of master (yo= u can see it even it the log, comparing the last success and first fail job= s). can you check it out? Thanks, = Gilad. > = > Tests in error: > testAdUserConstrcutor(org.ovirt.engine.core.common.users.VdcUserTest): > org.ovirt.engine.core.common.businessentities.LdapUser.setPassword(Ljav= a/lang/String;)V > testAdUserAndFalseBooleanConstrcutor(org.ovirt.engine.core.common.users= .VdcUserTest): > org.ovirt.engine.core.common.businessentities.LdapUser.setPassword(Ljav= a/lang/String;)V > testAdUserAndTrueBooleanConstrcutor(org.ovirt.engine.core.common.users.= VdcUserTest): > org.ovirt.engine.core.common.businessentities.LdapUser.setPassword(Ljav= a/lang/String;)V > getUserFQN(org.ovirt.engine.core.common.users.VdcUserTest): > org.ovirt.engine.core.common.businessentities.LdapUser.setPassword(Ljav= a/lang/String;)V > = > http://jenkins.ovirt.org/job/ovirt_engine_dao_unit_tests/5446/console > = > looks like it started after commit : > http://jenkins.ovirt.org/job/ovirt_engine_dao_unit_tests/5438/ > core: scheduling: handle cpu load duration (detail / gitweb) > = > Eyal. >=20 --===============8785503994080738795==-- From obasan at redhat.com Sun Dec 15 06:44:09 2013 Content-Type: multipart/mixed; boundary="===============4719388333426112026==" MIME-Version: 1.0 From: Ohad Basan To: devel at ovirt.org Subject: Re: [Engine-devel] [jenkins] dao tests broken Date: Sun, 15 Dec 2013 06:44:08 -0500 Message-ID: <20739648.31439826.1387107848201.JavaMail.root@redhat.com> In-Reply-To: 964579659.52022882.1387105564105.JavaMail.root@redhat.com --===============4719388333426112026== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable this job doesn't do any rebase where do you see it ? http://jenkins.ovirt.org/job/ovirt_engine_dao_unit_tests/5446/console I didn't find "rebase" in the console log ----- Original Message ----- > From: "Gilad Chaplik" > To: "Eyal Edri" > Cc: "engine-devel" , "infra" > Sent: Sunday, December 15, 2013 1:06:04 PM > Subject: Re: [Engine-devel] [jenkins] dao tests broken > = > = > ----- Original Message ----- > > From: "Eyal Edri" > > To: "engine-devel" > > Cc: "infra" , "Gilad Chaplik" > > Sent: Sunday, December 15, 2013 12:10:11 PM > > Subject: [jenkins] dao tests broken > > = > > fyi, > > = > > dao tests are broken for some time now, who can look into it? > > current failing tests are: > = > Hi Eyal, > = > what fails is unit tests and not dao tests (fails on dao job), > it looks like you're trying to rebase ovirt-engine-3.3 on top of master (= you > can see it even it the log, comparing the last success and first fail job= s). > = > can you check it out? > = > Thanks, > Gilad. > = > > = > > Tests in error: > > testAdUserConstrcutor(org.ovirt.engine.core.common.users.VdcUserTest): > > org.ovirt.engine.core.common.businessentities.LdapUser.setPassword(Lj= ava/lang/String;)V > > testAdUserAndFalseBooleanConstrcutor(org.ovirt.engine.core.common.use= rs.VdcUserTest): > > org.ovirt.engine.core.common.businessentities.LdapUser.setPassword(Lj= ava/lang/String;)V > > testAdUserAndTrueBooleanConstrcutor(org.ovirt.engine.core.common.user= s.VdcUserTest): > > org.ovirt.engine.core.common.businessentities.LdapUser.setPassword(Lj= ava/lang/String;)V > > getUserFQN(org.ovirt.engine.core.common.users.VdcUserTest): > > org.ovirt.engine.core.common.businessentities.LdapUser.setPassword(Lj= ava/lang/String;)V > > = > > http://jenkins.ovirt.org/job/ovirt_engine_dao_unit_tests/5446/console > > = > > looks like it started after commit : > > http://jenkins.ovirt.org/job/ovirt_engine_dao_unit_tests/5438/ > > core: scheduling: handle cpu load duration (detail / gitweb) > > = > > Eyal. > > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============4719388333426112026==-- From dfediuck at redhat.com Sun Dec 15 08:12:22 2013 Content-Type: multipart/mixed; boundary="===============6825964397390222854==" MIME-Version: 1.0 From: Doron Fediuck To: devel at ovirt.org Subject: Re: [Engine-devel] Help to review the design of Feature/NUMA and Virtual NUMA Date: Sun, 15 Dec 2013 08:12:20 -0500 Message-ID: <206088558.31446311.1387113140987.JavaMail.root@redhat.com> In-Reply-To: B63C858E777679458338A30A991BB5240155E248@G1W3780.americas.hpqcorp.net --===============6825964397390222854== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Adding arch list as this may effect other sub-projects as well. ----- Original Message ----- > From: "Chuan Liao (Jason, MCXS-CQ)" > To: engine-devel(a)ovirt.org > Sent: Friday, December 13, 2013 9:37:59 AM > Subject: [Engine-devel] Help to review the design of Feature/NUMA and Vir= tual NUMA > = > = > = > Hi Everyone, > = > = > = > I am Jason Liao from HP, now focus on the NUMA feature integration into > oVirt. > = > = > = > Now we finish the first step of High-level design document. > = > = > = > Please help to review the design of Features/NUMA_and_Virtual_NUMA on oVi= rt > community wiki page. > = > = > = > If anyone have some question and suggestion, please let me know. > = > = > = > Thanks all. > = > = > = > Best Regards, > Jason Liao > = > = > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============6825964397390222854==-- From yzaslavs at redhat.com Sun Dec 15 08:29:12 2013 Content-Type: multipart/mixed; boundary="===============3107351666928495764==" MIME-Version: 1.0 From: Yair Zaslavsky To: devel at ovirt.org Subject: Re: [Engine-devel] [jenkins] dao tests broken Date: Sun, 15 Dec 2013 08:29:12 -0500 Message-ID: <620542342.17022681.1387114152087.JavaMail.root@redhat.com> In-Reply-To: 20739648.31439826.1387107848201.JavaMail.root@redhat.com --===============3107351666928495764== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Worked for me perfectly on master. ----- Original Message ----- > From: "Ohad Basan" > To: "Gilad Chaplik" > Cc: "engine-devel" , "infra" > Sent: Sunday, December 15, 2013 1:44:08 PM > Subject: Re: [Engine-devel] [jenkins] dao tests broken > = > this job doesn't do any rebase > where do you see it ? > http://jenkins.ovirt.org/job/ovirt_engine_dao_unit_tests/5446/console > I didn't find "rebase" in the console log > = > = > ----- Original Message ----- > > From: "Gilad Chaplik" > > To: "Eyal Edri" > > Cc: "engine-devel" , "infra" > > Sent: Sunday, December 15, 2013 1:06:04 PM > > Subject: Re: [Engine-devel] [jenkins] dao tests broken > > = > > = > > ----- Original Message ----- > > > From: "Eyal Edri" > > > To: "engine-devel" > > > Cc: "infra" , "Gilad Chaplik" > > > Sent: Sunday, December 15, 2013 12:10:11 PM > > > Subject: [jenkins] dao tests broken > > > = > > > fyi, > > > = > > > dao tests are broken for some time now, who can look into it? > > > current failing tests are: > > = > > Hi Eyal, > > = > > what fails is unit tests and not dao tests (fails on dao job), > > it looks like you're trying to rebase ovirt-engine-3.3 on top of master > > (you > > can see it even it the log, comparing the last success and first fail > > jobs). > > = > > can you check it out? > > = > > Thanks, > > Gilad. > > = > > > = > > > Tests in error: > > > testAdUserConstrcutor(org.ovirt.engine.core.common.users.VdcUserTes= t): > > > org.ovirt.engine.core.common.businessentities.LdapUser.setPassword(= Ljava/lang/String;)V > > > testAdUserAndFalseBooleanConstrcutor(org.ovirt.engine.core.common.u= sers.VdcUserTest): > > > org.ovirt.engine.core.common.businessentities.LdapUser.setPassword(= Ljava/lang/String;)V > > > testAdUserAndTrueBooleanConstrcutor(org.ovirt.engine.core.common.us= ers.VdcUserTest): > > > org.ovirt.engine.core.common.businessentities.LdapUser.setPassword(= Ljava/lang/String;)V > > > getUserFQN(org.ovirt.engine.core.common.users.VdcUserTest): > > > org.ovirt.engine.core.common.businessentities.LdapUser.setPassword(= Ljava/lang/String;)V > > > = > > > http://jenkins.ovirt.org/job/ovirt_engine_dao_unit_tests/5446/console > > > = > > > looks like it started after commit : > > > http://jenkins.ovirt.org/job/ovirt_engine_dao_unit_tests/5438/ > > > core: scheduling: handle cpu load duration (detail / gitweb) > > > = > > > Eyal. > > > = > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============3107351666928495764==-- From shtripat at redhat.com Sun Dec 15 21:24:06 2013 Content-Type: multipart/mixed; boundary="===============3176673119677533312==" MIME-Version: 1.0 From: Shubhendu Tripathi To: devel at ovirt.org Subject: Re: [Engine-devel] [jenkins] dao tests broken Date: Sun, 15 Dec 2013 21:24:05 -0500 Message-ID: <572539134.95276.1387160645013.JavaMail.root@redhat.com> In-Reply-To: 620542342.17022681.1387114152087.JavaMail.root@redhat.com --===============3176673119677533312== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable The class VdcUserTest does not exist in master. Whereas it is present in all other branches like ovirt-engine-3.3, ovirt-en= gine-3.3.0, ovirt-engine-3.3.1 and ovirt-engine-3.3.2. ----- Original Message ----- From: "Yair Zaslavsky" To: "Ohad Basan" Cc: "engine-devel" , "infra" Sent: Sunday, December 15, 2013 6:59:12 PM Subject: Re: [Engine-devel] [jenkins] dao tests broken Worked for me perfectly on master. ----- Original Message ----- > From: "Ohad Basan" > To: "Gilad Chaplik" > Cc: "engine-devel" , "infra" > Sent: Sunday, December 15, 2013 1:44:08 PM > Subject: Re: [Engine-devel] [jenkins] dao tests broken > = > this job doesn't do any rebase > where do you see it ? > http://jenkins.ovirt.org/job/ovirt_engine_dao_unit_tests/5446/console > I didn't find "rebase" in the console log > = > = > ----- Original Message ----- > > From: "Gilad Chaplik" > > To: "Eyal Edri" > > Cc: "engine-devel" , "infra" > > Sent: Sunday, December 15, 2013 1:06:04 PM > > Subject: Re: [Engine-devel] [jenkins] dao tests broken > > = > > = > > ----- Original Message ----- > > > From: "Eyal Edri" > > > To: "engine-devel" > > > Cc: "infra" , "Gilad Chaplik" > > > Sent: Sunday, December 15, 2013 12:10:11 PM > > > Subject: [jenkins] dao tests broken > > > = > > > fyi, > > > = > > > dao tests are broken for some time now, who can look into it? > > > current failing tests are: > > = > > Hi Eyal, > > = > > what fails is unit tests and not dao tests (fails on dao job), > > it looks like you're trying to rebase ovirt-engine-3.3 on top of master > > (you > > can see it even it the log, comparing the last success and first fail > > jobs). > > = > > can you check it out? > > = > > Thanks, > > Gilad. > > = > > > = > > > Tests in error: > > > testAdUserConstrcutor(org.ovirt.engine.core.common.users.VdcUserTes= t): > > > org.ovirt.engine.core.common.businessentities.LdapUser.setPassword(= Ljava/lang/String;)V > > > testAdUserAndFalseBooleanConstrcutor(org.ovirt.engine.core.common.u= sers.VdcUserTest): > > > org.ovirt.engine.core.common.businessentities.LdapUser.setPassword(= Ljava/lang/String;)V > > > testAdUserAndTrueBooleanConstrcutor(org.ovirt.engine.core.common.us= ers.VdcUserTest): > > > org.ovirt.engine.core.common.businessentities.LdapUser.setPassword(= Ljava/lang/String;)V > > > getUserFQN(org.ovirt.engine.core.common.users.VdcUserTest): > > > org.ovirt.engine.core.common.businessentities.LdapUser.setPassword(= Ljava/lang/String;)V > > > = > > > http://jenkins.ovirt.org/job/ovirt_engine_dao_unit_tests/5446/console > > > = > > > looks like it started after commit : > > > http://jenkins.ovirt.org/job/ovirt_engine_dao_unit_tests/5438/ > > > core: scheduling: handle cpu load duration (detail / gitweb) > > > = > > > Eyal. > > > = > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel > = _______________________________________________ Engine-devel mailing list Engine-devel(a)ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel --===============3176673119677533312==-- From obasan at redhat.com Mon Dec 16 03:32:05 2013 Content-Type: multipart/mixed; boundary="===============0831661747839627857==" MIME-Version: 1.0 From: Ohad Basan To: devel at ovirt.org Subject: Re: [Engine-devel] [jenkins] dao tests broken Date: Mon, 16 Dec 2013 03:32:03 -0500 Message-ID: <159919251.31649412.1387182723604.JavaMail.root@redhat.com> In-Reply-To: 572539134.95276.1387160645013.JavaMail.root@redhat.com --===============0831661747839627857== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable I splitted the job to two separate jobs one for 3.3 and one for master. so far it seems to be working ----- Original Message ----- > From: "Shubhendu Tripathi" > To: "Yair Zaslavsky" > Cc: "Ohad Basan" , "engine-devel" , "infra" > Sent: Monday, December 16, 2013 4:24:05 AM > Subject: Re: [Engine-devel] [jenkins] dao tests broken > = > The class VdcUserTest does not exist in master. > Whereas it is present in all other branches like ovirt-engine-3.3, > ovirt-engine-3.3.0, ovirt-engine-3.3.1 and ovirt-engine-3.3.2. > = > ----- Original Message ----- > From: "Yair Zaslavsky" > To: "Ohad Basan" > Cc: "engine-devel" , "infra" > Sent: Sunday, December 15, 2013 6:59:12 PM > Subject: Re: [Engine-devel] [jenkins] dao tests broken > = > Worked for me perfectly on master. > = > = > ----- Original Message ----- > > From: "Ohad Basan" > > To: "Gilad Chaplik" > > Cc: "engine-devel" , "infra" > > Sent: Sunday, December 15, 2013 1:44:08 PM > > Subject: Re: [Engine-devel] [jenkins] dao tests broken > > = > > this job doesn't do any rebase > > where do you see it ? > > http://jenkins.ovirt.org/job/ovirt_engine_dao_unit_tests/5446/console > > I didn't find "rebase" in the console log > > = > > = > > ----- Original Message ----- > > > From: "Gilad Chaplik" > > > To: "Eyal Edri" > > > Cc: "engine-devel" , "infra" > > > Sent: Sunday, December 15, 2013 1:06:04 PM > > > Subject: Re: [Engine-devel] [jenkins] dao tests broken > > > = > > > = > > > ----- Original Message ----- > > > > From: "Eyal Edri" > > > > To: "engine-devel" > > > > Cc: "infra" , "Gilad Chaplik" > > > > Sent: Sunday, December 15, 2013 12:10:11 PM > > > > Subject: [jenkins] dao tests broken > > > > = > > > > fyi, > > > > = > > > > dao tests are broken for some time now, who can look into it? > > > > current failing tests are: > > > = > > > Hi Eyal, > > > = > > > what fails is unit tests and not dao tests (fails on dao job), > > > it looks like you're trying to rebase ovirt-engine-3.3 on top of mast= er > > > (you > > > can see it even it the log, comparing the last success and first fail > > > jobs). > > > = > > > can you check it out? > > > = > > > Thanks, > > > Gilad. > > > = > > > > = > > > > Tests in error: > > > > testAdUserConstrcutor(org.ovirt.engine.core.common.users.VdcUserT= est): > > > > org.ovirt.engine.core.common.businessentities.LdapUser.setPasswor= d(Ljava/lang/String;)V > > > > testAdUserAndFalseBooleanConstrcutor(org.ovirt.engine.core.common= .users.VdcUserTest): > > > > org.ovirt.engine.core.common.businessentities.LdapUser.setPasswor= d(Ljava/lang/String;)V > > > > testAdUserAndTrueBooleanConstrcutor(org.ovirt.engine.core.common.= users.VdcUserTest): > > > > org.ovirt.engine.core.common.businessentities.LdapUser.setPasswor= d(Ljava/lang/String;)V > > > > getUserFQN(org.ovirt.engine.core.common.users.VdcUserTest): > > > > org.ovirt.engine.core.common.businessentities.LdapUser.setPasswor= d(Ljava/lang/String;)V > > > > = > > > > http://jenkins.ovirt.org/job/ovirt_engine_dao_unit_tests/5446/conso= le > > > > = > > > > looks like it started after commit : > > > > http://jenkins.ovirt.org/job/ovirt_engine_dao_unit_tests/5438/ > > > > core: scheduling: handle cpu load duration (detail / gitweb) > > > > = > > > > Eyal. > > > > = > > > _______________________________________________ > > > Engine-devel mailing list > > > Engine-devel(a)ovirt.org > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > = > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============0831661747839627857==-- From iheim at redhat.com Mon Dec 16 06:32:33 2013 Content-Type: multipart/mixed; boundary="===============8218707831138569346==" MIME-Version: 1.0 From: Itamar Heim To: devel at ovirt.org Subject: Re: [Engine-devel] [engine-devel] instance type as top-level entity Date: Mon, 16 Dec 2013 09:38:58 +0200 Message-ID: <52AEAE12.5050406@redhat.com> In-Reply-To: 308092418.2259849.1386229201991.JavaMail.root@redhat.com --===============8218707831138569346== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 12/05/2013 09:40 AM, Tomas Jelinek wrote: > > > ----- Original Message ----- >> From: "Itamar Heim" >> To: "Omer Frenkel" , "Tomas Jelinek" >> Cc: "engine-devel" >> Sent: Wednesday, December 4, 2013 5:29:57 PM >> Subject: Re: [Engine-devel] [engine-devel] instance type as top-level en= tity >> >> On 12/04/2013 02:17 PM, Omer Frenkel wrote: >>> >>> >>> ----- Original Message ----- >>>> From: "Tomas Jelinek" >>>> To: "engine-devel" >>>> Cc: "Omer Frenkel" >>>> Sent: Wednesday, December 4, 2013 2:14:06 PM >>>> Subject: [engine-devel] instance type as top-level entity >>>> >>>> Hey all, >>>> >>>> I have started to work on the instance types[1] again and hit an issue. >>>> Since >>>> the instance types are supposed to be top-level entities >>>> (e.g. without the connection to DC/Cluster) but they are modeled as >>>> templates >>>> it is not possible to store them to DB since the DB constraints violat= ion >>>> on >>>> vm_static table >>>> (e.g. the vds_group_id has to be unique and point to an existing >>>> vds_group). >>>> >>>> So, I see 4 options: >>>> >>>> 1: drop the constraints on the vm_static.vds_group_id (the >>>> vds_groups_vm_static constraint) >>>> (most simple approach but would open the door to some issues whic= h are >>>> now >>>> guard on the DB level) >>>> >>>> 2: do the same magic [well, hacks :) ] as with the "blank" template wh= ich >>>> is >>>> in the same situation >>>> (not exactly a nice solution to have the instance types wired to = one >>>> specific cluster just to satisfy the constraint but return them a= ll >>>> the >>>> time) >>>> >>>> 3: do not store this data in vm_static but create some new table called >>>> e.g. >>>> instance_type which would contain all of the fields from vm_static whi= ch >>>> are >>>> needed by it >>>> (actually the best approach AFAIK but to do it correctly it would >>>> require >>>> some more refactoring to do some hierarchy of tables and not copy= the >>>> fields from table to table) >>>> >>>> 4: make the instance types not top-level (e.g. bound to specific >>>> DC/Cluster) >>>> (would bring some issues for example with the default instance ty= pes >>>> which >>>> should be present for all the DC/Clusters) >>>> >>>> Thoughts? >>>> >>>> Thank you, >>>> Tomas >>>> >>>> [1]: http://www.ovirt.org/Features/Instance_Types >>>> >>> >>> according to the wiki (and discussions we had) instance type is bounded= to >>> a cluster (even if only as a changeable default) >>> so i dont think there is an issue.. >> >> where in the wiki please? >> the way i read the wiki its DC level, just like templates? > > OK, it seems I have not asked the question correctly. Let me rephrase it: > Since we are going to provide default (predefined) instance types which t= he user is not allowed to delete I assume this instance types should > be available for the whole system (not only for the default cluster) just= like blank template. I think it makes sense to allow instance type (both default and custom = ones) at system level. would be nice to allow them at cluster level as = well of course. > > This brings up a question if all the other instance types are going to be= also system level and if yes, how are we going to solve it technically. > We still have the option to implement the instance types as templates and= the default instance types as blank template, but the question is if this = is > what makes most sense. if anything, i think everyone would appreciate if we remove the relation = of Blank template to the default cluster so they can delete the default = cluster... > > The wiki currently says that the instance type is connected to cluster us= ing vds_group_id field but as I have started some implementation this > question popped up in my mind (not yet documented on wiki - will be accor= ding to the result of this discussion). it does say so, but i think you are right and we should allow system = level as well. cc-ing andrew who authored this page for his thoughts? > > BTW the question if the instance types are top level or not leads us to a= different question - where to put them in GUI? > - If the instance type is a top level entity the best place to have it is= the configure dialog (top right corner) > - If the instance type is not a top level entity the best place to have i= t is possibly a main tab (or part of the template main tab) well, the question is should we allow only system level (then configure = is appropriate), or both system and cluster level, in which case a sub = tab is more appropriate. i could live with: - only allow to configure instance types via configure (since its a rare operation, like configuring a role is). - allow to set default enable/disable for an instance type. - allow to set enable/disable override at cluster level, in which case, a subtab or a dialog at cluster level would do. as a side note, i think 'configure' dialogs should be moved from the = configure button to a new tree node, and appear as tab panes when = standing on this new configure node in the tree. > > >> >> --===============8218707831138569346==-- From mpastern at redhat.com Mon Dec 16 10:34:11 2013 Content-Type: multipart/mixed; boundary="===============5126382939288089605==" MIME-Version: 1.0 From: Michael Pasternak To: devel at ovirt.org Subject: [Engine-devel] Proposal to add Juan Hernandez as maintainer to api/sdk/cli Date: Mon, 16 Dec 2013 17:34:36 +0200 Message-ID: <52AF1D8C.5010208@redhat.com> --===============5126382939288089605== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Juan has worked on oVirt for a long period of time, developing several features in the different areas (including api and cli), and obviously gained a lot of experience and knowledge, I'd like to propose Juan as a maintainer of the api/sdk/cli projects. -- = Michael Pasternak RedHat, ENG-Virtualization R&D --===============5126382939288089605==-- From sbonazzo at redhat.com Mon Dec 16 10:39:58 2013 Content-Type: multipart/mixed; boundary="===============4289626388210490086==" MIME-Version: 1.0 From: Sandro Bonazzola To: devel at ovirt.org Subject: [Engine-devel] oVirt 3.3.2 RC Date: Mon, 16 Dec 2013 16:39:55 +0100 Message-ID: <52AF1ECB.5000405@redhat.com> --===============4289626388210490086== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable The oVirt team is pleased to announce that the 3.3.2 Release Candidate is n= ow available in ovirt-updates-testing [1]. We planned to release it on Wed Dec 18th 2013 but it will probably be postp= oned to next week for allowing more testing on the RC. The release date will be decided in next oVrit sync meeting on Wed Dec 18th. Feel free to join us testing it[2] and verifying the bugzilla entries actua= lly under verification [3]. Release notes for this update are available on the wiki [4]. A new oVirt Node build will be available soon as well. [1] http://resources.ovirt.org/releases/updates-testing [2] http://www.ovirt.org/Testing/Ovirt_3.3.2_testing [3] http://red.ht/19NoJKf [4] http://www.ovirt.org/OVirt_3.3.2_release_notes -- = Sandro Bonazzola Better technology. Faster innovation. Powered by community collaboration. See how it works at redhat.com --===============4289626388210490086==-- From sbonazzo at redhat.com Mon Dec 16 10:40:34 2013 Content-Type: multipart/mixed; boundary="===============8797320387478812064==" MIME-Version: 1.0 From: Sandro Bonazzola To: devel at ovirt.org Subject: Re: [Engine-devel] Proposal to add Juan Hernandez as maintainer to api/sdk/cli Date: Mon, 16 Dec 2013 16:40:29 +0100 Message-ID: <52AF1EED.9090106@redhat.com> In-Reply-To: 52AF1D8C.5010208@redhat.com --===============8797320387478812064== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Il 16/12/2013 16:34, Michael Pasternak ha scritto: > = > Juan has worked on oVirt for a long period of time, developing > several features in the different areas (including api and cli), > and obviously gained a lot of experience and knowledge, > = > I'd like to propose Juan as a maintainer of the api/sdk/cli projects. > = +1 -- = Sandro Bonazzola Better technology. Faster innovation. Powered by community collaboration. See how it works at redhat.com --===============8797320387478812064==-- From ovedo at redhat.com Mon Dec 16 10:50:45 2013 Content-Type: multipart/mixed; boundary="===============4209577309301575184==" MIME-Version: 1.0 From: Oved Ourfalli To: devel at ovirt.org Subject: Re: [Engine-devel] Proposal to add Juan Hernandez as maintainer to api/sdk/cli Date: Mon, 16 Dec 2013 10:50:44 -0500 Message-ID: <1960323021.42603743.1387209044346.JavaMail.root@redhat.com> In-Reply-To: 52AF1EED.9090106@redhat.com --===============4209577309301575184== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Sandro Bonazzola" > To: "Michael Pasternak" , "engine-devel" , "infra" > Sent: Monday, December 16, 2013 5:40:29 PM > Subject: Re: [Engine-devel] Proposal to add Juan Hernandez as maintainer = to api/sdk/cli > = > Il 16/12/2013 16:34, Michael Pasternak ha scritto: > > = > > Juan has worked on oVirt for a long period of time, developing > > several features in the different areas (including api and cli), > > and obviously gained a lot of experience and knowledge, > > = > > I'd like to propose Juan as a maintainer of the api/sdk/cli projects. > > = > = > +1 > = +1! Well deserved! > = > -- > Sandro Bonazzola > Better technology. Faster innovation. Powered by community collaboration. > See how it works at redhat.com > _______________________________________________ > Infra mailing list > Infra(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/infra >=20 --===============4209577309301575184==-- From masayag at redhat.com Mon Dec 16 12:29:15 2013 Content-Type: multipart/mixed; boundary="===============9172299136484925528==" MIME-Version: 1.0 From: Moti Asayag To: devel at ovirt.org Subject: Re: [Engine-devel] Proposal to add Juan Hernandez as maintainer to api/sdk/cli Date: Mon, 16 Dec 2013 12:29:13 -0500 Message-ID: <844647805.5717198.1387214953976.JavaMail.root@redhat.com> In-Reply-To: 52AF1D8C.5010208@redhat.com --===============9172299136484925528== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Michael Pasternak" > To: "engine-devel" , "infra" > Sent: Monday, December 16, 2013 5:34:36 PM > Subject: Proposal to add Juan Hernandez as maintainer to api/sdk/cli > = > = > Juan has worked on oVirt for a long period of time, developing > several features in the different areas (including api and cli), > and obviously gained a lot of experience and knowledge, > = > I'd like to propose Juan as a maintainer of the api/sdk/cli projects. > = +1 > -- > = > Michael Pasternak > RedHat, ENG-Virtualization R&D > _______________________________________________ > Infra mailing list > Infra(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/infra >=20 --===============9172299136484925528==-- From S.Kieske at mittwald.de Tue Dec 17 03:11:09 2013 Content-Type: multipart/mixed; boundary="===============0969535915476126765==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: [Engine-devel] Polling vs Pushing engine events Date: Tue, 17 Dec 2013 08:08:11 +0000 Message-ID: <52B00708.5000405@mittwald.de> --===============0969535915476126765== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, we got the following problem: we create / start / stop hole vms /data centers / storage etc (basically: everything ovirt can handle via REST-API) But if you want to know e.g. the status of a vm (or anything) you need to constantly poll the API. This is not what we desire to do, as it does not scale very well (e.g. polling 100 vms). Is there a standardized way of pushing information from the engine? -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============0969535915476126765==-- From iheim at redhat.com Tue Dec 17 03:18:23 2013 Content-Type: multipart/mixed; boundary="===============8883123039450168191==" MIME-Version: 1.0 From: Itamar Heim To: devel at ovirt.org Subject: Re: [Engine-devel] Polling vs Pushing engine events Date: Tue, 17 Dec 2013 03:18:12 -0500 Message-ID: <52B008C4.2060807@redhat.com> In-Reply-To: 52B00708.5000405@mittwald.de --===============8883123039450168191== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 12/17/2013 03:08 AM, Sven Kieske wrote: > Hi, > > we got the following problem: > > we create / start / stop > hole vms /data centers / storage etc > (basically: everything ovirt can handle > via REST-API) > > But if you want to know e.g. the status > of a vm (or anything) you need to constantly > poll the API. > > This is not what we desire to do, as it > does not scale very well (e.g. polling > 100 vms). well, you can search events since last event you searched for, only for = the specific type of event you are interested in, then check which vm = its for. > > Is there a standardized way of pushing information > from the engine? > > well, the notification service which sends emails on these actually = polls for them every minute in order to send the emails. we are discussing snmptraps here[1] one of the options this could be implemented with is via log4j getting = all the audit log events, then you could use any log4j appender (db = table, jms queue, etc.) [1] Bug 1032661 - Add SNMP trap as notification method to to = ovirt-engine-notification --===============8883123039450168191==-- From liran.zelkha at gmail.com Tue Dec 17 03:24:46 2013 Content-Type: multipart/mixed; boundary="===============2524030617704309068==" MIME-Version: 1.0 From: Liran Zelkha To: devel at ovirt.org Subject: Re: [Engine-devel] Polling vs Pushing engine events Date: Tue, 17 Dec 2013 10:24:45 +0200 Message-ID: In-Reply-To: 52B008C4.2060807@redhat.com --===============2524030617704309068== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Note that you can usually get all the information you want using 1 API call, which should still scale. For instance, /ovirt-engine/api/vms will give you a list of all VMs and their statuses, so you can just run an XPath and get the status of all of them. On Tue, Dec 17, 2013 at 10:18 AM, Itamar Heim wrote: > On 12/17/2013 03:08 AM, Sven Kieske wrote: > >> Hi, >> >> we got the following problem: >> >> we create / start / stop >> hole vms /data centers / storage etc >> (basically: everything ovirt can handle >> via REST-API) >> >> But if you want to know e.g. the status >> of a vm (or anything) you need to constantly >> poll the API. >> >> This is not what we desire to do, as it >> does not scale very well (e.g. polling >> 100 vms). >> > > well, you can search events since last event you searched for, only for > the specific type of event you are interested in, then check which vm its > for. > > >> Is there a standardized way of pushing information >> from the engine? >> >> >> > well, the notification service which sends emails on these actually polls > for them every minute in order to send the emails. > > we are discussing snmptraps here[1] > one of the options this could be implemented with is via log4j getting all > the audit log events, then you could use any log4j appender (db table, jms > queue, etc.) > > [1] Bug 1032661 - Add SNMP trap as notification method to to > ovirt-engine-notification > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel > --===============2524030617704309068== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGRpdiBkaXI9Imx0ciI+Tm90ZSB0aGF0IHlvdSBjYW4gdXN1YWxseSBnZXQgYWxsIHRoZSBpbmZv cm1hdGlvbiB5b3Ugd2FudCB1c2luZyAxIEFQSSBjYWxsLCB3aGljaCBzaG91bGQgc3RpbGwgc2Nh bGUuPGRpdj5Gb3IgaW5zdGFuY2UsoC9vdmlydC1lbmdpbmUvYXBpL3ZtcyB3aWxsIGdpdmUgeW91 IGEgbGlzdCBvZiBhbGwgVk1zIGFuZCB0aGVpciBzdGF0dXNlcywgc28geW91IGNhbiBqdXN0IHJ1 biBhbiBYUGF0aCBhbmQgZ2V0IHRoZSBzdGF0dXMgb2YgYWxsIG9mIHRoZW0uoDwvZGl2Pgo8L2Rp dj48ZGl2IGNsYXNzPSJnbWFpbF9leHRyYSI+PGJyPjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90 ZSI+T24gVHVlLCBEZWMgMTcsIDIwMTMgYXQgMTA6MTggQU0sIEl0YW1hciBIZWltIDxzcGFuIGRp cj0ibHRyIj4mbHQ7PGEgaHJlZj0ibWFpbHRvOmloZWltQHJlZGhhdC5jb20iIHRhcmdldD0iX2Js YW5rIj5paGVpbUByZWRoYXQuY29tPC9hPiZndDs8L3NwYW4+IHdyb3RlOjxicj4KPGJsb2NrcXVv dGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxl ZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+T24gMTIvMTcvMjAxMyAwMzowOCBB TSwgU3ZlbiBLaWVza2Ugd3JvdGU6PGJyPgo8YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUi IHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRk aW5nLWxlZnQ6MWV4Ij4KSGksPGJyPgo8YnI+CndlIGdvdCB0aGUgZm9sbG93aW5nIHByb2JsZW06 PGJyPgo8YnI+CndlIGNyZWF0ZSAvIHN0YXJ0IC8gc3RvcDxicj4KaG9sZSB2bXMgL2RhdGEgY2Vu dGVycyAvIHN0b3JhZ2UgZXRjPGJyPgooYmFzaWNhbGx5OiBldmVyeXRoaW5nIG92aXJ0IGNhbiBo YW5kbGU8YnI+CnZpYSBSRVNULUFQSSk8YnI+Cjxicj4KQnV0IGlmIHlvdSB3YW50IHRvIGtub3cg ZS5nLiB0aGUgc3RhdHVzPGJyPgpvZiBhIHZtIChvciBhbnl0aGluZykgeW91IG5lZWQgdG8gY29u c3RhbnRseTxicj4KcG9sbCB0aGUgQVBJLjxicj4KPGJyPgpUaGlzIGlzIG5vdCB3aGF0IHdlIGRl c2lyZSB0byBkbywgYXMgaXQ8YnI+CmRvZXMgbm90IHNjYWxlIHZlcnkgd2VsbCAoZS5nLiBwb2xs aW5nPGJyPgoxMDAgdm1zKS48YnI+CjwvYmxvY2txdW90ZT4KPGJyPgp3ZWxsLCB5b3UgY2FuIHNl YXJjaCBldmVudHMgc2luY2UgbGFzdCBldmVudCB5b3Ugc2VhcmNoZWQgZm9yLCBvbmx5IGZvciB0 aGUgc3BlY2lmaWMgdHlwZSBvZiBldmVudCB5b3UgYXJlIGludGVyZXN0ZWQgaW4sIHRoZW4gY2hl Y2sgd2hpY2ggdm0gaXRzIGZvci48YnI+Cjxicj4KPGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1 b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7 cGFkZGluZy1sZWZ0OjFleCI+Cjxicj4KSXMgdGhlcmUgYSBzdGFuZGFyZGl6ZWQgd2F5IG9mIHB1 c2hpbmcgaW5mb3JtYXRpb248YnI+CmZyb20gdGhlIGVuZ2luZT88YnI+Cjxicj4KPGJyPgo8L2Js b2NrcXVvdGU+Cjxicj4Kd2VsbCwgdGhlIG5vdGlmaWNhdGlvbiBzZXJ2aWNlIHdoaWNoIHNlbmRz IGVtYWlscyBvbiB0aGVzZSBhY3R1YWxseSBwb2xscyBmb3IgdGhlbSBldmVyeSBtaW51dGUgaW4g b3JkZXIgdG8gc2VuZCB0aGUgZW1haWxzLjxicj4KPGJyPgp3ZSBhcmUgZGlzY3Vzc2luZyBzbm1w dHJhcHMgaGVyZVsxXTxicj4Kb25lIG9mIHRoZSBvcHRpb25zIHRoaXMgY291bGQgYmUgaW1wbGVt ZW50ZWQgd2l0aCBpcyB2aWEgbG9nNGogZ2V0dGluZyBhbGwgdGhlIGF1ZGl0IGxvZyBldmVudHMs IHRoZW4geW91IGNvdWxkIHVzZSBhbnkgbG9nNGogYXBwZW5kZXIgKGRiIHRhYmxlLCBqbXMgcXVl dWUsIGV0Yy4pPGJyPgo8YnI+ClsxXSBCdWcgMTAzMjY2MSAtIEFkZCBTTk1QIHRyYXAgYXMgbm90 aWZpY2F0aW9uIG1ldGhvZCB0byB0byBvdmlydC1lbmdpbmUtbm90aWZpY2F0aW9uPGJyPgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX188dT48L3U+X19fX19fX19fX19fX19fX188YnI+CkVu Z2luZS1kZXZlbCBtYWlsaW5nIGxpc3Q8YnI+CjxhIGhyZWY9Im1haWx0bzpFbmdpbmUtZGV2ZWxA b3ZpcnQub3JnIiB0YXJnZXQ9Il9ibGFuayI+RW5naW5lLWRldmVsQG92aXJ0Lm9yZzwvYT48YnI+ CjxhIGhyZWY9Imh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby9lbmdpbmUt ZGV2ZWwiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vbGlzdHMub3ZpcnQub3JnLzx1PjwvdT5tYWls bWFuL2xpc3RpbmZvL2VuZ2luZS1kZXZlbDwvYT48YnI+CjwvYmxvY2txdW90ZT48L2Rpdj48YnI+ PC9kaXY+Cg== --===============2524030617704309068==-- From emesika at redhat.com Tue Dec 17 03:39:20 2013 Content-Type: multipart/mixed; boundary="===============5441216548981647041==" MIME-Version: 1.0 From: Eli Mesika To: devel at ovirt.org Subject: Re: [Engine-devel] Proposal to add Juan Hernandez as maintainer to api/sdk/cli Date: Tue, 17 Dec 2013 03:39:18 -0500 Message-ID: <1750519339.40721907.1387269558580.JavaMail.root@redhat.com> In-Reply-To: 52AF1D8C.5010208@redhat.com --===============5441216548981647041== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Michael Pasternak" > To: "engine-devel" , "infra" > Sent: Monday, December 16, 2013 5:34:36 PM > Subject: [Engine-devel] Proposal to add Juan Hernandez as maintainer to a= pi/sdk/cli > = > = > Juan has worked on oVirt for a long period of time, developing > several features in the different areas (including api and cli), > and obviously gained a lot of experience and knowledge, > = > I'd like to propose Juan as a maintainer of the api/sdk/cli projects. +1 well deserved = > = > -- > = > Michael Pasternak > RedHat, ENG-Virtualization R&D > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============5441216548981647041==-- From ofrenkel at redhat.com Tue Dec 17 04:04:01 2013 Content-Type: multipart/mixed; boundary="===============2864949745084979657==" MIME-Version: 1.0 From: Omer Frenkel To: devel at ovirt.org Subject: Re: [Engine-devel] Proposal to add Juan Hernandez as maintainer to api/sdk/cli Date: Tue, 17 Dec 2013 04:04:00 -0500 Message-ID: <17654411.32639600.1387271040303.JavaMail.root@redhat.com> In-Reply-To: 52AF1D8C.5010208@redhat.com --===============2864949745084979657== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Michael Pasternak" > To: "engine-devel" , "infra" > Sent: Monday, December 16, 2013 5:34:36 PM > Subject: Proposal to add Juan Hernandez as maintainer to api/sdk/cli > = > = > Juan has worked on oVirt for a long period of time, developing > several features in the different areas (including api and cli), > and obviously gained a lot of experience and knowledge, > = > I'd like to propose Juan as a maintainer of the api/sdk/cli projects. > = +1 = > -- > = > Michael Pasternak > RedHat, ENG-Virtualization R&D > _______________________________________________ > Infra mailing list > Infra(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/infra >=20 --===============2864949745084979657==-- From S.Kieske at mittwald.de Tue Dec 17 05:50:31 2013 Content-Type: multipart/mixed; boundary="===============6795071698605288213==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: Re: [Engine-devel] Polling vs Pushing engine events Date: Tue, 17 Dec 2013 10:47:32 +0000 Message-ID: <52B02C61.9000004@mittwald.de> In-Reply-To: CAJ3aYLfOpu2eEhhaTfFL-b7rGdmb9qbSj6Y2056AttMShsKpOA@mail.gmail.com --===============6795071698605288213== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, thanks for your fast replies. We are aware that we can poll this via API, but we don't want to poll it, as it's not a good solution, from a design point of view. We will maybe write a little python script, which runs on engine-node via SDK which polls the API and let this script push the information forward to external systems over network when a certain event occurs. Something similar to this in oVirt would be useful. You don't want to poll every second, or more often, for simple events like "is the vm already up?". This just creates unnecessary network traffic and load on the polling system. With this solution we can at least avoid the network traffic. This is, why I asked for a pushing logic. Maybe it's now more clear? But thanks again for your help :-) Am 17.12.2013 09:24, schrieb Liran Zelkha: > Note that you can usually get all the information you want using 1 API > call, which should still scale. > For instance, /ovirt-engine/api/vms will give you a list of all VMs and > their statuses, so you can just run an XPath and get the status of all of > them. -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============6795071698605288213==-- From yzaslavs at redhat.com Tue Dec 17 06:18:40 2013 Content-Type: multipart/mixed; boundary="===============7609032596191622023==" MIME-Version: 1.0 From: Yair Zaslavsky To: devel at ovirt.org Subject: Re: [Engine-devel] Proposal to add Juan Hernandez as maintainer to api/sdk/cli Date: Tue, 17 Dec 2013 06:18:40 -0500 Message-ID: <966808741.18578863.1387279120089.JavaMail.root@redhat.com> In-Reply-To: 17654411.32639600.1387271040303.JavaMail.root@redhat.com --===============7609032596191622023== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Omer Frenkel" > To: "Michael Pasternak" > Cc: "engine-devel" , "infra" > Sent: Tuesday, December 17, 2013 11:04:00 AM > Subject: Re: Proposal to add Juan Hernandez as maintainer to api/sdk/cli > = > = > = > ----- Original Message ----- > > From: "Michael Pasternak" > > To: "engine-devel" , "infra" > > Sent: Monday, December 16, 2013 5:34:36 PM > > Subject: Proposal to add Juan Hernandez as maintainer to api/sdk/cli > > = > > = > > Juan has worked on oVirt for a long period of time, developing > > several features in the different areas (including api and cli), > > and obviously gained a lot of experience and knowledge, > > = > > I'd like to propose Juan as a maintainer of the api/sdk/cli projects. > > = > = +1 > = > > -- > > = > > Michael Pasternak > > RedHat, ENG-Virtualization R&D > > _______________________________________________ > > Infra mailing list > > Infra(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/infra > > = > _______________________________________________ > Infra mailing list > Infra(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/infra >=20 --===============7609032596191622023==-- From ydary at redhat.com Tue Dec 17 06:33:35 2013 Content-Type: multipart/mixed; boundary="===============3986610654810448474==" MIME-Version: 1.0 From: Yaniv Dary To: devel at ovirt.org Subject: Re: [Engine-devel] Polling vs Pushing engine events Date: Tue, 17 Dec 2013 06:33:28 -0500 Message-ID: <42452724.52940035.1387280008885.JavaMail.root@redhat.com> In-Reply-To: 52B00708.5000405@mittwald.de --===============3986610654810448474== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable You can use the DWH API to check these things. The status is sampled and stored for most entities every 1 minute by defaul= t (and can be set to less than that). = Yaniv ----- Original Message ----- > From: "Sven Kieske" > To: users(a)ovirt.org, engine-devel(a)ovirt.org > Sent: Tuesday, December 17, 2013 10:08:11 AM > Subject: [Engine-devel] Polling vs Pushing engine events > = > Hi, > = > we got the following problem: > = > we create / start / stop > hole vms /data centers / storage etc > (basically: everything ovirt can handle > via REST-API) > = > But if you want to know e.g. the status > of a vm (or anything) you need to constantly > poll the API. > = > This is not what we desire to do, as it > does not scale very well (e.g. polling > 100 vms). > = > Is there a standardized way of pushing information > from the engine? > = > = > -- > Mit freundlichen Gr=C3=BC=C3=9Fen / Regards > = > Sven Kieske > = > Systemadministrator > Mittwald CM Service GmbH & Co. KG > K=C3=B6nigsberger Stra=C3=9Fe 6 > 32339 Espelkamp > T: +49-5772-293-100 > F: +49-5772-293-333 > https://www.mittwald.de > Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer > St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen > Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oey= nhausen > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel > --===============3986610654810448474==-- From lvernia at redhat.com Tue Dec 17 07:20:45 2013 Content-Type: multipart/mixed; boundary="===============5649378135338049232==" MIME-Version: 1.0 From: Lior Vernia To: devel at ovirt.org Subject: Re: [Engine-devel] GUI widget for adding/removing entries Date: Tue, 17 Dec 2013 14:20:18 +0200 Message-ID: <52B04182.1080504@redhat.com> In-Reply-To: 1080405201.5269235.1381413666292.JavaMail.root@redhat.com --===============5649378135338049232== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Last patches were recently merged to the master branch; many thanks to Tomas, Vojtech and Gilad for taking the time to review them (weren't easy to review). The following widgets now all use the same underlying widget: * VM interfaces in add/edit VM dialog. * Profiles in add/edit network dialog. * Device custom properties in add/edit vNIC profile dialog. * Custom properties in add/edit VM dialog. * Custom properties in add/edit cluster dialog. * Custom properties in add/edit cluster policy dialog. * Custom properties in VM run once dialog. I did my best to avoid regressions, but please let me know if any of these seem to malfunction all of a sudden. Yours, Lior. On 10/10/13 16:01, Einav Cohen wrote: > see attached: AFAIK, there are three types of adding-and-removing widget = in the application: > = > (1) the one that exists in the customs properties section as well as the = cluster policy. > in this widget: > - the "+" and "-" buttons appear on every row. > - row is "identified" by a selected item from a drop down. > - input controls in row: drop-down and text box (that appears upon select= ion of a non-empty value in the drop-down) > = > (2) the one that exists in the vNICs assignment part of the General secti= on in the New VM dialog. > in this widget: > - the "+" appears only in the last row, "-" appears in all lines but the = last row. > - row is "identified" by (what seems to be a) read-only label (I assume t= hat this widget is = > built to be initially loaded to already contain a number of rows, as oppo= sed to (1), which = > typically starts with no rows / initial "empty" row. > - input controls in row: drop-down > = > (3) the one that exists in the vNIC profiles section in the Add/Edit Netw= ork dialog > in this widget: > - the "+" and "-" buttons appear on every row. > - row is "identified" by a free-text string. > - input controls in row: text-box, check-box and drop-down. > = > so there are differences between the widgets other than the "+" and "-" b= uttons. > however, from ux perspective, it is important to keep the look-and-feel o= f all of them consistent. > = > technically (code-wise), I am not sure how easy it is to merge the three,= due to the differences. > we can maybe think of creating a general adding-and-removing-entries widg= et, which can support = > "ordered" and "non-ordered" flavors (which will affect the "+"/"-" button= s appearance / exact = > behavior), and it will contain a collection of "abstract" row-widgets (an= d we will have several = > implementations of row-widgets for each needed functionality [(1), (2), (= 3)] with exact appearance / = > input controls / behavior/etc.), which may need to support a certain api = (e.g. isRowEmpty(), get/set > Identifier(), etc.) in order to communicate appropriately with its "paren= t" adding-and-removing-entries = > widget. > = > thoughts? > = > ----- Original Message ----- >> From: "Lior Vernia" >> To: "Itamar Heim" >> Cc: "engine-devel" >> Sent: Thursday, October 10, 2013 4:44:47 AM >> Subject: Re: [Engine-devel] GUI widget for adding/removing entries >> >> To my knowledge, such a widget existed only in two other places: custom >> properties and vNIC profiles in add/edit network dialog. In both of them >> the order wasn't important, in which case the new widget is probably >> preferable. If it is indeed preferable (Einav? Malini?), I could do some >> refactoring to have both of them use it. >> >> On 10/10/13 09:02, Itamar Heim wrote: >>> On 10/10/2013 10:59 AM, Lior Vernia wrote: >>>> >>>> >>>> On 09/10/13 23:34, Itamar Heim wrote: >>>>> On 10/09/2013 03:32 PM, Lior Vernia wrote: >>>>>> Of course, my bad. Attached is a screenshot of the add/edit VM dialo= g, >>>>>> note the vNIC part on the bottom half of the dialog. >>>>> >>>>> how is it different from the custom properties one? >>>>> >>>> >>>> Design-wise, there are a couple of small differences. There's only one >>>> button next to each row, plus if it's the last row or minus otherwise >>>> (so items can only be added at the end, as I replied to Malini order >>>> hasn't been important so far). A row appears as disabled until it is >>>> edited, and a disabled row is ignored when the view is flushed back to >>>> the model (e.g. when the user presses OK in the dialog). >>>> >>>> Code-wise, it's constructed to be reusable, which the custom properties >>>> widget wasn't :) >>> >>> could we converge on one of them though? >>> >>>> >>>>>> >>>>>> On 09/10/13 13:24, Einav Cohen wrote: >>>>>>> Hi Lior - can you please provide a screen-shot, so we will know whi= ch >>>>>>> widget >>>>>>> you are referring to? >>>>>>> will make it easier for people to decide if and where to use this >>>>>>> widget. >>>>>>> >>>>>>> Many thanks! >>>>>>> >>>>>>> ---- >>>>>>> Regards, >>>>>>> Einav >>>>>>> >>>>>>> ----- Original Message ----- >>>>>>>> From: "Lior Vernia" >>>>>>>> To: "engine-devel" >>>>>>>> Sent: Wednesday, October 9, 2013 4:34:29 AM >>>>>>>> Subject: [Engine-devel] GUI widget for adding/removing entries >>>>>>>> >>>>>>>> Hello, >>>>>>>> >>>>>>>> Lately a patch has been merged that introduces a widget for >>>>>>>> adding/removing entries (e.g. network interfaces when >>>>>>>> creating/editing a >>>>>>>> VM): >>>>>>>> >>>>>>>> http://gerrit.ovirt.org/#/c/19530/ >>>>>>>> >>>>>>>> This kind of widgets is becoming common in oVirt, so the idea is to >>>>>>>> make >>>>>>>> adding one easy rather than copying & pasting code. >>>>>>>> AddRemoveRowWidget >>>>>>>> takes care of the plus/minus button logic, disabling an entry that >>>>>>>> hasn't been edited, and the arranging in rows. >>>>>>>> >>>>>>>> In order to use it, one is required to override a couple of abstra= ct >>>>>>>> methods that are dependent upon the specific entry implementation.= An >>>>>>>> example may be found in ProfilesInstanceTypeEditor, which handles >>>>>>>> adding/removing network interfaces in the new/edit VM dialog. >>>>>>>> >>>>>>>> Yours, Lior. >>>>>>>> _______________________________________________ >>>>>>>> Engine-devel mailing list >>>>>>>> Engine-devel(a)ovirt.org >>>>>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Engine-devel mailing list >>>>>>>> Engine-devel(a)ovirt.org >>>>>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel >>>>> >>> >> _______________________________________________ >> Engine-devel mailing list >> Engine-devel(a)ovirt.org >> http://lists.ovirt.org/mailman/listinfo/engine-devel >> >> --===============5649378135338049232==-- From ecohen at redhat.com Tue Dec 17 07:46:44 2013 Content-Type: multipart/mixed; boundary="===============5764634765145056771==" MIME-Version: 1.0 From: Einav Cohen To: devel at ovirt.org Subject: Re: [Engine-devel] GUI widget for adding/removing entries Date: Tue, 17 Dec 2013 07:46:43 -0500 Message-ID: <1510056535.32739916.1387284403425.JavaMail.root@redhat.com> In-Reply-To: 52B04182.1080504@redhat.com --===============5764634765145056771== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Thank you Lior (and reviewers) for your efforts - they are highly appreciat= ed! ---- Regards, Einav ----- Original Message ----- > From: "Lior Vernia" > To: "Einav Cohen" > Cc: "engine-devel" > Sent: Tuesday, December 17, 2013 7:20:18 AM > Subject: Re: [Engine-devel] GUI widget for adding/removing entries > = > Last patches were recently merged to the master branch; many thanks to > Tomas, Vojtech and Gilad for taking the time to review them (weren't > easy to review). > = > The following widgets now all use the same underlying widget: > * VM interfaces in add/edit VM dialog. > * Profiles in add/edit network dialog. > * Device custom properties in add/edit vNIC profile dialog. > * Custom properties in add/edit VM dialog. > * Custom properties in add/edit cluster dialog. > * Custom properties in add/edit cluster policy dialog. > * Custom properties in VM run once dialog. > = > I did my best to avoid regressions, but please let me know if any of > these seem to malfunction all of a sudden. > = > Yours, Lior. > = > On 10/10/13 16:01, Einav Cohen wrote: > > see attached: AFAIK, there are three types of adding-and-removing widge= t in > > the application: > > = > > (1) the one that exists in the customs properties section as well as the > > cluster policy. > > in this widget: > > - the "+" and "-" buttons appear on every row. > > - row is "identified" by a selected item from a drop down. > > - input controls in row: drop-down and text box (that appears upon > > selection of a non-empty value in the drop-down) > > = > > (2) the one that exists in the vNICs assignment part of the General sec= tion > > in the New VM dialog. > > in this widget: > > - the "+" appears only in the last row, "-" appears in all lines but the > > last row. > > - row is "identified" by (what seems to be a) read-only label (I assume > > that this widget is > > built to be initially loaded to already contain a number of rows, as > > opposed to (1), which > > typically starts with no rows / initial "empty" row. > > - input controls in row: drop-down > > = > > (3) the one that exists in the vNIC profiles section in the Add/Edit > > Network dialog > > in this widget: > > - the "+" and "-" buttons appear on every row. > > - row is "identified" by a free-text string. > > - input controls in row: text-box, check-box and drop-down. > > = > > so there are differences between the widgets other than the "+" and "-" > > buttons. > > however, from ux perspective, it is important to keep the look-and-feel= of > > all of them consistent. > > = > > technically (code-wise), I am not sure how easy it is to merge the thre= e, > > due to the differences. > > we can maybe think of creating a general adding-and-removing-entries > > widget, which can support > > "ordered" and "non-ordered" flavors (which will affect the "+"/"-" butt= ons > > appearance / exact > > behavior), and it will contain a collection of "abstract" row-widgets (= and > > we will have several > > implementations of row-widgets for each needed functionality [(1), (2), > > (3)] with exact appearance / > > input controls / behavior/etc.), which may need to support a certain api > > (e.g. isRowEmpty(), get/set > > Identifier(), etc.) in order to communicate appropriately with its "par= ent" > > adding-and-removing-entries > > widget. > > = > > thoughts? > > = > > ----- Original Message ----- > >> From: "Lior Vernia" > >> To: "Itamar Heim" > >> Cc: "engine-devel" > >> Sent: Thursday, October 10, 2013 4:44:47 AM > >> Subject: Re: [Engine-devel] GUI widget for adding/removing entries > >> > >> To my knowledge, such a widget existed only in two other places: custom > >> properties and vNIC profiles in add/edit network dialog. In both of th= em > >> the order wasn't important, in which case the new widget is probably > >> preferable. If it is indeed preferable (Einav? Malini?), I could do so= me > >> refactoring to have both of them use it. > >> > >> On 10/10/13 09:02, Itamar Heim wrote: > >>> On 10/10/2013 10:59 AM, Lior Vernia wrote: > >>>> > >>>> > >>>> On 09/10/13 23:34, Itamar Heim wrote: > >>>>> On 10/09/2013 03:32 PM, Lior Vernia wrote: > >>>>>> Of course, my bad. Attached is a screenshot of the add/edit VM dia= log, > >>>>>> note the vNIC part on the bottom half of the dialog. > >>>>> > >>>>> how is it different from the custom properties one? > >>>>> > >>>> > >>>> Design-wise, there are a couple of small differences. There's only o= ne > >>>> button next to each row, plus if it's the last row or minus otherwise > >>>> (so items can only be added at the end, as I replied to Malini order > >>>> hasn't been important so far). A row appears as disabled until it is > >>>> edited, and a disabled row is ignored when the view is flushed back = to > >>>> the model (e.g. when the user presses OK in the dialog). > >>>> > >>>> Code-wise, it's constructed to be reusable, which the custom propert= ies > >>>> widget wasn't :) > >>> > >>> could we converge on one of them though? > >>> > >>>> > >>>>>> > >>>>>> On 09/10/13 13:24, Einav Cohen wrote: > >>>>>>> Hi Lior - can you please provide a screen-shot, so we will know w= hich > >>>>>>> widget > >>>>>>> you are referring to? > >>>>>>> will make it easier for people to decide if and where to use this > >>>>>>> widget. > >>>>>>> > >>>>>>> Many thanks! > >>>>>>> > >>>>>>> ---- > >>>>>>> Regards, > >>>>>>> Einav > >>>>>>> > >>>>>>> ----- Original Message ----- > >>>>>>>> From: "Lior Vernia" > >>>>>>>> To: "engine-devel" > >>>>>>>> Sent: Wednesday, October 9, 2013 4:34:29 AM > >>>>>>>> Subject: [Engine-devel] GUI widget for adding/removing entries > >>>>>>>> > >>>>>>>> Hello, > >>>>>>>> > >>>>>>>> Lately a patch has been merged that introduces a widget for > >>>>>>>> adding/removing entries (e.g. network interfaces when > >>>>>>>> creating/editing a > >>>>>>>> VM): > >>>>>>>> > >>>>>>>> http://gerrit.ovirt.org/#/c/19530/ > >>>>>>>> > >>>>>>>> This kind of widgets is becoming common in oVirt, so the idea is= to > >>>>>>>> make > >>>>>>>> adding one easy rather than copying & pasting code. > >>>>>>>> AddRemoveRowWidget > >>>>>>>> takes care of the plus/minus button logic, disabling an entry th= at > >>>>>>>> hasn't been edited, and the arranging in rows. > >>>>>>>> > >>>>>>>> In order to use it, one is required to override a couple of abst= ract > >>>>>>>> methods that are dependent upon the specific entry implementatio= n. > >>>>>>>> An > >>>>>>>> example may be found in ProfilesInstanceTypeEditor, which handles > >>>>>>>> adding/removing network interfaces in the new/edit VM dialog. > >>>>>>>> > >>>>>>>> Yours, Lior. > >>>>>>>> _______________________________________________ > >>>>>>>> Engine-devel mailing list > >>>>>>>> Engine-devel(a)ovirt.org > >>>>>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> _______________________________________________ > >>>>>>>> Engine-devel mailing list > >>>>>>>> Engine-devel(a)ovirt.org > >>>>>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel > >>>>> > >>> > >> _______________________________________________ > >> Engine-devel mailing list > >> Engine-devel(a)ovirt.org > >> http://lists.ovirt.org/mailman/listinfo/engine-devel > >> > >> > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel > = > = >=20 --===============5764634765145056771==-- From piotr.kliczewski at gmail.com Wed Dec 18 02:21:22 2013 Content-Type: multipart/mixed; boundary="===============4242059167364619343==" MIME-Version: 1.0 From: Piotr Kliczewski To: devel at ovirt.org Subject: [Engine-devel] [jenkins] Request to be able to create jobs for jsonrpc project Date: Wed, 18 Dec 2013 08:21:21 +0100 Message-ID: --===============4242059167364619343== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable I am working on new project vdsm-jsonrpc-java which is async client library using json which will be used for communication between engine and vdsm. I would like to create jenkins jobs for this project but have no account nor authority to do so. Can you please +1 my request? Thanks, Piotr --===============4242059167364619343==-- From sabose at redhat.com Wed Dec 18 02:22:20 2013 Content-Type: multipart/mixed; boundary="===============5073859439386692559==" MIME-Version: 1.0 From: Sahina Bose To: devel at ovirt.org Subject: Re: [Engine-devel] Proposal to add Juan Hernandez as maintainer to api/sdk/cli Date: Wed, 18 Dec 2013 12:52:16 +0530 Message-ID: <52B14D28.1060701@redhat.com> In-Reply-To: 52AF1D8C.5010208@redhat.com --===============5073859439386692559== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 12/16/2013 09:04 PM, Michael Pasternak wrote: > Juan has worked on oVirt for a long period of time, developing > several features in the different areas (including api and cli), > and obviously gained a lot of experience and knowledge, > > I'd like to propose Juan as a maintainer of the api/sdk/cli projects. > +1 --===============5073859439386692559==-- From S.Kieske at mittwald.de Wed Dec 18 03:10:40 2013 Content-Type: multipart/mixed; boundary="===============8141122452809234564==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: Re: [Engine-devel] Polling vs Pushing engine events Date: Wed, 18 Dec 2013 08:07:40 +0000 Message-ID: <52B15869.3000507@mittwald.de> In-Reply-To: 52B00708.5000405@mittwald.de --===============8141122452809234564== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, the following seems to be killing our plans to use a pythonscript to fetch the list of vms: This comes from the users list: Am 17.12.2013 15:04, schrieb Sander Grendelman:> Fetching the list of vms through the API with the python SDK > takes several seconds[1] with 100% cpu usage in the python script. > > When I look at the engine log there is only one (fast) fetch from > the API. The rest of the time is spent in the SDK processing a > relatively small bit of XML data (only 26 VMs in my environment). > > This seems an excessive amount of CPU for processing ~6KB of XML. > > I've included some sample code [2] and output [3]. > Attached is the cProfile output for this call and a visualization. > > [1] ~6,5 seconds on an oVirt VM with 1 vcpu on older hardware, > ~3,5 seconds on a fast physical machine with an i5 cpu. Am 17.12.2013 15:31, schrieb Michael Pasternak:> > Hi Sander, > > This is a known issue caused by generateDS python bindings we use, > it's extremely slow in python<->xml marshalling, and unable to recognize > cyclic referencing in the objects, > > i'm planning to upgrade in 3.4 from 2.9a to 2.12, if it won't help, we may > consider other options. This is no option for us at all: We can't wait for a possible fix in 3.4 (which maybe even does not fix it). Additionally we will have much higher amounts of vms to query. -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============8141122452809234564==-- From sbonazzo at redhat.com Wed Dec 18 07:28:50 2013 Content-Type: multipart/mixed; boundary="===============5965175726068791909==" MIME-Version: 1.0 From: Sandro Bonazzola To: devel at ovirt.org Subject: [Engine-devel] [ATN] [devenv] packaging: setup: refactoring Date: Wed, 18 Dec 2013 13:28:47 +0100 Message-ID: <52B194FF.6090509@redhat.com> --===============5965175726068791909== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hello All, a patch refactoring the packaging of ovirt-engine-setup[1] will be merged s= oon. The change requires latest version of the otopi package to be installed. Please update it in your development environment. [1] http://gerrit.ovirt.org/20293 Thanks, -- = Sandro Bonazzola Better technology. Faster innovation. Powered by community collaboration. See how it works at redhat.com --===============5965175726068791909==-- From rnori at redhat.com Wed Dec 18 08:57:43 2013 Content-Type: multipart/mixed; boundary="===============5669243011966986852==" MIME-Version: 1.0 From: Ravi Nori To: devel at ovirt.org Subject: Re: [Engine-devel] Proposal to add Juan Hernandez as maintainer to api/sdk/cli Date: Wed, 18 Dec 2013 08:57:20 -0500 Message-ID: <52B1A9C0.8070306@redhat.com> In-Reply-To: 52B14D28.1060701@redhat.com --===============5669243011966986852== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable > > On 12/16/2013 09:04 PM, Michael Pasternak wrote: >> Juan has worked on oVirt for a long period of time, developing >> several features in the different areas (including api and cli), >> and obviously gained a lot of experience and knowledge, >> >> I'd like to propose Juan as a maintainer of the api/sdk/cli projects. >> > > +1 +1 --===============5669243011966986852==-- From ecohen at redhat.com Wed Dec 18 08:58:14 2013 Content-Type: multipart/mixed; boundary="===============8054736352273219632==" MIME-Version: 1.0 From: Einav Cohen To: devel at ovirt.org Subject: Re: [Engine-devel] Proposal to add Juan Hernandez as maintainer to api/sdk/cli Date: Wed, 18 Dec 2013 08:58:13 -0500 Message-ID: <667791144.34420751.1387375093421.JavaMail.root@redhat.com> In-Reply-To: 52AF1D8C.5010208@redhat.com --===============8054736352273219632== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable +1, well deserved. ----- Original Message ----- > From: "Michael Pasternak" > To: "engine-devel" , "infra" > Sent: Monday, December 16, 2013 10:34:36 AM > Subject: [Engine-devel] Proposal to add Juan Hernandez as maintainer to a= pi/sdk/cli > = > = > Juan has worked on oVirt for a long period of time, developing > several features in the different areas (including api and cli), > and obviously gained a lot of experience and knowledge, > = > I'd like to propose Juan as a maintainer of the api/sdk/cli projects. > = > -- > = > Michael Pasternak > RedHat, ENG-Virtualization R&D > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============8054736352273219632==-- From emesika at redhat.com Wed Dec 18 09:07:48 2013 Content-Type: multipart/mixed; boundary="===============5745805015825743010==" MIME-Version: 1.0 From: Eli Mesika To: devel at ovirt.org Subject: Re: [Engine-devel] [jenkins] Request to be able to create jobs for jsonrpc project Date: Wed, 18 Dec 2013 09:07:45 -0500 Message-ID: <593054759.41461431.1387375665691.JavaMail.root@redhat.com> In-Reply-To: CAKU0_r=sK-wm_0Bh397KEupcEUCNWk8Zw-bE3uJwtj9TfYZvFQ@mail.gmail.com --===============5745805015825743010== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Piotr Kliczewski" > To: infra(a)ovirt.org, "engine-devel" > Sent: Wednesday, December 18, 2013 9:21:21 AM > Subject: [jenkins] Request to be able to create jobs for jsonrpc project > = > I am working on new project vdsm-jsonrpc-java which is async client > library using json which > will be used for communication between engine and vdsm. I would like > to create jenkins jobs for > this project but have no account nor authority to do so. > = > Can you please +1 my request? +1 > = > Thanks, > Piotr > _______________________________________________ > Infra mailing list > Infra(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/infra >=20 --===============5745805015825743010==-- From alitke at redhat.com Wed Dec 18 09:43:04 2013 Content-Type: multipart/mixed; boundary="===============1312946097808618053==" MIME-Version: 1.0 From: Adam Litke To: devel at ovirt.org Subject: [Engine-devel] UX: Display VM Downtime in the UI Date: Wed, 18 Dec 2013 09:42:59 -0500 Message-ID: <20131218144259.GC3821@redhat.com> --===============1312946097808618053== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi UX developers, My recent change: http://gerrit.ovirt.org/#/c/22429/ adds support for tracking the time a VM was last stopped and presenting it in the REST API. I would also like to expose this information in the admin portal. This feature has been requested by end users and is useful for managing lots of VMs which may not be used frequently. My idea is to change the 'Uptime' column in the VMs tab to 'Uptime / Downtime' or some equivalent and more compact phrasing. If the VM is Up, then last_start_time would be used to calculate uptime. If the VM is Down, then last_stop_time would be used to calculate downtime. This helps to make efficient use of the column space. I am not sure how column sorting is being implemented, but if we combine uptime and downtime into a single column we have an opportunity to provide a really intuitive sort where the longest uptime machines are at the top and the longest downtime machines are at the bottom. This could be accomplished by treating uptime as a positive interval and downtime as a negative interval. Questions for you all: - Do you support the idea of changing the Uptime column to include Downtime as well or would you prefer a new column instead? - Is there a better heading for the new column or is 'Uptime / Downtime' good enough? - How should we handle sorting? Thanks for your input! --===============1312946097808618053==-- From vszocs at redhat.com Wed Dec 18 10:10:38 2013 Content-Type: multipart/mixed; boundary="===============7502995660506879403==" MIME-Version: 1.0 From: Vojtech Szocs To: devel at ovirt.org Subject: [Engine-devel] No-arg constructor required by default in backend "common" module's classes Date: Wed, 18 Dec 2013 10:10:36 -0500 Message-ID: <1180738433.8562374.1387379436879.JavaMail.root@redhat.com> In-Reply-To: 1386043019.8554614.1387378620761.JavaMail.root@redhat.com --===============7502995660506879403== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi guys, in order to avoid potential errors related to GWT RPC serialization, a recent patch [1] introduced the requirement for no-arg constructor in backend "common" module's classes. [1] http://gerrit.ovirt.org/#/c/21733/ (Even though we're planning to move away from GWT RPC to using REST API, for the time being, this should prevent RPC related errors caused by missing no-arg constructor, which are sometimes hard to trace.) For a select few classes *not* involved in RPC communication, you can add these in checkstyle-suppressions.xml file. Vojtech --===============7502995660506879403==-- From mrao at redhat.com Wed Dec 18 16:04:50 2013 Content-Type: multipart/mixed; boundary="===============0024290388302222170==" MIME-Version: 1.0 From: Malini Rao To: devel at ovirt.org Subject: Re: [Engine-devel] UX: Display VM Downtime in the UI Date: Wed, 18 Dec 2013 16:04:49 -0500 Message-ID: <1438883773.44459634.1387400689527.JavaMail.root@redhat.com> In-Reply-To: 20131218144259.GC3821@redhat.com --===============0024290388302222170== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Adam Litke" > To: engine-devel(a)ovirt.org > Sent: Wednesday, December 18, 2013 9:42:59 AM > Subject: [Engine-devel] UX: Display VM Downtime in the UI > = > Hi UX developers, > = > My recent change: http://gerrit.ovirt.org/#/c/22429/ adds support for > tracking the time a VM was last stopped and presenting it in the REST > API. I would also like to expose this information in the admin > portal. This feature has been requested by end users and is useful > for managing lots of VMs which may not be used frequently. > = > My idea is to change the 'Uptime' column in the VMs tab to 'Uptime / > Downtime' or some equivalent and more compact phrasing. If the VM is > Up, then last_start_time would be used to calculate uptime. If the VM > is Down, then last_stop_time would be used to calculate downtime. > This helps to make efficient use of the column space. MR: I like the idea in general but can we extend to other states as well? T= hen we could have the col be called something like 'Time in current state'.= Also, I think since this col is so far from the first column that has the = status icon, we should have a tooltip on the value that says ' Uptime' , 'd= own time' or ' time'. > = > I am not sure how column sorting is being implemented, but if we > combine uptime and downtime into a single column we have an > opportunity to provide a really intuitive sort where the longest > uptime machines are at the top and the longest downtime machines are > at the bottom. This could be accomplished by treating uptime as a > positive interval and downtime as a negative interval. MR: That's an interesting idea. Not sure how that would translate if we did= all states and times. Then I would think you would do descending order wit= hin each state but then we would have to fix a sequence for the display of = the various statuses based on the statuses that matter most. > = > Questions for you all: > = > - Do you support the idea of changing the Uptime column to include > Downtime as well or would you prefer a new column instead? MR: I do not like the idea of introducing new columns for this purpose sinc= e at any given time, only one of the columns will be populated. Another ide= a is to remove this column all together and include the time for the curren= t status as a tooltip on the status icon preceding the name. > = > - Is there a better heading for the new column or is 'Uptime / > Downtime' good enough? MR: See earlier suggestions > = > - How should we handle sorting? MR: See earlier suggestions > = > Thanks for your input! > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============0024290388302222170==-- From alitke at redhat.com Wed Dec 18 16:19:22 2013 Content-Type: multipart/mixed; boundary="===============0605262692446797316==" MIME-Version: 1.0 From: Adam Litke To: devel at ovirt.org Subject: Re: [Engine-devel] UX: Display VM Downtime in the UI Date: Wed, 18 Dec 2013 16:19:17 -0500 Message-ID: <20131218211917.GA10422@redhat.com> In-Reply-To: 1438883773.44459634.1387400689527.JavaMail.root@redhat.com --===============0605262692446797316== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 18/12/13 16:04 -0500, Malini Rao wrote: > >----- Original Message ----- >> From: "Adam Litke" >> To: engine-devel(a)ovirt.org >> Sent: Wednesday, December 18, 2013 9:42:59 AM >> Subject: [Engine-devel] UX: Display VM Downtime in the UI >> >> Hi UX developers, >> >> My recent change: http://gerrit.ovirt.org/#/c/22429/ adds support for >> tracking the time a VM was last stopped and presenting it in the REST >> API. I would also like to expose this information in the admin >> portal. This feature has been requested by end users and is useful >> for managing lots of VMs which may not be used frequently. >> >> My idea is to change the 'Uptime' column in the VMs tab to 'Uptime / >> Downtime' or some equivalent and more compact phrasing. If the VM is >> Up, then last_start_time would be used to calculate uptime. If the VM >> is Down, then last_stop_time would be used to calculate downtime. >> This helps to make efficient use of the column space. > Thanks for your comments! >MR: I like the idea in general but can we extend to other states as >well? Then we could have the col be called something like 'Time in I would argue that 'Up' and 'Down' are the only persistent states where a VM can linger for a user-controlled amount of time. The others (WaitForLaunch, PoweringDown, etc) are just transitions with their own system defined timeouts. Because of this, it really only makes sense to denote uptime and downtime. When the VM is in another state, this column would be empty. >current state'. Also, I think since this col is so far from the first >column that has the status icon, we should have a tooltip on the >value that says ' Uptime' , 'down time' or ' time'. Agree on the tooltip. >> >> I am not sure how column sorting is being implemented, but if we >> combine uptime and downtime into a single column we have an >> opportunity to provide a really intuitive sort where the longest >> uptime machines are at the top and the longest downtime machines >> are at the bottom. This could be accomplished by treating uptime >> as a positive interval and downtime as a negative interval. > >MR: That's an interesting idea. Not sure how that would translate if >we did all states and times. Then I would think you would do >descending order within each state but then we would have to fix a >sequence for the display of the various statuses based on the >statuses that matter most. This is much simpler if you just work with Up and Down. >> >> Questions for you all: >> >> - Do you support the idea of changing the Uptime column to include >> Downtime as well or would you prefer a new column instead? > > >MR: I do not like the idea of introducing new columns for this >purpose since at any given time, only one of the columns will be >populated. Another idea is to remove this column all together and >include the time for the current status as a tooltip on the status >icon preceding the name. What about adding the uptime/downtime to the status column itself? I don't necessarily think this will muddy the status much since there is still an icon on the left. --===============0605262692446797316==-- From mrao at redhat.com Wed Dec 18 16:31:33 2013 Content-Type: multipart/mixed; boundary="===============4558486245300923760==" MIME-Version: 1.0 From: Malini Rao To: devel at ovirt.org Subject: Re: [Engine-devel] UX: Display VM Downtime in the UI Date: Wed, 18 Dec 2013 16:31:32 -0500 Message-ID: <1256939327.44472238.1387402292685.JavaMail.root@redhat.com> In-Reply-To: 20131218211917.GA10422@redhat.com --===============4558486245300923760== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Adam Litke" > To: "Malini Rao" > Cc: engine-devel(a)ovirt.org > Sent: Wednesday, December 18, 2013 4:19:17 PM > Subject: Re: [Engine-devel] UX: Display VM Downtime in the UI > = > On 18/12/13 16:04 -0500, Malini Rao wrote: > > > >----- Original Message ----- > >> From: "Adam Litke" > >> To: engine-devel(a)ovirt.org > >> Sent: Wednesday, December 18, 2013 9:42:59 AM > >> Subject: [Engine-devel] UX: Display VM Downtime in the UI > >> > >> Hi UX developers, > >> > >> My recent change: http://gerrit.ovirt.org/#/c/22429/ adds support for > >> tracking the time a VM was last stopped and presenting it in the REST > >> API. I would also like to expose this information in the admin > >> portal. This feature has been requested by end users and is useful > >> for managing lots of VMs which may not be used frequently. > >> > >> My idea is to change the 'Uptime' column in the VMs tab to 'Uptime / > >> Downtime' or some equivalent and more compact phrasing. If the VM is > >> Up, then last_start_time would be used to calculate uptime. If the VM > >> is Down, then last_stop_time would be used to calculate downtime. > >> This helps to make efficient use of the column space. > > > = > Thanks for your comments! > = > >MR: I like the idea in general but can we extend to other states as > >well? Then we could have the col be called something like 'Time in > = > I would argue that 'Up' and 'Down' are the only persistent states > where a VM can linger for a user-controlled amount of time. The > others (WaitForLaunch, PoweringDown, etc) are just transitions with > their own system defined timeouts. Because of this, it really only > makes sense to denote uptime and downtime. When the VM is in another > state, this column would be empty. ok > = > >current state'. Also, I think since this col is so far from the first > >column that has the status icon, we should have a tooltip on the > >value that says ' Uptime' , 'down time' or ' time'. > = > Agree on the tooltip. I think we should do this in addition to whatever way we decide to display = this info elsewhere in the table. > = > >> > >> I am not sure how column sorting is being implemented, but if we > >> combine uptime and downtime into a single column we have an > >> opportunity to provide a really intuitive sort where the longest > >> uptime machines are at the top and the longest downtime machines > >> are at the bottom. This could be accomplished by treating uptime > >> as a positive interval and downtime as a negative interval. > > > >MR: That's an interesting idea. Not sure how that would translate if > >we did all states and times. Then I would think you would do > >descending order within each state but then we would have to fix a > >sequence for the display of the various statuses based on the > >statuses that matter most. > = > This is much simpler if you just work with Up and Down. > = > >> > >> Questions for you all: > >> > >> - Do you support the idea of changing the Uptime column to include > >> Downtime as well or would you prefer a new column instead? > > > > > >MR: I do not like the idea of introducing new columns for this > >purpose since at any given time, only one of the columns will be > >populated. Another idea is to remove this column all together and > >include the time for the current status as a tooltip on the status > >icon preceding the name. > = > What about adding the uptime/downtime to the status column itself? I > don't necessarily think this will muddy the status much since there is > still an icon on the left. I like that idea. This way, a column is not dedicated to a piece of info th= at is relevant only sometimes. Depending on how critical/ important this in= fo is, this could just be a tooltip on the icon and the up and Down status = values. = > = >=20 --===============4558486245300923760==-- From ofrenkel at redhat.com Thu Dec 19 03:08:02 2013 Content-Type: multipart/mixed; boundary="===============0834135629148652486==" MIME-Version: 1.0 From: Omer Frenkel To: devel at ovirt.org Subject: Re: [Engine-devel] UX: Display VM Downtime in the UI Date: Thu, 19 Dec 2013 03:08:01 -0500 Message-ID: <1675709420.35220298.1387440481295.JavaMail.root@redhat.com> In-Reply-To: 20131218211917.GA10422@redhat.com --===============0834135629148652486== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Adam Litke" > To: "Malini Rao" > Cc: engine-devel(a)ovirt.org > Sent: Wednesday, December 18, 2013 11:19:17 PM > Subject: Re: [Engine-devel] UX: Display VM Downtime in the UI > = > On 18/12/13 16:04 -0500, Malini Rao wrote: > > > >----- Original Message ----- > >> From: "Adam Litke" > >> To: engine-devel(a)ovirt.org > >> Sent: Wednesday, December 18, 2013 9:42:59 AM > >> Subject: [Engine-devel] UX: Display VM Downtime in the UI > >> > >> Hi UX developers, > >> > >> My recent change: http://gerrit.ovirt.org/#/c/22429/ adds support for > >> tracking the time a VM was last stopped and presenting it in the REST > >> API. I would also like to expose this information in the admin > >> portal. This feature has been requested by end users and is useful > >> for managing lots of VMs which may not be used frequently. > >> > >> My idea is to change the 'Uptime' column in the VMs tab to 'Uptime / > >> Downtime' or some equivalent and more compact phrasing. If the VM is > >> Up, then last_start_time would be used to calculate uptime. If the VM > >> is Down, then last_stop_time would be used to calculate downtime. > >> This helps to make efficient use of the column space. > > > = > Thanks for your comments! > = > >MR: I like the idea in general but can we extend to other states as > >well? Then we could have the col be called something like 'Time in > = > I would argue that 'Up' and 'Down' are the only persistent states > where a VM can linger for a user-controlled amount of time. The > others (WaitForLaunch, PoweringDown, etc) are just transitions with > their own system defined timeouts. Because of this, it really only > makes sense to denote uptime and downtime. When the VM is in another > state, this column would be empty. > = when do you think this would be empty? the way i see it, if there is a qemu process running, we count 'up time' (a= s it is today) otherwise, its down time (when vm is suspended/image locked its down as wel= l) maybe only in 'unknown' state, when we dont have connection to the host, and we dont know the state of the vm it can be empty. > >current state'. Also, I think since this col is so far from the first > >column that has the status icon, we should have a tooltip on the > >value that says ' Uptime' , 'down time' or ' time'. > = > Agree on the tooltip. > = > >> > >> I am not sure how column sorting is being implemented, but if we > >> combine uptime and downtime into a single column we have an > >> opportunity to provide a really intuitive sort where the longest > >> uptime machines are at the top and the longest downtime machines > >> are at the bottom. This could be accomplished by treating uptime > >> as a positive interval and downtime as a negative interval. > > > >MR: That's an interesting idea. Not sure how that would translate if > >we did all states and times. Then I would think you would do > >descending order within each state but then we would have to fix a > >sequence for the display of the various statuses based on the > >statuses that matter most. > = > This is much simpler if you just work with Up and Down. > = > >> > >> Questions for you all: > >> > >> - Do you support the idea of changing the Uptime column to include > >> Downtime as well or would you prefer a new column instead? > > > > > >MR: I do not like the idea of introducing new columns for this > >purpose since at any given time, only one of the columns will be > >populated. Another idea is to remove this column all together and > >include the time for the current status as a tooltip on the status > >icon preceding the name. > = > What about adding the uptime/downtime to the status column itself? I > don't necessarily think this will muddy the status much since there is > still an icon on the left. > = i like better the first option of one column with up/down time, i think its more clear to the user > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============0834135629148652486==-- From iheim at redhat.com Thu Dec 19 05:00:41 2013 Content-Type: multipart/mixed; boundary="===============7975239627470885275==" MIME-Version: 1.0 From: Itamar Heim To: devel at ovirt.org Subject: Re: [Engine-devel] Proposal to add Juan Hernandez as maintainer to api/sdk/cli Date: Thu, 19 Dec 2013 05:00:26 -0500 Message-ID: <52B2C3BA.7000505@redhat.com> In-Reply-To: 667791144.34420751.1387375093421.JavaMail.root@redhat.com --===============7975239627470885275== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 12/18/2013 08:58 AM, Einav Cohen wrote: > +1, well deserved. added. > > ----- Original Message ----- >> From: "Michael Pasternak" >> To: "engine-devel" , "infra" >> Sent: Monday, December 16, 2013 10:34:36 AM >> Subject: [Engine-devel] Proposal to add Juan Hernandez as maintainer to = api/sdk/cli >> >> >> Juan has worked on oVirt for a long period of time, developing >> several features in the different areas (including api and cli), >> and obviously gained a lot of experience and knowledge, >> >> I'd like to propose Juan as a maintainer of the api/sdk/cli projects. >> >> -- >> >> Michael Pasternak >> RedHat, ENG-Virtualization R&D >> _______________________________________________ >> Engine-devel mailing list >> Engine-devel(a)ovirt.org >> http://lists.ovirt.org/mailman/listinfo/engine-devel >> > _______________________________________________ > Infra mailing list > Infra(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/infra > --===============7975239627470885275==-- From dneary at redhat.com Thu Dec 19 05:46:09 2013 Content-Type: multipart/mixed; boundary="===============2786936193545333086==" MIME-Version: 1.0 From: Dave Neary To: devel at ovirt.org Subject: Re: [Engine-devel] Increasing the HTTP keep alive to 30 seconds Date: Thu, 19 Dec 2013 12:46:05 +0200 Message-ID: <52B2CE6D.4040608@redhat.com> In-Reply-To: 529C4B6D.4080006@redhat.com --===============2786936193545333086== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Juan, Did you ever get an answer to this? I don't know who is looking after the setup scripts these days, but I'd like to. Thanks, Dave. On 12/02/2013 10:57 AM, Juan Hernandez wrote: > Hello, > = > We have an RFE that has been open for quite a long time requesting an > increase of the keep alive time in the HTTP communications between the > GUI applications and the web server: > = > https://bugzilla.redhat.com/833799 > = > Implementing it should be as simple as modifying the setup application > so that it includes the modified KeepAlive directives in the web server > configuration, something like this: > = > KeepAlive on > KeepAliveTimeout 30 > = > Is someone with knowledge of the setup application interested on taking > this? > = > Regards, > Juan Hernandez > = -- = Dave Neary - Community Action and Impact Open Source and Standards, Red Hat - http://community.redhat.com Ph: +33 9 50 71 55 62 / Cell: +33 6 77 01 92 13 --===============2786936193545333086==-- From emesika at redhat.com Thu Dec 19 06:13:44 2013 Content-Type: multipart/mixed; boundary="===============5904259806672127093==" MIME-Version: 1.0 From: Eli Mesika To: devel at ovirt.org Subject: [Engine-devel] Can not login to gerrit with Yahho Id Date: Thu, 19 Dec 2013 06:13:43 -0500 Message-ID: <1117899424.42021570.1387451623860.JavaMail.root@redhat.com> In-Reply-To: 351746940.42021351.1387451535985.JavaMail.root@redhat.com --===============5904259806672127093== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi I have a Yahoo ID I am using to register to gerrit. It stops working today, I am getting in to Yahoo account but not getting to= gerrit = Is that a new issue in gerrit ? Please help Thanks Eli --===============5904259806672127093==-- From alitke at redhat.com Thu Dec 19 08:23:12 2013 Content-Type: multipart/mixed; boundary="===============0107736421281240423==" MIME-Version: 1.0 From: Adam Litke To: devel at ovirt.org Subject: Re: [Engine-devel] UX: Display VM Downtime in the UI Date: Thu, 19 Dec 2013 08:23:07 -0500 Message-ID: <20131219132307.GB10422@redhat.com> In-Reply-To: 1675709420.35220298.1387440481295.JavaMail.root@redhat.com --===============0107736421281240423== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 19/12/13 03:08 -0500, Omer Frenkel wrote: > > >----- Original Message ----- >> From: "Adam Litke" >> To: "Malini Rao" >> Cc: engine-devel(a)ovirt.org >> Sent: Wednesday, December 18, 2013 11:19:17 PM >> Subject: Re: [Engine-devel] UX: Display VM Downtime in the UI >> >> On 18/12/13 16:04 -0500, Malini Rao wrote: >> > >> >----- Original Message ----- >> >> From: "Adam Litke" >> >> To: engine-devel(a)ovirt.org >> >> Sent: Wednesday, December 18, 2013 9:42:59 AM >> >> Subject: [Engine-devel] UX: Display VM Downtime in the UI >> >> >> >> Hi UX developers, >> >> >> >> My recent change: http://gerrit.ovirt.org/#/c/22429/ adds support for >> >> tracking the time a VM was last stopped and presenting it in the REST >> >> API. I would also like to expose this information in the admin >> >> portal. This feature has been requested by end users and is useful >> >> for managing lots of VMs which may not be used frequently. >> >> >> >> My idea is to change the 'Uptime' column in the VMs tab to 'Uptime / >> >> Downtime' or some equivalent and more compact phrasing. If the VM is >> >> Up, then last_start_time would be used to calculate uptime. If the VM >> >> is Down, then last_stop_time would be used to calculate downtime. >> >> This helps to make efficient use of the column space. >> > >> >> Thanks for your comments! >> >> >MR: I like the idea in general but can we extend to other states as >> >well? Then we could have the col be called something like 'Time in >> >> I would argue that 'Up' and 'Down' are the only persistent states >> where a VM can linger for a user-controlled amount of time. The >> others (WaitForLaunch, PoweringDown, etc) are just transitions with >> their own system defined timeouts. Because of this, it really only >> makes sense to denote uptime and downtime. When the VM is in another >> state, this column would be empty. >> > >when do you think this would be empty? >the way i see it, if there is a qemu process running, we count 'up time' (= as it is today) >otherwise, its down time (when vm is suspended/image locked its down as we= ll) >maybe only in 'unknown' state, when we dont have connection to the host, >and we dont know the state of the vm it can be empty. Sure, makes sense and I agree. >> >current state'. Also, I think since this col is so far from the first >> >column that has the status icon, we should have a tooltip on the >> >value that says ' Uptime' , 'down time' or ' time'. >> >> Agree on the tooltip. >> >> >> >> >> I am not sure how column sorting is being implemented, but if we >> >> combine uptime and downtime into a single column we have an >> >> opportunity to provide a really intuitive sort where the longest >> >> uptime machines are at the top and the longest downtime machines >> >> are at the bottom. This could be accomplished by treating uptime >> >> as a positive interval and downtime as a negative interval. >> > >> >MR: That's an interesting idea. Not sure how that would translate if >> >we did all states and times. Then I would think you would do >> >descending order within each state but then we would have to fix a >> >sequence for the display of the various statuses based on the >> >statuses that matter most. >> >> This is much simpler if you just work with Up and Down. >> >> >> >> >> Questions for you all: >> >> >> >> - Do you support the idea of changing the Uptime column to include >> >> Downtime as well or would you prefer a new column instead? >> > >> > >> >MR: I do not like the idea of introducing new columns for this >> >purpose since at any given time, only one of the columns will be >> >populated. Another idea is to remove this column all together and >> >include the time for the current status as a tooltip on the status >> >icon preceding the name. >> >> What about adding the uptime/downtime to the status column itself? I >> don't necessarily think this will muddy the status much since there is >> still an icon on the left. >> > >i like better the first option of one column with up/down time, >i think its more clear to the user Can you suggest a good concise column heading for it? --===============0107736421281240423==-- From sbonazzo at redhat.com Thu Dec 19 09:03:48 2013 Content-Type: multipart/mixed; boundary="===============2613758932893941490==" MIME-Version: 1.0 From: Sandro Bonazzola To: devel at ovirt.org Subject: [Engine-devel] oVirt 3.3.2 release Date: Thu, 19 Dec 2013 15:03:45 +0100 Message-ID: <52B2FCC1.7030206@redhat.com> --===============2613758932893941490== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable The oVirt development team is very happy to announce the general availability of oVirt 3.3.2 as of December 19th 2013. This release solidifies oVirt as a leading KVM management application and open source alternative to VMware vSphere. oVirt is available now for Fedora 19 and Red Hat Enterprise Linux 6.5 (or similar). This release of oVirt includes 175 bug fixes and the first release of the Backup and Restore API, which enables backup programs to integrate with oVi= rt. This release also simplifies the Guide Me VM-creation wizard. See the relea= se notes [1] for a list of the new features and bugs fixed. IMPORTANT NOTE: If you're upgrading from a previous version, please update ovirt-release to the latest version (10) and verify you have the correct repositories enabled by running the following commands # yum update ovirt-release # yum repolist enabled before upgrading with the usual procedure. You should see the ovirt-3.3.2 a= nd ovirt-stable repositories listed in the output of the repolist command. [1] http://www.ovirt.org/OVirt_3.3.2_release_notes -- = Sandro Bonazzola Better technology. Faster innovation. Powered by community collaboration. See how it works at redhat.com --===============2613758932893941490==-- From mrao at redhat.com Thu Dec 19 12:02:18 2013 Content-Type: multipart/mixed; boundary="===============1078671660682354469==" MIME-Version: 1.0 From: Malini Rao To: devel at ovirt.org Subject: Re: [Engine-devel] UX: Display VM Downtime in the UI Date: Thu, 19 Dec 2013 12:02:17 -0500 Message-ID: <1414113440.45120754.1387472537593.JavaMail.root@redhat.com> In-Reply-To: 20131219132307.GB10422@redhat.com --===============1078671660682354469== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Adam Litke" > To: "Omer Frenkel" > Cc: "Malini Rao" , engine-devel(a)ovirt.org > Sent: Thursday, December 19, 2013 8:23:07 AM > Subject: Re: [Engine-devel] UX: Display VM Downtime in the UI > = > On 19/12/13 03:08 -0500, Omer Frenkel wrote: > > > > > >----- Original Message ----- > >> From: "Adam Litke" > >> To: "Malini Rao" > >> Cc: engine-devel(a)ovirt.org > >> Sent: Wednesday, December 18, 2013 11:19:17 PM > >> Subject: Re: [Engine-devel] UX: Display VM Downtime in the UI > >> > >> On 18/12/13 16:04 -0500, Malini Rao wrote: > >> > > >> >----- Original Message ----- > >> >> From: "Adam Litke" > >> >> To: engine-devel(a)ovirt.org > >> >> Sent: Wednesday, December 18, 2013 9:42:59 AM > >> >> Subject: [Engine-devel] UX: Display VM Downtime in the UI > >> >> > >> >> Hi UX developers, > >> >> > >> >> My recent change: http://gerrit.ovirt.org/#/c/22429/ adds support f= or > >> >> tracking the time a VM was last stopped and presenting it in the RE= ST > >> >> API. I would also like to expose this information in the admin > >> >> portal. This feature has been requested by end users and is useful > >> >> for managing lots of VMs which may not be used frequently. > >> >> > >> >> My idea is to change the 'Uptime' column in the VMs tab to 'Uptime / > >> >> Downtime' or some equivalent and more compact phrasing. If the VM = is > >> >> Up, then last_start_time would be used to calculate uptime. If the= VM > >> >> is Down, then last_stop_time would be used to calculate downtime. > >> >> This helps to make efficient use of the column space. > >> > > >> > >> Thanks for your comments! > >> > >> >MR: I like the idea in general but can we extend to other states as > >> >well? Then we could have the col be called something like 'Time in > >> > >> I would argue that 'Up' and 'Down' are the only persistent states > >> where a VM can linger for a user-controlled amount of time. The > >> others (WaitForLaunch, PoweringDown, etc) are just transitions with > >> their own system defined timeouts. Because of this, it really only > >> makes sense to denote uptime and downtime. When the VM is in another > >> state, this column would be empty. > >> > > > >when do you think this would be empty? > >the way i see it, if there is a qemu process running, we count 'up time'= (as > >it is today) > >otherwise, its down time (when vm is suspended/image locked its down as > >well) > >maybe only in 'unknown' state, when we dont have connection to the host, > >and we dont know the state of the vm it can be empty. > = > Sure, makes sense and I agree. > = > >> >current state'. Also, I think since this col is so far from the first > >> >column that has the status icon, we should have a tooltip on the > >> >value that says ' Uptime' , 'down time' or ' time'. > >> > >> Agree on the tooltip. > >> > >> >> > >> >> I am not sure how column sorting is being implemented, but if we > >> >> combine uptime and downtime into a single column we have an > >> >> opportunity to provide a really intuitive sort where the longest > >> >> uptime machines are at the top and the longest downtime machines > >> >> are at the bottom. This could be accomplished by treating uptime > >> >> as a positive interval and downtime as a negative interval. > >> > > >> >MR: That's an interesting idea. Not sure how that would translate if > >> >we did all states and times. Then I would think you would do > >> >descending order within each state but then we would have to fix a > >> >sequence for the display of the various statuses based on the > >> >statuses that matter most. > >> > >> This is much simpler if you just work with Up and Down. > >> > >> >> > >> >> Questions for you all: > >> >> > >> >> - Do you support the idea of changing the Uptime column to include > >> >> Downtime as well or would you prefer a new column instead? > >> > > >> > > >> >MR: I do not like the idea of introducing new columns for this > >> >purpose since at any given time, only one of the columns will be > >> >populated. Another idea is to remove this column all together and > >> >include the time for the current status as a tooltip on the status > >> >icon preceding the name. > >> > >> What about adding the uptime/downtime to the status column itself? I > >> don't necessarily think this will muddy the status much since there is > >> still an icon on the left. > >> > > > >i like better the first option of one column with up/down time, > >i think its more clear to the user > = > Can you suggest a good concise column heading for it? Since this is really just up/ down time, I think that is the best name for = it. It's good that this column is right next to the status column so that u= sers can associate the time with the status. But I would still love to see = the up or down time included in the tooltip over the main status icon. --===============1078671660682354469==-- From alitke at redhat.com Thu Dec 19 15:05:16 2013 Content-Type: multipart/mixed; boundary="===============5843110477071301177==" MIME-Version: 1.0 From: Adam Litke To: devel at ovirt.org Subject: [Engine-devel] Engine on Fedora 20 Date: Thu, 19 Dec 2013 15:05:12 -0500 Message-ID: <20131219200512.GA3468@redhat.com> --===============5843110477071301177== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Has anyone had success running ovirt-engine on Fedora 20? I upgraded my system on Wednesday and thought everything was fine but then I started getting the following error: 2013-12-19 14:53:31,447 ERROR [org.ovirt.engine.core.bll.Backend] (MSC service thread 1-5) Error in getting DB connection. The database is inaccessible. Original exception is: DataAccessResourceFailureException: Error retreiving database metadata; nested exception is org.springframework.jdbc.support.MetaDataAccessException: Could not get Connection for extracting meta data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:/ENGINEDataSource Has anyone encountered this recently? --===============5843110477071301177==-- From alitke at redhat.com Thu Dec 19 15:22:59 2013 Content-Type: multipart/mixed; boundary="===============6706956132143375121==" MIME-Version: 1.0 From: Adam Litke To: devel at ovirt.org Subject: Re: [Engine-devel] Engine on Fedora 20 Date: Thu, 19 Dec 2013 15:22:55 -0500 Message-ID: <20131219202255.GB3468@redhat.com> In-Reply-To: 20131219200512.GA3468@redhat.com --===============6706956132143375121== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 19/12/13 15:05 -0500, Adam Litke wrote: >Has anyone had success running ovirt-engine on Fedora 20? I upgraded >my system on Wednesday and thought everything was fine but then I >started getting the following error: > >2013-12-19 14:53:31,447 ERROR [org.ovirt.engine.core.bll.Backend] (MSC >service thread 1-5) Error in getting DB connection. The database is >inaccessible. Original exception is: >DataAccessResourceFailureException: Error retreiving database >metadata; nested exception is >org.springframework.jdbc.support.MetaDataAccessException: Could not >get Connection for extracting meta data; nested exception is >org.springframework.jdbc.CannotGetJdbcConnectionException: Could not >get JDBC Connection; nested exception is java.sql.SQLException: >javax.resource.ResourceException: IJ000453: Unable to get managed >connection for java:/ENGINEDataSource > >Has anyone encountered this recently? Thanks to alonb for his help on IRC. As it turns out, I had a poorly configured pg_hba.conf file that only started causing problems on F20. To fix I replaced my contents with the following two lines: host engine engine 0.0.0.0/0 md5 host engine engine ::0/0 md5 Otherwise, it seems to be working fine. --===============6706956132143375121==-- From iheim at redhat.com Thu Dec 19 15:43:13 2013 Content-Type: multipart/mixed; boundary="===============1111369845037496485==" MIME-Version: 1.0 From: Itamar Heim To: devel at ovirt.org Subject: Re: [Engine-devel] Engine on Fedora 20 Date: Thu, 19 Dec 2013 15:43:11 -0500 Message-ID: <52B35A5F.6070805@redhat.com> In-Reply-To: 20131219202255.GB3468@redhat.com --===============1111369845037496485== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 12/19/2013 03:22 PM, Adam Litke wrote: > On 19/12/13 15:05 -0500, Adam Litke wrote: >> Has anyone had success running ovirt-engine on Fedora 20? I upgraded >> my system on Wednesday and thought everything was fine but then I >> started getting the following error: >> >> 2013-12-19 14:53:31,447 ERROR [org.ovirt.engine.core.bll.Backend] (MSC >> service thread 1-5) Error in getting DB connection. The database is >> inaccessible. Original exception is: >> DataAccessResourceFailureException: Error retreiving database >> metadata; nested exception is >> org.springframework.jdbc.support.MetaDataAccessException: Could not >> get Connection for extracting meta data; nested exception is >> org.springframework.jdbc.CannotGetJdbcConnectionException: Could not >> get JDBC Connection; nested exception is java.sql.SQLException: >> javax.resource.ResourceException: IJ000453: Unable to get managed >> connection for java:/ENGINEDataSource >> >> Has anyone encountered this recently? > > Thanks to alonb for his help on IRC. As it turns out, I had a poorly > configured pg_hba.conf file that only started causing problems on F20. > To fix I replaced my contents with the following two lines: > > host engine engine 0.0.0.0/0 md5 > host engine engine ::0/0 md5 > > Otherwise, it seems to be working fine. > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel is this with the wildfly jboss version? --===============1111369845037496485==-- From alitke at redhat.com Thu Dec 19 16:10:17 2013 Content-Type: multipart/mixed; boundary="===============5819090899175495793==" MIME-Version: 1.0 From: Adam Litke To: devel at ovirt.org Subject: Re: [Engine-devel] Engine on Fedora 20 Date: Thu, 19 Dec 2013 16:10:05 -0500 Message-ID: <20131219211005.GD3468@redhat.com> In-Reply-To: 52B35A5F.6070805@redhat.com --===============5819090899175495793== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 19/12/13 15:43 -0500, Itamar Heim wrote: >On 12/19/2013 03:22 PM, Adam Litke wrote: >>On 19/12/13 15:05 -0500, Adam Litke wrote: >>>Has anyone had success running ovirt-engine on Fedora 20? I upgraded >>>my system on Wednesday and thought everything was fine but then I >>>started getting the following error: >>> >>>2013-12-19 14:53:31,447 ERROR [org.ovirt.engine.core.bll.Backend] (MSC >>>service thread 1-5) Error in getting DB connection. The database is >>>inaccessible. Original exception is: >>>DataAccessResourceFailureException: Error retreiving database >>>metadata; nested exception is >>>org.springframework.jdbc.support.MetaDataAccessException: Could not >>>get Connection for extracting meta data; nested exception is >>>org.springframework.jdbc.CannotGetJdbcConnectionException: Could not >>>get JDBC Connection; nested exception is java.sql.SQLException: >>>javax.resource.ResourceException: IJ000453: Unable to get managed >>>connection for java:/ENGINEDataSource >>> >>>Has anyone encountered this recently? >> >>Thanks to alonb for his help on IRC. As it turns out, I had a poorly >>configured pg_hba.conf file that only started causing problems on F20. >>To fix I replaced my contents with the following two lines: >> >>host engine engine 0.0.0.0/0 md5 >>host engine engine ::0/0 md5 >> >>Otherwise, it seems to be working fine. >>_______________________________________________ >>Engine-devel mailing list >>Engine-devel(a)ovirt.org >>http://lists.ovirt.org/mailman/listinfo/engine-devel > >is this with the wildfly jboss version? Actually it's with the manually installed jboss-as-7.1.1.Final.tar.gz that I put in place using the older development environment setup instructions. --===============5819090899175495793==-- From S.Kieske at mittwald.de Fri Dec 20 03:13:02 2013 Content-Type: multipart/mixed; boundary="===============3521184848269486274==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: [Engine-devel] REST Error during VM creation Date: Fri, 20 Dec 2013 08:09:59 +0000 Message-ID: <52B3FBF2.60305@mittwald.de> --===============3521184848269486274== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, when we try to create a vm via REST-API, we get the following error via REST:

HTTP Status 500 - org.codehaus.jackson.map.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: org.ovirt.engine.api.model.VM["console"])


type Status report

message org.codehaus.jackson.map.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: org.ovirt.engine.api.model.VM["console"])

descriptio= n The server encountered an internal error (org.codehaus.jackson.map.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: org.ovirt.engine.api.model.VM["console"])) that prevented it from fulfilling this request.


JBoss Web/7.0.13.Final

However, the vm is correctly created (see attached engine.log). This is ovirt-engine 3.3.2-1.el6 Any suggestions? We need to be able to get the correct response via API. Should I open a BZ for this? -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============3521184848269486274== Content-Type: text/x-log MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="vm_setup_through_rest_engine.log" MjAxMy0xMi0yMCAwOTo1OToyNiwyODggSU5GTyAgW29yZy5vdmlydC5lbmdpbmUuY29yZS5ibGwu TG9naW5Vc2VyQ29tbWFuZF0gKGFqcC0tMTI3LjAuMC4xLTg3MDItMTApIFJ1bm5pbmcgY29tbWFu ZDogTG9naW5Vc2VyQ29tbWFuZCBpbnRlcm5hbDogZmFsc2UuDQoyMDEzLTEyLTIwIDA5OjU5OjI2 LDMwNSBJTkZPICBbb3JnLm92aXJ0LmVuZ2luZS5jb3JlLmRhbC5kYmJyb2tlci5hdWRpdGxvZ2hh bmRsaW5nLkF1ZGl0TG9nRGlyZWN0b3JdIChhanAtLTEyNy4wLjAuMS04NzAyLTEwKSBDb3JyZWxh dGlvbiBJRDogbnVsbCwgQ2FsbCBTdGFjazogbnVsbCwgQ3VzdG9tIEV2ZW50IElEOiAtMSwgTWVz c2FnZTogVXNlciBhZG1pbkBpbnRlcm5hbCBsb2dnZWQgaW4uDQoyMDEzLTEyLTIwIDA5OjU5OjQ1 LDUyOCBJTkZPICBbb3JnLm92aXJ0LmVuZ2luZS5jb3JlLmJsbC5Mb2dpblVzZXJDb21tYW5kXSAo YWpwLS0xMjcuMC4wLjEtODcwMi0xMCkgUnVubmluZyBjb21tYW5kOiBMb2dpblVzZXJDb21tYW5k IGludGVybmFsOiBmYWxzZS4NCjIwMTMtMTItMjAgMDk6NTk6NDUsNTU0IElORk8gIFtvcmcub3Zp cnQuZW5naW5lLmNvcmUuZGFsLmRiYnJva2VyLmF1ZGl0bG9naGFuZGxpbmcuQXVkaXRMb2dEaXJl Y3Rvcl0gKGFqcC0tMTI3LjAuMC4xLTg3MDItMTApIENvcnJlbGF0aW9uIElEOiBudWxsLCBDYWxs IFN0YWNrOiBudWxsLCBDdXN0b20gRXZlbnQgSUQ6IC0xLCBNZXNzYWdlOiBVc2VyIGFkbWluQGlu dGVybmFsIGxvZ2dlZCBpbi4NCjIwMTMtMTItMjAgMDk6NTk6NDUsNTg1IElORk8gIFtvcmcub3Zp cnQuZW5naW5lLmNvcmUuYmxsLkxvZ291dFVzZXJDb21tYW5kXSAoYWpwLS0xMjcuMC4wLjEtODcw Mi0xMCkgWzU2YWU4NjhhXSBSdW5uaW5nIGNvbW1hbmQ6IExvZ291dFVzZXJDb21tYW5kIGludGVy bmFsOiBmYWxzZS4NCjIwMTMtMTItMjAgMDk6NTk6NDUsNTk1IElORk8gIFtvcmcub3ZpcnQuZW5n aW5lLmNvcmUuZGFsLmRiYnJva2VyLmF1ZGl0bG9naGFuZGxpbmcuQXVkaXRMb2dEaXJlY3Rvcl0g KGFqcC0tMTI3LjAuMC4xLTg3MDItMTApIFs1NmFlODY4YV0gQ29ycmVsYXRpb24gSUQ6IDU2YWU4 NjhhLCBDYWxsIFN0YWNrOiBudWxsLCBDdXN0b20gRXZlbnQgSUQ6IC0xLCBNZXNzYWdlOiBVc2Vy IGFkbWluQGludGVybmFsIGxvZ2dlZCBvdXQuDQoyMDEzLTEyLTIwIDA5OjU5OjQ1LDc4NyBJTkZP ICBbb3JnLm92aXJ0LmVuZ2luZS5jb3JlLmJsbC5Mb2dpblVzZXJDb21tYW5kXSAoYWpwLS0xMjcu MC4wLjEtODcwMi01KSBSdW5uaW5nIGNvbW1hbmQ6IExvZ2luVXNlckNvbW1hbmQgaW50ZXJuYWw6 IGZhbHNlLg0KMjAxMy0xMi0yMCAwOTo1OTo0NSw4MDQgSU5GTyAgW29yZy5vdmlydC5lbmdpbmUu Y29yZS5kYWwuZGJicm9rZXIuYXVkaXRsb2doYW5kbGluZy5BdWRpdExvZ0RpcmVjdG9yXSAoYWpw LS0xMjcuMC4wLjEtODcwMi01KSBDb3JyZWxhdGlvbiBJRDogbnVsbCwgQ2FsbCBTdGFjazogbnVs bCwgQ3VzdG9tIEV2ZW50IElEOiAtMSwgTWVzc2FnZTogVXNlciBhZG1pbkBpbnRlcm5hbCBsb2dn ZWQgaW4uDQoyMDEzLTEyLTIwIDA5OjU5OjQ1LDgzNSBJTkZPICBbb3JnLm92aXJ0LmVuZ2luZS5j b3JlLmJsbC5Mb2dvdXRVc2VyQ29tbWFuZF0gKGFqcC0tMTI3LjAuMC4xLTg3MDItNSkgWzQ5Mjdl MmFlXSBSdW5uaW5nIGNvbW1hbmQ6IExvZ291dFVzZXJDb21tYW5kIGludGVybmFsOiBmYWxzZS4N CjIwMTMtMTItMjAgMDk6NTk6NDUsODQ1IElORk8gIFtvcmcub3ZpcnQuZW5naW5lLmNvcmUuZGFs LmRiYnJva2VyLmF1ZGl0bG9naGFuZGxpbmcuQXVkaXRMb2dEaXJlY3Rvcl0gKGFqcC0tMTI3LjAu MC4xLTg3MDItNSkgWzQ5MjdlMmFlXSBDb3JyZWxhdGlvbiBJRDogNDkyN2UyYWUsIENhbGwgU3Rh Y2s6IG51bGwsIEN1c3RvbSBFdmVudCBJRDogLTEsIE1lc3NhZ2U6IFVzZXIgYWRtaW5AaW50ZXJu YWwgbG9nZ2VkIG91dC4NCjIwMTMtMTItMjAgMTA6MDM6MjYsMTg1IElORk8gIFtvcmcub3ZpcnQu ZW5naW5lLmNvcmUuYmxsLkxvZ2luVXNlckNvbW1hbmRdIChhanAtLTEyNy4wLjAuMS04NzAyLTEw KSBSdW5uaW5nIGNvbW1hbmQ6IExvZ2luVXNlckNvbW1hbmQgaW50ZXJuYWw6IGZhbHNlLg0KMjAx My0xMi0yMCAxMDowMzoyNiwyMDQgSU5GTyAgW29yZy5vdmlydC5lbmdpbmUuY29yZS5kYWwuZGJi cm9rZXIuYXVkaXRsb2doYW5kbGluZy5BdWRpdExvZ0RpcmVjdG9yXSAoYWpwLS0xMjcuMC4wLjEt ODcwMi0xMCkgQ29ycmVsYXRpb24gSUQ6IG51bGwsIENhbGwgU3RhY2s6IG51bGwsIEN1c3RvbSBF dmVudCBJRDogLTEsIE1lc3NhZ2U6IFVzZXIgYWRtaW5AaW50ZXJuYWwgbG9nZ2VkIGluLg0KMjAx My0xMi0yMCAxMDowMzoyNiwyNTYgSU5GTyAgW29yZy5vdmlydC5lbmdpbmUuY29yZS5ibGwuQWRk Vm1Db21tYW5kXSAoYWpwLS0xMjcuMC4wLjEtODcwMi0xMCkgWzI5ZDQwMTMyXSBMb2NrIEFjcXVp cmVkIHRvIG9iamVjdCBFbmdpbmVMb2NrIFtleGNsdXNpdmVMb2Nrcz0ga2V5OiB2cjAwMDAxLTEg dmFsdWU6IFZNX05BTUUNCiwgc2hhcmVkTG9ja3M9IGtleTogNmIwNDMwZTMtNDMwZC00Zjc3LTgy ZGUtNDg5NmNmYzQ4ODkyIHZhbHVlOiBESVNLDQprZXk6IDEwMDgwNDE0LWQwMTctNDkwYi1iMjEy LWUwMmNlZTZhN2I2ZSB2YWx1ZTogVEVNUExBVEUNCl0NCjIwMTMtMTItMjAgMTA6MDM6MjYsMzAx IElORk8gIFtvcmcub3ZpcnQuZW5naW5lLmNvcmUuYmxsLkFkZFZtQ29tbWFuZF0gKGFqcC0tMTI3 LjAuMC4xLTg3MDItMTApIFsyOWQ0MDEzMl0gUnVubmluZyBjb21tYW5kOiBBZGRWbUNvbW1hbmQg aW50ZXJuYWw6IGZhbHNlLiBFbnRpdGllcyBhZmZlY3RlZCA6ICBJRDogMmFkMTFiNWUtOWU3NC00 OTlhLWIzMTctNWE5YTMwMjdjZmNhIFR5cGU6IFZkc0dyb3VwcywgIElEOiAxMDA4MDQxNC1kMDE3 LTQ5MGItYjIxMi1lMDJjZWU2YTdiNmUgVHlwZTogVm1UZW1wbGF0ZSwgIElEOiBjZDlmNzgxNi1l MTA3LTRhZGEtYTkzMC03NWE1MmY4NTJhYjEgVHlwZTogU3RvcmFnZQ0KMjAxMy0xMi0yMCAxMDow MzoyNiwzMTggSU5GTyAgW29yZy5vdmlydC5lbmdpbmUuY29yZS52ZHNicm9rZXIuU2V0Vm1TdGF0 dXNWRFNDb21tYW5kXSAoYWpwLS0xMjcuMC4wLjEtODcwMi0xMCkgWzI5ZDQwMTMyXSBTVEFSVCwg U2V0Vm1TdGF0dXNWRFNDb21tYW5kKCB2bUlkID0gNjc2ZTczNTgtYzc1Ny00ODBhLWI2ZTktOWVj OWJiZGRlNzg1LCBzdGF0dXMgPSBJbWFnZUxvY2tlZCksIGxvZyBpZDogMmNlMmE0NDENCjIwMTMt MTItMjAgMTA6MDM6MjYsMzM1IElORk8gIFtvcmcub3ZpcnQuZW5naW5lLmNvcmUudmRzYnJva2Vy LlNldFZtU3RhdHVzVkRTQ29tbWFuZF0gKGFqcC0tMTI3LjAuMC4xLTg3MDItMTApIFsyOWQ0MDEz Ml0gRklOSVNILCBTZXRWbVN0YXR1c1ZEU0NvbW1hbmQsIGxvZyBpZDogMmNlMmE0NDENCjIwMTMt MTItMjAgMTA6MDM6MjYsMzQ3IElORk8gIFtvcmcub3ZpcnQuZW5naW5lLmNvcmUuYmxsLkNyZWF0 ZVNuYXBzaG90RnJvbVRlbXBsYXRlQ29tbWFuZF0gKGFqcC0tMTI3LjAuMC4xLTg3MDItMTApIFsz NjY3YjhiZV0gUnVubmluZyBjb21tYW5kOiBDcmVhdGVTbmFwc2hvdEZyb21UZW1wbGF0ZUNvbW1h bmQgaW50ZXJuYWw6IHRydWUuIEVudGl0aWVzIGFmZmVjdGVkIDogIElEOiBjZDlmNzgxNi1lMTA3 LTRhZGEtYTkzMC03NWE1MmY4NTJhYjEgVHlwZTogU3RvcmFnZQ0KMjAxMy0xMi0yMCAxMDowMzoy NiwzNTIgSU5GTyAgW29yZy5vdmlydC5lbmdpbmUuY29yZS52ZHNicm9rZXIuaXJzYnJva2VyLkNy ZWF0ZVNuYXBzaG90VkRTQ29tbWFuZF0gKGFqcC0tMTI3LjAuMC4xLTg3MDItMTApIFszNjY3Yjhi ZV0gU1RBUlQsIENyZWF0ZVNuYXBzaG90VkRTQ29tbWFuZCggc3RvcmFnZVBvb2xJZCA9IGE1NTVm NGFhLWQ5NjItNDI1Yy05MWMxLTZlZTVjNGRhNGEyMywgaWdub3JlRmFpbG92ZXJMaW1pdCA9IGZh bHNlLCBzdG9yYWdlRG9tYWluSWQgPSBjZDlmNzgxNi1lMTA3LTRhZGEtYTkzMC03NWE1MmY4NTJh YjEsIGltYWdlR3JvdXBJZCA9IDQ1MWFhMmMwLWEzM2MtNDA4Zi1hMGYyLWFhOTc3OTgzN2JhOCwg aW1hZ2VTaXplSW5CeXRlcyA9IDUzNjg3MDkxMjAwLCB2b2x1bWVGb3JtYXQgPSBDT1csIG5ld0lt YWdlSWQgPSA5YWQzZmIwYi0yODEwLTRiZTMtYTg2YS0wYmZjYzliNDJiNDksIG5ld0ltYWdlRGVz Y3JpcHRpb24gPSAsIGltYWdlSWQgPSAxYjUwZDcxNS00ZTk0LTRlYTMtOWI2NS04MGQ4ZTE2MjRh ZWUsIHNvdXJjZUltYWdlR3JvdXBJZCA9IDZiMDQzMGUzLTQzMGQtNGY3Ny04MmRlLTQ4OTZjZmM0 ODg5MiksIGxvZyBpZDogZGZlMWUyMw0KMjAxMy0xMi0yMCAxMDowMzoyNiwzNTQgSU5GTyAgW29y Zy5vdmlydC5lbmdpbmUuY29yZS52ZHNicm9rZXIuaXJzYnJva2VyLkNyZWF0ZVNuYXBzaG90VkRT Q29tbWFuZF0gKGFqcC0tMTI3LjAuMC4xLTg3MDItMTApIFszNjY3YjhiZV0gLS0gZXhlY3V0ZUly c0Jyb2tlckNvbW1hbmQ6IGNhbGxpbmcgJ2NyZWF0ZVZvbHVtZScgd2l0aCB0d28gbmV3IHBhcmFt ZXRlcnM6IGRlc2NyaXB0aW9uIGFuZCBVVUlEDQoyMDEzLTEyLTIwIDEwOjAzOjI2LDM1NSBJTkZP ICBbb3JnLm92aXJ0LmVuZ2luZS5jb3JlLnZkc2Jyb2tlci5pcnNicm9rZXIuQ3JlYXRlU25hcHNo b3RWRFNDb21tYW5kXSAoYWpwLS0xMjcuMC4wLjEtODcwMi0xMCkgWzM2NjdiOGJlXSAtLSBjcmVh dGVWb2x1bWUgcGFyYW1ldGVyczoNCiAgICAgICAgICAgICAgICBzZFVVSUQ9Y2Q5Zjc4MTYtZTEw Ny00YWRhLWE5MzAtNzVhNTJmODUyYWIxDQogICAgICAgICAgICAgICAgc3BVVUlEPWE1NTVmNGFh LWQ5NjItNDI1Yy05MWMxLTZlZTVjNGRhNGEyMw0KICAgICAgICAgICAgICAgIGltZ0dVSUQ9NDUx YWEyYzAtYTMzYy00MDhmLWEwZjItYWE5Nzc5ODM3YmE4DQogICAgICAgICAgICAgICAgc2l6ZT01 Myw2ODcsMDkxLDIwMCBieXRlcw0KICAgICAgICAgICAgICAgIHZvbEZvcm1hdD1DT1cNCiAgICAg ICAgICAgICAgICB2b2xUeXBlPVNwYXJzZQ0KICAgICAgICAgICAgICAgIHZvbFVVSUQ9OWFkM2Zi MGItMjgxMC00YmUzLWE4NmEtMGJmY2M5YjQyYjQ5DQogICAgICAgICAgICAgICAgZGVzY3I9DQog ICAgICAgICAgICAgICAgc3JjSW1nR1VJRD02YjA0MzBlMy00MzBkLTRmNzctODJkZS00ODk2Y2Zj NDg4OTINCiAgICAgICAgICAgICAgICBzcmNWb2xVVUlEPTFiNTBkNzE1LTRlOTQtNGVhMy05YjY1 LTgwZDhlMTYyNGFlZQ0KICAgICAgICAgICAgICAgIA0KMjAxMy0xMi0yMCAxMDowMzoyNiw4MDIg SU5GTyAgW29yZy5vdmlydC5lbmdpbmUuY29yZS52ZHNicm9rZXIuaXJzYnJva2VyLkNyZWF0ZVNu YXBzaG90VkRTQ29tbWFuZF0gKGFqcC0tMTI3LjAuMC4xLTg3MDItMTApIFszNjY3YjhiZV0gRklO SVNILCBDcmVhdGVTbmFwc2hvdFZEU0NvbW1hbmQsIHJldHVybjogOWFkM2ZiMGItMjgxMC00YmUz LWE4NmEtMGJmY2M5YjQyYjQ5LCBsb2cgaWQ6IGRmZTFlMjMNCjIwMTMtMTItMjAgMTA6MDM6MjYs ODExIElORk8gIFtvcmcub3ZpcnQuZW5naW5lLmNvcmUuYmxsLkNvbW1hbmRBc3luY1Rhc2tdIChh anAtLTEyNy4wLjAuMS04NzAyLTEwKSBbMzY2N2I4YmVdIENvbW1hbmRBc3luY1Rhc2s6OkFkZGlu ZyBDb21tYW5kTXVsdGlBc3luY1Rhc2tzIG9iamVjdCBmb3IgY29tbWFuZCA4NGRhMzBkOC1kNjcx LTQ2OGMtYmJiZi04OWI3OWY3MjMyNTcNCjIwMTMtMTItMjAgMTA6MDM6MjYsODEyIElORk8gIFtv cmcub3ZpcnQuZW5naW5lLmNvcmUuYmxsLkNvbW1hbmRNdWx0aUFzeW5jVGFza3NdIChhanAtLTEy Ny4wLjAuMS04NzAyLTEwKSBbMzY2N2I4YmVdIENvbW1hbmRNdWx0aUFzeW5jVGFza3M6OkF0dGFj aFRhc2s6IEF0dGFjaGluZyB0YXNrIGY3YmNhNDQ1LTY2OWMtNDBlYy1iYjYyLTAwYTgyN2EzZWM4 ZCB0byBjb21tYW5kIDg0ZGEzMGQ4LWQ2NzEtNDY4Yy1iYmJmLTg5Yjc5ZjcyMzI1Ny4NCjIwMTMt MTItMjAgMTA6MDM6MjYsODIxIElORk8gIFtvcmcub3ZpcnQuZW5naW5lLmNvcmUuYmxsLkFzeW5j VGFza01hbmFnZXJdIChhanAtLTEyNy4wLjAuMS04NzAyLTEwKSBbMzY2N2I4YmVdIEFkZGluZyB0 YXNrIGY3YmNhNDQ1LTY2OWMtNDBlYy1iYjYyLTAwYTgyN2EzZWM4ZCAoUGFyZW50IENvbW1hbmQg QWRkVm0sIFBhcmFtZXRlcnMgVHlwZSBvcmcub3ZpcnQuZW5naW5lLmNvcmUuY29tbW9uLmFzeW5j dGFza3MuQXN5bmNUYXNrUGFyYW1ldGVycyksIHBvbGxpbmcgaGFzbid0IHN0YXJ0ZWQgeWV0Li4N CjIwMTMtMTItMjAgMTA6MDM6MjYsOTQ3IElORk8gIFtvcmcub3ZpcnQuZW5naW5lLmNvcmUuZGFs LmRiYnJva2VyLmF1ZGl0bG9naGFuZGxpbmcuQXVkaXRMb2dEaXJlY3Rvcl0gKGFqcC0tMTI3LjAu MC4xLTg3MDItMTApIFszNjY3YjhiZV0gQ29ycmVsYXRpb24gSUQ6IDI5ZDQwMTMyLCBKb2IgSUQ6 IDFjYTZiMTg5LWQzYzUtNDAwYS1iZmQ4LTExY2JkNWY1ZjhjYiwgQ2FsbCBTdGFjazogbnVsbCwg Q3VzdG9tIEV2ZW50IElEOiAtMSwgTWVzc2FnZTogVk0gdnIwMDAwMS0xIGNyZWF0aW9uIHdhcyBp bml0aWF0ZWQgYnkgYWRtaW5AaW50ZXJuYWwuDQoyMDEzLTEyLTIwIDEwOjAzOjI2LDk0OCBJTkZP ICBbb3JnLm92aXJ0LmVuZ2luZS5jb3JlLmJsbC5TUE1Bc3luY1Rhc2tdIChhanAtLTEyNy4wLjAu MS04NzAyLTEwKSBbMzY2N2I4YmVdIEJhc2VBc3luY1Rhc2s6OlN0YXJ0UG9sbGluZ1Rhc2s6IFN0 YXJ0aW5nIHRvIHBvbGwgdGFzayBmN2JjYTQ0NS02NjljLTQwZWMtYmI2Mi0wMGE4MjdhM2VjOGQu DQoyMDEzLTEyLTIwIDEwOjAzOjI2LDk3MCBJTkZPICBbb3JnLm92aXJ0LmVuZ2luZS5jb3JlLmJs bC5Mb2dvdXRVc2VyQ29tbWFuZF0gKGFqcC0tMTI3LjAuMC4xLTg3MDItMTApIFs1ZmVkMzg3YV0g UnVubmluZyBjb21tYW5kOiBMb2dvdXRVc2VyQ29tbWFuZCBpbnRlcm5hbDogZmFsc2UuDQoyMDEz LTEyLTIwIDEwOjAzOjI2LDk4MCBJTkZPICBbb3JnLm92aXJ0LmVuZ2luZS5jb3JlLmRhbC5kYmJy b2tlci5hdWRpdGxvZ2hhbmRsaW5nLkF1ZGl0TG9nRGlyZWN0b3JdIChhanAtLTEyNy4wLjAuMS04 NzAyLTEwKSBbNWZlZDM4N2FdIENvcnJlbGF0aW9uIElEOiA1ZmVkMzg3YSwgQ2FsbCBTdGFjazog bnVsbCwgQ3VzdG9tIEV2ZW50IElEOiAtMSwgTWVzc2FnZTogVXNlciBhZG1pbkBpbnRlcm5hbCBs b2dnZWQgb3V0Lg0KMjAxMy0xMi0yMCAxMDowMzoyNywzNDYgSU5GTyAgW29yZy5vdmlydC5lbmdp bmUuY29yZS5ibGwuQXN5bmNUYXNrTWFuYWdlcl0gKERlZmF1bHRRdWFydHpTY2hlZHVsZXJfV29y a2VyLTQ2KSBQb2xsaW5nIGFuZCB1cGRhdGluZyBBc3luYyBUYXNrczogMSB0YXNrcywgMSB0YXNr cyB0byBwb2xsIG5vdw0KMjAxMy0xMi0yMCAxMDowMzoyNywzNTEgSU5GTyAgW29yZy5vdmlydC5l bmdpbmUuY29yZS5ibGwuU1BNQXN5bmNUYXNrXSAoRGVmYXVsdFF1YXJ0elNjaGVkdWxlcl9Xb3Jr ZXItNDYpIFNQTUFzeW5jVGFzazo6UG9sbFRhc2s6IFBvbGxpbmcgdGFzayBmN2JjYTQ0NS02Njlj LTQwZWMtYmI2Mi0wMGE4MjdhM2VjOGQgKFBhcmVudCBDb21tYW5kIEFkZFZtLCBQYXJhbWV0ZXJz IFR5cGUgb3JnLm92aXJ0LmVuZ2luZS5jb3JlLmNvbW1vbi5hc3luY3Rhc2tzLkFzeW5jVGFza1Bh cmFtZXRlcnMpIHJldHVybmVkIHN0YXR1cyBmaW5pc2hlZCwgcmVzdWx0ICdzdWNjZXNzJy4NCjIw MTMtMTItMjAgMTA6MDM6MjcsMzcyIElORk8gIFtvcmcub3ZpcnQuZW5naW5lLmNvcmUuYmxsLlNQ TUFzeW5jVGFza10gKERlZmF1bHRRdWFydHpTY2hlZHVsZXJfV29ya2VyLTQ2KSBCYXNlQXN5bmNU YXNrOjpPblRhc2tFbmRTdWNjZXNzOiBUYXNrIGY3YmNhNDQ1LTY2OWMtNDBlYy1iYjYyLTAwYTgy N2EzZWM4ZCAoUGFyZW50IENvbW1hbmQgQWRkVm0sIFBhcmFtZXRlcnMgVHlwZSBvcmcub3ZpcnQu ZW5naW5lLmNvcmUuY29tbW9uLmFzeW5jdGFza3MuQXN5bmNUYXNrUGFyYW1ldGVycykgZW5kZWQg c3VjY2Vzc2Z1bGx5Lg0KMjAxMy0xMi0yMCAxMDowMzoyNywzNzMgSU5GTyAgW29yZy5vdmlydC5l bmdpbmUuY29yZS5ibGwuQ29tbWFuZEFzeW5jVGFza10gKERlZmF1bHRRdWFydHpTY2hlZHVsZXJf V29ya2VyLTQ2KSBDb21tYW5kQXN5bmNUYXNrOjpFbmRBY3Rpb25JZk5lY2Vzc2FyeTogQWxsIHRh c2tzIG9mIGNvbW1hbmQgODRkYTMwZDgtZDY3MS00NjhjLWJiYmYtODliNzlmNzIzMjU3IGhhcyBl bmRlZCAtPiBleGVjdXRpbmcgRW5kQWN0aW9uDQoyMDEzLTEyLTIwIDEwOjAzOjI3LDM3NCBJTkZP ICBbb3JnLm92aXJ0LmVuZ2luZS5jb3JlLmJsbC5Db21tYW5kQXN5bmNUYXNrXSAoRGVmYXVsdFF1 YXJ0elNjaGVkdWxlcl9Xb3JrZXItNDYpIENvbW1hbmRBc3luY1Rhc2s6OkVuZEFjdGlvbjogRW5k aW5nIGFjdGlvbiBmb3IgMSB0YXNrcyAoY29tbWFuZCBJRDogODRkYTMwZDgtZDY3MS00NjhjLWJi YmYtODliNzlmNzIzMjU3KTogY2FsbGluZyBFbmRBY3Rpb24gLg0KMjAxMy0xMi0yMCAxMDowMzoy NywzNzUgSU5GTyAgW29yZy5vdmlydC5lbmdpbmUuY29yZS5ibGwuQ29tbWFuZEFzeW5jVGFza10g KHBvb2wtNi10aHJlYWQtNDgpIENvbW1hbmRBc3luY1Rhc2s6OkVuZENvbW1hbmRBY3Rpb24gW3dp dGhpbiB0aHJlYWRdIGNvbnRleHQ6IEF0dGVtcHRpbmcgdG8gRW5kQWN0aW9uIEFkZFZtLCBleGVj dXRpb25JbmRleDogMA0KMjAxMy0xMi0yMCAxMDowMzoyNywzOTcgSU5GTyAgW29yZy5vdmlydC5l bmdpbmUuY29yZS5ibGwuQWRkVm1Db21tYW5kXSAocG9vbC02LXRocmVhZC00OCkgWzI5ZDQwMTMy XSBFbmRpbmcgY29tbWFuZCBzdWNjZXNzZnVsbHk6IG9yZy5vdmlydC5lbmdpbmUuY29yZS5ibGwu QWRkVm1Db21tYW5kDQoyMDEzLTEyLTIwIDEwOjAzOjI3LDQwNiBJTkZPICBbb3JnLm92aXJ0LmVu Z2luZS5jb3JlLmJsbC5DcmVhdGVTbmFwc2hvdEZyb21UZW1wbGF0ZUNvbW1hbmRdIChwb29sLTYt dGhyZWFkLTQ4KSBbMzY2N2I4YmVdIEVuZGluZyBjb21tYW5kIHN1Y2Nlc3NmdWxseTogb3JnLm92 aXJ0LmVuZ2luZS5jb3JlLmJsbC5DcmVhdGVTbmFwc2hvdEZyb21UZW1wbGF0ZUNvbW1hbmQNCjIw MTMtMTItMjAgMTA6MDM6MjcsNDA3IElORk8gIFtvcmcub3ZpcnQuZW5naW5lLmNvcmUudmRzYnJv a2VyLmlyc2Jyb2tlci5HZXRJbWFnZUluZm9WRFNDb21tYW5kXSAocG9vbC02LXRocmVhZC00OCkg WzM2NjdiOGJlXSBTVEFSVCwgR2V0SW1hZ2VJbmZvVkRTQ29tbWFuZCggc3RvcmFnZVBvb2xJZCA9 IGE1NTVmNGFhLWQ5NjItNDI1Yy05MWMxLTZlZTVjNGRhNGEyMywgaWdub3JlRmFpbG92ZXJMaW1p dCA9IGZhbHNlLCBzdG9yYWdlRG9tYWluSWQgPSBjZDlmNzgxNi1lMTA3LTRhZGEtYTkzMC03NWE1 MmY4NTJhYjEsIGltYWdlR3JvdXBJZCA9IDQ1MWFhMmMwLWEzM2MtNDA4Zi1hMGYyLWFhOTc3OTgz N2JhOCwgaW1hZ2VJZCA9IDlhZDNmYjBiLTI4MTAtNGJlMy1hODZhLTBiZmNjOWI0MmI0OSksIGxv ZyBpZDogN2UwZTUxY2YNCjIwMTMtMTItMjAgMTA6MDM6MjcsNDQxIElORk8gIFtvcmcub3ZpcnQu ZW5naW5lLmNvcmUudmRzYnJva2VyLmlyc2Jyb2tlci5HZXRJbWFnZUluZm9WRFNDb21tYW5kXSAo cG9vbC02LXRocmVhZC00OCkgWzM2NjdiOGJlXSBGSU5JU0gsIEdldEltYWdlSW5mb1ZEU0NvbW1h bmQsIHJldHVybjogb3JnLm92aXJ0LmVuZ2luZS5jb3JlLmNvbW1vbi5idXNpbmVzc2VudGl0aWVz LkRpc2tJbWFnZUBiYmU5MzM3NSwgbG9nIGlkOiA3ZTBlNTFjZg0KMjAxMy0xMi0yMCAxMDowMzoy Nyw0NTIgSU5GTyAgW29yZy5vdmlydC5lbmdpbmUuY29yZS52ZHNicm9rZXIuU2V0Vm1TdGF0dXNW RFNDb21tYW5kXSAocG9vbC02LXRocmVhZC00OCkgU1RBUlQsIFNldFZtU3RhdHVzVkRTQ29tbWFu ZCggdm1JZCA9IDY3NmU3MzU4LWM3NTctNDgwYS1iNmU5LTllYzliYmRkZTc4NSwgc3RhdHVzID0g RG93biksIGxvZyBpZDogMjI4MzMxZjkNCjIwMTMtMTItMjAgMTA6MDM6MjcsNDU0IElORk8gIFtv cmcub3ZpcnQuZW5naW5lLmNvcmUudmRzYnJva2VyLlNldFZtU3RhdHVzVkRTQ29tbWFuZF0gKHBv b2wtNi10aHJlYWQtNDgpIEZJTklTSCwgU2V0Vm1TdGF0dXNWRFNDb21tYW5kLCBsb2cgaWQ6IDIy ODMzMWY5DQoyMDEzLTEyLTIwIDEwOjAzOjI3LDQ2NCBJTkZPICBbb3JnLm92aXJ0LmVuZ2luZS5j b3JlLmJsbC5BZGRWbUNvbW1hbmRdIChwb29sLTYtdGhyZWFkLTQ4KSBMb2NrIGZyZWVkIHRvIG9i amVjdCBFbmdpbmVMb2NrIFtleGNsdXNpdmVMb2Nrcz0ga2V5OiB2cjAwMDAxLTEgdmFsdWU6IFZN X05BTUUNCiwgc2hhcmVkTG9ja3M9IGtleTogNmIwNDMwZTMtNDMwZC00Zjc3LTgyZGUtNDg5NmNm YzQ4ODkyIHZhbHVlOiBESVNLDQprZXk6IDEwMDgwNDE0LWQwMTctNDkwYi1iMjEyLWUwMmNlZTZh N2I2ZSB2YWx1ZTogVEVNUExBVEUNCl0NCjIwMTMtMTItMjAgMTA6MDM6MjcsNDcyIElORk8gIFtv cmcub3ZpcnQuZW5naW5lLmNvcmUuZGFsLmRiYnJva2VyLmF1ZGl0bG9naGFuZGxpbmcuQXVkaXRM b2dEaXJlY3Rvcl0gKHBvb2wtNi10aHJlYWQtNDgpIENvcnJlbGF0aW9uIElEOiAyOWQ0MDEzMiwg Sm9iIElEOiAxY2E2YjE4OS1kM2M1LTQwMGEtYmZkOC0xMWNiZDVmNWY4Y2IsIENhbGwgU3RhY2s6 IG51bGwsIEN1c3RvbSBFdmVudCBJRDogLTEsIE1lc3NhZ2U6IFZNIHZyMDAwMDEtMSBjcmVhdGlv biBoYXMgYmVlbiBjb21wbGV0ZWQuDQoyMDEzLTEyLTIwIDEwOjAzOjI3LDQ3MyBJTkZPICBbb3Jn Lm92aXJ0LmVuZ2luZS5jb3JlLmJsbC5Db21tYW5kQXN5bmNUYXNrXSAocG9vbC02LXRocmVhZC00 OCkgQ29tbWFuZEFzeW5jVGFzazo6SGFuZGxlRW5kQWN0aW9uUmVzdWx0IFt3aXRoaW4gdGhyZWFk XTogRW5kQWN0aW9uIGZvciBhY3Rpb24gdHlwZSBBZGRWbSBjb21wbGV0ZWQsIGhhbmRsaW5nIHRo ZSByZXN1bHQuDQoyMDEzLTEyLTIwIDEwOjAzOjI3LDQ3NCBJTkZPICBbb3JnLm92aXJ0LmVuZ2lu ZS5jb3JlLmJsbC5Db21tYW5kQXN5bmNUYXNrXSAocG9vbC02LXRocmVhZC00OCkgQ29tbWFuZEFz eW5jVGFzazo6SGFuZGxlRW5kQWN0aW9uUmVzdWx0IFt3aXRoaW4gdGhyZWFkXTogRW5kQWN0aW9u IGZvciBhY3Rpb24gdHlwZSBBZGRWbSBzdWNjZWVkZWQsIGNsZWFyaW5nIHRhc2tzLg0KMjAxMy0x Mi0yMCAxMDowMzoyNyw0ODAgSU5GTyAgW29yZy5vdmlydC5lbmdpbmUuY29yZS5ibGwuU1BNQXN5 bmNUYXNrXSAocG9vbC02LXRocmVhZC00OCkgU1BNQXN5bmNUYXNrOjpDbGVhckFzeW5jVGFzazog QXR0ZW1wdGluZyB0byBjbGVhciB0YXNrIGY3YmNhNDQ1LTY2OWMtNDBlYy1iYjYyLTAwYTgyN2Ez ZWM4ZA0KMjAxMy0xMi0yMCAxMDowMzoyNyw0ODEgSU5GTyAgW29yZy5vdmlydC5lbmdpbmUuY29y ZS52ZHNicm9rZXIuaXJzYnJva2VyLlNQTUNsZWFyVGFza1ZEU0NvbW1hbmRdIChwb29sLTYtdGhy ZWFkLTQ4KSBTVEFSVCwgU1BNQ2xlYXJUYXNrVkRTQ29tbWFuZCggc3RvcmFnZVBvb2xJZCA9IGE1 NTVmNGFhLWQ5NjItNDI1Yy05MWMxLTZlZTVjNGRhNGEyMywgaWdub3JlRmFpbG92ZXJMaW1pdCA9 IGZhbHNlLCB0YXNrSWQgPSBmN2JjYTQ0NS02NjljLTQwZWMtYmI2Mi0wMGE4MjdhM2VjOGQpLCBs b2cgaWQ6IDRiNWFiZjIyDQoyMDEzLTEyLTIwIDEwOjAzOjI3LDQ5NSBJTkZPICBbb3JnLm92aXJ0 LmVuZ2luZS5jb3JlLnZkc2Jyb2tlci52ZHNicm9rZXIuSFNNQ2xlYXJUYXNrVkRTQ29tbWFuZF0g KHBvb2wtNi10aHJlYWQtNDgpIFNUQVJULCBIU01DbGVhclRhc2tWRFNDb21tYW5kKEhvc3ROYW1l ID0gaG9zdDMudGVzdCwgSG9zdElkID0gOWI0YmJmMjItMDY1NS00YjBhLWI3OTItM2NkY2E5MWQ1 YjZiLCB0YXNrSWQ9ZjdiY2E0NDUtNjY5Yy00MGVjLWJiNjItMDBhODI3YTNlYzhkKSwgbG9nIGlk OiAzMmJhNzdkNA0KMjAxMy0xMi0yMCAxMDowMzoyNyw0OTkgSU5GTyAgW29yZy5vdmlydC5lbmdp bmUuY29yZS52ZHNicm9rZXIudmRzYnJva2VyLkhTTUNsZWFyVGFza1ZEU0NvbW1hbmRdIChwb29s LTYtdGhyZWFkLTQ4KSBGSU5JU0gsIEhTTUNsZWFyVGFza1ZEU0NvbW1hbmQsIGxvZyBpZDogMzJi YTc3ZDQNCjIwMTMtMTItMjAgMTA6MDM6MjcsNTAwIElORk8gIFtvcmcub3ZpcnQuZW5naW5lLmNv cmUudmRzYnJva2VyLmlyc2Jyb2tlci5TUE1DbGVhclRhc2tWRFNDb21tYW5kXSAocG9vbC02LXRo cmVhZC00OCkgRklOSVNILCBTUE1DbGVhclRhc2tWRFNDb21tYW5kLCBsb2cgaWQ6IDRiNWFiZjIy DQoyMDEzLTEyLTIwIDEwOjAzOjI3LDUxMCBJTkZPICBbb3JnLm92aXJ0LmVuZ2luZS5jb3JlLmJs bC5TUE1Bc3luY1Rhc2tdIChwb29sLTYtdGhyZWFkLTQ4KSBCYXNlQXN5bmNUYXNrOjpSZW1vdmVU YXNrRnJvbURCOiBSZW1vdmVkIHRhc2sgZjdiY2E0NDUtNjY5Yy00MGVjLWJiNjItMDBhODI3YTNl YzhkIGZyb20gRGF0YUJhc2UNCjIwMTMtMTItMjAgMTA6MDM6MjcsNTExIElORk8gIFtvcmcub3Zp cnQuZW5naW5lLmNvcmUuYmxsLkNvbW1hbmRBc3luY1Rhc2tdIChwb29sLTYtdGhyZWFkLTQ4KSBD b21tYW5kQXN5bmNUYXNrOjpIYW5kbGVFbmRBY3Rpb25SZXN1bHQgW3dpdGhpbiB0aHJlYWRdOiBS ZW1vdmluZyBDb21tYW5kTXVsdGlBc3luY1Rhc2tzIG9iamVjdCBmb3IgZW50aXR5IDg0ZGEzMGQ4 LWQ2NzEtNDY4Yy1iYmJmLTg5Yjc5ZjcyMzI1Nw0K --===============3521184848269486274==-- From S.Kieske at mittwald.de Fri Dec 20 03:48:02 2013 Content-Type: multipart/mixed; boundary="===============1407229003310331373==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: Re: [Engine-devel] REST Error during VM creation Date: Fri, 20 Dec 2013 08:44:59 +0000 Message-ID: <52B40426.4020900@mittwald.de> In-Reply-To: 52B3FBF2.60305@mittwald.de --===============1407229003310331373== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable I created a BZ for this: https://bugzilla.redhat.com/show_bug.cgi?id=3D1045350 Am 20.12.2013 09:09, schrieb Sven Kieske: > Hi, > = > when we try to create a vm via REST-API, we get the following error > via REST: > = >

HTTP Status 500 - org.codehaus.jackson.map.JsonMappingException: > (was java.lang.NullPointerException) (through reference chain: > org.ovirt.engine.api.model.VM["console"])


noshade=3D"noshade">

type Status report

message > org.codehaus.jackson.map.JsonMappingException: (was > java.lang.NullPointerException) (through reference chain: > org.ovirt.engine.api.model.VM["console"])

descript= ion > The server encountered an internal error > (org.codehaus.jackson.map.JsonMappingException: (was > java.lang.NullPointerException) (through reference chain: > org.ovirt.engine.api.model.VM["console"])) that prevented it > from fulfilling this request.


noshade=3D"noshade">

JBoss Web/7.0.13.Final

> = > However, the vm is correctly created (see attached engine.log). > = > This is ovirt-engine 3.3.2-1.el6 > = > Any suggestions? > = > We need to be able to get the correct response via API. > = > Should I open a BZ for this? > = > = > = > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel > = -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============1407229003310331373==-- From tjelinek at redhat.com Fri Dec 20 04:57:22 2013 Content-Type: multipart/mixed; boundary="===============1877920210144831488==" MIME-Version: 1.0 From: Tomas Jelinek To: devel at ovirt.org Subject: Re: [Engine-devel] REST Error during VM creation Date: Fri, 20 Dec 2013 04:57:15 -0500 Message-ID: <1591883432.9643281.1387533435890.JavaMail.root@redhat.com> In-Reply-To: 52B40426.4020900@mittwald.de --===============1877920210144831488== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable hey, could you please share the exact XML you have sent to the REST? Thanx, Tomas ----- Original Message ----- > From: "Sven Kieske" > To: engine-devel(a)ovirt.org > Sent: Friday, December 20, 2013 9:44:59 AM > Subject: Re: [Engine-devel] REST Error during VM creation > = > I created a BZ for this: > = > https://bugzilla.redhat.com/show_bug.cgi?id=3D1045350 > = > Am 20.12.2013 09:09, schrieb Sven Kieske: > > Hi, > > = > > when we try to create a vm via REST-API, we get the following error > > via REST: > > = > >

HTTP Status 500 - org.codehaus.jackson.map.JsonMappingException: > > (was java.lang.NullPointerException) (through reference chain: > > org.ovirt.engine.api.model.VM["console"])


> noshade=3D"noshade">

type Status report

message > > org.codehaus.jackson.map.JsonMappingException: (was > > java.lang.NullPointerException) (through reference chain: > > org.ovirt.engine.api.model.VM["console"])

descri= ption > > The server encountered an internal error > > (org.codehaus.jackson.map.JsonMappingException: (was > > java.lang.NullPointerException) (through reference chain: > > org.ovirt.engine.api.model.VM["console"])) that prevented it > > from fulfilling this request.


> noshade=3D"noshade">

JBoss Web/7.0.13.Final

> > = > > However, the vm is correctly created (see attached engine.log). > > = > > This is ovirt-engine 3.3.2-1.el6 > > = > > Any suggestions? > > = > > We need to be able to get the correct response via API. > > = > > Should I open a BZ for this? > > = > > = > > = > > = > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > = > = > -- > Mit freundlichen Gr=C3=BC=C3=9Fen / Regards > = > Sven Kieske > = > Systemadministrator > Mittwald CM Service GmbH & Co. KG > K=C3=B6nigsberger Stra=C3=9Fe 6 > 32339 Espelkamp > T: +49-5772-293-100 > F: +49-5772-293-333 > https://www.mittwald.de > Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer > St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen > Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oey= nhausen > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============1877920210144831488==-- From S.Kieske at mittwald.de Fri Dec 20 05:28:54 2013 Content-Type: multipart/mixed; boundary="===============7745495121053634689==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: Re: [Engine-devel] REST Error during VM creation Date: Fri, 20 Dec 2013 10:25:49 +0000 Message-ID: <52B41BC8.8080909@mittwald.de> In-Reply-To: 1591883432.9643281.1387533435890.JavaMail.root@redhat.com --===============7745495121053634689== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, the data gets submitted through json, as stated in the BZ, here it is: POST request on https://virt-mgmt-01.internal/api/vms/: {"name":"vr00001","cluster":{"id":"2ad11b5e-9e74-499a-b317-5a9a3027cfca","n= ame":"localcluster1"},"template":{"id":"10080414-d017-490b-b212-e02cee6a7b6= e","name":"ubuntu-server-12.04"},"console":{"enabled":true}} Am 20.12.2013 10:57, schrieb Tomas Jelinek: > hey, > = > could you please share the exact XML you have sent to the REST? > = > Thanx, > Tomas > = > ----- Original Message ----- >> From: "Sven Kieske" >> To: engine-devel(a)ovirt.org >> Sent: Friday, December 20, 2013 9:44:59 AM >> Subject: Re: [Engine-devel] REST Error during VM creation >> >> I created a BZ for this: >> >> https://bugzilla.redhat.com/show_bug.cgi?id=3D1045350 >> >> Am 20.12.2013 09:09, schrieb Sven Kieske: >>> Hi, >>> >>> when we try to create a vm via REST-API, we get the following error >>> via REST: >>> >>>

HTTP Status 500 - org.codehaus.jackson.map.JsonMappingException: >>> (was java.lang.NullPointerException) (through reference chain: >>> org.ovirt.engine.api.model.VM["console"])


>> noshade=3D"noshade">

type Status report

message >>> org.codehaus.jackson.map.JsonMappingException: (was >>> java.lang.NullPointerException) (through reference chain: >>> org.ovirt.engine.api.model.VM["console"])

descri= ption >>> The server encountered an internal error >>> (org.codehaus.jackson.map.JsonMappingException: (was >>> java.lang.NullPointerException) (through reference chain: >>> org.ovirt.engine.api.model.VM["console"])) that prevented it >>> from fulfilling this request.


>> noshade=3D"noshade">

JBoss Web/7.0.13.Final

>>> >>> However, the vm is correctly created (see attached engine.log). >>> >>> This is ovirt-engine 3.3.2-1.el6 >>> >>> Any suggestions? >>> >>> We need to be able to get the correct response via API. >>> >>> Should I open a BZ for this? >>> >>> >>> >>> >>> _______________________________________________ >>> Engine-devel mailing list >>> Engine-devel(a)ovirt.org >>> http://lists.ovirt.org/mailman/listinfo/engine-devel >>> >> >> -- >> Mit freundlichen Gr=C3=BC=C3=9Fen / Regards >> >> Sven Kieske >> >> Systemadministrator >> Mittwald CM Service GmbH & Co. KG >> K=C3=B6nigsberger Stra=C3=9Fe 6 >> 32339 Espelkamp >> T: +49-5772-293-100 >> F: +49-5772-293-333 >> https://www.mittwald.de >> Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer >> St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhaus= en >> Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oe= ynhausen >> _______________________________________________ >> Engine-devel mailing list >> Engine-devel(a)ovirt.org >> http://lists.ovirt.org/mailman/listinfo/engine-devel >> > = > = > = -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============7745495121053634689==-- From S.Kieske at mittwald.de Fri Dec 20 05:50:49 2013 Content-Type: multipart/mixed; boundary="===============3649355418680435575==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: [Engine-devel] missing javadoc for restapi? Date: Fri, 20 Dec 2013 10:47:22 +0000 Message-ID: <52B420D6.5010201@mittwald.de> --===============3649355418680435575== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, we are not able to find the javadoc for the restapi. I can find the javadoc for the java sdk but not for REST. Are we looking in the wrong place? Any links or help would be appreciated! -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============3649355418680435575==-- From S.Kieske at mittwald.de Fri Dec 20 05:59:34 2013 Content-Type: multipart/mixed; boundary="===============4265201199310302676==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: Re: [Engine-devel] missing javadoc for restapi? Date: Fri, 20 Dec 2013 10:56:32 +0000 Message-ID: <52B422FB.3020607@mittwald.de> In-Reply-To: 52B420D6.5010201@mittwald.de --===============4265201199310302676== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable I'm asking because the rsdl is not correct about cloud-init, specific: http://www.ovirt.org/Features/Cloud-Init_Integration e.g. it is not mentioned that there is an collection "ips", not in the wiki and not in the rsdl. ATM our developers are cursing at me/ovirt. I'd like to stop this asap. Am 20.12.2013 11:47, schrieb Sven Kieske: > Hi, > = > we are not able to find the javadoc for the restapi. > I can find the javadoc for the java sdk but not for REST. > = > Are we looking in the wrong place? > Any links or help would be appreciated! > = -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============4265201199310302676==-- From shtripat at redhat.com Fri Dec 20 06:53:01 2013 Content-Type: multipart/mixed; boundary="===============4262847101996998133==" MIME-Version: 1.0 From: Shubhendu Tripathi To: devel at ovirt.org Subject: [Engine-devel] Gluster volume capacity feature Date: Fri, 20 Dec 2013 17:22:50 +0530 Message-ID: <52B42F92.9080809@redhat.com> --===============4262847101996998133== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi All, A new wiki has been published for feature "Gluster Volume Capacity" http://www.ovirt.org/Features/Gluster_Volume_Capacity Please review the same and provide your comments. Added Michael and Ori specifically for review of REST apis. Thanks, Shubhendu Tripathi --===============4262847101996998133==-- From S.Kieske at mittwald.de Fri Dec 20 09:43:27 2013 Content-Type: multipart/mixed; boundary="===============6308591006651839778==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: [Engine-devel] [BUG] in UserMapper.java in 3.3.2 Date: Fri, 20 Dec 2013 14:40:22 +0000 Message-ID: <52B45772.6050800@mittwald.de> --===============6308591006651839778== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, afaik there's a bug in 3.3.2 rest-api implementation of Cloud-Init: This Class never gets the password: http://gerrit.ovirt.org/gitweb?p=3Dovirt-engine.git;a=3Dblob;f=3Dbackend/ma= nager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/type= s/UserMapper.java;h=3Da6aa3a5a5e0dca0ef6a54a38824c7da17228d041;hb=3Drefs/he= ads/ovirt-engine-3.3.2 and I think there is a typo in line 48: vdcUser.setDomainControler(adUser.getDomainControler it should be Controller, not Controler. there is no model.setPassword or similar. so the data gets to the vm without the password, can somebody fix this? -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============6308591006651839778==-- From S.Kieske at mittwald.de Fri Dec 20 09:52:56 2013 Content-Type: multipart/mixed; boundary="===============2600634929322043579==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: Re: [Engine-devel] [BUG] in UserMapper.java in 3.3.2 Date: Fri, 20 Dec 2013 14:49:51 +0000 Message-ID: <52B459AB.5050802@mittwald.de> In-Reply-To: 52B45772.6050800@mittwald.de --===============2600634929322043579== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable I opened a BZ to track this: https://bugzilla.redhat.com/show_bug.cgi?id=3D1045484 Am 20.12.2013 15:40, schrieb Sven Kieske: > Hi, > = > afaik there's a bug in 3.3.2 rest-api implementation of > Cloud-Init: > = > This Class never gets the password: > = > http://gerrit.ovirt.org/gitweb?p=3Dovirt-engine.git;a=3Dblob;f=3Dbackend/= manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/ty= pes/UserMapper.java;h=3Da6aa3a5a5e0dca0ef6a54a38824c7da17228d041;hb=3Drefs/= heads/ovirt-engine-3.3.2 > = > and I think there is a typo in line 48: > vdcUser.setDomainControler(adUser.getDomainControler > it should be Controller, not Controler. > = > there is no > model.setPassword > or similar. > = > so the data gets to the vm without the password, can somebody fix this? > = > = -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============2600634929322043579==-- From tjelinek at redhat.com Fri Dec 20 10:31:05 2013 Content-Type: multipart/mixed; boundary="===============7147921497982082308==" MIME-Version: 1.0 From: Tomas Jelinek To: devel at ovirt.org Subject: Re: [Engine-devel] REST Error during VM creation Date: Fri, 20 Dec 2013 10:30:55 -0500 Message-ID: <1181761488.9747897.1387553455522.JavaMail.root@redhat.com> In-Reply-To: 52B41BC8.8080909@mittwald.de --===============7147921497982082308== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable hey, it was indeed a bug in the JSON part of the API. Posted a patch for it: http://gerrit.ovirt.org/#/c/22593/ As a walkaround you can use XML instead of JSON. Tomas ----- Original Message ----- > From: "Sven Kieske" > To: "Tomas Jelinek" > Cc: engine-devel(a)ovirt.org > Sent: Friday, December 20, 2013 11:25:49 AM > Subject: Re: [Engine-devel] REST Error during VM creation > = > Hi, > = > the data gets submitted through json, as stated in the BZ, here it is: > = > POST request on https://virt-mgmt-01.internal/api/vms/: > {"name":"vr00001","cluster":{"id":"2ad11b5e-9e74-499a-b317-5a9a3027cfca",= "name":"localcluster1"},"template":{"id":"10080414-d017-490b-b212-e02cee6a7= b6e","name":"ubuntu-server-12.04"},"console":{"enabled":true}} > = > Am 20.12.2013 10:57, schrieb Tomas Jelinek: > > hey, > > = > > could you please share the exact XML you have sent to the REST? > > = > > Thanx, > > Tomas > > = > > ----- Original Message ----- > >> From: "Sven Kieske" > >> To: engine-devel(a)ovirt.org > >> Sent: Friday, December 20, 2013 9:44:59 AM > >> Subject: Re: [Engine-devel] REST Error during VM creation > >> > >> I created a BZ for this: > >> > >> https://bugzilla.redhat.com/show_bug.cgi?id=3D1045350 > >> > >> Am 20.12.2013 09:09, schrieb Sven Kieske: > >>> Hi, > >>> > >>> when we try to create a vm via REST-API, we get the following error > >>> via REST: > >>> > >>>

HTTP Status 500 - org.codehaus.jackson.map.JsonMappingException: > >>> (was java.lang.NullPointerException) (through reference chain: > >>> org.ovirt.engine.api.model.VM["console"])


>>> noshade=3D"noshade">

type Status report

message > >>> org.codehaus.jackson.map.JsonMappingException: (was > >>> java.lang.NullPointerException) (through reference chain: > >>> org.ovirt.engine.api.model.VM["console"])

desc= ription > >>> The server encountered an internal error > >>> (org.codehaus.jackson.map.JsonMappingException: (was > >>> java.lang.NullPointerException) (through reference chain: > >>> org.ovirt.engine.api.model.VM["console"])) that prevented it > >>> from fulfilling this request.


>>> noshade=3D"noshade">

JBoss Web/7.0.13.Final

> >>> > >>> However, the vm is correctly created (see attached engine.log). > >>> > >>> This is ovirt-engine 3.3.2-1.el6 > >>> > >>> Any suggestions? > >>> > >>> We need to be able to get the correct response via API. > >>> > >>> Should I open a BZ for this? > >>> > >>> > >>> > >>> > >>> _______________________________________________ > >>> Engine-devel mailing list > >>> Engine-devel(a)ovirt.org > >>> http://lists.ovirt.org/mailman/listinfo/engine-devel > >>> > >> > >> -- > >> Mit freundlichen Gr=C3=BC=C3=9Fen / Regards > >> > >> Sven Kieske > >> > >> Systemadministrator > >> Mittwald CM Service GmbH & Co. KG > >> K=C3=B6nigsberger Stra=C3=9Fe 6 > >> 32339 Espelkamp > >> T: +49-5772-293-100 > >> F: +49-5772-293-333 > >> https://www.mittwald.de > >> Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer > >> St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynha= usen > >> Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad > >> Oeynhausen > >> _______________________________________________ > >> Engine-devel mailing list > >> Engine-devel(a)ovirt.org > >> http://lists.ovirt.org/mailman/listinfo/engine-devel > >> > > = > > = > > = > = > -- > Mit freundlichen Gr=C3=BC=C3=9Fen / Regards > = > Sven Kieske > = > Systemadministrator > Mittwald CM Service GmbH & Co. KG > K=C3=B6nigsberger Stra=C3=9Fe 6 > 32339 Espelkamp > T: +49-5772-293-100 > F: +49-5772-293-333 > https://www.mittwald.de > Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer > St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen > Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oey= nhausen --===============7147921497982082308==-- From S.Kieske at mittwald.de Fri Dec 20 10:56:29 2013 Content-Type: multipart/mixed; boundary="===============7460335176885940567==" MIME-Version: 1.0 From: Sven Kieske To: devel at ovirt.org Subject: [Engine-devel] BUG: Typo in RSDL 3.3.2 Date: Fri, 20 Dec 2013 15:53:24 +0000 Message-ID: <52B46890.1050300@mittwald.de> --===============7460335176885940567== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, in the rsdl you got: link href=3D"/api/hosts/{host:id}/forceselectspm" rel=3D"forceselectspm">force the specified to be selected as storage pool managerPOST it should read "force the specified host to be selected" I think there are more of those, but I can't list them all atm. -- = Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynh= ausen --===============7460335176885940567==-- From bob at doolittle.us.com Fri Dec 20 11:12:12 2013 Content-Type: multipart/mixed; boundary="===============1701983930868756467==" MIME-Version: 1.0 From: Bob Doolittle To: devel at ovirt.org Subject: Re: [Engine-devel] oVirt 3.3.2 release Date: Fri, 20 Dec 2013 11:12:08 -0500 Message-ID: <52B46C58.6000701@doolittle.us.com> In-Reply-To: 52B2FCC1.7030206@redhat.com --===============1701983930868756467== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable I can't do an update of Engine for RHEL 6. The 3.3.2 packages do not seem to have been pushed here: http://resources.ovirt.org/releases/stable/rpm/EL/6/noarch/ -Bob On 12/19/2013 09:03 AM, Sandro Bonazzola wrote: > The oVirt development team is very happy to announce the general > availability of oVirt 3.3.2 as of December 19th 2013. This release > solidifies oVirt as a leading KVM management application and open > source alternative to VMware vSphere. > > oVirt is available now for Fedora 19 and Red Hat Enterprise Linux 6.5 > (or similar). > > This release of oVirt includes 175 bug fixes and the first release of the > Backup and Restore API, which enables backup programs to integrate with o= Virt. > This release also simplifies the Guide Me VM-creation wizard. See the rel= ease > notes [1] for a list of the new features and bugs fixed. > > IMPORTANT NOTE: If you're upgrading from a previous version, please update > ovirt-release to the latest version (10) and verify you have the correct > repositories enabled by running the following commands > > # yum update ovirt-release > # yum repolist enabled > > before upgrading with the usual procedure. You should see the ovirt-3.3.2= and > ovirt-stable repositories listed in the output of the repolist command. > > > > [1] http://www.ovirt.org/OVirt_3.3.2_release_notes > --===============1701983930868756467==-- From fabiand at redhat.com Fri Dec 20 11:14:01 2013 Content-Type: multipart/mixed; boundary="===============9032700238162938770==" MIME-Version: 1.0 From: Fabian Deutsch To: devel at ovirt.org Subject: Re: [Engine-devel] oVirt 3.3.2 release Date: Fri, 20 Dec 2013 17:13:53 +0100 Message-ID: <1387556033.12243.0.camel@fdeutsch-laptop.local> In-Reply-To: 52B46C58.6000701@doolittle.us.com --===============9032700238162938770== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable --=3D-3dE7IsmtUsDdyfVDGq4h Content-Type: text/plain; charset=3D"UTF-8" Content-Transfer-Encoding: quoted-printable Am Freitag, den 20.12.2013, 11:12 -0500 schrieb Bob Doolittle: > I can't do an update of Engine for RHEL 6. >=3D20 > The 3.3.2 packages do not seem to have been pushed here: >=3D20 > http://resources.ovirt.org/releases/stable/rpm/EL/6/noarch/ Thanks - I observed the same. - fabian > -Bob >=3D20 > On 12/19/2013 09:03 AM, Sandro Bonazzola wrote: > > The oVirt development team is very happy to announce the general > > availability of oVirt 3.3.2 as of December 19th 2013. This release > > solidifies oVirt as a leading KVM management application and open > > source alternative to VMware vSphere. > > > > oVirt is available now for Fedora 19 and Red Hat Enterprise Linux 6.5 > > (or similar). > > > > This release of oVirt includes 175 bug fixes and the first release of t= =3D he > > Backup and Restore API, which enables backup programs to integrate with= =3D oVirt. > > This release also simplifies the Guide Me VM-creation wizard. See the r= =3D elease > > notes [1] for a list of the new features and bugs fixed. > > > > IMPORTANT NOTE: If you're upgrading from a previous version, please upd= =3D ate > > ovirt-release to the latest version (10) and verify you have the correc= =3D t > > repositories enabled by running the following commands > > > > # yum update ovirt-release > > # yum repolist enabled > > > > before upgrading with the usual procedure. You should see the ovirt-3.3= =3D .2 and > > ovirt-stable repositories listed in the output of the repolist command. > > > > > > > > [1] http://www.ovirt.org/OVirt_3.3.2_release_notes > > >=3D20 > _______________________________________________ > Arch mailing list > Arch(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/arch --=3D-3dE7IsmtUsDdyfVDGq4h Content-Type: application/pgp-signature; name=3D"signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.15 (GNU/Linux) iQIcBAABAgAGBQJStGzBAAoJEC9+uOgSHVGUatUP/1/NZSW40AeI92YtLmbOwNVr XY7qdnWQuL4/CR89ia7cG1l23n07t1kk8zNe/I2Fzrc/MitYhlpX8FrXeTarCXuA QlGgJ0Ci+KeN53AYYQAxXhvdD7t7Nn+d1N62YlE1s3KFs92miYvzoRlkyEoahFhS jnW5MBVZul3yAzBQN3DplhsaoiEJwaKfmbZ/fdn4JgYpigzmxirpvgvP5KuM1fqq Z/mVZFvNRW2tGSO3F/MxZISeH/1aZnWUJAYd329adLQdgkGd3LSRevEf4TsUqDzG gANcIukDD9LTBCKhYSmcYDw/riKhCR2jGnJbMegWwNMzHvE9zUHFxZcKya0p2l1g spGZico16ptAM8NCS5sjkSC/KThCPTDPI8yCV3bDOWbz5b6DrwRHuWmJElrt1SV3 a73y5z7XTnL28yVVp7nWvUYZvg+bkyDENpxv4TaYC9qbmtFR4+Z8IqjdqoMV6v/b /0+8QlzOEE1vH2b6C1noMk07Mq+BTgwJhG7ZEfGMrsX6hUGv2HE9/VfKPvhtVOrI 3nbbKJv9Hwf0hXddGR8/pImWcN1iFO0L2OnUDgLItSUmRzJXX4edId81Wajo2tFM 67IwVeFOn1IGy74TFwm/xRxfHWs0WHl6mK3wws9h8/LHV7pV6yiIUDuTwnTjjMEB yqnkJaZBwIvb7VnyUWYs =3DOEfX -----END PGP SIGNATURE----- --=3D-3dE7IsmtUsDdyfVDGq4h-- --===============9032700238162938770== Content-Type: multipart/signed MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" Ci0tPS0zZEU3SXNtdFVzRGR5ZlZER3E0aApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJz ZXQ9IlVURi04IgpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlCgpB bSBGcmVpdGFnLCBkZW4gMjAuMTIuMjAxMywgMTE6MTIgLTA1MDAgc2NocmllYiBCb2IgRG9vbGl0 dGxlOgo+IEkgY2FuJ3QgZG8gYW4gdXBkYXRlIG9mIEVuZ2luZSBmb3IgUkhFTCA2Lgo+PTIwCj4g VGhlIDMuMy4yIHBhY2thZ2VzIGRvIG5vdCBzZWVtIHRvIGhhdmUgYmVlbiBwdXNoZWQgaGVyZToK Pj0yMAo+IGh0dHA6Ly9yZXNvdXJjZXMub3ZpcnQub3JnL3JlbGVhc2VzL3N0YWJsZS9ycG0vRUwv Ni9ub2FyY2gvCgpUaGFua3MgLSBJIG9ic2VydmVkIHRoZSBzYW1lLgoKLSBmYWJpYW4KCj4gLUJv Ygo+PTIwCj4gT24gMTIvMTkvMjAxMyAwOTowMyBBTSwgU2FuZHJvIEJvbmF6em9sYSB3cm90ZToK PiA+IFRoZSBvVmlydCBkZXZlbG9wbWVudCB0ZWFtIGlzIHZlcnkgaGFwcHkgdG8gYW5ub3VuY2Ug dGhlIGdlbmVyYWwKPiA+IGF2YWlsYWJpbGl0eSBvZiBvVmlydCAzLjMuMiBhcyBvZiBEZWNlbWJl ciAxOXRoIDIwMTMuIFRoaXMgcmVsZWFzZQo+ID4gc29saWRpZmllcyBvVmlydCBhcyBhIGxlYWRp bmcgS1ZNIG1hbmFnZW1lbnQgYXBwbGljYXRpb24gYW5kIG9wZW4KPiA+IHNvdXJjZSBhbHRlcm5h dGl2ZSB0byBWTXdhcmUgdlNwaGVyZS4KPiA+Cj4gPiBvVmlydCBpcyBhdmFpbGFibGUgbm93IGZv ciBGZWRvcmEgMTkgYW5kIFJlZCBIYXQgRW50ZXJwcmlzZSBMaW51eCA2LjUKPiA+IChvciBzaW1p bGFyKS4KPiA+Cj4gPiBUaGlzIHJlbGVhc2Ugb2Ygb1ZpcnQgaW5jbHVkZXMgMTc1IGJ1ZyBmaXhl cyBhbmQgdGhlIGZpcnN0IHJlbGVhc2Ugb2YgdD0KaGUKPiA+IEJhY2t1cCBhbmQgUmVzdG9yZSBB UEksIHdoaWNoIGVuYWJsZXMgYmFja3VwIHByb2dyYW1zIHRvIGludGVncmF0ZSB3aXRoPQogb1Zp cnQuCj4gPiBUaGlzIHJlbGVhc2UgYWxzbyBzaW1wbGlmaWVzIHRoZSBHdWlkZSBNZSBWTS1jcmVh dGlvbiB3aXphcmQuIFNlZSB0aGUgcj0KZWxlYXNlCj4gPiBub3RlcyBbMV0gZm9yIGEgbGlzdCBv ZiB0aGUgbmV3IGZlYXR1cmVzIGFuZCBidWdzIGZpeGVkLgo+ID4KPiA+IElNUE9SVEFOVCBOT1RF OiBJZiB5b3UncmUgdXBncmFkaW5nIGZyb20gYSBwcmV2aW91cyB2ZXJzaW9uLCBwbGVhc2UgdXBk PQphdGUKPiA+IG92aXJ0LXJlbGVhc2UgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uICgxMCkgYW5kIHZl cmlmeSB5b3UgaGF2ZSB0aGUgY29ycmVjPQp0Cj4gPiByZXBvc2l0b3JpZXMgZW5hYmxlZCBieSBy dW5uaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMKPiA+Cj4gPiAjIHl1bSB1cGRhdGUgb3ZpcnQt cmVsZWFzZQo+ID4gIyB5dW0gcmVwb2xpc3QgZW5hYmxlZAo+ID4KPiA+IGJlZm9yZSB1cGdyYWRp bmcgd2l0aCB0aGUgdXN1YWwgcHJvY2VkdXJlLiBZb3Ugc2hvdWxkIHNlZSB0aGUgb3ZpcnQtMy4z PQouMiBhbmQKPiA+IG92aXJ0LXN0YWJsZSByZXBvc2l0b3JpZXMgbGlzdGVkIGluIHRoZSBvdXRw dXQgb2YgdGhlIHJlcG9saXN0IGNvbW1hbmQuCj4gPgo+ID4KPiA+Cj4gPiBbMV0gaHR0cDovL3d3 dy5vdmlydC5vcmcvT1ZpcnRfMy4zLjJfcmVsZWFzZV9ub3Rlcwo+ID4KPj0yMAo+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gQXJjaCBtYWlsaW5nIGxp c3QKPiBBcmNoQG92aXJ0Lm9yZwo+IGh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0 aW5mby9hcmNoCgoKLS09LTNkRTdJc210VXNEZHlmVkRHcTRoCkNvbnRlbnQtVHlwZTogYXBwbGlj YXRpb24vcGdwLXNpZ25hdHVyZTsgbmFtZT0ic2lnbmF0dXJlLmFzYyIKQ29udGVudC1EZXNjcmlw dGlvbjogVGhpcyBpcyBhIGRpZ2l0YWxseSBzaWduZWQgbWVzc2FnZSBwYXJ0CkNvbnRlbnQtVHJh bnNmZXItRW5jb2Rpbmc6IDdiaXQKCi0tLS0tQkVHSU4gUEdQIFNJR05BVFVSRS0tLS0tClZlcnNp b246IEdudVBHIHYxLjQuMTUgKEdOVS9MaW51eCkKCmlRSWNCQUFCQWdBR0JRSlN0R3pCQUFvSkVD OSt1T2dTSFZHVWF0VVAvMS9OWlNXNDBBZUk5Mll0TG1iT3dOVnIKWFk3cWRuV1F1TDQvQ1I4OWlh N2NHMWwyM24wN3Qxa2s4ek5lL0kyRnpyYy9NaXRZaGxwWDhGclhlVGFyQ1h1QQpRbEdnSjBDaStL ZU41M0FZWVFBeFhodmREN3Q3Tm4rZDFONjJZbEUxczNLRnM5Mm1pWXZ6b1Jsa3lFb2FoRmhTCmpu VzVNQlZadWwzeUF6QlFOM0RwbGhzYW9pRUp3YUtmbWJaL2ZkbjRKZ1lwaWd6bXhpcnB2Z3ZQNUt1 TTFmcXEKWi9tVlpGdk5SVzJ0R1NPM0YvTXhaSVNlSC8xYVpuV1VKQVlkMzI5YWRMUWRna0dkM0xT UmV2RWY0VHNVcUR6RwpnQU5jSXVrREQ5TFRCQ0toWVNtY1lEdy9yaUtoQ1IyakduSmJNZWdXd05N ekh2RTl6VUhGeFpjS3lhMHAybDFnCnNwR1ppY28xNnB0QU04TkNTNXNqa1NDL0tUaENQVERQSTh5 Q1YzYkRPV2J6NWI2RHJ3Ukh1V21KRWxydDFTVjMKYTczeTV6N1hUbkwyOHlWVnA3bld2VVladmcr Ymt5REVOcHh2NFRhWUM5cWJtdEZSNCtaOElxamRxb01WNnYvYgovMCs4UWx6T0VFMXZIMmI2QzFu b01rMDdNcStCVGd3SmhHN1pFZkdNcnNYNmhVR3YySEU5L1ZmS1B2aHRWT3JJCjNuYmJLSnY5SHdm MGhYZGRHUjgvcEltV2NOMWlGTzBMMk9uVURnTEl0U1VtUnpKWFg0ZWRJZDgxV2FqbzJ0Rk0KNjdJ d1ZlRk9uMUlHeTc0VEZ3bS94UnhmSFdzMFdIbDZtSzN3d3M5aDgvTEhWN3BWNnlpSVVEdVR3blRq ak1FQgp5cW5rSmFaQndJdmI3Vm55VVdZcwo9T0VmWAotLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0t LS0KCi0tPS0zZEU3SXNtdFVzRGR5ZlZER3E0aC0tCgo= --===============9032700238162938770==-- From bob at doolittle.us.com Fri Dec 20 11:23:48 2013 Content-Type: multipart/mixed; boundary="===============0003621499893017369==" MIME-Version: 1.0 From: Bob Doolittle To: devel at ovirt.org Subject: Re: [Engine-devel] oVirt 3.3.2 release Date: Fri, 20 Dec 2013 11:23:44 -0500 Message-ID: <52B46F10.5000005@doolittle.us.com> In-Reply-To: 1387556033.12243.0.camel@fdeutsch-laptop.local --===============0003621499893017369== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable I think the problem may be other than I indicated, however, because I = don't see ovirt-engine-3.3.2 in the FC19 stable repo either. Here's the = error output of my update command: Error: Package: ovirt-engine-3.3.1-2.el6.noarch (@ovirt-stable) Requires: ovirt-engine-websocket-proxy =3D 3.3.1-2.el6 Removing: ovirt-engine-websocket-proxy-3.3.1-2.el6.noarch = (@ovirt-stable) ovirt-engine-websocket-proxy =3D 3.3.1-2.el6 Updated By: ovirt-engine-websocket-proxy-3.3.2-1.el6.noarch = (ovirt-3.3.2) ovirt-engine-websocket-proxy =3D 3.3.2-1.el6 Available: ovirt-engine-websocket-proxy-3.3.0-3.el6.noarch = (ovirt-stable) ovirt-engine-websocket-proxy =3D 3.3.0-3.el6 Available: ovirt-engine-websocket-proxy-3.3.0-4.el6.noarch = (ovirt-stable) ovirt-engine-websocket-proxy =3D 3.3.0-4.el6 Available: ovirt-engine-websocket-proxy-3.3.0.1-1.el6.noarch = (ovirt-stable) ovirt-engine-websocket-proxy =3D 3.3.0.1-1.el6 Available: ovirt-engine-websocket-proxy-3.3.1-1.el6.noarch = (ovirt-stable) ovirt-engine-websocket-proxy =3D 3.3.1-1.el6 I have attached my current repo config, after the update of = ovirt-release-el6-10-1 I'm not sure why it's not seeing = http://resources.ovirt.org/releases/3.3.2/rpm/EL/6/noarch/ovirt-engine-3.3.= 2-1.el6.noarch.rpm I do see that repository enabled in "yum repolist enabled" output. -Bob On 12/20/2013 11:13 AM, Fabian Deutsch wrote: > Am Freitag, den 20.12.2013, 11:12 -0500 schrieb Bob Doolittle: >> I can't do an update of Engine for RHEL 6. >> >> The 3.3.2 packages do not seem to have been pushed here: >> >> http://resources.ovirt.org/releases/stable/rpm/EL/6/noarch/ > Thanks - I observed the same. > > - fabian > >> -Bob >> >> On 12/19/2013 09:03 AM, Sandro Bonazzola wrote: >>> The oVirt development team is very happy to announce the general >>> availability of oVirt 3.3.2 as of December 19th 2013. This release >>> solidifies oVirt as a leading KVM management application and open >>> source alternative to VMware vSphere. >>> >>> oVirt is available now for Fedora 19 and Red Hat Enterprise Linux 6.5 >>> (or similar). >>> >>> This release of oVirt includes 175 bug fixes and the first release of t= he >>> Backup and Restore API, which enables backup programs to integrate with= oVirt. >>> This release also simplifies the Guide Me VM-creation wizard. See the r= elease >>> notes [1] for a list of the new features and bugs fixed. >>> >>> IMPORTANT NOTE: If you're upgrading from a previous version, please upd= ate >>> ovirt-release to the latest version (10) and verify you have the correct >>> repositories enabled by running the following commands >>> >>> # yum update ovirt-release >>> # yum repolist enabled >>> >>> before upgrading with the usual procedure. You should see the ovirt-3.3= .2 and >>> ovirt-stable repositories listed in the output of the repolist command. >>> >>> >>> >>> [1] http://www.ovirt.org/OVirt_3.3.2_release_notes >>> >> _______________________________________________ >> Arch mailing list >> Arch(a)ovirt.org >> http://lists.ovirt.org/mailman/listinfo/arch --===============0003621499893017369== Content-Type: text/plain MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="el6-ovirt.repo" W292aXJ0LXN0YWJsZV0KbmFtZT1PbGRlciBTdGFibGUgYnVpbGRzIG9mIHRoZSBvVmlydCBwcm9q ZWN0CmJhc2V1cmw9aHR0cDovL292aXJ0Lm9yZy9yZWxlYXNlcy9zdGFibGUvcnBtL0VMLyRyZWxl YXNldmVyLwplbmFibGVkPTEKc2tpcF9pZl91bmF2YWlsYWJsZT0xCmdwZ2NoZWNrPTAKCltvdmly dC0zLjMuMl0KbmFtZT1vVmlydCAzLjMuMiByZWxlYXNlCmJhc2V1cmw9aHR0cDovL3Jlc291cmNl cy5vdmlydC5vcmcvcmVsZWFzZXMvMy4zLjIvcnBtL0VMLyRyZWxlYXNldmVyLwplbmFibGVkPTEK c2tpcF9pZl91bmF2YWlsYWJsZT0xCmdwZ2NoZWNrPTAKCltvdmlydC11cGRhdGVzLXRlc3Rpbmdd Cm5hbWU9VGVzdCBVcGRhdGVzIGJ1aWxkcyBvZiB0aGUgb1ZpcnQgcHJvamVjdApiYXNldXJsPWh0 dHA6Ly9vdmlydC5vcmcvcmVsZWFzZXMvdXBkYXRlcy10ZXN0aW5nL3JwbS9FTC8kcmVsZWFzZXZl ci8KZW5hYmxlZD0wCnNraXBfaWZfdW5hdmFpbGFibGU9MQpncGdjaGVjaz0wCgpbb3ZpcnQtYmV0 YV0KbmFtZT1CZXRhIGJ1aWxkcyBvZiB0aGUgb1ZpcnQgcHJvamVjdApiYXNldXJsPWh0dHA6Ly9v dmlydC5vcmcvcmVsZWFzZXMvYmV0YS9ycG0vRUwvJHJlbGVhc2V2ZXIvCmVuYWJsZWQ9MApza2lw X2lmX3VuYXZhaWxhYmxlPTEKZ3BnY2hlY2s9MAoKW292aXJ0LW5pZ2h0bHldCm5hbWU9TmlnaHRs eSBidWlsZHMgb2YgdGhlIG9WaXJ0IHByb2plY3QKYmFzZXVybD1odHRwOi8vb3ZpcnQub3JnL3Jl bGVhc2VzL25pZ2h0bHkvcnBtL0VMLyRyZWxlYXNldmVyLwplbmFibGVkPTAKc2tpcF9pZl91bmF2 YWlsYWJsZT0xCmdwZ2NoZWNrPTAK --===============0003621499893017369==-- From bob at doolittle.us.com Sat Dec 21 07:24:45 2013 Content-Type: multipart/mixed; boundary="===============6535620813215750453==" MIME-Version: 1.0 From: Bob Doolittle To: devel at ovirt.org Subject: Re: [Engine-devel] [Users] oVirt 3.3.2 release Date: Sat, 21 Dec 2013 07:24:40 -0500 Message-ID: In-Reply-To: 9a3eqe9cmlqcfluko0wta6k1.1387619712990@email.android.com --===============6535620813215750453== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Thanks. I considered that but I've been hesitant to try manual workarounds in case my environment proves helpful for troubleshooting or verifying a solution. Clearly the community needs a real fix, although the lack of response to this issue surprised me. Must be the holidays :-) -Bob On Dec 21, 2013 4:55 AM, "Markus Stockhausen" wrote: > We are on centos 6.5 and got similar dependency errors but simply replaced > ovirt-release with ovirt-release-el6 in the guide. Afterwards everything > worked smoothly. > > Do not know if it helps > > Von meinem Xperia=E2=84=A2-Smartphone gesendet > > Bob Doolittle schrieb: > > > I think the problem may be other than I indicated, however, because I > don't see ovirt-engine-3.3.2 in the FC19 stable repo either. Here's the > error output of my update command: > > Error: Package: ovirt-engine-3.3.1-2.el6.noarch (@ovirt-stable) > Requires: ovirt-engine-websocket-proxy =3D 3.3.1-2.el6 > Removing: ovirt-engine-websocket-proxy-3.3.1-2.el6.noarch > (@ovirt-stable) > ovirt-engine-websocket-proxy =3D 3.3.1-2.el6 > Updated By: ovirt-engine-websocket-proxy-3.3.2-1.el6.noarch > (ovirt-3.3.2) > ovirt-engine-websocket-proxy =3D 3.3.2-1.el6 > Available: ovirt-engine-websocket-proxy-3.3.0-3.el6.noarch > (ovirt-stable) > ovirt-engine-websocket-proxy =3D 3.3.0-3.el6 > Available: ovirt-engine-websocket-proxy-3.3.0-4.el6.noarch > (ovirt-stable) > ovirt-engine-websocket-proxy =3D 3.3.0-4.el6 > Available: ovirt-engine-websocket-proxy-3.3.0.1-1.el6.noarch > (ovirt-stable) > ovirt-engine-websocket-proxy =3D 3.3.0.1-1.el6 > Available: ovirt-engine-websocket-proxy-3.3.1-1.el6.noarch > (ovirt-stable) > ovirt-engine-websocket-proxy =3D 3.3.1-1.el6 > > I have attached my current repo config, after the update of > ovirt-release-el6-10-1 > > I'm not sure why it's not seeing > > http://resources.ovirt.org/releases/3.3.2/rpm/EL/6/noarch/ovirt-engine-3.= 3.2-1.el6.noarch.rpm > > I do see that repository enabled in "yum repolist enabled" output. > > -Bob > > On 12/20/2013 11:13 AM, Fabian Deutsch wrote: > > Am Freitag, den 20.12.2013, 11:12 -0500 schrieb Bob Doolittle: > >> I can't do an update of Engine for RHEL 6. > >> > >> The 3.3.2 packages do not seem to have been pushed here: > >> > >> http://resources.ovirt.org/releases/stable/rpm/EL/6/noarch/ > > Thanks - I observed the same. > > > > - fabian > > > >> -Bob > >> > >> On 12/19/2013 09:03 AM, Sandro Bonazzola wrote: > >>> The oVirt development team is very happy to announce the general > >>> availability of oVirt 3.3.2 as of December 19th 2013. This release > >>> solidifies oVirt as a leading KVM management application and open > >>> source alternative to VMware vSphere. > >>> > >>> oVirt is available now for Fedora 19 and Red Hat Enterprise Linux 6.5 > >>> (or similar). > >>> > >>> This release of oVirt includes 175 bug fixes and the first release of > the > >>> Backup and Restore API, which enables backup programs to integrate > with oVirt. > >>> This release also simplifies the Guide Me VM-creation wizard. See the > release > >>> notes [1] for a list of the new features and bugs fixed. > >>> > >>> IMPORTANT NOTE: If you're upgrading from a previous version, please > update > >>> ovirt-release to the latest version (10) and verify you have the > correct > >>> repositories enabled by running the following commands > >>> > >>> # yum update ovirt-release > >>> # yum repolist enabled > >>> > >>> before upgrading with the usual procedure. You should see the > ovirt-3.3.2 and > >>> ovirt-stable repositories listed in the output of the repolist comman= d. > >>> > >>> > >>> > >>> [1] http://www.ovirt.org/OVirt_3.3.2_release_notes > >>> > >> _______________________________________________ > >> Arch mailing list > >> Arch(a)ovirt.org > >> http://lists.ovirt.org/mailman/listinfo/arch > --===============6535620813215750453== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PHAgZGlyPSJsdHIiPlRoYW5rcy4gSSBjb25zaWRlcmVkIHRoYXQgYnV0IEkmIzM5O3ZlIGJlZW4g aGVzaXRhbnQgdG8gdHJ5IG1hbnVhbCB3b3JrYXJvdW5kcyBpbiBjYXNlIG15IGVudmlyb25tZW50 IHByb3ZlcyBoZWxwZnVsIGZvciB0cm91Ymxlc2hvb3Rpbmcgb3IgdmVyaWZ5aW5nIGEgc29sdXRp b24uIENsZWFybHkgdGhlIGNvbW11bml0eSBuZWVkcyBhIHJlYWwgZml4LCBhbHRob3VnaCB0aGUg bGFjayBvZiByZXNwb25zZSB0byB0aGlzIGlzc3VlIHN1cnByaXNlZCBtZS4gTXVzdCBiZSB0aGUg aG9saWRheXMgOi0pPC9wPgoKPHAgZGlyPSJsdHIiPi1Cb2I8L3A+CjxkaXYgY2xhc3M9ImdtYWls X3F1b3RlIj5PbiBEZWMgMjEsIDIwMTMgNDo1NSBBTSwgJnF1b3Q7TWFya3VzIFN0b2NraGF1c2Vu JnF1b3Q7ICZsdDs8YSBocmVmPSJtYWlsdG86c3RvY2toYXVzZW5AY29sbG9naWEuZGUiPnN0b2Nr aGF1c2VuQGNvbGxvZ2lhLmRlPC9hPiZndDsgd3JvdGU6PGJyIHR5cGU9ImF0dHJpYnV0aW9uIj48 YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDti b3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KV2UgYXJlIG9uIGNl bnRvcyA2LjUgYW5kIGdvdCBzaW1pbGFyIGRlcGVuZGVuY3kgZXJyb3JzIGJ1dCBzaW1wbHkgcmVw bGFjZWQgb3ZpcnQtcmVsZWFzZSB3aXRoIG92aXJ0LXJlbGVhc2UtZWw2IGluIHRoZSBndWlkZS4g QWZ0ZXJ3YXJkcyBldmVyeXRoaW5nIHdvcmtlZCBzbW9vdGhseS48YnI+Cjxicj4KRG8gbm90IGtu b3cgaWYgaXQgaGVscHM8YnI+Cjxicj4KVm9uIG1laW5lbSBYcGVyaWGZLVNtYXJ0cGhvbmUgoGdl c2VuZGV0PGJyPgo8YnI+CkJvYiBEb29saXR0bGUgJmx0OzxhIGhyZWY9Im1haWx0bzpib2JAZG9v bGl0dGxlLnVzLmNvbSI+Ym9iQGRvb2xpdHRsZS51cy5jb208L2E+Jmd0OyBzY2hyaWViOjxicj4K PGJyPgo8YnI+CkkgdGhpbmsgdGhlIHByb2JsZW0gbWF5IGJlIG90aGVyIHRoYW4gSSBpbmRpY2F0 ZWQsIGhvd2V2ZXIsIGJlY2F1c2UgSTxicj4KZG9uJiMzOTt0IHNlZSBvdmlydC1lbmdpbmUtMy4z LjIgaW4gdGhlIEZDMTkgc3RhYmxlIHJlcG8gZWl0aGVyLiBIZXJlJiMzOTtzIHRoZTxicj4KZXJy b3Igb3V0cHV0IG9mIG15IHVwZGF0ZSBjb21tYW5kOjxicj4KPGJyPgpFcnJvcjogUGFja2FnZTog b3ZpcnQtZW5naW5lLTMuMy4xLTIuZWw2Lm5vYXJjaCAoQG92aXJ0LXN0YWJsZSk8YnI+CqAgoCCg IKAgoCCgIFJlcXVpcmVzOiBvdmlydC1lbmdpbmUtd2Vic29ja2V0LXByb3h5ID0gMy4zLjEtMi5l bDY8YnI+CqAgoCCgIKAgoCCgIFJlbW92aW5nOiBvdmlydC1lbmdpbmUtd2Vic29ja2V0LXByb3h5 LTMuMy4xLTIuZWw2Lm5vYXJjaDxicj4KKEBvdmlydC1zdGFibGUpPGJyPgqgIKAgoCCgIKAgoCCg IKAgb3ZpcnQtZW5naW5lLXdlYnNvY2tldC1wcm94eSA9IDMuMy4xLTIuZWw2PGJyPgqgIKAgoCCg IKAgoCBVcGRhdGVkIEJ5OiBvdmlydC1lbmdpbmUtd2Vic29ja2V0LXByb3h5LTMuMy4yLTEuZWw2 Lm5vYXJjaDxicj4KKG92aXJ0LTMuMy4yKTxicj4KoCCgIKAgoCCgIKAgoCCgIG92aXJ0LWVuZ2lu ZS13ZWJzb2NrZXQtcHJveHkgPSAzLjMuMi0xLmVsNjxicj4KoCCgIKAgoCCgIKAgQXZhaWxhYmxl OiBvdmlydC1lbmdpbmUtd2Vic29ja2V0LXByb3h5LTMuMy4wLTMuZWw2Lm5vYXJjaDxicj4KKG92 aXJ0LXN0YWJsZSk8YnI+CqAgoCCgIKAgoCCgIKAgoCBvdmlydC1lbmdpbmUtd2Vic29ja2V0LXBy b3h5ID0gMy4zLjAtMy5lbDY8YnI+CqAgoCCgIKAgoCCgIEF2YWlsYWJsZTogb3ZpcnQtZW5naW5l LXdlYnNvY2tldC1wcm94eS0zLjMuMC00LmVsNi5ub2FyY2g8YnI+CihvdmlydC1zdGFibGUpPGJy PgqgIKAgoCCgIKAgoCCgIKAgb3ZpcnQtZW5naW5lLXdlYnNvY2tldC1wcm94eSA9IDMuMy4wLTQu ZWw2PGJyPgqgIKAgoCCgIKAgoCBBdmFpbGFibGU6IG92aXJ0LWVuZ2luZS13ZWJzb2NrZXQtcHJv eHktMy4zLjAuMS0xLmVsNi5ub2FyY2g8YnI+CihvdmlydC1zdGFibGUpPGJyPgqgIKAgoCCgIKAg oCCgIKAgb3ZpcnQtZW5naW5lLXdlYnNvY2tldC1wcm94eSA9IDMuMy4wLjEtMS5lbDY8YnI+CqAg oCCgIKAgoCCgIEF2YWlsYWJsZTogb3ZpcnQtZW5naW5lLXdlYnNvY2tldC1wcm94eS0zLjMuMS0x LmVsNi5ub2FyY2g8YnI+CihvdmlydC1zdGFibGUpPGJyPgqgIKAgoCCgIKAgoCCgIKAgb3ZpcnQt ZW5naW5lLXdlYnNvY2tldC1wcm94eSA9IDMuMy4xLTEuZWw2PGJyPgo8YnI+CkkgaGF2ZSBhdHRh Y2hlZCBteSBjdXJyZW50IHJlcG8gY29uZmlnLCBhZnRlciB0aGUgdXBkYXRlIG9mPGJyPgpvdmly dC1yZWxlYXNlLWVsNi0xMC0xPGJyPgo8YnI+CkkmIzM5O20gbm90IHN1cmUgd2h5IGl0JiMzOTtz IG5vdCBzZWVpbmc8YnI+CjxhIGhyZWY9Imh0dHA6Ly9yZXNvdXJjZXMub3ZpcnQub3JnL3JlbGVh c2VzLzMuMy4yL3JwbS9FTC82L25vYXJjaC9vdmlydC1lbmdpbmUtMy4zLjItMS5lbDYubm9hcmNo LnJwbSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9yZXNvdXJjZXMub3ZpcnQub3JnL3JlbGVhc2Vz LzMuMy4yL3JwbS9FTC82L25vYXJjaC9vdmlydC1lbmdpbmUtMy4zLjItMS5lbDYubm9hcmNoLnJw bTwvYT48YnI+Cgo8YnI+CkkgZG8gc2VlIHRoYXQgcmVwb3NpdG9yeSBlbmFibGVkIGluICZxdW90 O3l1bSByZXBvbGlzdCBlbmFibGVkJnF1b3Q7IG91dHB1dC48YnI+Cjxicj4KLUJvYjxicj4KPGJy PgpPbiAxMi8yMC8yMDEzIDExOjEzIEFNLCBGYWJpYW4gRGV1dHNjaCB3cm90ZTo8YnI+CiZndDsg QW0gRnJlaXRhZywgZGVuIDIwLjEyLjIwMTMsIDExOjEyIC0wNTAwIHNjaHJpZWIgQm9iIERvb2xp dHRsZTo8YnI+CiZndDsmZ3Q7IEkgY2FuJiMzOTt0IGRvIGFuIHVwZGF0ZSBvZiBFbmdpbmUgZm9y IFJIRUwgNi48YnI+CiZndDsmZ3Q7PGJyPgomZ3Q7Jmd0OyBUaGUgMy4zLjIgcGFja2FnZXMgZG8g bm90IHNlZW0gdG8gaGF2ZSBiZWVuIHB1c2hlZCBoZXJlOjxicj4KJmd0OyZndDs8YnI+CiZndDsm Z3Q7IDxhIGhyZWY9Imh0dHA6Ly9yZXNvdXJjZXMub3ZpcnQub3JnL3JlbGVhc2VzL3N0YWJsZS9y cG0vRUwvNi9ub2FyY2gvIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3Jlc291cmNlcy5vdmlydC5v cmcvcmVsZWFzZXMvc3RhYmxlL3JwbS9FTC82L25vYXJjaC88L2E+PGJyPgomZ3Q7IFRoYW5rcyAt IEkgb2JzZXJ2ZWQgdGhlIHNhbWUuPGJyPgomZ3Q7PGJyPgomZ3Q7IC0gZmFiaWFuPGJyPgomZ3Q7 PGJyPgomZ3Q7Jmd0OyAtQm9iPGJyPgomZ3Q7Jmd0Ozxicj4KJmd0OyZndDsgT24gMTIvMTkvMjAx MyAwOTowMyBBTSwgU2FuZHJvIEJvbmF6em9sYSB3cm90ZTo8YnI+CiZndDsmZ3Q7Jmd0OyBUaGUg b1ZpcnQgZGV2ZWxvcG1lbnQgdGVhbSBpcyB2ZXJ5IGhhcHB5IHRvIGFubm91bmNlIHRoZSBnZW5l cmFsPGJyPgomZ3Q7Jmd0OyZndDsgYXZhaWxhYmlsaXR5IG9mIG9WaXJ0IDMuMy4yIGFzIG9mIERl Y2VtYmVyIDE5dGggMjAxMy4gVGhpcyByZWxlYXNlPGJyPgomZ3Q7Jmd0OyZndDsgc29saWRpZmll cyBvVmlydCBhcyBhIGxlYWRpbmcgS1ZNIG1hbmFnZW1lbnQgYXBwbGljYXRpb24gYW5kIG9wZW48 YnI+CiZndDsmZ3Q7Jmd0OyBzb3VyY2UgYWx0ZXJuYXRpdmUgdG8gVk13YXJlIHZTcGhlcmUuPGJy PgomZ3Q7Jmd0OyZndDs8YnI+CiZndDsmZ3Q7Jmd0OyBvVmlydCBpcyBhdmFpbGFibGUgbm93IGZv ciBGZWRvcmEgMTkgYW5kIFJlZCBIYXQgRW50ZXJwcmlzZSBMaW51eCA2LjU8YnI+CiZndDsmZ3Q7 Jmd0OyAob3Igc2ltaWxhcikuPGJyPgomZ3Q7Jmd0OyZndDs8YnI+CiZndDsmZ3Q7Jmd0OyBUaGlz IHJlbGVhc2Ugb2Ygb1ZpcnQgaW5jbHVkZXMgMTc1IGJ1ZyBmaXhlcyBhbmQgdGhlIGZpcnN0IHJl bGVhc2Ugb2YgdGhlPGJyPgomZ3Q7Jmd0OyZndDsgQmFja3VwIGFuZCBSZXN0b3JlIEFQSSwgd2hp Y2ggZW5hYmxlcyBiYWNrdXAgcHJvZ3JhbXMgdG8gaW50ZWdyYXRlIHdpdGggb1ZpcnQuPGJyPgom Z3Q7Jmd0OyZndDsgVGhpcyByZWxlYXNlIGFsc28gc2ltcGxpZmllcyB0aGUgR3VpZGUgTWUgVk0t Y3JlYXRpb24gd2l6YXJkLiBTZWUgdGhlIHJlbGVhc2U8YnI+CiZndDsmZ3Q7Jmd0OyBub3RlcyBb MV0gZm9yIGEgbGlzdCBvZiB0aGUgbmV3IGZlYXR1cmVzIGFuZCBidWdzIGZpeGVkLjxicj4KJmd0 OyZndDsmZ3Q7PGJyPgomZ3Q7Jmd0OyZndDsgSU1QT1JUQU5UIE5PVEU6IElmIHlvdSYjMzk7cmUg dXBncmFkaW5nIGZyb20gYSBwcmV2aW91cyB2ZXJzaW9uLCBwbGVhc2UgdXBkYXRlPGJyPgomZ3Q7 Jmd0OyZndDsgb3ZpcnQtcmVsZWFzZSB0byB0aGUgbGF0ZXN0IHZlcnNpb24gKDEwKSBhbmQgdmVy aWZ5IHlvdSBoYXZlIHRoZSBjb3JyZWN0PGJyPgomZ3Q7Jmd0OyZndDsgcmVwb3NpdG9yaWVzIGVu YWJsZWQgYnkgcnVubmluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzPGJyPgomZ3Q7Jmd0OyZndDs8 YnI+CiZndDsmZ3Q7Jmd0OyAjIHl1bSB1cGRhdGUgb3ZpcnQtcmVsZWFzZTxicj4KJmd0OyZndDsm Z3Q7ICMgeXVtIHJlcG9saXN0IGVuYWJsZWQ8YnI+CiZndDsmZ3Q7Jmd0Ozxicj4KJmd0OyZndDsm Z3Q7IGJlZm9yZSB1cGdyYWRpbmcgd2l0aCB0aGUgdXN1YWwgcHJvY2VkdXJlLiBZb3Ugc2hvdWxk IHNlZSB0aGUgb3ZpcnQtMy4zLjIgYW5kPGJyPgomZ3Q7Jmd0OyZndDsgb3ZpcnQtc3RhYmxlIHJl cG9zaXRvcmllcyBsaXN0ZWQgaW4gdGhlIG91dHB1dCBvZiB0aGUgcmVwb2xpc3QgY29tbWFuZC48 YnI+CiZndDsmZ3Q7Jmd0Ozxicj4KJmd0OyZndDsmZ3Q7PGJyPgomZ3Q7Jmd0OyZndDs8YnI+CiZn dDsmZ3Q7Jmd0OyBbMV0gPGEgaHJlZj0iaHR0cDovL3d3dy5vdmlydC5vcmcvT1ZpcnRfMy4zLjJf cmVsZWFzZV9ub3RlcyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cub3ZpcnQub3JnL09WaXJ0 XzMuMy4yX3JlbGVhc2Vfbm90ZXM8L2E+PGJyPgomZ3Q7Jmd0OyZndDs8YnI+CiZndDsmZ3Q7IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPgomZ3Q7Jmd0 OyBBcmNoIG1haWxpbmcgbGlzdDxicj4KJmd0OyZndDsgPGEgaHJlZj0ibWFpbHRvOkFyY2hAb3Zp cnQub3JnIj5BcmNoQG92aXJ0Lm9yZzwvYT48YnI+CiZndDsmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9s aXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby9hcmNoIiB0YXJnZXQ9Il9ibGFuayI+aHR0 cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FyY2g8L2E+PGJyPgo8L2Jsb2Nr cXVvdGU+PC9kaXY+Cg== --===============6535620813215750453==-- From mtayer at redhat.com Sat Dec 21 10:15:46 2013 Content-Type: multipart/mixed; boundary="===============8299552377569800721==" MIME-Version: 1.0 From: Mooli Tayer To: devel at ovirt.org Subject: [Engine-devel] Help with "Packager install not implemented" Date: Sat, 21 Dec 2013 10:15:44 -0500 Message-ID: <848629573.10003454.1387638944738.JavaMail.root@redhat.com> In-Reply-To: 1153804745.9982450.1387617210734.JavaMail.root@redhat.com --===============8299552377569800721== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ------=3D_Part_10003452_452066899.1387638944733 Content-Type: text/plain; charset=3Dutf-8 Content-Transfer-Encoding: 7bit For patch[1], running: setup/ovirt-install Produces: [ INFO ] Stage: Initializing [ INFO ] Stage: Environment setup Configuration files: [] Log file: /tmp/otopi-20131221103813.log Version: otopi-1.2.0_master (otopi-1.2.0-0.0.master.20131007.git6= f8ac6d.fc19) [ INFO ] Stage: Environment packages setup [ ERROR ] Failed to execute stage 'Environment packages setup': Packager in= stall not implemented [ INFO ] Stage: Pre-termination [ INFO ] Stage: Termination The only relevant information I could find was here: http://gerrit.ovirt.org/#/c/17637/1/packaging/setup/bin/ovirt-engine-remove I've attached the otopi log [1] http://gerrit.ovirt.org/#/c/22135/ ------=3D_Part_10003452_452066899.1387638944733 Content-Type: text/x-log; name=3Dotopi-20131221162712.log Content-Disposition: attachment; filename=3Dotopi-20131221162712.log Content-Transfer-Encoding: base64 MjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmly b25tZW50OjQ0MSBFTlZJUk9OTUVOVCBEVU1QIC0gQkVHSU4KMjAxMy0xMi0yMSAxNjoyNzoxMiBE RUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQkFTRS9s b2c9Ym9vbDonVHJ1ZScKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNv bnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQ09SRS9sb2dEaXI9c3RyOicvdG1wJwoyMDEz LTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1l bnQ6NDU2IEVOViBDT1JFL2xvZ0ZpbGVIYW5kbGU9ZmlsZTonPG9wZW4gZmlsZSAnL3RtcC9vdG9w aS0yMDEzMTIyMTE2MjcxMi5sb2cnLCBtb2RlICdhJyBhdCAweDdmMDUwN2M4NjQyMD4nCjIwMTMt MTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVu dDo0NTYgRU5WIENPUkUvbG9nRmlsZU5hbWU9c3RyOicvdG1wL290b3BpLTIwMTMxMjIxMTYyNzEy LmxvZycKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVt cEVudmlyb25tZW50OjQ1NiBFTlYgQ09SRS9sb2dGaWxlTmFtZVByZWZpeD1zdHI6J290b3BpJwoy MDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJv bm1lbnQ6NDU2IEVOViBDT1JFL2xvZ0ZpbHRlcj1fTXlMb2dnZXJGaWx0ZXI6J2ZpbHRlcicKMjAx My0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25t ZW50OjQ1NiBFTlYgQ09SRS9sb2dGaWx0ZXJLZXlzPWxpc3Q6J1tdJwoyMDEzLTEyLTIxIDE2OjI3 OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVOViBD T1JFL2xvZ1JlbW92ZUF0RXhpdD1ib29sOidGYWxzZScKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJV RyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1OCBFTlZJUk9OTUVOVCBE VU1QIC0gRU5ECjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0 Ll9leGVjdXRlTWV0aG9kOjEyMyBTdGFnZSBib290IE1FVEhPRCBvdG9waS5wbHVnaW5zLm90b3Bp LmRpYWxvZy5taXNjLlBsdWdpbi5faW5pdAoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3Bp LmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDQxIEVOVklST05NRU5UIERVTVAgLSBC RUdJTgoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1w RW52aXJvbm1lbnQ6NDU2IEVOViBESUFMT0cvZGlhbGVjdD1zdHI6J2h1bWFuJwoyMDEzLTEyLTIx IDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU4 IEVOVklST05NRU5UIERVTVAgLSBFTkQKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5j b250ZXh0IGNvbnRleHQuX2V4ZWN1dGVNZXRob2Q6MTIzIFN0YWdlIGJvb3QgTUVUSE9EIG90b3Bp LnBsdWdpbnMub3RvcGkuZGlhbG9nLmh1bWFuLlBsdWdpbi5faW5pdAoyMDEzLTEyLTIxIDE2OjI3 OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDQxIEVOVklS T05NRU5UIERVTVAgLSBCRUdJTgoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRl eHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVOViBESUFMT0cvYm91bmRhcnk9c3RyOict LT00NTFiODBkYy05OTZmLTQzMmUtOWU0Zi0yYjI5ZWY2ZDExNDE9LS0nCjIwMTMtMTItMjEgMTY6 Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTggRU5W SVJPTk1FTlQgRFVNUCAtIEVORAoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRl eHQgY29udGV4dC5fZXhlY3V0ZU1ldGhvZDoxMjMgU3RhZ2UgYm9vdCBNRVRIT0Qgb3RvcGkucGx1 Z2lucy5vdG9waS5kaWFsb2cubWFjaGluZS5QbHVnaW4uX2luaXQKMjAxMy0xMi0yMSAxNjoyNzox MiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuX2V4ZWN1dGVNZXRob2Q6MTI5IGNvbmRpdGlv biBGYWxzZQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5f ZXhlY3V0ZU1ldGhvZDoxMjMgU3RhZ2UgYm9vdCBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5j b3JlLm1pc2MuUGx1Z2luLl9pbml0CjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29u dGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MjggU0VRVUVOQ0UgRFVNUCAtIEJFR0lOCjIwMTMt MTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0 MzAgU1RBR0UgYm9vdAoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29u dGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5jb3Jl LmxvZy5QbHVnaW4uX2luaXQgKG90b3BpLmNvcmUubG9nLmluaXQpCjIwMTMtMTItMjEgMTY6Mjc6 MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzUgICAgIE1FVEhP RCBvdG9waS5wbHVnaW5zLm90b3BpLmRpYWxvZy5taXNjLlBsdWdpbi5faW5pdCAoTm9uZSkKMjAx My0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcFNlcXVlbmNl OjQzNSAgICAgTUVUSE9EIG90b3BpLnBsdWdpbnMub3RvcGkuZGlhbG9nLmh1bWFuLlBsdWdpbi5f aW5pdCAoTm9uZSkKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRl eHQuZHVtcFNlcXVlbmNlOjQzNSAgICAgTUVUSE9EIG90b3BpLnBsdWdpbnMub3RvcGkuZGlhbG9n Lm1hY2hpbmUuUGx1Z2luLl9pbml0IChOb25lKQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90 b3BpLmNvbnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1 Z2lucy5vdG9waS5jb3JlLm1pc2MuUGx1Z2luLl9pbml0IChOb25lKQoyMDEzLTEyLTIxIDE2OjI3 OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRI T0Qgb3RvcGkucGx1Z2lucy5vdG9waS5wYWNrYWdlcnMueXVtcGFja2FnZXIuUGx1Z2luLl9ib290 IChOb25lKQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5k dW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5zeXN0ZW0uaW5m by5QbHVnaW4uX2luaXQgKE5vbmUpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29u dGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzAgU1RBR0UgaW5pdAoyMDEzLTEyLTIxIDE2OjI3 OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRI T0Qgb3RvcGkucGx1Z2lucy5vdG9waS5jb3JlLmNvbmZpZy5QbHVnaW4uX2luaXQgKG90b3BpLmNv cmUuY29uZmlnLmluaXQpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBj b250ZXh0LmR1bXBTZXF1ZW5jZTo0MzUgICAgIE1FVEhPRCBvdG9waS5wbHVnaW5zLm90b3BpLnBh Y2thZ2Vycy55dW1wYWNrYWdlci5QbHVnaW4uX2luaXQgKG90b3BpLnBhY2thZ2Vycy5kZXRlY3Rp b24pCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBT ZXF1ZW5jZTo0MzUgICAgIE1FVEhPRCBvdG9waS5wbHVnaW5zLm90b3BpLnN5c3RlbS5jb21tYW5k LlBsdWdpbi5faW5pdCAoTm9uZSkKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250 ZXh0IGNvbnRleHQuZHVtcFNlcXVlbmNlOjQzNSAgICAgTUVUSE9EIG90b3BpLnBsdWdpbnMub3Rv cGkuY29yZS50cmFuc2FjdGlvbi5QbHVnaW4uX2luaXQgKE5vbmUpCjIwMTMtMTItMjEgMTY6Mjc6 MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzUgICAgIE1FVEhP RCBvdG9waS5wbHVnaW5zLm90b3BpLmRpYWxvZy5jbGkuUGx1Z2luLl9pbml0IChOb25lKQoyMDEz LTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6 NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5uZXR3b3JrLmZpcmV3YWxsZC5QbHVn aW4uX2luaXQgKE5vbmUpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBj b250ZXh0LmR1bXBTZXF1ZW5jZTo0MzUgICAgIE1FVEhPRCBvdG9waS5wbHVnaW5zLm90b3BpLm5l dHdvcmsuaXB0YWJsZXMuUGx1Z2luLl9pbml0IChOb25lKQoyMDEzLTEyLTIxIDE2OjI3OjEyIERF QlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3Rv cGkucGx1Z2lucy5vdG9waS5uZXR3b3JrLnNzaC5QbHVnaW4uX2luaXQgKE5vbmUpCjIwMTMtMTIt MjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzUg ICAgIE1FVEhPRCBvdG9waS5wbHVnaW5zLm90b3BpLnN5c3RlbS5jbG9jay5QbHVnaW4uX2luaXQg KE5vbmUpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1 bXBTZXF1ZW5jZTo0MzUgICAgIE1FVEhPRCBvdG9waS5wbHVnaW5zLm90b3BpLnN5c3RlbS5yZWJv b3QuUGx1Z2luLl9pbml0IChOb25lKQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNv bnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5v dmlydF9lbmdpbmVfc2V0dXAud2Vic29ja2V0X3Byb3h5LmNvbmZpZy5QbHVnaW4uX2luaXQgKE5v bmUpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBT ZXF1ZW5jZTo0MzAgU1RBR0Ugc2V0dXAKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5j b250ZXh0IGNvbnRleHQuZHVtcFNlcXVlbmNlOjQzNSAgICAgTUVUSE9EIG90b3BpLnBsdWdpbnMu b3RvcGkuY29yZS5jb25maWcuUGx1Z2luLl9wb3N0X2luaXQgKE5vbmUpCjIwMTMtMTItMjEgMTY6 Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzUgICAgIE1F VEhPRCBvdG9waS5wbHVnaW5zLm90b3BpLmNvcmUubG9nLlBsdWdpbi5fc2V0dXAgKE5vbmUpCjIw MTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5j ZTo0MzUgICAgIE1FVEhPRCBvdG9waS5wbHVnaW5zLm90b3BpLmNvcmUubWlzYy5QbHVnaW4uX3Nl dHVwIChOb25lKQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4 dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5wYWNrYWdl cnMueXVtcGFja2FnZXIuUGx1Z2luLl9zZXR1cCAoTm9uZSkKMjAxMy0xMi0yMSAxNjoyNzoxMiBE RUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcFNlcXVlbmNlOjQzNSAgICAgTUVUSE9EIG90 b3BpLnBsdWdpbnMub3RvcGkubmV0d29yay5maXJld2FsbGQuUGx1Z2luLl9zZXR1cCAoTm9uZSkK MjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcFNlcXVl bmNlOjQzNSAgICAgTUVUSE9EIG90b3BpLnBsdWdpbnMub3RvcGkubmV0d29yay5ob3N0bmFtZS5Q bHVnaW4uX3NldHVwIChOb25lKQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRl eHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9w aS5uZXR3b3JrLnNzaC5QbHVnaW4uX3NldHVwIChOb25lKQoyMDEzLTEyLTIxIDE2OjI3OjEyIERF QlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3Rv cGkucGx1Z2lucy5vdG9waS5zZXJ2aWNlcy5vcGVucmMuUGx1Z2luLl9zZXR1cCAoTm9uZSkKMjAx My0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcFNlcXVlbmNl OjQzNSAgICAgTUVUSE9EIG90b3BpLnBsdWdpbnMub3RvcGkuc2VydmljZXMucmhlbC5QbHVnaW4u X3NldHVwIChOb25lKQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29u dGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5zZXJ2 aWNlcy5zeXN0ZW1kLlBsdWdpbi5fc2V0dXAgKE5vbmUpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVC VUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzUgICAgIE1FVEhPRCBvdG9w aS5wbHVnaW5zLm90b3BpLnN5c3RlbS5jbG9jay5QbHVnaW4uX3NldHVwIChOb25lKQoyMDEzLTEy LTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1 ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5zeXN0ZW0ucmVib290LlBsdWdpbi5fc2V0 dXAgKE5vbmUpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0 LmR1bXBTZXF1ZW5jZTo0MzAgU1RBR0UgaW50ZXJuYWxfcGFja2FnZXMKMjAxMy0xMi0yMSAxNjoy NzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcFNlcXVlbmNlOjQzNSAgICAgTUVU SE9EIG90b3BpLnBsdWdpbnMub3RvcGkuY29yZS50cmFuc2FjdGlvbi5QbHVnaW4uX3ByZV9wcmVw YXJlIChOb25lKQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4 dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5uZXR3b3Jr Lmhvc3RuYW1lLlBsdWdpbi5faW50ZXJuYWxfcGFja2FnZXMgKE5vbmUpCjIwMTMtMTItMjEgMTY6 Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzUgICAgIE1F VEhPRCBvdG9waS5wbHVnaW5zLm90b3BpLnBhY2thZ2Vycy55dW1wYWNrYWdlci5QbHVnaW4uX2lu dGVybmFsX3BhY2thZ2VzX2VuZCAoTm9uZSkKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9w aS5jb250ZXh0IGNvbnRleHQuZHVtcFNlcXVlbmNlOjQzNSAgICAgTUVUSE9EIG90b3BpLnBsdWdp bnMub3RvcGkuY29yZS50cmFuc2FjdGlvbi5QbHVnaW4uX3ByZV9lbmQgKE5vbmUpCjIwMTMtMTIt MjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzAg U1RBR0UgcHJvZ3JhbXMKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNv bnRleHQuZHVtcFNlcXVlbmNlOjQzNSAgICAgTUVUSE9EIG90b3BpLnBsdWdpbnMub3RvcGkuc3lz dGVtLmNvbW1hbmQuUGx1Z2luLl9wcm9ncmFtcyAob3RvcGkuc3lzdGVtLmNvbW1hbmQuZGV0ZWN0 aW9uKQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1w U2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5zZXJ2aWNlcy5zeXN0 ZW1kLlBsdWdpbi5fcHJvZ3JhbXMgKE5vbmUpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3Rv cGkuY29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzUgICAgIE1FVEhPRCBvdG9waS5wbHVn aW5zLm90b3BpLnNlcnZpY2VzLnJoZWwuUGx1Z2luLl9wcm9ncmFtcyAoTm9uZSkKMjAxMy0xMi0y MSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcFNlcXVlbmNlOjQzNSAg ICAgTUVUSE9EIG90b3BpLnBsdWdpbnMub3RvcGkuc2VydmljZXMub3BlbnJjLlBsdWdpbi5fcHJv Z3JhbXMgKE5vbmUpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250 ZXh0LmR1bXBTZXF1ZW5jZTo0MzAgU1RBR0UgbGF0ZV9zZXR1cAoyMDEzLTEyLTIxIDE2OjI3OjEy IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qg b3RvcGkucGx1Z2lucy5vdmlydF9lbmdpbmVfc2V0dXAud2Vic29ja2V0X3Byb3h5LmNvbmZpZy5Q bHVnaW4uX2xhdGVfc2V0dXAgKE5vbmUpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGku Y29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzAgU1RBR0UgY3VzdG9taXphdGlvbgoyMDEz LTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6 NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5uZXR3b3JrLmZpcmV3YWxsZC5QbHVn aW4uX2N1c3RvbWl6YXRpb24gKE5vbmUpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGku Y29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzUgICAgIE1FVEhPRCBvdG9waS5wbHVnaW5z Lm90b3BpLmNvcmUuY29uZmlnLlBsdWdpbi5fY3VzdG9taXplMSAoTm9uZSkKMjAxMy0xMi0yMSAx NjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcFNlcXVlbmNlOjQzNSAgICAg TUVUSE9EIG90b3BpLnBsdWdpbnMub3RvcGkuZGlhbG9nLmNsaS5QbHVnaW4uX2N1c3RvbWl6ZSAo b3RvcGkuZGlhbG9nLmNsaS5jdXN0b21pemF0aW9uKQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVH IG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGku cGx1Z2lucy5vdmlydF9lbmdpbmVfc2V0dXAud2Vic29ja2V0X3Byb3h5LmNvbmZpZy5QbHVnaW4u X2N1c3RvbWl6YXRpb24gKHNldHVwLmNvbmZpZy53ZWJzb2NrZXQtcHJveHkuY3VzdG9taXphdGlv bikKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcFNl cXVlbmNlOjQzNSAgICAgTUVUSE9EIG90b3BpLnBsdWdpbnMub3ZpcnRfZW5naW5lX3NldHVwLndl YnNvY2tldF9wcm94eS5jb25maWcuUGx1Z2luLl9jdXN0b21pemF0aW9uX2ZpcmV3YWxsIChOb25l KQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wU2Vx dWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5jb3JlLmNvbmZpZy5QbHVn aW4uX2N1c3RvbWl6ZTIgKE5vbmUpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29u dGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzAgU1RBR0UgdmFsaWRhdGlvbgoyMDEzLTEyLTIx IDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAg ICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5jb3JlLm1pc2MuUGx1Z2luLl92YWxpZGF0aW9u IChOb25lKQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5k dW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5uZXR3b3JrLmZp cmV3YWxsZC5QbHVnaW4uX3ZhbGlkYXRpb24gKG90b3BpLm5ldHdvcmsuZmlyZWFsbGQudmFsaWRh dGlvbikKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVt cFNlcXVlbmNlOjQzNSAgICAgTUVUSE9EIG90b3BpLnBsdWdpbnMub3RvcGkubmV0d29yay5ob3N0 bmFtZS5QbHVnaW4uX3ZhbGlkYXRpb24gKE5vbmUpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcg b3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzUgICAgIE1FVEhPRCBvdG9waS5w bHVnaW5zLm90b3BpLm5ldHdvcmsuaXB0YWJsZXMuUGx1Z2luLl92YWxpZGF0ZSAob3RvcGkubmV0 d29yay5pcHRhYmxlcy52YWxpZGF0aW9uKQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3Bp LmNvbnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lu cy5vdG9waS5uZXR3b3JrLnNzaC5QbHVnaW4uX3ZhbGlkYXRpb24gKE5vbmUpCjIwMTMtMTItMjEg MTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzAgU1RB R0UgdHJhbnNhY3Rpb24tcHJlcGFyZQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNv bnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5v dG9waS5jb3JlLnRyYW5zYWN0aW9uLlBsdWdpbi5fbWFpbl9wcmVwYXJlIChOb25lKQoyMDEzLTEy LTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1 ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdmlydF9lbmdpbmVfY29tbW9uLndlYnNvY2tldF9w cm94eS5jb3JlLlBsdWdpbi5fdHJhbnNhY3Rpb25CZWdpbiAoTm9uZSkKMjAxMy0xMi0yMSAxNjoy NzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcFNlcXVlbmNlOjQzMCBTVEFHRSBl YXJseV9taXNjCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0 LmR1bXBTZXF1ZW5jZTo0MzUgICAgIE1FVEhPRCBvdG9waS5wbHVnaW5zLm90b3BpLm5ldHdvcmsu ZmlyZXdhbGxkLlBsdWdpbi5fZWFybHlfbWlzYyAoTm9uZSkKMjAxMy0xMi0yMSAxNjoyNzoxMiBE RUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcFNlcXVlbmNlOjQzMCBTVEFHRSBwYWNrYWdl cwoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wU2Vx dWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5uZXR3b3JrLmlwdGFibGVz LlBsdWdpbi5fcGFja2FnZXMgKE5vbmUpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGku Y29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzUgICAgIE1FVEhPRCBvdG9waS5wbHVnaW5z Lm90b3BpLnBhY2thZ2Vycy55dW1wYWNrYWdlci5QbHVnaW4uX3BhY2thZ2VzIChOb25lKQoyMDEz LTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6 NDMwIFNUQUdFIG1pc2MKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNv bnRleHQuZHVtcFNlcXVlbmNlOjQzNSAgICAgTUVUSE9EIG90b3BpLnBsdWdpbnMub3RvcGkuc3lz dGVtLmNvbW1hbmQuUGx1Z2luLl9taXNjIChvdG9waS5zeXN0ZW0uY29tbWFuZC5yZWRldGVjdGlv bikKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcFNl cXVlbmNlOjQzNSAgICAgTUVUSE9EIG90b3BpLnBsdWdpbnMub3RvcGkubmV0d29yay5maXJld2Fs bGQuUGx1Z2luLl9taXNjIChOb25lKQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNv bnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5v dG9waS5uZXR3b3JrLmlwdGFibGVzLlBsdWdpbi5fc3RvcmVfaXB0YWJsZXMgKE5vbmUpCjIwMTMt MTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0 MzUgICAgIE1FVEhPRCBvdG9waS5wbHVnaW5zLm90b3BpLm5ldHdvcmsuc3NoLlBsdWdpbi5fYXBw ZW5kX2tleSAoTm9uZSkKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNv bnRleHQuZHVtcFNlcXVlbmNlOjQzNSAgICAgTUVUSE9EIG90b3BpLnBsdWdpbnMub3RvcGkuc3lz dGVtLmNsb2NrLlBsdWdpbi5fc2V0X2Nsb2NrIChOb25lKQoyMDEzLTEyLTIxIDE2OjI3OjEyIERF QlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3Rv cGkucGx1Z2lucy5vdmlydF9lbmdpbmVfc2V0dXAud2Vic29ja2V0X3Byb3h5LmNvbmZpZy5QbHVn aW4uX21pc2MgKE5vbmUpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBj b250ZXh0LmR1bXBTZXF1ZW5jZTo0MzAgU1RBR0UgY2xlYW51cAoyMDEzLTEyLTIxIDE2OjI3OjEy IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qg b3RvcGkucGx1Z2lucy5vdG9waS5jb3JlLnRyYW5zYWN0aW9uLlBsdWdpbi5fbWFpbl9lbmQgKE5v bmUpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBT ZXF1ZW5jZTo0MzAgU1RBR0UgY2xvc2V1cAoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3Bp LmNvbnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lu cy5vdG9waS5uZXR3b3JrLmZpcmV3YWxsZC5QbHVnaW4uX2Nsb3NldXAgKE5vbmUpCjIwMTMtMTIt MjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzUg ICAgIE1FVEhPRCBvdG9waS5wbHVnaW5zLm90b3BpLm5ldHdvcmsuaXB0YWJsZXMuUGx1Z2luLl9j bG9zZXVwIChOb25lKQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29u dGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5uZXR3 b3JrLnNzaC5QbHVnaW4uX2NsZWFudXAgKE5vbmUpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcg b3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzUgICAgIE1FVEhPRCBvdG9waS5w bHVnaW5zLm92aXJ0X2VuZ2luZV9zZXR1cC53ZWJzb2NrZXRfcHJveHkuY29uZmlnLlBsdWdpbi5f Y2xvc2V1cCAoTm9uZSkKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNv bnRleHQuZHVtcFNlcXVlbmNlOjQzNSAgICAgTUVUSE9EIG90b3BpLnBsdWdpbnMub3RvcGkuc3lz dGVtLnJlYm9vdC5QbHVnaW4uX2Nsb3NldXAgKE5vbmUpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVC VUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzAgU1RBR0UgcHJlLXRlcm1p bmF0ZQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1w U2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5jb3JlLm1pc2MuUGx1 Z2luLl9wcmVUZXJtaW5hdGUgKE5vbmUpCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGku Y29udGV4dCBjb250ZXh0LmR1bXBTZXF1ZW5jZTo0MzUgICAgIE1FVEhPRCBvdG9waS5wbHVnaW5z Lm90b3BpLmRpYWxvZy5jbGkuUGx1Z2luLl9wcmVfdGVybWluYXRlIChvdG9waS5kaWFsb2cuY2xp LnRlcm1pbmF0aW9uKQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29u dGV4dC5kdW1wU2VxdWVuY2U6NDMwIFNUQUdFIHRlcm1pbmF0ZQoyMDEzLTEyLTIxIDE2OjI3OjEy IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qg b3RvcGkucGx1Z2lucy5vdG9waS5kaWFsb2cuaHVtYW4uUGx1Z2luLl90ZXJtaW5hdGUgKE5vbmUp CjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBTZXF1 ZW5jZTo0MzUgICAgIE1FVEhPRCBvdG9waS5wbHVnaW5zLm90b3BpLmRpYWxvZy5tYWNoaW5lLlBs dWdpbi5fdGVybWluYXRlIChOb25lKQoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNv bnRleHQgY29udGV4dC5kdW1wU2VxdWVuY2U6NDM1ICAgICBNRVRIT0Qgb3RvcGkucGx1Z2lucy5v dG9waS5jb3JlLmxvZy5QbHVnaW4uX3Rlcm1pbmF0ZSAoTm9uZSkKMjAxMy0xMi0yMSAxNjoyNzox MiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcFNlcXVlbmNlOjQzMCBTVEFHRSByZWJv b3QKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcFNl cXVlbmNlOjQzNSAgICAgTUVUSE9EIG90b3BpLnBsdWdpbnMub3RvcGkuc3lzdGVtLnJlYm9vdC5Q bHVnaW4uX3JlYm9vdCAoTm9uZSkKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250 ZXh0IGNvbnRleHQuZHVtcFNlcXVlbmNlOjQzNyBTRVFVRU5DRSBEVU1QIC0gRU5ECjIwMTMtMTIt MjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0 NDEgRU5WSVJPTk1FTlQgRFVNUCAtIEJFR0lOCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3Rv cGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5WIEJBU0UvYWJvcnRlZD1i b29sOidGYWxzZScKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRl eHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQkFTRS9kZWJ1Zz1pbnQ6JzAnCjIwMTMtMTItMjEg MTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYg RU5WIEJBU0UvZXJyb3I9Ym9vbDonRmFsc2UnCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3Rv cGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5WIEJBU0UvZXhjZXB0aW9u SW5mbz1saXN0OidbXScKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNv bnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQkFTRS9leGVjdXRpb25EaXJlY3Rvcnk9c3Ry OicvaG9tZS9tdGF5ZXIvZGV2L292aXJ0LWVuZ2luZS9zcmMnCjIwMTMtMTItMjEgMTY6Mjc6MTIg REVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5WIEJBU0Uv bG9nPWJvb2w6J1RydWUnCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBj b250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5WIEJBU0UvcGx1Z2luR3JvdXBzPXN0cjonb3Rv cGk6b3ZpcnQtZW5naW5lLWNvbW1vbjpvdmlydC1lbmdpbmUtc2V0dXAnCjIwMTMtMTItMjEgMTY6 Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5W IEJBU0UvcGx1Z2luUGF0aD1zdHI6Jy91c3Ivc2hhcmUvb3RvcGkvcGx1Z2luczovaG9tZS9tdGF5 ZXIvZGV2L292aXJ0LWVuZ2luZS9naXRfc25tcF9jbGVhbnVwL3NoYXJlL292aXJ0LWVuZ2luZS9z ZXR1cC9iaW4vLi4vcGx1Z2lucycKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250 ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQkFTRS9zdXBwcmVzc0Vudmlyb25t ZW50S2V5cz1saXN0OidbXScKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0 IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQ09SRS9sb2dEaXI9c3RyOicvdG1wJwoy MDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJv bm1lbnQ6NDU2IEVOViBDT1JFL2xvZ0ZpbGVIYW5kbGU9ZmlsZTonPG9wZW4gZmlsZSAnL3RtcC9v dG9waS0yMDEzMTIyMTE2MjcxMi5sb2cnLCBtb2RlICdhJyBhdCAweDdmMDUwN2M4NjQyMD4nCjIw MTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9u bWVudDo0NTYgRU5WIENPUkUvbG9nRmlsZU5hbWU9c3RyOicvdG1wL290b3BpLTIwMTMxMjIxMTYy NzEyLmxvZycKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQu ZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQ09SRS9sb2dGaWxlTmFtZVByZWZpeD1zdHI6J290b3Bp JwoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52 aXJvbm1lbnQ6NDU2IEVOViBDT1JFL2xvZ0ZpbHRlcj1fTXlMb2dnZXJGaWx0ZXI6J2ZpbHRlcicK MjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmly b25tZW50OjQ1NiBFTlYgQ09SRS9sb2dGaWx0ZXJLZXlzPWxpc3Q6J1tdJwoyMDEzLTEyLTIxIDE2 OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVO ViBDT1JFL2xvZ1JlbW92ZUF0RXhpdD1ib29sOidGYWxzZScKMjAxMy0xMi0yMSAxNjoyNzoxMiBE RUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQ09SRS9y YW5kb21pemVFdmVudHM9Ym9vbDonRmFsc2UnCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3Rv cGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5WIERJQUxPRy9ib3VuZGFy eT1zdHI6Jy0tPTQ1MWI4MGRjLTk5NmYtNDMyZS05ZTRmLTJiMjllZjZkMTE0MT0tLScKMjAxMy0x Mi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50 OjQ1NiBFTlYgRElBTE9HL2RpYWxlY3Q9c3RyOidodW1hbicKMjAxMy0xMi0yMSAxNjoyNzoxMiBE RUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgSU5GTy9Q QUNLQUdFX05BTUU9c3RyOidvdG9waScKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5j b250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgSU5GTy9QQUNLQUdFX1ZFUlNJ T049c3RyOicxLjIuMF9tYXN0ZXInCjIwMTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29u dGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTggRU5WSVJPTk1FTlQgRFVNUCAtIEVORAoy MDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJv bm1lbnQ6NDQxIEVOVklST05NRU5UIERVTVAgLSBCRUdJTgoyMDEzLTEyLTIxIDE2OjI3OjEyIERF QlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVOViBJTkZPL1BB Q0tBR0VfTkFNRT1zdHI6J290b3BpJwoyMDEzLTEyLTIxIDE2OjI3OjEyIERFQlVHIG90b3BpLmNv bnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVOViBJTkZPL1BBQ0tBR0VfVkVSU0lP Tj1zdHI6JzEuMi4wX21hc3RlcicKMjAxMy0xMi0yMSAxNjoyNzoxMiBERUJVRyBvdG9waS5jb250 ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1OCBFTlZJUk9OTUVOVCBEVU1QIC0gRU5ECjIw MTMtMTItMjEgMTY6Mjc6MTIgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0Ll9leGVjdXRlTWV0 aG9kOjEyMyBTdGFnZSBib290IE1FVEhPRCBvdG9waS5wbHVnaW5zLm90b3BpLnBhY2thZ2Vycy55 dW1wYWNrYWdlci5QbHVnaW4uX2Jvb3QKTG9hZGVkIHBsdWdpbnM6IGxhbmdwYWNrcywgcmVmcmVz aC1wYWNrYWdla2l0LCByZW1vdmUtd2l0aC1sZWF2ZXMKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJV RyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ0MSBFTlZJUk9OTUVOVCBE VU1QIC0gQkVHSU4KMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRl eHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgUEFDS0FHRVIva2VlcEFsaXZlSW50ZXJ2YWw9aW50 OiczMCcKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVt cEVudmlyb25tZW50OjQ1NiBFTlYgUEFDS0FHRVIveXVtRGlzYWJsZWRQbHVnaW5zPWxpc3Q6J1td JwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52 aXJvbm1lbnQ6NDU2IEVOViBQQUNLQUdFUi95dW1FbmFibGVkUGx1Z2lucz1saXN0OidbXScKMjAx My0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25t ZW50OjQ1NiBFTlYgUEFDS0FHRVIveXVtRXhwaXJlQ2FjaGU9Ym9vbDonVHJ1ZScKMjAxMy0xMi0y MSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1 OCBFTlZJUk9OTUVOVCBEVU1QIC0gRU5ECjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGku Y29udGV4dCBjb250ZXh0Ll9leGVjdXRlTWV0aG9kOjEyMyBTdGFnZSBib290IE1FVEhPRCBvdG9w aS5wbHVnaW5zLm90b3BpLnN5c3RlbS5pbmZvLlBsdWdpbi5faW5pdAoyMDEzLTEyLTIxIDE2OjI3 OjE1IERFQlVHIG90b3BpLnBsdWdpbnMub3RvcGkuc3lzdGVtLmluZm8gaW5mby5faW5pdDo0OCBT WVNURU0gSU5GT1JNQVRJT04gLSBCRUdJTgoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3Bp LnBsdWdpbnMub3RvcGkuc3lzdGVtLmluZm8gaW5mby5faW5pdDo0OSBleGVjdXRhYmxlIC9iaW4v cHl0aG9uCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkucGx1Z2lucy5vdG9waS5zeXN0 ZW0uaW5mbyBpbmZvLl9pbml0OjUwIHB5dGhvbiAvYmluL3B5dGhvbgoyMDEzLTEyLTIxIDE2OjI3 OjE1IERFQlVHIG90b3BpLnBsdWdpbnMub3RvcGkuc3lzdGVtLmluZm8gaW5mby5faW5pdDo1MSBw bGF0Zm9ybSBsaW51eDIKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5wbHVnaW5zLm90 b3BpLnN5c3RlbS5pbmZvIGluZm8uX2luaXQ6NTIgZGlzdHJpYnV0aW9uICgnRmVkb3JhJywgJzIw JywgJ0hlaXNlbmJ1ZycpCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkucGx1Z2lucy5v dG9waS5zeXN0ZW0uaW5mbyBpbmZvLl9pbml0OjUzIGhvc3QgJ2RoY3AtMS0zLnRsdi5yZWRoYXQu Y29tJwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLnBsdWdpbnMub3RvcGkuc3lzdGVt LmluZm8gaW5mby5faW5pdDo1OSB1aWQgMTAwMCBldWlkIDEwMDAgZ2lkIDEwMDAgZWdpZCAxMDAw CjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkucGx1Z2lucy5vdG9waS5zeXN0ZW0uaW5m byBpbmZvLl9pbml0OjYxIFNZU1RFTSBJTkZPUk1BVElPTiAtIEVORAoyMDEzLTEyLTIxIDE2OjI3 OjE1IElORk8gb3RvcGkuY29udGV4dCBjb250ZXh0LnJ1blNlcXVlbmNlOjM4MCBTdGFnZTogSW5p dGlhbGl6aW5nCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0 LnJ1blNlcXVlbmNlOjM4NCBTVEFHRSBpbml0CjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3Rv cGkuY29udGV4dCBjb250ZXh0Ll9leGVjdXRlTWV0aG9kOjEyMyBTdGFnZSBpbml0IE1FVEhPRCBv dG9waS5wbHVnaW5zLm90b3BpLmNvcmUuY29uZmlnLlBsdWdpbi5faW5pdAoyMDEzLTEyLTIxIDE2 OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDQxIEVO VklST05NRU5UIERVTVAgLSBCRUdJTgoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNv bnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVOViBDT1JFL2NvbmZpZ0ZpbGVOYW1l PXN0cjonL2V0Yy9vdG9waS5jb25mJwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNv bnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU4IEVOVklST05NRU5UIERVTVAgLSBFTkQK MjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuX2V4ZWN1dGVN ZXRob2Q6MTIzIFN0YWdlIGluaXQgTUVUSE9EIG90b3BpLnBsdWdpbnMub3RvcGkucGFja2FnZXJz Lnl1bXBhY2thZ2VyLlBsdWdpbi5faW5pdAoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3Bp LmNvbnRleHQgY29udGV4dC5fZXhlY3V0ZU1ldGhvZDoxMjkgY29uZGl0aW9uIEZhbHNlCjIwMTMt MTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0Ll9leGVjdXRlTWV0aG9k OjEyMyBTdGFnZSBpbml0IE1FVEhPRCBvdG9waS5wbHVnaW5zLm90b3BpLnN5c3RlbS5jb21tYW5k LlBsdWdpbi5faW5pdAoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29u dGV4dC5kdW1wRW52aXJvbm1lbnQ6NDQxIEVOVklST05NRU5UIERVTVAgLSBCRUdJTgoyMDEzLTEy LTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6 NDU2IEVOViBTWVNURU0vY29tbWFuZFBhdGg9c3RyOicvdXNyL2xvY2FsL3NiaW46L3Vzci9sb2Nh bC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4nCjIwMTMtMTItMjEgMTY6Mjc6MTUg REVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTggRU5WSVJPTk1F TlQgRFVNUCAtIEVORAoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29u dGV4dC5fZXhlY3V0ZU1ldGhvZDoxMjMgU3RhZ2UgaW5pdCBNRVRIT0Qgb3RvcGkucGx1Z2lucy5v dG9waS5jb3JlLnRyYW5zYWN0aW9uLlBsdWdpbi5faW5pdAoyMDEzLTEyLTIxIDE2OjI3OjE1IERF QlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDQxIEVOVklST05NRU5U IERVTVAgLSBCRUdJTgoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29u dGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVOViBDT1JFL2ludGVybmFsUGFja2FnZVRyYW5zYWN0 aW9uPVRyYW5zYWN0aW9uOid0cmFuc2FjdGlvbicKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBv dG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQ09SRS9tYWluVHJh bnNhY3Rpb249VHJhbnNhY3Rpb246J3RyYW5zYWN0aW9uJwoyMDEzLTEyLTIxIDE2OjI3OjE1IERF QlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVOViBDT1JFL21v ZGlmaWVkRmlsZXM9bGlzdDonW10nCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29u dGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTggRU5WSVJPTk1FTlQgRFVNUCAtIEVORAoy MDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5fZXhlY3V0ZU1l dGhvZDoxMjMgU3RhZ2UgaW5pdCBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5kaWFsb2cuY2xp LlBsdWdpbi5faW5pdAoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29u dGV4dC5kdW1wRW52aXJvbm1lbnQ6NDQxIEVOVklST05NRU5UIERVTVAgLSBCRUdJTgoyMDEzLTEy LTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6 NDU2IEVOViBESUFMT0cvY2xpVmVyc2lvbj1pbnQ6JzEnCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVC VUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5WIERJQUxPRy9j dXN0b21pemF0aW9uPWJvb2w6J0ZhbHNlJwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3Bp LmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU4IEVOVklST05NRU5UIERVTVAgLSBF TkQKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuX2V4ZWN1 dGVNZXRob2Q6MTIzIFN0YWdlIGluaXQgTUVUSE9EIG90b3BpLnBsdWdpbnMub3RvcGkubmV0d29y ay5maXJld2FsbGQuUGx1Z2luLl9pbml0CjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGku Y29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NDEgRU5WSVJPTk1FTlQgRFVNUCAtIEJF R0lOCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBF bnZpcm9ubWVudDo0NTYgRU5WIE5FVFdPUksvZmlyZXdhbGxkQXZhaWxhYmxlPWJvb2w6J0ZhbHNl JwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52 aXJvbm1lbnQ6NDU2IEVOViBORVRXT1JLL2ZpcmV3YWxsZERpc2FibGVTZXJ2aWNlcz1saXN0Oidb XScKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVu dmlyb25tZW50OjQ1NiBFTlYgTkVUV09SSy9maXJld2FsbGRFbmFibGU9Ym9vbDonRmFsc2UnCjIw MTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9u bWVudDo0NTggRU5WSVJPTk1FTlQgRFVNUCAtIEVORAoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVH IG90b3BpLmNvbnRleHQgY29udGV4dC5fZXhlY3V0ZU1ldGhvZDoxMjMgU3RhZ2UgaW5pdCBNRVRI T0Qgb3RvcGkucGx1Z2lucy5vdG9waS5uZXR3b3JrLmlwdGFibGVzLlBsdWdpbi5faW5pdAoyMDEz LTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1l bnQ6NDQxIEVOVklST05NRU5UIERVTVAgLSBCRUdJTgoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVH IG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVOViBORVRXT1JLL2lw dGFibGVzRW5hYmxlPWJvb2w6J0ZhbHNlJwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3Bp LmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU4IEVOVklST05NRU5UIERVTVAgLSBF TkQKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuX2V4ZWN1 dGVNZXRob2Q6MTIzIFN0YWdlIGluaXQgTUVUSE9EIG90b3BpLnBsdWdpbnMub3RvcGkubmV0d29y ay5zc2guUGx1Z2luLl9pbml0CjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4 dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NDEgRU5WSVJPTk1FTlQgRFVNUCAtIEJFR0lOCjIw MTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9u bWVudDo0NTYgRU5WIE5FVFdPUksvc3NoRW5hYmxlPWJvb2w6J0ZhbHNlJwoyMDEzLTEyLTIxIDE2 OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVO ViBORVRXT1JLL3NzaFVzZXI9c3RyOicnCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGku Y29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTggRU5WSVJPTk1FTlQgRFVNUCAtIEVO RAoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5fZXhlY3V0 ZU1ldGhvZDoxMjMgU3RhZ2UgaW5pdCBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5zeXN0ZW0u Y2xvY2suUGx1Z2luLl9pbml0CjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4 dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NDEgRU5WSVJPTk1FTlQgRFVNUCAtIEJFR0lOCjIw MTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9u bWVudDo0NTYgRU5WIFNZU1RFTS9jbG9ja01heEdhcD1pbnQ6JzUnCjIwMTMtMTItMjEgMTY6Mjc6 MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5WIFNZ U1RFTS9jbG9ja1NldD1ib29sOidGYWxzZScKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9w aS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1OCBFTlZJUk9OTUVOVCBEVU1QIC0g RU5ECjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0Ll9leGVj dXRlTWV0aG9kOjEyMyBTdGFnZSBpbml0IE1FVEhPRCBvdG9waS5wbHVnaW5zLm90b3BpLnN5c3Rl bS5yZWJvb3QuUGx1Z2luLl9pbml0CjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29u dGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NDEgRU5WSVJPTk1FTlQgRFVNUCAtIEJFR0lO CjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZp cm9ubWVudDo0NTYgRU5WIFNZU1RFTS9yZWJvb3Q9Ym9vbDonRmFsc2UnCjIwMTMtMTItMjEgMTY6 Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5W IFNZU1RFTS9yZWJvb3RBbGxvdz1ib29sOidUcnVlJwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVH IG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVOViBTWVNURU0vcmVi b290RGVmZXJUaW1lPWludDonMTAnCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29u dGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTggRU5WSVJPTk1FTlQgRFVNUCAtIEVORAoy MDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5fZXhlY3V0ZU1l dGhvZDoxMjMgU3RhZ2UgaW5pdCBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdmlydF9lbmdpbmVfc2V0 dXAud2Vic29ja2V0X3Byb3h5LmNvbmZpZy5QbHVnaW4uX2luaXQKMjAxMy0xMi0yMSAxNjoyNzox NSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ0MSBFTlZJUk9O TUVOVCBEVU1QIC0gQkVHSU4KMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0 IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgT1ZFU0VUVVBfQ09ORklHL3dlYnNvY2tl dFByb3h5UG9ydD1pbnQ6JzYxMDAnCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29u dGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTggRU5WSVJPTk1FTlQgRFVNUCAtIEVORAoy MDEzLTEyLTIxIDE2OjI3OjE1IElORk8gb3RvcGkuY29udGV4dCBjb250ZXh0LnJ1blNlcXVlbmNl OjM4MCBTdGFnZTogRW52aXJvbm1lbnQgc2V0dXAKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBv dG9waS5jb250ZXh0IGNvbnRleHQucnVuU2VxdWVuY2U6Mzg0IFNUQUdFIHNldHVwCjIwMTMtMTIt MjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0Ll9leGVjdXRlTWV0aG9kOjEy MyBTdGFnZSBzZXR1cCBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5jb3JlLmNvbmZpZy5QbHVn aW4uX3Bvc3RfaW5pdAoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLnBsdWdpbnMub3Rv cGkuZGlhbG9nLmh1bWFuIGRpYWxvZy5fX2xvZ1N0cmluZzoyMTUgRElBTE9HOlNFTkQgICAgICAg ICAgICAgICAgIENvbmZpZ3VyYXRpb24gZmlsZXM6IFtdCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVC VUcgb3RvcGkuY29udGV4dCBjb250ZXh0Ll9leGVjdXRlTWV0aG9kOjEyMyBTdGFnZSBzZXR1cCBN RVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5jb3JlLmxvZy5QbHVnaW4uX3NldHVwCjIwMTMtMTIt MjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkucGx1Z2lucy5vdG9waS5kaWFsb2cuaHVtYW4gZGlhbG9n Ll9fbG9nU3RyaW5nOjIxNSBESUFMT0c6U0VORCAgICAgICAgICAgICAgICAgTG9nIGZpbGU6IC90 bXAvb3RvcGktMjAxMzEyMjExNjI3MTIubG9nCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3Rv cGkuY29udGV4dCBjb250ZXh0Ll9leGVjdXRlTWV0aG9kOjEyMyBTdGFnZSBzZXR1cCBNRVRIT0Qg b3RvcGkucGx1Z2lucy5vdG9waS5jb3JlLm1pc2MuUGx1Z2luLl9zZXR1cAoyMDEzLTEyLTIxIDE2 OjI3OjE1IERFQlVHIG90b3BpLnBsdWdpbnMub3RvcGkuZGlhbG9nLmh1bWFuIGRpYWxvZy5fX2xv Z1N0cmluZzoyMTUgRElBTE9HOlNFTkQgICAgICAgICAgICAgICAgIFZlcnNpb246IG90b3BpLTEu Mi4wX21hc3RlciAob3RvcGktMS4yLjAtMC4wLm1hc3Rlci4yMDEzMTAwNy5naXQ2ZjhhYzZkLmZj MTkpCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0Ll9leGVj dXRlTWV0aG9kOjEyMyBTdGFnZSBzZXR1cCBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5wYWNr YWdlcnMueXVtcGFja2FnZXIuUGx1Z2luLl9zZXR1cAoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVH IG90b3BpLmNvbnRleHQgY29udGV4dC5fZXhlY3V0ZU1ldGhvZDoxMjkgY29uZGl0aW9uIEZhbHNl CjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0Ll9leGVjdXRl TWV0aG9kOjEyMyBTdGFnZSBzZXR1cCBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5uZXR3b3Jr LmZpcmV3YWxsZC5QbHVnaW4uX3NldHVwCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGku Y29udGV4dCBjb250ZXh0Ll9leGVjdXRlTWV0aG9kOjEyOSBjb25kaXRpb24gRmFsc2UKMjAxMy0x Mi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuX2V4ZWN1dGVNZXRob2Q6 MTIzIFN0YWdlIHNldHVwIE1FVEhPRCBvdG9waS5wbHVnaW5zLm90b3BpLm5ldHdvcmsuaG9zdG5h bWUuUGx1Z2luLl9zZXR1cAoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQg Y29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDQxIEVOVklST05NRU5UIERVTVAgLSBCRUdJTgoyMDEz LTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1l bnQ6NDU4IEVOVklST05NRU5UIERVTVAgLSBFTkQKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBv dG9waS5jb250ZXh0IGNvbnRleHQuX2V4ZWN1dGVNZXRob2Q6MTIzIFN0YWdlIHNldHVwIE1FVEhP RCBvdG9waS5wbHVnaW5zLm90b3BpLm5ldHdvcmsuc3NoLlBsdWdpbi5fc2V0dXAKMjAxMy0xMi0y MSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ0 MSBFTlZJUk9OTUVOVCBEVU1QIC0gQkVHSU4KMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9w aS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1OCBFTlZJUk9OTUVOVCBEVU1QIC0g RU5ECjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0Ll9leGVj dXRlTWV0aG9kOjEyMyBTdGFnZSBzZXR1cCBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5zZXJ2 aWNlcy5vcGVucmMuUGx1Z2luLl9zZXR1cAoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3Bp LmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDQxIEVOVklST05NRU5UIERVTVAgLSBC RUdJTgoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1w RW52aXJvbm1lbnQ6NDU4IEVOVklST05NRU5UIERVTVAgLSBFTkQKMjAxMy0xMi0yMSAxNjoyNzox NSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuX2V4ZWN1dGVNZXRob2Q6MTIzIFN0YWdlIHNl dHVwIE1FVEhPRCBvdG9waS5wbHVnaW5zLm90b3BpLnNlcnZpY2VzLnJoZWwuUGx1Z2luLl9zZXR1 cAoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52 aXJvbm1lbnQ6NDQxIEVOVklST05NRU5UIERVTVAgLSBCRUdJTgoyMDEzLTEyLTIxIDE2OjI3OjE1 IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU4IEVOVklST05N RU5UIERVTVAgLSBFTkQKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNv bnRleHQuX2V4ZWN1dGVNZXRob2Q6MTIzIFN0YWdlIHNldHVwIE1FVEhPRCBvdG9waS5wbHVnaW5z Lm90b3BpLnNlcnZpY2VzLnN5c3RlbWQuUGx1Z2luLl9zZXR1cAoyMDEzLTEyLTIxIDE2OjI3OjE1 IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5fZXhlY3V0ZU1ldGhvZDoxMjMgU3RhZ2Ugc2V0 dXAgTUVUSE9EIG90b3BpLnBsdWdpbnMub3RvcGkuc3lzdGVtLmNsb2NrLlBsdWdpbi5fc2V0dXAK MjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmly b25tZW50OjQ0MSBFTlZJUk9OTUVOVCBEVU1QIC0gQkVHSU4KMjAxMy0xMi0yMSAxNjoyNzoxNSBE RUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1OCBFTlZJUk9OTUVO VCBEVU1QIC0gRU5ECjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250 ZXh0Ll9leGVjdXRlTWV0aG9kOjEyMyBTdGFnZSBzZXR1cCBNRVRIT0Qgb3RvcGkucGx1Z2lucy5v dG9waS5zeXN0ZW0ucmVib290LlBsdWdpbi5fc2V0dXAKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJV RyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ0MSBFTlZJUk9OTUVOVCBE VU1QIC0gQkVHSU4KMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRl eHQuZHVtcEVudmlyb25tZW50OjQ1OCBFTlZJUk9OTUVOVCBEVU1QIC0gRU5ECjIwMTMtMTItMjEg MTY6Mjc6MTUgSU5GTyBvdG9waS5jb250ZXh0IGNvbnRleHQucnVuU2VxdWVuY2U6MzgwIFN0YWdl OiBFbnZpcm9ubWVudCBwYWNrYWdlcyBzZXR1cAoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90 b3BpLmNvbnRleHQgY29udGV4dC5ydW5TZXF1ZW5jZTozODQgU1RBR0UgaW50ZXJuYWxfcGFja2Fn ZXMKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuX2V4ZWN1 dGVNZXRob2Q6MTIzIFN0YWdlIGludGVybmFsX3BhY2thZ2VzIE1FVEhPRCBvdG9waS5wbHVnaW5z Lm90b3BpLmNvcmUudHJhbnNhY3Rpb24uUGx1Z2luLl9wcmVfcHJlcGFyZQoyMDEzLTEyLTIxIDE2 OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5fZXhlY3V0ZU1ldGhvZDoxMjMgU3Rh Z2UgaW50ZXJuYWxfcGFja2FnZXMgTUVUSE9EIG90b3BpLnBsdWdpbnMub3RvcGkubmV0d29yay5o b3N0bmFtZS5QbHVnaW4uX2ludGVybmFsX3BhY2thZ2VzCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVC VUcgb3RvcGkuY29udGV4dCBjb250ZXh0Ll9leGVjdXRlTWV0aG9kOjEzNyBtZXRob2QgZXhjZXB0 aW9uClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvdXNyL2xpYi9w eXRob24yLjcvc2l0ZS1wYWNrYWdlcy9vdG9waS9jb250ZXh0LnB5IiwgbGluZSAxMjcsIGluIF9l eGVjdXRlTWV0aG9kCiAgICBtZXRob2RbJ21ldGhvZCddKCkKICBGaWxlICIvdXNyL3NoYXJlL290 b3BpL3BsdWdpbnMvb3RvcGkvbmV0d29yay9ob3N0bmFtZS5weSIsIGxpbmUgNjYsIGluIF9pbnRl cm5hbF9wYWNrYWdlcwogICAgc2VsZi5wYWNrYWdlci5pbnN0YWxsKHBhY2thZ2VzPSgnaXByb3V0 ZScsKSkKICBGaWxlICIvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9vdG9waS9wYWNr YWdlci5weSIsIGxpbmUgMTEwLCBpbiBpbnN0YWxsCiAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy cm9yKF8oJ1BhY2thZ2VyIGluc3RhbGwgbm90IGltcGxlbWVudGVkJykpCk5vdEltcGxlbWVudGVk RXJyb3I6IFBhY2thZ2VyIGluc3RhbGwgbm90IGltcGxlbWVudGVkCjIwMTMtMTItMjEgMTY6Mjc6 MTUgRVJST1Igb3RvcGkuY29udGV4dCBjb250ZXh0Ll9leGVjdXRlTWV0aG9kOjE0NiBGYWlsZWQg dG8gZXhlY3V0ZSBzdGFnZSAnRW52aXJvbm1lbnQgcGFja2FnZXMgc2V0dXAnOiBQYWNrYWdlciBp bnN0YWxsIG5vdCBpbXBsZW1lbnRlZAoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNv bnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDQxIEVOVklST05NRU5UIERVTVAgLSBCRUdJ TgoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52 aXJvbm1lbnQ6NDU2IEVOViBCQVNFL2Vycm9yPWJvb2w6J1RydWUnCjIwMTMtMTItMjEgMTY6Mjc6 MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTggRU5WSVJP Tk1FTlQgRFVNUCAtIEVORAoyMDEzLTEyLTIxIDE2OjI3OjE1IElORk8gb3RvcGkuY29udGV4dCBj b250ZXh0LnJ1blNlcXVlbmNlOjM4MCBTdGFnZTogUHJlLXRlcm1pbmF0aW9uCjIwMTMtMTItMjEg MTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LnJ1blNlcXVlbmNlOjM4NCBTVEFH RSBwcmUtdGVybWluYXRlCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBj b250ZXh0Ll9leGVjdXRlTWV0aG9kOjEyMyBTdGFnZSBwcmUtdGVybWluYXRlIE1FVEhPRCBvdG9w aS5wbHVnaW5zLm90b3BpLmNvcmUubWlzYy5QbHVnaW4uX3ByZVRlcm1pbmF0ZQoyMDEzLTEyLTIx IDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDQx IEVOVklST05NRU5UIERVTVAgLSBCRUdJTgoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3Bp LmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVOViBCQVNFL2Fib3J0ZWQ9Ym9v bDonRmFsc2UnCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0 LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5WIEJBU0UvZGVidWc9aW50OicwJwoyMDEzLTEyLTIxIDE2 OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVO ViBCQVNFL2Vycm9yPWJvb2w6J1RydWUnCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGku Y29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5WIEJBU0UvZXhjZXB0aW9uSW5m bz1saXN0OidbKDx0eXBlICdleGNlcHRpb25zLk5vdEltcGxlbWVudGVkRXJyb3InPiwgTm90SW1w bGVtZW50ZWRFcnJvcignUGFja2FnZXIgaW5zdGFsbCBub3QgaW1wbGVtZW50ZWQnLCksIDx0cmFj ZWJhY2sgb2JqZWN0IGF0IDB4MTBhMTY4MD4pXScKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBv dG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQkFTRS9leGVjdXRp b25EaXJlY3Rvcnk9c3RyOicvaG9tZS9tdGF5ZXIvZGV2L292aXJ0LWVuZ2luZS9zcmMnCjIwMTMt MTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVu dDo0NTYgRU5WIEJBU0UvbG9nPWJvb2w6J1RydWUnCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcg b3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5WIEJBU0UvcGx1Z2lu R3JvdXBzPXN0cjonb3RvcGk6b3ZpcnQtZW5naW5lLWNvbW1vbjpvdmlydC1lbmdpbmUtc2V0dXAn CjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZp cm9ubWVudDo0NTYgRU5WIEJBU0UvcGx1Z2luUGF0aD1zdHI6Jy91c3Ivc2hhcmUvb3RvcGkvcGx1 Z2luczovaG9tZS9tdGF5ZXIvZGV2L292aXJ0LWVuZ2luZS9naXRfc25tcF9jbGVhbnVwL3NoYXJl L292aXJ0LWVuZ2luZS9zZXR1cC9iaW4vLi4vcGx1Z2lucycKMjAxMy0xMi0yMSAxNjoyNzoxNSBE RUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQkFTRS9z dXBwcmVzc0Vudmlyb25tZW50S2V5cz1saXN0OidbXScKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJV RyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQ09NTUFORC9j aGtjb25maWc9Tm9uZVR5cGU6J05vbmUnCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGku Y29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5WIENPTU1BTkQvY2hyb255Yz1O b25lVHlwZTonTm9uZScKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNv bnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQ09NTUFORC9kYXRlPU5vbmVUeXBlOidOb25l JwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52 aXJvbm1lbnQ6NDU2IEVOViBDT01NQU5EL2h3Y2xvY2s9Tm9uZVR5cGU6J05vbmUnCjIwMTMtMTIt MjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0 NTYgRU5WIENPTU1BTkQvaW5pdGN0bD1Ob25lVHlwZTonTm9uZScKMjAxMy0xMi0yMSAxNjoyNzox NSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQ09N TUFORC9pcD1Ob25lVHlwZTonTm9uZScKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5j b250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQ09NTUFORC9udHBxPU5vbmVU eXBlOidOb25lJwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4 dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVOViBDT01NQU5EL3JjPU5vbmVUeXBlOidOb25lJwoyMDEz LTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1l bnQ6NDU2IEVOViBDT01NQU5EL3JjLXVwZGF0ZT1Ob25lVHlwZTonTm9uZScKMjAxMy0xMi0yMSAx NjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBF TlYgQ09NTUFORC9yZWJvb3Q9Tm9uZVR5cGU6J05vbmUnCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVC VUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5WIENPTU1BTkQv cmVzdG9yZWNvbj1Ob25lVHlwZTonTm9uZScKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9w aS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQ09NTUFORC9zZXJ2aWNl PU5vbmVUeXBlOidOb25lJwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQg Y29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVOViBDT01NQU5EL3N5c3RlbWN0bD1Ob25lVHlw ZTonTm9uZScKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQu ZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQ09SRS9jb25maWdGaWxlQXBwZW5kPU5vbmVUeXBlOidO b25lJwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1w RW52aXJvbm1lbnQ6NDU2IEVOViBDT1JFL2NvbmZpZ0ZpbGVOYW1lPXN0cjonL2V0Yy9vdG9waS5j b25mJwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1w RW52aXJvbm1lbnQ6NDU2IEVOViBDT1JFL2ludGVybmFsUGFja2FnZVRyYW5zYWN0aW9uPVRyYW5z YWN0aW9uOid0cmFuc2FjdGlvbicKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250 ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQ09SRS9sb2dEaXI9c3RyOicvdG1w JwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52 aXJvbm1lbnQ6NDU2IEVOViBDT1JFL2xvZ0ZpbGVIYW5kbGU9ZmlsZTonPG9wZW4gZmlsZSAnL3Rt cC9vdG9waS0yMDEzMTIyMTE2MjcxMi5sb2cnLCBtb2RlICdhJyBhdCAweDdmMDUwN2M4NjQyMD4n CjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZp cm9ubWVudDo0NTYgRU5WIENPUkUvbG9nRmlsZU5hbWU9c3RyOicvdG1wL290b3BpLTIwMTMxMjIx MTYyNzEyLmxvZycKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRl eHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQ09SRS9sb2dGaWxlTmFtZVByZWZpeD1zdHI6J290 b3BpJwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1w RW52aXJvbm1lbnQ6NDU2IEVOViBDT1JFL2xvZ0ZpbHRlcj1fTXlMb2dnZXJGaWx0ZXI6J2ZpbHRl cicKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVu dmlyb25tZW50OjQ1NiBFTlYgQ09SRS9sb2dGaWx0ZXJLZXlzPWxpc3Q6J1tdJwoyMDEzLTEyLTIx IDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2 IEVOViBDT1JFL2xvZ1JlbW92ZUF0RXhpdD1ib29sOidGYWxzZScKMjAxMy0xMi0yMSAxNjoyNzox NSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgQ09S RS9tYWluVHJhbnNhY3Rpb249VHJhbnNhY3Rpb246J3RyYW5zYWN0aW9uJwoyMDEzLTEyLTIxIDE2 OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVO ViBDT1JFL21vZGlmaWVkRmlsZXM9bGlzdDonW10nCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcg b3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5WIENPUkUvcmFuZG9t aXplRXZlbnRzPWJvb2w6J0ZhbHNlJwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNv bnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVOViBESUFMT0cvYm91bmRhcnk9c3Ry OictLT00NTFiODBkYy05OTZmLTQzMmUtOWU0Zi0yYjI5ZWY2ZDExNDE9LS0nCjIwMTMtMTItMjEg MTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYg RU5WIERJQUxPRy9jbGlWZXJzaW9uPWludDonMScKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBv dG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgRElBTE9HL2N1c3Rv bWl6YXRpb249Ym9vbDonRmFsc2UnCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29u dGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5WIERJQUxPRy9kaWFsZWN0PXN0cjon aHVtYW4nCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1 bXBFbnZpcm9ubWVudDo0NTYgRU5WIElORk8vUEFDS0FHRV9OQU1FPXN0cjonb3RvcGknCjIwMTMt MTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVu dDo0NTYgRU5WIElORk8vUEFDS0FHRV9WRVJTSU9OPXN0cjonMS4yLjBfbWFzdGVyJwoyMDEzLTEy LTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6 NDU2IEVOViBORVRXT1JLL2ZpcmV3YWxsZEF2YWlsYWJsZT1ib29sOidGYWxzZScKMjAxMy0xMi0y MSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1 NiBFTlYgTkVUV09SSy9maXJld2FsbGREaXNhYmxlU2VydmljZXM9bGlzdDonW10nCjIwMTMtMTIt MjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0 NTYgRU5WIE5FVFdPUksvZmlyZXdhbGxkRW5hYmxlPWJvb2w6J0ZhbHNlJwoyMDEzLTEyLTIxIDE2 OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVO ViBORVRXT1JLL2lwdGFibGVzRW5hYmxlPWJvb2w6J0ZhbHNlJwoyMDEzLTEyLTIxIDE2OjI3OjE1 IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVOViBORVRX T1JLL2lwdGFibGVzUnVsZXM9Tm9uZVR5cGU6J05vbmUnCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVC VUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5WIE5FVFdPUksv c3NoRW5hYmxlPWJvb2w6J0ZhbHNlJwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNv bnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVOViBORVRXT1JLL3NzaEtleT1Ob25l VHlwZTonTm9uZScKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRl eHQuZHVtcEVudmlyb25tZW50OjQ1NiBFTlYgTkVUV09SSy9zc2hVc2VyPXN0cjonJwoyMDEzLTEy LTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6 NDU2IEVOViBPVkVTRVRVUF9DT05GSUcvd2Vic29ja2V0UHJveHlDb25maWc9Tm9uZVR5cGU6J05v bmUnCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBF bnZpcm9ubWVudDo0NTYgRU5WIE9WRVNFVFVQX0NPTkZJRy93ZWJzb2NrZXRQcm94eVBvcnQ9aW50 Oic2MTAwJwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5k dW1wRW52aXJvbm1lbnQ6NDU2IEVOViBQQUNLQUdFUi9rZWVwQWxpdmVJbnRlcnZhbD1pbnQ6JzMw JwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52 aXJvbm1lbnQ6NDU2IEVOViBQQUNLQUdFUi95dW1EaXNhYmxlZFBsdWdpbnM9bGlzdDonW10nCjIw MTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9u bWVudDo0NTYgRU5WIFBBQ0tBR0VSL3l1bUVuYWJsZWRQbHVnaW5zPWxpc3Q6J1tdJwoyMDEzLTEy LTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6 NDU2IEVOViBQQUNLQUdFUi95dW1FeHBpcmVDYWNoZT1ib29sOidUcnVlJwoyMDEzLTEyLTIxIDE2 OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVO ViBTWVNURU0vY2xvY2tNYXhHYXA9aW50Oic1JwoyMDEzLTEyLTIxIDE2OjI3OjE1IERFQlVHIG90 b3BpLmNvbnRleHQgY29udGV4dC5kdW1wRW52aXJvbm1lbnQ6NDU2IEVOViBTWVNURU0vY2xvY2tT ZXQ9Ym9vbDonRmFsc2UnCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBj b250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5WIFNZU1RFTS9jb21tYW5kUGF0aD1zdHI6Jy91 c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2Jp bicKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVu dmlyb25tZW50OjQ1NiBFTlYgU1lTVEVNL3JlYm9vdD1ib29sOidGYWxzZScKMjAxMy0xMi0yMSAx NjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1NiBF TlYgU1lTVEVNL3JlYm9vdEFsbG93PWJvb2w6J1RydWUnCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVC VUcgb3RvcGkuY29udGV4dCBjb250ZXh0LmR1bXBFbnZpcm9ubWVudDo0NTYgRU5WIFNZU1RFTS9y ZWJvb3REZWZlclRpbWU9aW50OicxMCcKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5j b250ZXh0IGNvbnRleHQuZHVtcEVudmlyb25tZW50OjQ1OCBFTlZJUk9OTUVOVCBEVU1QIC0gRU5E CjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4dCBjb250ZXh0Ll9leGVjdXRl TWV0aG9kOjEyMyBTdGFnZSBwcmUtdGVybWluYXRlIE1FVEhPRCBvdG9waS5wbHVnaW5zLm90b3Bp LmRpYWxvZy5jbGkuUGx1Z2luLl9wcmVfdGVybWluYXRlCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVC VUcgb3RvcGkuY29udGV4dCBjb250ZXh0Ll9leGVjdXRlTWV0aG9kOjEyOSBjb25kaXRpb24gRmFs c2UKMjAxMy0xMi0yMSAxNjoyNzoxNSBJTkZPIG90b3BpLmNvbnRleHQgY29udGV4dC5ydW5TZXF1 ZW5jZTozODAgU3RhZ2U6IFRlcm1pbmF0aW9uCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3Rv cGkuY29udGV4dCBjb250ZXh0LnJ1blNlcXVlbmNlOjM4NCBTVEFHRSB0ZXJtaW5hdGUKMjAxMy0x Mi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250ZXh0IGNvbnRleHQuX2V4ZWN1dGVNZXRob2Q6 MTIzIFN0YWdlIHRlcm1pbmF0ZSBNRVRIT0Qgb3RvcGkucGx1Z2lucy5vdG9waS5kaWFsb2cuaHVt YW4uUGx1Z2luLl90ZXJtaW5hdGUKMjAxMy0xMi0yMSAxNjoyNzoxNSBERUJVRyBvdG9waS5jb250 ZXh0IGNvbnRleHQuX2V4ZWN1dGVNZXRob2Q6MTIzIFN0YWdlIHRlcm1pbmF0ZSBNRVRIT0Qgb3Rv cGkucGx1Z2lucy5vdG9waS5kaWFsb2cubWFjaGluZS5QbHVnaW4uX3Rlcm1pbmF0ZQoyMDEzLTEy LTIxIDE2OjI3OjE1IERFQlVHIG90b3BpLmNvbnRleHQgY29udGV4dC5fZXhlY3V0ZU1ldGhvZDox MjkgY29uZGl0aW9uIEZhbHNlCjIwMTMtMTItMjEgMTY6Mjc6MTUgREVCVUcgb3RvcGkuY29udGV4 dCBjb250ZXh0Ll9leGVjdXRlTWV0aG9kOjEyMyBTdGFnZSB0ZXJtaW5hdGUgTUVUSE9EIG90b3Bp LnBsdWdpbnMub3RvcGkuY29yZS5sb2cuUGx1Z2luLl90ZXJtaW5hdGUK ------=3D_Part_10003452_452066899.1387638944733-- --===============8299552377569800721== Content-Type: multipart/mixed MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS0tLS0tPV9QYXJ0XzEwMDAzNDUyXzQ1MjA2Njg5OS4xMzg3NjM4OTQ0NzMzCkNvbnRlbnQtVHlw ZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3 Yml0CgpGb3IgcGF0Y2hbMV0sIHJ1bm5pbmc6CgpzZXR1cC9vdmlydC1pbnN0YWxsCgpQcm9kdWNl czoKClsgSU5GTyAgXSBTdGFnZTogSW5pdGlhbGl6aW5nClsgSU5GTyAgXSBTdGFnZTogRW52aXJv bm1lbnQgc2V0dXAKICAgICAgICAgIENvbmZpZ3VyYXRpb24gZmlsZXM6IFtdCiAgICAgICAgICBM b2cgZmlsZTogL3RtcC9vdG9waS0yMDEzMTIyMTEwMzgxMy5sb2cKICAgICAgICAgIFZlcnNpb246 IG90b3BpLTEuMi4wX21hc3RlciAob3RvcGktMS4yLjAtMC4wLm1hc3Rlci4yMDEzMTAwNy5naXQ2 ZjhhYzZkLmZjMTkpClsgSU5GTyAgXSBTdGFnZTogRW52aXJvbm1lbnQgcGFja2FnZXMgc2V0dXAK WyBFUlJPUiBdIEZhaWxlZCB0byBleGVjdXRlIHN0YWdlICdFbnZpcm9ubWVudCBwYWNrYWdlcyBz ZXR1cCc6IFBhY2thZ2VyIGluc3RhbGwgbm90IGltcGxlbWVudGVkClsgSU5GTyAgXSBTdGFnZTog UHJlLXRlcm1pbmF0aW9uClsgSU5GTyAgXSBTdGFnZTogVGVybWluYXRpb24KClRoZSBvbmx5IHJl bGV2YW50IGluZm9ybWF0aW9uIEkgY291bGQgZmluZCB3YXMgaGVyZToKaHR0cDovL2dlcnJpdC5v dmlydC5vcmcvIy9jLzE3NjM3LzEvcGFja2FnaW5nL3NldHVwL2Jpbi9vdmlydC1lbmdpbmUtcmVt b3ZlCgpJJ3ZlIGF0dGFjaGVkIHRoZSBvdG9waSBsb2cKClsxXSBodHRwOi8vZ2Vycml0Lm92aXJ0 Lm9yZy8jL2MvMjIxMzUvCi0tLS0tLT1fUGFydF8xMDAwMzQ1Ml80NTIwNjY4OTkuMTM4NzYzODk0 NDczMwpDb250ZW50LVR5cGU6IHRleHQveC1sb2c7IG5hbWU9b3RvcGktMjAxMzEyMjExNjI3MTIu bG9nCkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPW90b3BpLTIwMTMx MjIxMTYyNzEyLmxvZwpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKCk1qQXhNeTB4 TWkweU1TQXhOam95TnpveE1pQkVSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDBJR052Ym5SbGVIUXVa SFZ0Y0VWdWRtbHkKYjI1dFpXNTBPalEwTVNCRlRsWkpVazlPVFVWT1ZDQkVWVTFRSUMwZ1FrVkhT VTRLTWpBeE15MHhNaTB5TVNBeE5qb3lOem94TWlCRQpSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDBJ R052Ym5SbGVIUXVaSFZ0Y0VWdWRtbHliMjV0Wlc1ME9qUTFOaUJGVGxZZ1FrRlRSUzlzCmIyYzlZ bTl2YkRvblZISjFaU2NLTWpBeE15MHhNaTB5TVNBeE5qb3lOem94TWlCRVJVSlZSeUJ2ZEc5d2FT NWpiMjUwWlhoMElHTnYKYm5SbGVIUXVaSFZ0Y0VWdWRtbHliMjV0Wlc1ME9qUTFOaUJGVGxZZ1Ew OVNSUzlzYjJkRWFYSTljM1J5T2ljdmRHMXdKd295TURFegpMVEV5TFRJeElERTJPakkzT2pFeUlF UkZRbFZISUc5MGIzQnBMbU52Ym5SbGVIUWdZMjl1ZEdWNGRDNWtkVzF3Ulc1MmFYSnZibTFsCmJu UTZORFUySUVWT1ZpQkRUMUpGTDJ4dlowWnBiR1ZJWVc1a2JHVTlabWxzWlRvblBHOXdaVzRnWm1s c1pTQW5MM1J0Y0M5dmRHOXcKYVMweU1ERXpNVEl5TVRFMk1qY3hNaTVzYjJjbkxDQnRiMlJsSUNk aEp5QmhkQ0F3ZURkbU1EVXdOMk00TmpReU1ENG5Dakl3TVRNdApNVEl0TWpFZ01UWTZNamM2TVRJ Z1JFVkNWVWNnYjNSdmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMExtUjFiWEJGYm5acGNtOXViV1Z1 CmREbzBOVFlnUlU1V0lFTlBVa1V2Ykc5blJtbHNaVTVoYldVOWMzUnlPaWN2ZEcxd0wyOTBiM0Jw TFRJd01UTXhNakl4TVRZeU56RXkKTG14dlp5Y0tNakF4TXkweE1pMHlNU0F4TmpveU56b3hNaUJF UlVKVlJ5QnZkRzl3YVM1amIyNTBaWGgwSUdOdmJuUmxlSFF1WkhWdApjRVZ1ZG1seWIyNXRaVzUw T2pRMU5pQkZUbFlnUTA5U1JTOXNiMmRHYVd4bFRtRnRaVkJ5WldacGVEMXpkSEk2SjI5MGIzQnBK d295Ck1ERXpMVEV5TFRJeElERTJPakkzT2pFeUlFUkZRbFZISUc5MGIzQnBMbU52Ym5SbGVIUWdZ Mjl1ZEdWNGRDNWtkVzF3Ulc1MmFYSnYKYm0xbGJuUTZORFUySUVWT1ZpQkRUMUpGTDJ4dlowWnBi SFJsY2oxZlRYbE1iMmRuWlhKR2FXeDBaWEk2SjJacGJIUmxjaWNLTWpBeApNeTB4TWkweU1TQXhO am95TnpveE1pQkVSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDBJR052Ym5SbGVIUXVaSFZ0Y0VWdWRt bHliMjV0ClpXNTBPalExTmlCRlRsWWdRMDlTUlM5c2IyZEdhV3gwWlhKTFpYbHpQV3hwYzNRNkox dGRKd295TURFekxURXlMVEl4SURFMk9qSTMKT2pFeUlFUkZRbFZISUc5MGIzQnBMbU52Ym5SbGVI UWdZMjl1ZEdWNGRDNWtkVzF3Ulc1MmFYSnZibTFsYm5RNk5EVTJJRVZPVmlCRApUMUpGTDJ4dlox SmxiVzkyWlVGMFJYaHBkRDFpYjI5c09pZEdZV3h6WlNjS01qQXhNeTB4TWkweU1TQXhOam95Tnpv eE1pQkVSVUpWClJ5QnZkRzl3YVM1amIyNTBaWGgwSUdOdmJuUmxlSFF1WkhWdGNFVnVkbWx5YjI1 dFpXNTBPalExT0NCRlRsWkpVazlPVFVWT1ZDQkUKVlUxUUlDMGdSVTVFQ2pJd01UTXRNVEl0TWpF Z01UWTZNamM2TVRJZ1JFVkNWVWNnYjNSdmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMApMbDlsZUdW amRYUmxUV1YwYUc5a09qRXlNeUJUZEdGblpTQmliMjkwSUUxRlZFaFBSQ0J2ZEc5d2FTNXdiSFZu YVc1ekxtOTBiM0JwCkxtUnBZV3h2Wnk1dGFYTmpMbEJzZFdkcGJpNWZhVzVwZEFveU1ERXpMVEV5 TFRJeElERTJPakkzT2pFeUlFUkZRbFZISUc5MGIzQnAKTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVr ZFcxd1JXNTJhWEp2Ym0xbGJuUTZORFF4SUVWT1ZrbFNUMDVOUlU1VUlFUlZUVkFnTFNCQwpSVWRK VGdveU1ERXpMVEV5TFRJeElERTJPakkzT2pFeUlFUkZRbFZISUc5MGIzQnBMbU52Ym5SbGVIUWdZ Mjl1ZEdWNGRDNWtkVzF3ClJXNTJhWEp2Ym0xbGJuUTZORFUySUVWT1ZpQkVTVUZNVDBjdlpHbGhi R1ZqZEQxemRISTZKMmgxYldGdUp3b3lNREV6TFRFeUxUSXgKSURFMk9qSTNPakV5SUVSRlFsVkhJ RzkwYjNCcExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdSVzUyYVhKdmJtMWxiblE2TkRVNApJ RVZPVmtsU1QwNU5SVTVVSUVSVlRWQWdMU0JGVGtRS01qQXhNeTB4TWkweU1TQXhOam95TnpveE1p QkVSVUpWUnlCdmRHOXdhUzVqCmIyNTBaWGgwSUdOdmJuUmxlSFF1WDJWNFpXTjFkR1ZOWlhSb2Iy UTZNVEl6SUZOMFlXZGxJR0p2YjNRZ1RVVlVTRTlFSUc5MGIzQnAKTG5Cc2RXZHBibk11YjNSdmNH a3VaR2xoYkc5bkxtaDFiV0Z1TGxCc2RXZHBiaTVmYVc1cGRBb3lNREV6TFRFeUxUSXhJREUyT2pJ MwpPakV5SUVSRlFsVkhJRzkwYjNCcExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdSVzUyYVhK dmJtMWxiblE2TkRReElFVk9Wa2xTClQwNU5SVTVVSUVSVlRWQWdMU0JDUlVkSlRnb3lNREV6TFRF eUxUSXhJREUyT2pJM09qRXlJRVJGUWxWSElHOTBiM0JwTG1OdmJuUmwKZUhRZ1kyOXVkR1Y0ZEM1 a2RXMXdSVzUyYVhKdmJtMWxiblE2TkRVMklFVk9WaUJFU1VGTVQwY3ZZbTkxYm1SaGNuazljM1J5 T2ljdApMVDAwTlRGaU9EQmtZeTA1T1RabUxUUXpNbVV0T1dVMFppMHlZakk1WldZMlpERXhOREU5 TFMwbkNqSXdNVE10TVRJdE1qRWdNVFk2Ck1qYzZNVElnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0 ZENCamIyNTBaWGgwTG1SMWJYQkZiblpwY205dWJXVnVkRG8wTlRnZ1JVNVcKU1ZKUFRrMUZUbFFn UkZWTlVDQXRJRVZPUkFveU1ERXpMVEV5TFRJeElERTJPakkzT2pFeUlFUkZRbFZISUc5MGIzQnBM bU52Ym5SbAplSFFnWTI5dWRHVjRkQzVmWlhobFkzVjBaVTFsZEdodlpEb3hNak1nVTNSaFoyVWdZ bTl2ZENCTlJWUklUMFFnYjNSdmNHa3VjR3gxCloybHVjeTV2ZEc5d2FTNWthV0ZzYjJjdWJXRmph R2x1WlM1UWJIVm5hVzR1WDJsdWFYUUtNakF4TXkweE1pMHlNU0F4TmpveU56b3gKTWlCRVJVSlZS eUJ2ZEc5d2FTNWpiMjUwWlhoMElHTnZiblJsZUhRdVgyVjRaV04xZEdWTlpYUm9iMlE2TVRJNUlH TnZibVJwZEdsdgpiaUJHWVd4elpRb3lNREV6TFRFeUxUSXhJREUyT2pJM09qRXlJRVJGUWxWSElH OTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVmClpYaGxZM1YwWlUxbGRHaHZaRG94TWpNZ1Uz UmhaMlVnWW05dmRDQk5SVlJJVDBRZ2IzUnZjR2t1Y0d4MVoybHVjeTV2ZEc5d2FTNWoKYjNKbExt MXBjMk11VUd4MVoybHVMbDlwYm1sMENqSXdNVE10TVRJdE1qRWdNVFk2TWpjNk1USWdSRVZDVlVj Z2IzUnZjR2t1WTI5dQpkR1Y0ZENCamIyNTBaWGgwTG1SMWJYQlRaWEYxWlc1alpUbzBNamdnVTBW UlZVVk9RMFVnUkZWTlVDQXRJRUpGUjBsT0NqSXdNVE10Ck1USXRNakVnTVRZNk1qYzZNVElnUkVW Q1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTG1SMWJYQlRaWEYxWlc1alpUbzAKTXpB Z1UxUkJSMFVnWW05dmRBb3lNREV6TFRFeUxUSXhJREUyT2pJM09qRXlJRVJGUWxWSElHOTBiM0Jw TG1OdmJuUmxlSFFnWTI5dQpkR1Y0ZEM1a2RXMXdVMlZ4ZFdWdVkyVTZORE0xSUNBZ0lDQk5SVlJJ VDBRZ2IzUnZjR2t1Y0d4MVoybHVjeTV2ZEc5d2FTNWpiM0psCkxteHZaeTVRYkhWbmFXNHVYMmx1 YVhRZ0tHOTBiM0JwTG1OdmNtVXViRzluTG1sdWFYUXBDakl3TVRNdE1USXRNakVnTVRZNk1qYzYK TVRJZ1JFVkNWVWNnYjNSdmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMExtUjFiWEJUWlhGMVpXNWpa VG8wTXpVZ0lDQWdJRTFGVkVoUApSQ0J2ZEc5d2FTNXdiSFZuYVc1ekxtOTBiM0JwTG1ScFlXeHZa eTV0YVhOakxsQnNkV2RwYmk1ZmFXNXBkQ0FvVG05dVpTa0tNakF4Ck15MHhNaTB5TVNBeE5qb3lO em94TWlCRVJVSlZSeUJ2ZEc5d2FTNWpiMjUwWlhoMElHTnZiblJsZUhRdVpIVnRjRk5sY1hWbGJt TmwKT2pRek5TQWdJQ0FnVFVWVVNFOUVJRzkwYjNCcExuQnNkV2RwYm5NdWIzUnZjR2t1WkdsaGJH OW5MbWgxYldGdUxsQnNkV2RwYmk1ZgphVzVwZENBb1RtOXVaU2tLTWpBeE15MHhNaTB5TVNBeE5q b3lOem94TWlCRVJVSlZSeUJ2ZEc5d2FTNWpiMjUwWlhoMElHTnZiblJsCmVIUXVaSFZ0Y0ZObGNY VmxibU5sT2pRek5TQWdJQ0FnVFVWVVNFOUVJRzkwYjNCcExuQnNkV2RwYm5NdWIzUnZjR2t1Wkds aGJHOW4KTG0xaFkyaHBibVV1VUd4MVoybHVMbDlwYm1sMElDaE9iMjVsS1FveU1ERXpMVEV5TFRJ eElERTJPakkzT2pFeUlFUkZRbFZISUc5MApiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcx d1UyVnhkV1Z1WTJVNk5ETTFJQ0FnSUNCTlJWUklUMFFnYjNSdmNHa3VjR3gxCloybHVjeTV2ZEc5 d2FTNWpiM0psTG0xcGMyTXVVR3gxWjJsdUxsOXBibWwwSUNoT2IyNWxLUW95TURFekxURXlMVEl4 SURFMk9qSTMKT2pFeUlFUkZRbFZISUc5MGIzQnBMbU52Ym5SbGVIUWdZMjl1ZEdWNGRDNWtkVzF3 VTJWeGRXVnVZMlU2TkRNMUlDQWdJQ0JOUlZSSQpUMFFnYjNSdmNHa3VjR3gxWjJsdWN5NXZkRzl3 YVM1d1lXTnJZV2RsY25NdWVYVnRjR0ZqYTJGblpYSXVVR3gxWjJsdUxsOWliMjkwCklDaE9iMjVs S1FveU1ERXpMVEV5TFRJeElERTJPakkzT2pFeUlFUkZRbFZISUc5MGIzQnBMbU52Ym5SbGVIUWdZ Mjl1ZEdWNGRDNWsKZFcxd1UyVnhkV1Z1WTJVNk5ETTFJQ0FnSUNCTlJWUklUMFFnYjNSdmNHa3Vj R3gxWjJsdWN5NXZkRzl3YVM1emVYTjBaVzB1YVc1bQpieTVRYkhWbmFXNHVYMmx1YVhRZ0tFNXZi bVVwQ2pJd01UTXRNVEl0TWpFZ01UWTZNamM2TVRJZ1JFVkNWVWNnYjNSdmNHa3VZMjl1CmRHVjRk Q0JqYjI1MFpYaDBMbVIxYlhCVFpYRjFaVzVqWlRvME16QWdVMVJCUjBVZ2FXNXBkQW95TURFekxU RXlMVEl4SURFMk9qSTMKT2pFeUlFUkZRbFZISUc5MGIzQnBMbU52Ym5SbGVIUWdZMjl1ZEdWNGRD NWtkVzF3VTJWeGRXVnVZMlU2TkRNMUlDQWdJQ0JOUlZSSQpUMFFnYjNSdmNHa3VjR3gxWjJsdWN5 NXZkRzl3YVM1amIzSmxMbU52Ym1acFp5NVFiSFZuYVc0dVgybHVhWFFnS0c5MGIzQnBMbU52CmNt VXVZMjl1Wm1sbkxtbHVhWFFwQ2pJd01UTXRNVEl0TWpFZ01UWTZNamM2TVRJZ1JFVkNWVWNnYjNS dmNHa3VZMjl1ZEdWNGRDQmoKYjI1MFpYaDBMbVIxYlhCVFpYRjFaVzVqWlRvME16VWdJQ0FnSUUx RlZFaFBSQ0J2ZEc5d2FTNXdiSFZuYVc1ekxtOTBiM0JwTG5CaApZMnRoWjJWeWN5NTVkVzF3WVdO cllXZGxjaTVRYkhWbmFXNHVYMmx1YVhRZ0tHOTBiM0JwTG5CaFkydGhaMlZ5Y3k1a1pYUmxZM1Jw CmIyNHBDakl3TVRNdE1USXRNakVnTVRZNk1qYzZNVElnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0 ZENCamIyNTBaWGgwTG1SMWJYQlQKWlhGMVpXNWpaVG8wTXpVZ0lDQWdJRTFGVkVoUFJDQnZkRzl3 YVM1d2JIVm5hVzV6TG05MGIzQnBMbk41YzNSbGJTNWpiMjF0WVc1awpMbEJzZFdkcGJpNWZhVzVw ZENBb1RtOXVaU2tLTWpBeE15MHhNaTB5TVNBeE5qb3lOem94TWlCRVJVSlZSeUJ2ZEc5d2FTNWpi MjUwClpYaDBJR052Ym5SbGVIUXVaSFZ0Y0ZObGNYVmxibU5sT2pRek5TQWdJQ0FnVFVWVVNFOUVJ RzkwYjNCcExuQnNkV2RwYm5NdWIzUnYKY0drdVkyOXlaUzUwY21GdWMyRmpkR2x2Ymk1UWJIVm5h VzR1WDJsdWFYUWdLRTV2Ym1VcENqSXdNVE10TVRJdE1qRWdNVFk2TWpjNgpNVElnUkVWQ1ZVY2di M1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTG1SMWJYQlRaWEYxWlc1alpUbzBNelVnSUNBZ0lF MUZWRWhQClJDQnZkRzl3YVM1d2JIVm5hVzV6TG05MGIzQnBMbVJwWVd4dlp5NWpiR2t1VUd4MVoy bHVMbDlwYm1sMElDaE9iMjVsS1FveU1ERXoKTFRFeUxUSXhJREUyT2pJM09qRXlJRVJGUWxWSElH OTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcxd1UyVnhkV1Z1WTJVNgpORE0xSUNBZ0lD Qk5SVlJJVDBRZ2IzUnZjR2t1Y0d4MVoybHVjeTV2ZEc5d2FTNXVaWFIzYjNKckxtWnBjbVYzWVd4 c1pDNVFiSFZuCmFXNHVYMmx1YVhRZ0tFNXZibVVwQ2pJd01UTXRNVEl0TWpFZ01UWTZNamM2TVRJ Z1JFVkNWVWNnYjNSdmNHa3VZMjl1ZEdWNGRDQmoKYjI1MFpYaDBMbVIxYlhCVFpYRjFaVzVqWlRv ME16VWdJQ0FnSUUxRlZFaFBSQ0J2ZEc5d2FTNXdiSFZuYVc1ekxtOTBiM0JwTG01bApkSGR2Y21z dWFYQjBZV0pzWlhNdVVHeDFaMmx1TGw5cGJtbDBJQ2hPYjI1bEtRb3lNREV6TFRFeUxUSXhJREUy T2pJM09qRXlJRVJGClFsVkhJRzkwYjNCcExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdVMlZ4 ZFdWdVkyVTZORE0xSUNBZ0lDQk5SVlJJVDBRZ2IzUnYKY0drdWNHeDFaMmx1Y3k1dmRHOXdhUzV1 WlhSM2IzSnJMbk56YUM1UWJIVm5hVzR1WDJsdWFYUWdLRTV2Ym1VcENqSXdNVE10TVRJdApNakVn TVRZNk1qYzZNVElnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTG1SMWJYQlRa WEYxWlc1alpUbzBNelVnCklDQWdJRTFGVkVoUFJDQnZkRzl3YVM1d2JIVm5hVzV6TG05MGIzQnBM bk41YzNSbGJTNWpiRzlqYXk1UWJIVm5hVzR1WDJsdWFYUWcKS0U1dmJtVXBDakl3TVRNdE1USXRN akVnTVRZNk1qYzZNVElnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTG1SMQpi WEJUWlhGMVpXNWpaVG8wTXpVZ0lDQWdJRTFGVkVoUFJDQnZkRzl3YVM1d2JIVm5hVzV6TG05MGIz QnBMbk41YzNSbGJTNXlaV0p2CmIzUXVVR3gxWjJsdUxsOXBibWwwSUNoT2IyNWxLUW95TURFekxU RXlMVEl4SURFMk9qSTNPakV5SUVSRlFsVkhJRzkwYjNCcExtTnYKYm5SbGVIUWdZMjl1ZEdWNGRD NWtkVzF3VTJWeGRXVnVZMlU2TkRNMUlDQWdJQ0JOUlZSSVQwUWdiM1J2Y0drdWNHeDFaMmx1Y3k1 dgpkbWx5ZEY5bGJtZHBibVZmYzJWMGRYQXVkMlZpYzI5amEyVjBYM0J5YjNoNUxtTnZibVpwWnk1 UWJIVm5hVzR1WDJsdWFYUWdLRTV2CmJtVXBDakl3TVRNdE1USXRNakVnTVRZNk1qYzZNVElnUkVW Q1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTG1SMWJYQlQKWlhGMVpXNWpaVG8wTXpB Z1UxUkJSMFVnYzJWMGRYQUtNakF4TXkweE1pMHlNU0F4TmpveU56b3hNaUJFUlVKVlJ5QnZkRzl3 YVM1agpiMjUwWlhoMElHTnZiblJsZUhRdVpIVnRjRk5sY1hWbGJtTmxPalF6TlNBZ0lDQWdUVVZV U0U5RUlHOTBiM0JwTG5Cc2RXZHBibk11CmIzUnZjR2t1WTI5eVpTNWpiMjVtYVdjdVVHeDFaMmx1 TGw5d2IzTjBYMmx1YVhRZ0tFNXZibVVwQ2pJd01UTXRNVEl0TWpFZ01UWTYKTWpjNk1USWdSRVZD VlVjZ2IzUnZjR2t1WTI5dWRHVjRkQ0JqYjI1MFpYaDBMbVIxYlhCVFpYRjFaVzVqWlRvME16VWdJ Q0FnSUUxRgpWRWhQUkNCdmRHOXdhUzV3YkhWbmFXNXpMbTkwYjNCcExtTnZjbVV1Ykc5bkxsQnNk V2RwYmk1ZmMyVjBkWEFnS0U1dmJtVXBDakl3Ck1UTXRNVEl0TWpFZ01UWTZNamM2TVRJZ1JFVkNW VWNnYjNSdmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMExtUjFiWEJUWlhGMVpXNWoKWlRvME16VWdJ Q0FnSUUxRlZFaFBSQ0J2ZEc5d2FTNXdiSFZuYVc1ekxtOTBiM0JwTG1OdmNtVXViV2x6WXk1UWJI Vm5hVzR1WDNObApkSFZ3SUNoT2IyNWxLUW95TURFekxURXlMVEl4SURFMk9qSTNPakV5SUVSRlFs VkhJRzkwYjNCcExtTnZiblJsZUhRZ1kyOXVkR1Y0CmRDNWtkVzF3VTJWeGRXVnVZMlU2TkRNMUlD QWdJQ0JOUlZSSVQwUWdiM1J2Y0drdWNHeDFaMmx1Y3k1dmRHOXdhUzV3WVdOcllXZGwKY25NdWVY VnRjR0ZqYTJGblpYSXVVR3gxWjJsdUxsOXpaWFIxY0NBb1RtOXVaU2tLTWpBeE15MHhNaTB5TVNB eE5qb3lOem94TWlCRQpSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDBJR052Ym5SbGVIUXVaSFZ0Y0ZO bGNYVmxibU5sT2pRek5TQWdJQ0FnVFVWVVNFOUVJRzkwCmIzQnBMbkJzZFdkcGJuTXViM1J2Y0dr dWJtVjBkMjl5YXk1bWFYSmxkMkZzYkdRdVVHeDFaMmx1TGw5elpYUjFjQ0FvVG05dVpTa0sKTWpB eE15MHhNaTB5TVNBeE5qb3lOem94TWlCRVJVSlZSeUJ2ZEc5d2FTNWpiMjUwWlhoMElHTnZiblJs ZUhRdVpIVnRjRk5sY1hWbApibU5sT2pRek5TQWdJQ0FnVFVWVVNFOUVJRzkwYjNCcExuQnNkV2Rw Ym5NdWIzUnZjR2t1Ym1WMGQyOXlheTVvYjNOMGJtRnRaUzVRCmJIVm5hVzR1WDNObGRIVndJQ2hP YjI1bEtRb3lNREV6TFRFeUxUSXhJREUyT2pJM09qRXlJRVJGUWxWSElHOTBiM0JwTG1OdmJuUmwK ZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdVMlZ4ZFdWdVkyVTZORE0xSUNBZ0lDQk5SVlJJVDBRZ2IzUnZj R2t1Y0d4MVoybHVjeTV2ZEc5dwphUzV1WlhSM2IzSnJMbk56YUM1UWJIVm5hVzR1WDNObGRIVndJ Q2hPYjI1bEtRb3lNREV6TFRFeUxUSXhJREUyT2pJM09qRXlJRVJGClFsVkhJRzkwYjNCcExtTnZi blJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdVMlZ4ZFdWdVkyVTZORE0xSUNBZ0lDQk5SVlJJVDBRZ2Iz UnYKY0drdWNHeDFaMmx1Y3k1dmRHOXdhUzV6WlhKMmFXTmxjeTV2Y0dWdWNtTXVVR3gxWjJsdUxs OXpaWFIxY0NBb1RtOXVaU2tLTWpBeApNeTB4TWkweU1TQXhOam95TnpveE1pQkVSVUpWUnlCdmRH OXdhUzVqYjI1MFpYaDBJR052Ym5SbGVIUXVaSFZ0Y0ZObGNYVmxibU5sCk9qUXpOU0FnSUNBZ1RV VlVTRTlFSUc5MGIzQnBMbkJzZFdkcGJuTXViM1J2Y0drdWMyVnlkbWxqWlhNdWNtaGxiQzVRYkhW bmFXNHUKWDNObGRIVndJQ2hPYjI1bEtRb3lNREV6TFRFeUxUSXhJREUyT2pJM09qRXlJRVJGUWxW SElHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dQpkR1Y0ZEM1a2RXMXdVMlZ4ZFdWdVkyVTZORE0xSUNB Z0lDQk5SVlJJVDBRZ2IzUnZjR2t1Y0d4MVoybHVjeTV2ZEc5d2FTNXpaWEoyCmFXTmxjeTV6ZVhO MFpXMWtMbEJzZFdkcGJpNWZjMlYwZFhBZ0tFNXZibVVwQ2pJd01UTXRNVEl0TWpFZ01UWTZNamM2 TVRJZ1JFVkMKVlVjZ2IzUnZjR2t1WTI5dWRHVjRkQ0JqYjI1MFpYaDBMbVIxYlhCVFpYRjFaVzVq WlRvME16VWdJQ0FnSUUxRlZFaFBSQ0J2ZEc5dwphUzV3YkhWbmFXNXpMbTkwYjNCcExuTjVjM1Js YlM1amJHOWpheTVRYkhWbmFXNHVYM05sZEhWd0lDaE9iMjVsS1FveU1ERXpMVEV5CkxUSXhJREUy T2pJM09qRXlJRVJGUWxWSElHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcxd1UyVnhk V1Z1WTJVNk5ETTEKSUNBZ0lDQk5SVlJJVDBRZ2IzUnZjR2t1Y0d4MVoybHVjeTV2ZEc5d2FTNXpl WE4wWlcwdWNtVmliMjkwTGxCc2RXZHBiaTVmYzJWMApkWEFnS0U1dmJtVXBDakl3TVRNdE1USXRN akVnTVRZNk1qYzZNVElnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwCkxtUjFi WEJUWlhGMVpXNWpaVG8wTXpBZ1UxUkJSMFVnYVc1MFpYSnVZV3hmY0dGamEyRm5aWE1LTWpBeE15 MHhNaTB5TVNBeE5qb3kKTnpveE1pQkVSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDBJR052Ym5SbGVI UXVaSFZ0Y0ZObGNYVmxibU5sT2pRek5TQWdJQ0FnVFVWVQpTRTlFSUc5MGIzQnBMbkJzZFdkcGJu TXViM1J2Y0drdVkyOXlaUzUwY21GdWMyRmpkR2x2Ymk1UWJIVm5hVzR1WDNCeVpWOXdjbVZ3CllY SmxJQ2hPYjI1bEtRb3lNREV6TFRFeUxUSXhJREUyT2pJM09qRXlJRVJGUWxWSElHOTBiM0JwTG1O dmJuUmxlSFFnWTI5dWRHVjQKZEM1a2RXMXdVMlZ4ZFdWdVkyVTZORE0xSUNBZ0lDQk5SVlJJVDBR Z2IzUnZjR2t1Y0d4MVoybHVjeTV2ZEc5d2FTNXVaWFIzYjNKcgpMbWh2YzNSdVlXMWxMbEJzZFdk cGJpNWZhVzUwWlhKdVlXeGZjR0ZqYTJGblpYTWdLRTV2Ym1VcENqSXdNVE10TVRJdE1qRWdNVFk2 Ck1qYzZNVElnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTG1SMWJYQlRaWEYx Wlc1alpUbzBNelVnSUNBZ0lFMUYKVkVoUFJDQnZkRzl3YVM1d2JIVm5hVzV6TG05MGIzQnBMbkJo WTJ0aFoyVnljeTU1ZFcxd1lXTnJZV2RsY2k1UWJIVm5hVzR1WDJsdQpkR1Z5Ym1Gc1gzQmhZMnRo WjJWelgyVnVaQ0FvVG05dVpTa0tNakF4TXkweE1pMHlNU0F4TmpveU56b3hNaUJFUlVKVlJ5QnZk Rzl3CmFTNWpiMjUwWlhoMElHTnZiblJsZUhRdVpIVnRjRk5sY1hWbGJtTmxPalF6TlNBZ0lDQWdU VVZVU0U5RUlHOTBiM0JwTG5Cc2RXZHAKYm5NdWIzUnZjR2t1WTI5eVpTNTBjbUZ1YzJGamRHbHZi aTVRYkhWbmFXNHVYM0J5WlY5bGJtUWdLRTV2Ym1VcENqSXdNVE10TVRJdApNakVnTVRZNk1qYzZN VElnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTG1SMWJYQlRaWEYxWlc1alpU bzBNekFnClUxUkJSMFVnY0hKdlozSmhiWE1LTWpBeE15MHhNaTB5TVNBeE5qb3lOem94TWlCRVJV SlZSeUJ2ZEc5d2FTNWpiMjUwWlhoMElHTnYKYm5SbGVIUXVaSFZ0Y0ZObGNYVmxibU5sT2pRek5T QWdJQ0FnVFVWVVNFOUVJRzkwYjNCcExuQnNkV2RwYm5NdWIzUnZjR2t1YzNsegpkR1Z0TG1OdmJX MWhibVF1VUd4MVoybHVMbDl3Y205bmNtRnRjeUFvYjNSdmNHa3VjM2x6ZEdWdExtTnZiVzFoYm1R dVpHVjBaV04wCmFXOXVLUW95TURFekxURXlMVEl4SURFMk9qSTNPakV5SUVSRlFsVkhJRzkwYjNC cExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXcKVTJWeGRXVnVZMlU2TkRNMUlDQWdJQ0JOUlZS SVQwUWdiM1J2Y0drdWNHeDFaMmx1Y3k1dmRHOXdhUzV6WlhKMmFXTmxjeTV6ZVhOMApaVzFrTGxC c2RXZHBiaTVmY0hKdlozSmhiWE1nS0U1dmJtVXBDakl3TVRNdE1USXRNakVnTVRZNk1qYzZNVEln UkVWQ1ZVY2diM1J2CmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMExtUjFiWEJUWlhGMVpXNWpaVG8w TXpVZ0lDQWdJRTFGVkVoUFJDQnZkRzl3YVM1d2JIVm4KYVc1ekxtOTBiM0JwTG5ObGNuWnBZMlZ6 TG5Kb1pXd3VVR3gxWjJsdUxsOXdjbTluY21GdGN5QW9UbTl1WlNrS01qQXhNeTB4TWkweQpNU0F4 TmpveU56b3hNaUJFUlVKVlJ5QnZkRzl3YVM1amIyNTBaWGgwSUdOdmJuUmxlSFF1WkhWdGNGTmxj WFZsYm1ObE9qUXpOU0FnCklDQWdUVVZVU0U5RUlHOTBiM0JwTG5Cc2RXZHBibk11YjNSdmNHa3Vj MlZ5ZG1salpYTXViM0JsYm5KakxsQnNkV2RwYmk1ZmNISnYKWjNKaGJYTWdLRTV2Ym1VcENqSXdN VE10TVRJdE1qRWdNVFk2TWpjNk1USWdSRVZDVlVjZ2IzUnZjR2t1WTI5dWRHVjRkQ0JqYjI1MApa WGgwTG1SMWJYQlRaWEYxWlc1alpUbzBNekFnVTFSQlIwVWdiR0YwWlY5elpYUjFjQW95TURFekxU RXlMVEl4SURFMk9qSTNPakV5CklFUkZRbFZISUc5MGIzQnBMbU52Ym5SbGVIUWdZMjl1ZEdWNGRD NWtkVzF3VTJWeGRXVnVZMlU2TkRNMUlDQWdJQ0JOUlZSSVQwUWcKYjNSdmNHa3VjR3gxWjJsdWN5 NXZkbWx5ZEY5bGJtZHBibVZmYzJWMGRYQXVkMlZpYzI5amEyVjBYM0J5YjNoNUxtTnZibVpwWnk1 UQpiSFZuYVc0dVgyeGhkR1ZmYzJWMGRYQWdLRTV2Ym1VcENqSXdNVE10TVRJdE1qRWdNVFk2TWpj Nk1USWdSRVZDVlVjZ2IzUnZjR2t1ClkyOXVkR1Y0ZENCamIyNTBaWGgwTG1SMWJYQlRaWEYxWlc1 alpUbzBNekFnVTFSQlIwVWdZM1Z6ZEc5dGFYcGhkR2x2YmdveU1ERXoKTFRFeUxUSXhJREUyT2pJ M09qRXlJRVJGUWxWSElHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcxd1UyVnhkV1Z1 WTJVNgpORE0xSUNBZ0lDQk5SVlJJVDBRZ2IzUnZjR2t1Y0d4MVoybHVjeTV2ZEc5d2FTNXVaWFIz YjNKckxtWnBjbVYzWVd4c1pDNVFiSFZuCmFXNHVYMk4xYzNSdmJXbDZZWFJwYjI0Z0tFNXZibVVw Q2pJd01UTXRNVEl0TWpFZ01UWTZNamM2TVRJZ1JFVkNWVWNnYjNSdmNHa3UKWTI5dWRHVjRkQ0Jq YjI1MFpYaDBMbVIxYlhCVFpYRjFaVzVqWlRvME16VWdJQ0FnSUUxRlZFaFBSQ0J2ZEc5d2FTNXdi SFZuYVc1egpMbTkwYjNCcExtTnZjbVV1WTI5dVptbG5MbEJzZFdkcGJpNWZZM1Z6ZEc5dGFYcGxN U0FvVG05dVpTa0tNakF4TXkweE1pMHlNU0F4Ck5qb3lOem94TWlCRVJVSlZSeUJ2ZEc5d2FTNWpi MjUwWlhoMElHTnZiblJsZUhRdVpIVnRjRk5sY1hWbGJtTmxPalF6TlNBZ0lDQWcKVFVWVVNFOUVJ RzkwYjNCcExuQnNkV2RwYm5NdWIzUnZjR2t1WkdsaGJHOW5MbU5zYVM1UWJIVm5hVzR1WDJOMWMz UnZiV2w2WlNBbwpiM1J2Y0drdVpHbGhiRzluTG1Oc2FTNWpkWE4wYjIxcGVtRjBhVzl1S1FveU1E RXpMVEV5TFRJeElERTJPakkzT2pFeUlFUkZRbFZICklHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRH VjRkQzVrZFcxd1UyVnhkV1Z1WTJVNk5ETTFJQ0FnSUNCTlJWUklUMFFnYjNSdmNHa3UKY0d4MVoy bHVjeTV2ZG1seWRGOWxibWRwYm1WZmMyVjBkWEF1ZDJWaWMyOWphMlYwWDNCeWIzaDVMbU52Ym1a cFp5NVFiSFZuYVc0dQpYMk4xYzNSdmJXbDZZWFJwYjI0Z0tITmxkSFZ3TG1OdmJtWnBaeTUzWldK emIyTnJaWFF0Y0hKdmVIa3VZM1Z6ZEc5dGFYcGhkR2x2CmJpa0tNakF4TXkweE1pMHlNU0F4Tmpv eU56b3hNaUJFUlVKVlJ5QnZkRzl3YVM1amIyNTBaWGgwSUdOdmJuUmxlSFF1WkhWdGNGTmwKY1hW bGJtTmxPalF6TlNBZ0lDQWdUVVZVU0U5RUlHOTBiM0JwTG5Cc2RXZHBibk11YjNacGNuUmZaVzVu YVc1bFgzTmxkSFZ3TG5kbApZbk52WTJ0bGRGOXdjbTk0ZVM1amIyNW1hV2N1VUd4MVoybHVMbDlq ZFhOMGIyMXBlbUYwYVc5dVgyWnBjbVYzWVd4c0lDaE9iMjVsCktRb3lNREV6TFRFeUxUSXhJREUy T2pJM09qRXlJRVJGUWxWSElHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcxd1UyVngK ZFdWdVkyVTZORE0xSUNBZ0lDQk5SVlJJVDBRZ2IzUnZjR2t1Y0d4MVoybHVjeTV2ZEc5d2FTNWpi M0psTG1OdmJtWnBaeTVRYkhWbgphVzR1WDJOMWMzUnZiV2w2WlRJZ0tFNXZibVVwQ2pJd01UTXRN VEl0TWpFZ01UWTZNamM2TVRJZ1JFVkNWVWNnYjNSdmNHa3VZMjl1CmRHVjRkQ0JqYjI1MFpYaDBM bVIxYlhCVFpYRjFaVzVqWlRvME16QWdVMVJCUjBVZ2RtRnNhV1JoZEdsdmJnb3lNREV6TFRFeUxU SXgKSURFMk9qSTNPakV5SUVSRlFsVkhJRzkwYjNCcExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RX MXdVMlZ4ZFdWdVkyVTZORE0xSUNBZwpJQ0JOUlZSSVQwUWdiM1J2Y0drdWNHeDFaMmx1Y3k1dmRH OXdhUzVqYjNKbExtMXBjMk11VUd4MVoybHVMbDkyWVd4cFpHRjBhVzl1CklDaE9iMjVsS1FveU1E RXpMVEV5TFRJeElERTJPakkzT2pFeUlFUkZRbFZISUc5MGIzQnBMbU52Ym5SbGVIUWdZMjl1ZEdW NGRDNWsKZFcxd1UyVnhkV1Z1WTJVNk5ETTFJQ0FnSUNCTlJWUklUMFFnYjNSdmNHa3VjR3gxWjJs dWN5NXZkRzl3YVM1dVpYUjNiM0pyTG1acApjbVYzWVd4c1pDNVFiSFZuYVc0dVgzWmhiR2xrWVhS cGIyNGdLRzkwYjNCcExtNWxkSGR2Y21zdVptbHlaV0ZzYkdRdWRtRnNhV1JoCmRHbHZiaWtLTWpB eE15MHhNaTB5TVNBeE5qb3lOem94TWlCRVJVSlZSeUJ2ZEc5d2FTNWpiMjUwWlhoMElHTnZiblJs ZUhRdVpIVnQKY0ZObGNYVmxibU5sT2pRek5TQWdJQ0FnVFVWVVNFOUVJRzkwYjNCcExuQnNkV2Rw Ym5NdWIzUnZjR2t1Ym1WMGQyOXlheTVvYjNOMApibUZ0WlM1UWJIVm5hVzR1WDNaaGJHbGtZWFJw YjI0Z0tFNXZibVVwQ2pJd01UTXRNVEl0TWpFZ01UWTZNamM2TVRJZ1JFVkNWVWNnCmIzUnZjR2t1 WTI5dWRHVjRkQ0JqYjI1MFpYaDBMbVIxYlhCVFpYRjFaVzVqWlRvME16VWdJQ0FnSUUxRlZFaFBS Q0J2ZEc5d2FTNXcKYkhWbmFXNXpMbTkwYjNCcExtNWxkSGR2Y21zdWFYQjBZV0pzWlhNdVVHeDFa Mmx1TGw5MllXeHBaR0YwWlNBb2IzUnZjR2t1Ym1WMApkMjl5YXk1cGNIUmhZbXhsY3k1MllXeHBa R0YwYVc5dUtRb3lNREV6TFRFeUxUSXhJREUyT2pJM09qRXlJRVJGUWxWSElHOTBiM0JwCkxtTnZi blJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdVMlZ4ZFdWdVkyVTZORE0xSUNBZ0lDQk5SVlJJVDBRZ2Iz UnZjR2t1Y0d4MVoybHUKY3k1dmRHOXdhUzV1WlhSM2IzSnJMbk56YUM1UWJIVm5hVzR1WDNaaGJH bGtZWFJwYjI0Z0tFNXZibVVwQ2pJd01UTXRNVEl0TWpFZwpNVFk2TWpjNk1USWdSRVZDVlVjZ2Iz UnZjR2t1WTI5dWRHVjRkQ0JqYjI1MFpYaDBMbVIxYlhCVFpYRjFaVzVqWlRvME16QWdVMVJCClIw VWdkSEpoYm5OaFkzUnBiMjR0Y0hKbGNHRnlaUW95TURFekxURXlMVEl4SURFMk9qSTNPakV5SUVS RlFsVkhJRzkwYjNCcExtTnYKYm5SbGVIUWdZMjl1ZEdWNGRDNWtkVzF3VTJWeGRXVnVZMlU2TkRN MUlDQWdJQ0JOUlZSSVQwUWdiM1J2Y0drdWNHeDFaMmx1Y3k1dgpkRzl3YVM1amIzSmxMblJ5WVc1 ellXTjBhVzl1TGxCc2RXZHBiaTVmYldGcGJsOXdjbVZ3WVhKbElDaE9iMjVsS1FveU1ERXpMVEV5 CkxUSXhJREUyT2pJM09qRXlJRVJGUWxWSElHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVr ZFcxd1UyVnhkV1Z1WTJVNk5ETTEKSUNBZ0lDQk5SVlJJVDBRZ2IzUnZjR2t1Y0d4MVoybHVjeTV2 ZG1seWRGOWxibWRwYm1WZlkyOXRiVzl1TG5kbFluTnZZMnRsZEY5dwpjbTk0ZVM1amIzSmxMbEJz ZFdkcGJpNWZkSEpoYm5OaFkzUnBiMjVDWldkcGJpQW9UbTl1WlNrS01qQXhNeTB4TWkweU1TQXhO am95Ck56b3hNaUJFUlVKVlJ5QnZkRzl3YVM1amIyNTBaWGgwSUdOdmJuUmxlSFF1WkhWdGNGTmxj WFZsYm1ObE9qUXpNQ0JUVkVGSFJTQmwKWVhKc2VWOXRhWE5qQ2pJd01UTXRNVEl0TWpFZ01UWTZN amM2TVRJZ1JFVkNWVWNnYjNSdmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMApMbVIxYlhCVFpYRjFa VzVqWlRvME16VWdJQ0FnSUUxRlZFaFBSQ0J2ZEc5d2FTNXdiSFZuYVc1ekxtOTBiM0JwTG01bGRI ZHZjbXN1ClptbHlaWGRoYkd4a0xsQnNkV2RwYmk1ZlpXRnliSGxmYldsell5QW9UbTl1WlNrS01q QXhNeTB4TWkweU1TQXhOam95TnpveE1pQkUKUlVKVlJ5QnZkRzl3YVM1amIyNTBaWGgwSUdOdmJu UmxlSFF1WkhWdGNGTmxjWFZsYm1ObE9qUXpNQ0JUVkVGSFJTQndZV05yWVdkbApjd295TURFekxU RXlMVEl4SURFMk9qSTNPakV5SUVSRlFsVkhJRzkwYjNCcExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1 a2RXMXdVMlZ4CmRXVnVZMlU2TkRNMUlDQWdJQ0JOUlZSSVQwUWdiM1J2Y0drdWNHeDFaMmx1Y3k1 dmRHOXdhUzV1WlhSM2IzSnJMbWx3ZEdGaWJHVnoKTGxCc2RXZHBiaTVmY0dGamEyRm5aWE1nS0U1 dmJtVXBDakl3TVRNdE1USXRNakVnTVRZNk1qYzZNVElnUkVWQ1ZVY2diM1J2Y0drdQpZMjl1ZEdW NGRDQmpiMjUwWlhoMExtUjFiWEJUWlhGMVpXNWpaVG8wTXpVZ0lDQWdJRTFGVkVoUFJDQnZkRzl3 YVM1d2JIVm5hVzV6CkxtOTBiM0JwTG5CaFkydGhaMlZ5Y3k1NWRXMXdZV05yWVdkbGNpNVFiSFZu YVc0dVgzQmhZMnRoWjJWeklDaE9iMjVsS1FveU1ERXoKTFRFeUxUSXhJREUyT2pJM09qRXlJRVJG UWxWSElHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcxd1UyVnhkV1Z1WTJVNgpORE13 SUZOVVFVZEZJRzFwYzJNS01qQXhNeTB4TWkweU1TQXhOam95TnpveE1pQkVSVUpWUnlCdmRHOXdh UzVqYjI1MFpYaDBJR052CmJuUmxlSFF1WkhWdGNGTmxjWFZsYm1ObE9qUXpOU0FnSUNBZ1RVVlVT RTlFSUc5MGIzQnBMbkJzZFdkcGJuTXViM1J2Y0drdWMzbHoKZEdWdExtTnZiVzFoYm1RdVVHeDFa Mmx1TGw5dGFYTmpJQ2h2ZEc5d2FTNXplWE4wWlcwdVkyOXRiV0Z1WkM1eVpXUmxkR1ZqZEdsdgpi aWtLTWpBeE15MHhNaTB5TVNBeE5qb3lOem94TWlCRVJVSlZSeUJ2ZEc5d2FTNWpiMjUwWlhoMElH TnZiblJsZUhRdVpIVnRjRk5sCmNYVmxibU5sT2pRek5TQWdJQ0FnVFVWVVNFOUVJRzkwYjNCcExu QnNkV2RwYm5NdWIzUnZjR2t1Ym1WMGQyOXlheTVtYVhKbGQyRnMKYkdRdVVHeDFaMmx1TGw5dGFY TmpJQ2hPYjI1bEtRb3lNREV6TFRFeUxUSXhJREUyT2pJM09qRXlJRVJGUWxWSElHOTBiM0JwTG1O dgpiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdVMlZ4ZFdWdVkyVTZORE0xSUNBZ0lDQk5SVlJJVDBR Z2IzUnZjR2t1Y0d4MVoybHVjeTV2CmRHOXdhUzV1WlhSM2IzSnJMbWx3ZEdGaWJHVnpMbEJzZFdk cGJpNWZjM1J2Y21WZmFYQjBZV0pzWlhNZ0tFNXZibVVwQ2pJd01UTXQKTVRJdE1qRWdNVFk2TWpj Nk1USWdSRVZDVlVjZ2IzUnZjR2t1WTI5dWRHVjRkQ0JqYjI1MFpYaDBMbVIxYlhCVFpYRjFaVzVq WlRvMApNelVnSUNBZ0lFMUZWRWhQUkNCdmRHOXdhUzV3YkhWbmFXNXpMbTkwYjNCcExtNWxkSGR2 Y21zdWMzTm9MbEJzZFdkcGJpNWZZWEJ3ClpXNWtYMnRsZVNBb1RtOXVaU2tLTWpBeE15MHhNaTB5 TVNBeE5qb3lOem94TWlCRVJVSlZSeUJ2ZEc5d2FTNWpiMjUwWlhoMElHTnYKYm5SbGVIUXVaSFZ0 Y0ZObGNYVmxibU5sT2pRek5TQWdJQ0FnVFVWVVNFOUVJRzkwYjNCcExuQnNkV2RwYm5NdWIzUnZj R2t1YzNsegpkR1Z0TG1Oc2IyTnJMbEJzZFdkcGJpNWZjMlYwWDJOc2IyTnJJQ2hPYjI1bEtRb3lN REV6TFRFeUxUSXhJREUyT2pJM09qRXlJRVJGClFsVkhJRzkwYjNCcExtTnZiblJsZUhRZ1kyOXVk R1Y0ZEM1a2RXMXdVMlZ4ZFdWdVkyVTZORE0xSUNBZ0lDQk5SVlJJVDBRZ2IzUnYKY0drdWNHeDFa Mmx1Y3k1dmRtbHlkRjlsYm1kcGJtVmZjMlYwZFhBdWQyVmljMjlqYTJWMFgzQnliM2g1TG1OdmJt WnBaeTVRYkhWbgphVzR1WDIxcGMyTWdLRTV2Ym1VcENqSXdNVE10TVRJdE1qRWdNVFk2TWpjNk1U SWdSRVZDVlVjZ2IzUnZjR2t1WTI5dWRHVjRkQ0JqCmIyNTBaWGgwTG1SMWJYQlRaWEYxWlc1alpU bzBNekFnVTFSQlIwVWdZMnhsWVc1MWNBb3lNREV6TFRFeUxUSXhJREUyT2pJM09qRXkKSUVSRlFs VkhJRzkwYjNCcExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdVMlZ4ZFdWdVkyVTZORE0xSUNB Z0lDQk5SVlJJVDBRZwpiM1J2Y0drdWNHeDFaMmx1Y3k1dmRHOXdhUzVqYjNKbExuUnlZVzV6WVdO MGFXOXVMbEJzZFdkcGJpNWZiV0ZwYmw5bGJtUWdLRTV2CmJtVXBDakl3TVRNdE1USXRNakVnTVRZ Nk1qYzZNVElnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTG1SMWJYQlQKWlhG MVpXNWpaVG8wTXpBZ1UxUkJSMFVnWTJ4dmMyVjFjQW95TURFekxURXlMVEl4SURFMk9qSTNPakV5 SUVSRlFsVkhJRzkwYjNCcApMbU52Ym5SbGVIUWdZMjl1ZEdWNGRDNWtkVzF3VTJWeGRXVnVZMlU2 TkRNMUlDQWdJQ0JOUlZSSVQwUWdiM1J2Y0drdWNHeDFaMmx1CmN5NXZkRzl3YVM1dVpYUjNiM0py TG1acGNtVjNZV3hzWkM1UWJIVm5hVzR1WDJOc2IzTmxkWEFnS0U1dmJtVXBDakl3TVRNdE1USXQK TWpFZ01UWTZNamM2TVRJZ1JFVkNWVWNnYjNSdmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMExtUjFi WEJUWlhGMVpXNWpaVG8wTXpVZwpJQ0FnSUUxRlZFaFBSQ0J2ZEc5d2FTNXdiSFZuYVc1ekxtOTBi M0JwTG01bGRIZHZjbXN1YVhCMFlXSnNaWE11VUd4MVoybHVMbDlqCmJHOXpaWFZ3SUNoT2IyNWxL UW95TURFekxURXlMVEl4SURFMk9qSTNPakV5SUVSRlFsVkhJRzkwYjNCcExtTnZiblJsZUhRZ1ky OXUKZEdWNGRDNWtkVzF3VTJWeGRXVnVZMlU2TkRNMUlDQWdJQ0JOUlZSSVQwUWdiM1J2Y0drdWNH eDFaMmx1Y3k1dmRHOXdhUzV1WlhSMwpiM0pyTG5OemFDNVFiSFZuYVc0dVgyTnNaV0Z1ZFhBZ0tF NXZibVVwQ2pJd01UTXRNVEl0TWpFZ01UWTZNamM2TVRJZ1JFVkNWVWNnCmIzUnZjR2t1WTI5dWRH VjRkQ0JqYjI1MFpYaDBMbVIxYlhCVFpYRjFaVzVqWlRvME16VWdJQ0FnSUUxRlZFaFBSQ0J2ZEc5 d2FTNXcKYkhWbmFXNXpMbTkyYVhKMFgyVnVaMmx1WlY5elpYUjFjQzUzWldKemIyTnJaWFJmY0hK dmVIa3VZMjl1Wm1sbkxsQnNkV2RwYmk1ZgpZMnh2YzJWMWNDQW9UbTl1WlNrS01qQXhNeTB4TWkw eU1TQXhOam95TnpveE1pQkVSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDBJR052CmJuUmxlSFF1WkhW dGNGTmxjWFZsYm1ObE9qUXpOU0FnSUNBZ1RVVlVTRTlFSUc5MGIzQnBMbkJzZFdkcGJuTXViM1J2 Y0drdWMzbHoKZEdWdExuSmxZbTl2ZEM1UWJIVm5hVzR1WDJOc2IzTmxkWEFnS0U1dmJtVXBDakl3 TVRNdE1USXRNakVnTVRZNk1qYzZNVElnUkVWQwpWVWNnYjNSdmNHa3VZMjl1ZEdWNGRDQmpiMjUw WlhoMExtUjFiWEJUWlhGMVpXNWpaVG8wTXpBZ1UxUkJSMFVnY0hKbExYUmxjbTFwCmJtRjBaUW95 TURFekxURXlMVEl4SURFMk9qSTNPakV5SUVSRlFsVkhJRzkwYjNCcExtTnZiblJsZUhRZ1kyOXVk R1Y0ZEM1a2RXMXcKVTJWeGRXVnVZMlU2TkRNMUlDQWdJQ0JOUlZSSVQwUWdiM1J2Y0drdWNHeDFa Mmx1Y3k1dmRHOXdhUzVqYjNKbExtMXBjMk11VUd4MQpaMmx1TGw5d2NtVlVaWEp0YVc1aGRHVWdL RTV2Ym1VcENqSXdNVE10TVRJdE1qRWdNVFk2TWpjNk1USWdSRVZDVlVjZ2IzUnZjR2t1ClkyOXVk R1Y0ZENCamIyNTBaWGgwTG1SMWJYQlRaWEYxWlc1alpUbzBNelVnSUNBZ0lFMUZWRWhQUkNCdmRH OXdhUzV3YkhWbmFXNXoKTG05MGIzQnBMbVJwWVd4dlp5NWpiR2t1VUd4MVoybHVMbDl3Y21WZmRH VnliV2x1WVhSbElDaHZkRzl3YVM1a2FXRnNiMmN1WTJ4cApMblJsY20xcGJtRjBhVzl1S1FveU1E RXpMVEV5TFRJeElERTJPakkzT2pFeUlFUkZRbFZISUc5MGIzQnBMbU52Ym5SbGVIUWdZMjl1CmRH VjRkQzVrZFcxd1UyVnhkV1Z1WTJVNk5ETXdJRk5VUVVkRklIUmxjbTFwYm1GMFpRb3lNREV6TFRF eUxUSXhJREUyT2pJM09qRXkKSUVSRlFsVkhJRzkwYjNCcExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1 a2RXMXdVMlZ4ZFdWdVkyVTZORE0xSUNBZ0lDQk5SVlJJVDBRZwpiM1J2Y0drdWNHeDFaMmx1Y3k1 dmRHOXdhUzVrYVdGc2IyY3VhSFZ0WVc0dVVHeDFaMmx1TGw5MFpYSnRhVzVoZEdVZ0tFNXZibVVw CkNqSXdNVE10TVRJdE1qRWdNVFk2TWpjNk1USWdSRVZDVlVjZ2IzUnZjR2t1WTI5dWRHVjRkQ0Jq YjI1MFpYaDBMbVIxYlhCVFpYRjEKWlc1alpUbzBNelVnSUNBZ0lFMUZWRWhQUkNCdmRHOXdhUzV3 YkhWbmFXNXpMbTkwYjNCcExtUnBZV3h2Wnk1dFlXTm9hVzVsTGxCcwpkV2RwYmk1ZmRHVnliV2x1 WVhSbElDaE9iMjVsS1FveU1ERXpMVEV5TFRJeElERTJPakkzT2pFeUlFUkZRbFZISUc5MGIzQnBM bU52CmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcxd1UyVnhkV1Z1WTJVNk5ETTFJQ0FnSUNCTlJWUklU MFFnYjNSdmNHa3VjR3gxWjJsdWN5NXYKZEc5d2FTNWpiM0psTG14dlp5NVFiSFZuYVc0dVgzUmxj bTFwYm1GMFpTQW9UbTl1WlNrS01qQXhNeTB4TWkweU1TQXhOam95TnpveApNaUJFUlVKVlJ5QnZk Rzl3YVM1amIyNTBaWGgwSUdOdmJuUmxlSFF1WkhWdGNGTmxjWFZsYm1ObE9qUXpNQ0JUVkVGSFJT QnlaV0p2CmIzUUtNakF4TXkweE1pMHlNU0F4TmpveU56b3hNaUJFUlVKVlJ5QnZkRzl3YVM1amIy NTBaWGgwSUdOdmJuUmxlSFF1WkhWdGNGTmwKY1hWbGJtTmxPalF6TlNBZ0lDQWdUVVZVU0U5RUlH OTBiM0JwTG5Cc2RXZHBibk11YjNSdmNHa3VjM2x6ZEdWdExuSmxZbTl2ZEM1UQpiSFZuYVc0dVgz SmxZbTl2ZENBb1RtOXVaU2tLTWpBeE15MHhNaTB5TVNBeE5qb3lOem94TWlCRVJVSlZSeUJ2ZEc5 d2FTNWpiMjUwClpYaDBJR052Ym5SbGVIUXVaSFZ0Y0ZObGNYVmxibU5sT2pRek55QlRSVkZWUlU1 RFJTQkVWVTFRSUMwZ1JVNUVDakl3TVRNdE1USXQKTWpFZ01UWTZNamM2TVRJZ1JFVkNWVWNnYjNS dmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMExtUjFiWEJGYm5acGNtOXViV1Z1ZERvMApOREVnUlU1 V1NWSlBUazFGVGxRZ1JGVk5VQ0F0SUVKRlIwbE9Dakl3TVRNdE1USXRNakVnTVRZNk1qYzZNVEln UkVWQ1ZVY2diM1J2CmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMExtUjFiWEJGYm5acGNtOXViV1Z1 ZERvME5UWWdSVTVXSUVKQlUwVXZZV0p2Y25SbFpEMWkKYjI5c09pZEdZV3h6WlNjS01qQXhNeTB4 TWkweU1TQXhOam95TnpveE1pQkVSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDBJR052Ym5SbAplSFF1 WkhWdGNFVnVkbWx5YjI1dFpXNTBPalExTmlCRlRsWWdRa0ZUUlM5a1pXSjFaejFwYm5RNkp6QW5D akl3TVRNdE1USXRNakVnCk1UWTZNamM2TVRJZ1JFVkNWVWNnYjNSdmNHa3VZMjl1ZEdWNGRDQmpi MjUwWlhoMExtUjFiWEJGYm5acGNtOXViV1Z1ZERvME5UWWcKUlU1V0lFSkJVMFV2WlhKeWIzSTlZ bTl2YkRvblJtRnNjMlVuQ2pJd01UTXRNVEl0TWpFZ01UWTZNamM2TVRJZ1JFVkNWVWNnYjNSdgpj R2t1WTI5dWRHVjRkQ0JqYjI1MFpYaDBMbVIxYlhCRmJuWnBjbTl1YldWdWREbzBOVFlnUlU1V0lF SkJVMFV2WlhoalpYQjBhVzl1ClNXNW1iejFzYVhOME9pZGJYU2NLTWpBeE15MHhNaTB5TVNBeE5q b3lOem94TWlCRVJVSlZSeUJ2ZEc5d2FTNWpiMjUwWlhoMElHTnYKYm5SbGVIUXVaSFZ0Y0VWdWRt bHliMjV0Wlc1ME9qUTFOaUJGVGxZZ1FrRlRSUzlsZUdWamRYUnBiMjVFYVhKbFkzUnZjbms5YzNS eQpPaWN2YUc5dFpTOXRkR0Y1WlhJdlpHVjJMMjkyYVhKMExXVnVaMmx1WlM5emNtTW5Dakl3TVRN dE1USXRNakVnTVRZNk1qYzZNVElnClJFVkNWVWNnYjNSdmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlho MExtUjFiWEJGYm5acGNtOXViV1Z1ZERvME5UWWdSVTVXSUVKQlUwVXYKYkc5blBXSnZiMnc2SjFS eWRXVW5Dakl3TVRNdE1USXRNakVnTVRZNk1qYzZNVElnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0 ZENCagpiMjUwWlhoMExtUjFiWEJGYm5acGNtOXViV1Z1ZERvME5UWWdSVTVXSUVKQlUwVXZjR3gx WjJsdVIzSnZkWEJ6UFhOMGNqb25iM1J2CmNHazZiM1pwY25RdFpXNW5hVzVsTFdOdmJXMXZianB2 ZG1seWRDMWxibWRwYm1VdGMyVjBkWEFuQ2pJd01UTXRNVEl0TWpFZ01UWTYKTWpjNk1USWdSRVZD VlVjZ2IzUnZjR2t1WTI5dWRHVjRkQ0JqYjI1MFpYaDBMbVIxYlhCRmJuWnBjbTl1YldWdWREbzBO VFlnUlU1VwpJRUpCVTBVdmNHeDFaMmx1VUdGMGFEMXpkSEk2Snk5MWMzSXZjMmhoY21VdmIzUnZj R2t2Y0d4MVoybHVjem92YUc5dFpTOXRkR0Y1ClpYSXZaR1YyTDI5MmFYSjBMV1Z1WjJsdVpTOW5h WFJmYzI1dGNGOWpiR1ZoYm5Wd0wzTm9ZWEpsTDI5MmFYSjBMV1Z1WjJsdVpTOXoKWlhSMWNDOWlh VzR2TGk0dmNHeDFaMmx1Y3ljS01qQXhNeTB4TWkweU1TQXhOam95TnpveE1pQkVSVUpWUnlCdmRH OXdhUzVqYjI1MApaWGgwSUdOdmJuUmxlSFF1WkhWdGNFVnVkbWx5YjI1dFpXNTBPalExTmlCRlRs WWdRa0ZUUlM5emRYQndjbVZ6YzBWdWRtbHliMjV0ClpXNTBTMlY1Y3oxc2FYTjBPaWRiWFNjS01q QXhNeTB4TWkweU1TQXhOam95TnpveE1pQkVSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDAKSUdOdmJu UmxlSFF1WkhWdGNFVnVkbWx5YjI1dFpXNTBPalExTmlCRlRsWWdRMDlTUlM5c2IyZEVhWEk5YzNS eU9pY3ZkRzF3SndveQpNREV6TFRFeUxUSXhJREUyT2pJM09qRXlJRVJGUWxWSElHOTBiM0JwTG1O dmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcxd1JXNTJhWEp2CmJtMWxiblE2TkRVMklFVk9WaUJEVDFK RkwyeHZaMFpwYkdWSVlXNWtiR1U5Wm1sc1pUb25QRzl3Wlc0Z1ptbHNaU0FuTDNSdGNDOXYKZEc5 d2FTMHlNREV6TVRJeU1URTJNamN4TWk1c2IyY25MQ0J0YjJSbElDZGhKeUJoZENBd2VEZG1NRFV3 TjJNNE5qUXlNRDRuQ2pJdwpNVE10TVRJdE1qRWdNVFk2TWpjNk1USWdSRVZDVlVjZ2IzUnZjR2t1 WTI5dWRHVjRkQ0JqYjI1MFpYaDBMbVIxYlhCRmJuWnBjbTl1CmJXVnVkRG8wTlRZZ1JVNVdJRU5Q VWtVdmJHOW5SbWxzWlU1aGJXVTljM1J5T2ljdmRHMXdMMjkwYjNCcExUSXdNVE14TWpJeE1UWXkK TnpFeUxteHZaeWNLTWpBeE15MHhNaTB5TVNBeE5qb3lOem94TWlCRVJVSlZSeUJ2ZEc5d2FTNWpi MjUwWlhoMElHTnZiblJsZUhRdQpaSFZ0Y0VWdWRtbHliMjV0Wlc1ME9qUTFOaUJGVGxZZ1EwOVNS UzlzYjJkR2FXeGxUbUZ0WlZCeVpXWnBlRDF6ZEhJNkoyOTBiM0JwCkp3b3lNREV6TFRFeUxUSXhJ REUyT2pJM09qRXlJRVJGUWxWSElHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcxd1JX NTIKYVhKdmJtMWxiblE2TkRVMklFVk9WaUJEVDFKRkwyeHZaMFpwYkhSbGNqMWZUWGxNYjJkblpY SkdhV3gwWlhJNkoyWnBiSFJsY2ljSwpNakF4TXkweE1pMHlNU0F4TmpveU56b3hNaUJFUlVKVlJ5 QnZkRzl3YVM1amIyNTBaWGgwSUdOdmJuUmxlSFF1WkhWdGNFVnVkbWx5CmIyNXRaVzUwT2pRMU5p QkZUbFlnUTA5U1JTOXNiMmRHYVd4MFpYSkxaWGx6UFd4cGMzUTZKMXRkSndveU1ERXpMVEV5TFRJ eElERTIKT2pJM09qRXlJRVJGUWxWSElHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcx d1JXNTJhWEp2Ym0xbGJuUTZORFUySUVWTwpWaUJEVDFKRkwyeHZaMUpsYlc5MlpVRjBSWGhwZEQx aWIyOXNPaWRHWVd4elpTY0tNakF4TXkweE1pMHlNU0F4TmpveU56b3hNaUJFClJVSlZSeUJ2ZEc5 d2FTNWpiMjUwWlhoMElHTnZiblJsZUhRdVpIVnRjRVZ1ZG1seWIyNXRaVzUwT2pRMU5pQkZUbFln UTA5U1JTOXkKWVc1a2IyMXBlbVZGZG1WdWRITTlZbTl2YkRvblJtRnNjMlVuQ2pJd01UTXRNVEl0 TWpFZ01UWTZNamM2TVRJZ1JFVkNWVWNnYjNSdgpjR2t1WTI5dWRHVjRkQ0JqYjI1MFpYaDBMbVIx YlhCRmJuWnBjbTl1YldWdWREbzBOVFlnUlU1V0lFUkpRVXhQUnk5aWIzVnVaR0Z5CmVUMXpkSEk2 SnkwdFBUUTFNV0k0TUdSakxUazVObVl0TkRNeVpTMDVaVFJtTFRKaU1qbGxaalprTVRFME1UMHRM U2NLTWpBeE15MHgKTWkweU1TQXhOam95TnpveE1pQkVSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDBJ R052Ym5SbGVIUXVaSFZ0Y0VWdWRtbHliMjV0Wlc1MApPalExTmlCRlRsWWdSRWxCVEU5SEwyUnBZ V3hsWTNROWMzUnlPaWRvZFcxaGJpY0tNakF4TXkweE1pMHlNU0F4TmpveU56b3hNaUJFClJVSlZS eUJ2ZEc5d2FTNWpiMjUwWlhoMElHTnZiblJsZUhRdVpIVnRjRVZ1ZG1seWIyNXRaVzUwT2pRMU5p QkZUbFlnU1U1R1R5OVEKUVVOTFFVZEZYMDVCVFVVOWMzUnlPaWR2ZEc5d2FTY0tNakF4TXkweE1p MHlNU0F4TmpveU56b3hNaUJFUlVKVlJ5QnZkRzl3YVM1agpiMjUwWlhoMElHTnZiblJsZUhRdVpI VnRjRVZ1ZG1seWIyNXRaVzUwT2pRMU5pQkZUbFlnU1U1R1R5OVFRVU5MUVVkRlgxWkZVbE5KClQw NDljM1J5T2ljeExqSXVNRjl0WVhOMFpYSW5Dakl3TVRNdE1USXRNakVnTVRZNk1qYzZNVElnUkVW Q1ZVY2diM1J2Y0drdVkyOXUKZEdWNGRDQmpiMjUwWlhoMExtUjFiWEJGYm5acGNtOXViV1Z1ZERv ME5UZ2dSVTVXU1ZKUFRrMUZUbFFnUkZWTlVDQXRJRVZPUkFveQpNREV6TFRFeUxUSXhJREUyT2pJ M09qRXlJRVJGUWxWSElHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcxd1JXNTJhWEp2 CmJtMWxiblE2TkRReElFVk9Wa2xTVDA1TlJVNVVJRVJWVFZBZ0xTQkNSVWRKVGdveU1ERXpMVEV5 TFRJeElERTJPakkzT2pFeUlFUkYKUWxWSElHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVr ZFcxd1JXNTJhWEp2Ym0xbGJuUTZORFUySUVWT1ZpQkpUa1pQTDFCQgpRMHRCUjBWZlRrRk5SVDF6 ZEhJNkoyOTBiM0JwSndveU1ERXpMVEV5TFRJeElERTJPakkzT2pFeUlFUkZRbFZISUc5MGIzQnBM bU52CmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcxd1JXNTJhWEp2Ym0xbGJuUTZORFUySUVWT1ZpQkpU a1pQTDFCQlEwdEJSMFZmVmtWU1UwbFAKVGoxemRISTZKekV1TWk0d1gyMWhjM1JsY2ljS01qQXhN eTB4TWkweU1TQXhOam95TnpveE1pQkVSVUpWUnlCdmRHOXdhUzVqYjI1MApaWGgwSUdOdmJuUmxl SFF1WkhWdGNFVnVkbWx5YjI1dFpXNTBPalExT0NCRlRsWkpVazlPVFVWT1ZDQkVWVTFRSUMwZ1JV NUVDakl3Ck1UTXRNVEl0TWpFZ01UWTZNamM2TVRJZ1JFVkNWVWNnYjNSdmNHa3VZMjl1ZEdWNGRD QmpiMjUwWlhoMExsOWxlR1ZqZFhSbFRXVjAKYUc5a09qRXlNeUJUZEdGblpTQmliMjkwSUUxRlZF aFBSQ0J2ZEc5d2FTNXdiSFZuYVc1ekxtOTBiM0JwTG5CaFkydGhaMlZ5Y3k1NQpkVzF3WVdOcllX ZGxjaTVRYkhWbmFXNHVYMkp2YjNRS1RHOWhaR1ZrSUhCc2RXZHBibk02SUd4aGJtZHdZV05yY3l3 Z2NtVm1jbVZ6CmFDMXdZV05yWVdkbGEybDBMQ0J5WlcxdmRtVXRkMmwwYUMxc1pXRjJaWE1LTWpB eE15MHhNaTB5TVNBeE5qb3lOem94TlNCRVJVSlYKUnlCdmRHOXdhUzVqYjI1MFpYaDBJR052Ym5S bGVIUXVaSFZ0Y0VWdWRtbHliMjV0Wlc1ME9qUTBNU0JGVGxaSlVrOU9UVVZPVkNCRQpWVTFRSUMw Z1FrVkhTVTRLTWpBeE15MHhNaTB5TVNBeE5qb3lOem94TlNCRVJVSlZSeUJ2ZEc5d2FTNWpiMjUw WlhoMElHTnZiblJsCmVIUXVaSFZ0Y0VWdWRtbHliMjV0Wlc1ME9qUTFOaUJGVGxZZ1VFRkRTMEZI UlZJdmEyVmxjRUZzYVhabFNXNTBaWEoyWVd3OWFXNTAKT2ljek1DY0tNakF4TXkweE1pMHlNU0F4 TmpveU56b3hOU0JFUlVKVlJ5QnZkRzl3YVM1amIyNTBaWGgwSUdOdmJuUmxlSFF1WkhWdApjRVZ1 ZG1seWIyNXRaVzUwT2pRMU5pQkZUbFlnVUVGRFMwRkhSVkl2ZVhWdFJHbHpZV0pzWldSUWJIVm5h VzV6UFd4cGMzUTZKMXRkCkp3b3lNREV6TFRFeUxUSXhJREUyT2pJM09qRTFJRVJGUWxWSElHOTBi M0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcxd1JXNTIKYVhKdmJtMWxiblE2TkRVMklFVk9W aUJRUVVOTFFVZEZVaTk1ZFcxRmJtRmliR1ZrVUd4MVoybHVjejFzYVhOME9pZGJYU2NLTWpBeApN eTB4TWkweU1TQXhOam95TnpveE5TQkVSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDBJR052Ym5SbGVI UXVaSFZ0Y0VWdWRtbHliMjV0ClpXNTBPalExTmlCRlRsWWdVRUZEUzBGSFJWSXZlWFZ0Ulhod2FY SmxRMkZqYUdVOVltOXZiRG9uVkhKMVpTY0tNakF4TXkweE1pMHkKTVNBeE5qb3lOem94TlNCRVJV SlZSeUJ2ZEc5d2FTNWpiMjUwWlhoMElHTnZiblJsZUhRdVpIVnRjRVZ1ZG1seWIyNXRaVzUwT2pR MQpPQ0JGVGxaSlVrOU9UVVZPVkNCRVZVMVFJQzBnUlU1RUNqSXdNVE10TVRJdE1qRWdNVFk2TWpj Nk1UVWdSRVZDVlVjZ2IzUnZjR2t1ClkyOXVkR1Y0ZENCamIyNTBaWGgwTGw5bGVHVmpkWFJsVFdW MGFHOWtPakV5TXlCVGRHRm5aU0JpYjI5MElFMUZWRWhQUkNCdmRHOXcKYVM1d2JIVm5hVzV6TG05 MGIzQnBMbk41YzNSbGJTNXBibVp2TGxCc2RXZHBiaTVmYVc1cGRBb3lNREV6TFRFeUxUSXhJREUy T2pJMwpPakUxSUVSRlFsVkhJRzkwYjNCcExuQnNkV2RwYm5NdWIzUnZjR2t1YzNsemRHVnRMbWx1 Wm04Z2FXNW1ieTVmYVc1cGREbzBPQ0JUCldWTlVSVTBnU1U1R1QxSk5RVlJKVDA0Z0xTQkNSVWRK VGdveU1ERXpMVEV5TFRJeElERTJPakkzT2pFMUlFUkZRbFZISUc5MGIzQnAKTG5Cc2RXZHBibk11 YjNSdmNHa3VjM2x6ZEdWdExtbHVabThnYVc1bWJ5NWZhVzVwZERvME9TQmxlR1ZqZFhSaFlteGxJ QzlpYVc0dgpjSGwwYUc5dUNqSXdNVE10TVRJdE1qRWdNVFk2TWpjNk1UVWdSRVZDVlVjZ2IzUnZj R2t1Y0d4MVoybHVjeTV2ZEc5d2FTNXplWE4wClpXMHVhVzVtYnlCcGJtWnZMbDlwYm1sME9qVXdJ SEI1ZEdodmJpQXZZbWx1TDNCNWRHaHZiZ295TURFekxURXlMVEl4SURFMk9qSTMKT2pFMUlFUkZR bFZISUc5MGIzQnBMbkJzZFdkcGJuTXViM1J2Y0drdWMzbHpkR1Z0TG1sdVptOGdhVzVtYnk1ZmFX NXBkRG8xTVNCdwpiR0YwWm05eWJTQnNhVzUxZURJS01qQXhNeTB4TWkweU1TQXhOam95TnpveE5T QkVSVUpWUnlCdmRHOXdhUzV3YkhWbmFXNXpMbTkwCmIzQnBMbk41YzNSbGJTNXBibVp2SUdsdVpt OHVYMmx1YVhRNk5USWdaR2x6ZEhKcFluVjBhVzl1SUNnblJtVmtiM0poSnl3Z0p6SXcKSnl3Z0ow aGxhWE5sYm1KMVp5Y3BDakl3TVRNdE1USXRNakVnTVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0dr dWNHeDFaMmx1Y3k1dgpkRzl3YVM1emVYTjBaVzB1YVc1bWJ5QnBibVp2TGw5cGJtbDBPalV6SUdo dmMzUWdKMlJvWTNBdE1TMHpMblJzZGk1eVpXUm9ZWFF1ClkyOXRKd295TURFekxURXlMVEl4SURF Mk9qSTNPakUxSUVSRlFsVkhJRzkwYjNCcExuQnNkV2RwYm5NdWIzUnZjR2t1YzNsemRHVnQKTG1s dVptOGdhVzVtYnk1ZmFXNXBkRG8xT1NCMWFXUWdNVEF3TUNCbGRXbGtJREV3TURBZ1oybGtJREV3 TURBZ1pXZHBaQ0F4TURBdwpDakl3TVRNdE1USXRNakVnTVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2 Y0drdWNHeDFaMmx1Y3k1dmRHOXdhUzV6ZVhOMFpXMHVhVzVtCmJ5QnBibVp2TGw5cGJtbDBPall4 SUZOWlUxUkZUU0JKVGtaUFVrMUJWRWxQVGlBdElFVk9SQW95TURFekxURXlMVEl4SURFMk9qSTMK T2pFMUlFbE9SazhnYjNSdmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMExuSjFibE5sY1hWbGJtTmxP ak00TUNCVGRHRm5aVG9nU1c1cApkR2xoYkdsNmFXNW5Dakl3TVRNdE1USXRNakVnTVRZNk1qYzZN VFVnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwCkxuSjFibE5sY1hWbGJtTmxP ak00TkNCVFZFRkhSU0JwYm1sMENqSXdNVE10TVRJdE1qRWdNVFk2TWpjNk1UVWdSRVZDVlVjZ2Iz UnYKY0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTGw5bGVHVmpkWFJsVFdWMGFHOWtPakV5TXlCVGRH Rm5aU0JwYm1sMElFMUZWRWhQUkNCdgpkRzl3YVM1d2JIVm5hVzV6TG05MGIzQnBMbU52Y21VdVky OXVabWxuTGxCc2RXZHBiaTVmYVc1cGRBb3lNREV6TFRFeUxUSXhJREUyCk9qSTNPakUxSUVSRlFs VkhJRzkwYjNCcExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdSVzUyYVhKdmJtMWxiblE2TkRR eElFVk8KVmtsU1QwNU5SVTVVSUVSVlRWQWdMU0JDUlVkSlRnb3lNREV6TFRFeUxUSXhJREUyT2pJ M09qRTFJRVJGUWxWSElHOTBiM0JwTG1OdgpiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdSVzUyYVhK dmJtMWxiblE2TkRVMklFVk9WaUJEVDFKRkwyTnZibVpwWjBacGJHVk9ZVzFsClBYTjBjam9uTDJW MFl5OXZkRzl3YVM1amIyNW1Kd295TURFekxURXlMVEl4SURFMk9qSTNPakUxSUVSRlFsVkhJRzkw YjNCcExtTnYKYm5SbGVIUWdZMjl1ZEdWNGRDNWtkVzF3Ulc1MmFYSnZibTFsYm5RNk5EVTRJRVZP VmtsU1QwNU5SVTVVSUVSVlRWQWdMU0JGVGtRSwpNakF4TXkweE1pMHlNU0F4TmpveU56b3hOU0JF UlVKVlJ5QnZkRzl3YVM1amIyNTBaWGgwSUdOdmJuUmxlSFF1WDJWNFpXTjFkR1ZOClpYUm9iMlE2 TVRJeklGTjBZV2RsSUdsdWFYUWdUVVZVU0U5RUlHOTBiM0JwTG5Cc2RXZHBibk11YjNSdmNHa3Vj R0ZqYTJGblpYSnoKTG5sMWJYQmhZMnRoWjJWeUxsQnNkV2RwYmk1ZmFXNXBkQW95TURFekxURXlM VEl4SURFMk9qSTNPakUxSUVSRlFsVkhJRzkwYjNCcApMbU52Ym5SbGVIUWdZMjl1ZEdWNGRDNWZa WGhsWTNWMFpVMWxkR2h2WkRveE1qa2dZMjl1WkdsMGFXOXVJRVpoYkhObENqSXdNVE10Ck1USXRN akVnTVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTGw5bGVH VmpkWFJsVFdWMGFHOWsKT2pFeU15QlRkR0ZuWlNCcGJtbDBJRTFGVkVoUFJDQnZkRzl3YVM1d2JI Vm5hVzV6TG05MGIzQnBMbk41YzNSbGJTNWpiMjF0WVc1awpMbEJzZFdkcGJpNWZhVzVwZEFveU1E RXpMVEV5TFRJeElERTJPakkzT2pFMUlFUkZRbFZISUc5MGIzQnBMbU52Ym5SbGVIUWdZMjl1CmRH VjRkQzVrZFcxd1JXNTJhWEp2Ym0xbGJuUTZORFF4SUVWT1ZrbFNUMDVOUlU1VUlFUlZUVkFnTFNC Q1JVZEpUZ295TURFekxURXkKTFRJeElERTJPakkzT2pFMUlFUkZRbFZISUc5MGIzQnBMbU52Ym5S bGVIUWdZMjl1ZEdWNGRDNWtkVzF3Ulc1MmFYSnZibTFsYm5RNgpORFUySUVWT1ZpQlRXVk5VUlUw dlkyOXRiV0Z1WkZCaGRHZzljM1J5T2ljdmRYTnlMMnh2WTJGc0wzTmlhVzQ2TDNWemNpOXNiMk5o CmJDOWlhVzQ2TDNWemNpOXpZbWx1T2k5MWMzSXZZbWx1T2k5elltbHVPaTlpYVc0bkNqSXdNVE10 TVRJdE1qRWdNVFk2TWpjNk1UVWcKUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgw TG1SMWJYQkZiblpwY205dWJXVnVkRG8wTlRnZ1JVNVdTVkpQVGsxRgpUbFFnUkZWTlVDQXRJRVZP UkFveU1ERXpMVEV5TFRJeElERTJPakkzT2pFMUlFUkZRbFZISUc5MGIzQnBMbU52Ym5SbGVIUWdZ Mjl1CmRHVjRkQzVmWlhobFkzVjBaVTFsZEdodlpEb3hNak1nVTNSaFoyVWdhVzVwZENCTlJWUklU MFFnYjNSdmNHa3VjR3gxWjJsdWN5NXYKZEc5d2FTNWpiM0psTG5SeVlXNXpZV04wYVc5dUxsQnNk V2RwYmk1ZmFXNXBkQW95TURFekxURXlMVEl4SURFMk9qSTNPakUxSUVSRgpRbFZISUc5MGIzQnBM bU52Ym5SbGVIUWdZMjl1ZEdWNGRDNWtkVzF3Ulc1MmFYSnZibTFsYm5RNk5EUXhJRVZPVmtsU1Qw NU5SVTVVCklFUlZUVkFnTFNCQ1JVZEpUZ295TURFekxURXlMVEl4SURFMk9qSTNPakUxSUVSRlFs VkhJRzkwYjNCcExtTnZiblJsZUhRZ1kyOXUKZEdWNGRDNWtkVzF3Ulc1MmFYSnZibTFsYm5RNk5E VTJJRVZPVmlCRFQxSkZMMmx1ZEdWeWJtRnNVR0ZqYTJGblpWUnlZVzV6WVdOMAphVzl1UFZSeVlX NXpZV04wYVc5dU9pZDBjbUZ1YzJGamRHbHZiaWNLTWpBeE15MHhNaTB5TVNBeE5qb3lOem94TlNC RVJVSlZSeUJ2CmRHOXdhUzVqYjI1MFpYaDBJR052Ym5SbGVIUXVaSFZ0Y0VWdWRtbHliMjV0Wlc1 ME9qUTFOaUJGVGxZZ1EwOVNSUzl0WVdsdVZISmgKYm5OaFkzUnBiMjQ5VkhKaGJuTmhZM1JwYjI0 NkozUnlZVzV6WVdOMGFXOXVKd295TURFekxURXlMVEl4SURFMk9qSTNPakUxSUVSRgpRbFZISUc5 MGIzQnBMbU52Ym5SbGVIUWdZMjl1ZEdWNGRDNWtkVzF3Ulc1MmFYSnZibTFsYm5RNk5EVTJJRVZP VmlCRFQxSkZMMjF2ClpHbG1hV1ZrUm1sc1pYTTliR2x6ZERvblcxMG5Dakl3TVRNdE1USXRNakVn TVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdVkyOXUKZEdWNGRDQmpiMjUwWlhoMExtUjFiWEJG Ym5acGNtOXViV1Z1ZERvME5UZ2dSVTVXU1ZKUFRrMUZUbFFnUkZWTlVDQXRJRVZPUkFveQpNREV6 TFRFeUxUSXhJREUyT2pJM09qRTFJRVJGUWxWSElHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRk QzVmWlhobFkzVjBaVTFsCmRHaHZaRG94TWpNZ1UzUmhaMlVnYVc1cGRDQk5SVlJJVDBRZ2IzUnZj R2t1Y0d4MVoybHVjeTV2ZEc5d2FTNWthV0ZzYjJjdVkyeHAKTGxCc2RXZHBiaTVmYVc1cGRBb3lN REV6TFRFeUxUSXhJREUyT2pJM09qRTFJRVJGUWxWSElHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dQpk R1Y0ZEM1a2RXMXdSVzUyYVhKdmJtMWxiblE2TkRReElFVk9Wa2xTVDA1TlJVNVVJRVJWVFZBZ0xT QkNSVWRKVGdveU1ERXpMVEV5CkxUSXhJREUyT2pJM09qRTFJRVJGUWxWSElHOTBiM0JwTG1OdmJu UmxlSFFnWTI5dWRHVjRkQzVrZFcxd1JXNTJhWEp2Ym0xbGJuUTYKTkRVMklFVk9WaUJFU1VGTVQw Y3ZZMnhwVm1WeWMybHZiajFwYm5RNkp6RW5Dakl3TVRNdE1USXRNakVnTVRZNk1qYzZNVFVnUkVW QwpWVWNnYjNSdmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMExtUjFiWEJGYm5acGNtOXViV1Z1ZERv ME5UWWdSVTVXSUVSSlFVeFBSeTlqCmRYTjBiMjFwZW1GMGFXOXVQV0p2YjJ3NkowWmhiSE5sSndv eU1ERXpMVEV5TFRJeElERTJPakkzT2pFMUlFUkZRbFZISUc5MGIzQnAKTG1OdmJuUmxlSFFnWTI5 dWRHVjRkQzVrZFcxd1JXNTJhWEp2Ym0xbGJuUTZORFU0SUVWT1ZrbFNUMDVOUlU1VUlFUlZUVkFn TFNCRgpUa1FLTWpBeE15MHhNaTB5TVNBeE5qb3lOem94TlNCRVJVSlZSeUJ2ZEc5d2FTNWpiMjUw WlhoMElHTnZiblJsZUhRdVgyVjRaV04xCmRHVk5aWFJvYjJRNk1USXpJRk4wWVdkbElHbHVhWFFn VFVWVVNFOUVJRzkwYjNCcExuQnNkV2RwYm5NdWIzUnZjR2t1Ym1WMGQyOXkKYXk1bWFYSmxkMkZz YkdRdVVHeDFaMmx1TGw5cGJtbDBDakl3TVRNdE1USXRNakVnTVRZNk1qYzZNVFVnUkVWQ1ZVY2di M1J2Y0drdQpZMjl1ZEdWNGRDQmpiMjUwWlhoMExtUjFiWEJGYm5acGNtOXViV1Z1ZERvME5ERWdS VTVXU1ZKUFRrMUZUbFFnUkZWTlVDQXRJRUpGClIwbE9Dakl3TVRNdE1USXRNakVnTVRZNk1qYzZN VFVnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTG1SMWJYQkYKYm5acGNtOXVi V1Z1ZERvME5UWWdSVTVXSUU1RlZGZFBVa3N2Wm1seVpYZGhiR3hrUVhaaGFXeGhZbXhsUFdKdmIy dzZKMFpoYkhObApKd295TURFekxURXlMVEl4SURFMk9qSTNPakUxSUVSRlFsVkhJRzkwYjNCcExt TnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdSVzUyCmFYSnZibTFsYm5RNk5EVTJJRVZPVmlCT1JW UlhUMUpMTDJacGNtVjNZV3hzWkVScGMyRmliR1ZUWlhKMmFXTmxjejFzYVhOME9pZGIKWFNjS01q QXhNeTB4TWkweU1TQXhOam95TnpveE5TQkVSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDBJR052Ym5S bGVIUXVaSFZ0Y0VWdQpkbWx5YjI1dFpXNTBPalExTmlCRlRsWWdUa1ZVVjA5U1N5OW1hWEpsZDJG c2JHUkZibUZpYkdVOVltOXZiRG9uUm1Gc2MyVW5Dakl3Ck1UTXRNVEl0TWpFZ01UWTZNamM2TVRV Z1JFVkNWVWNnYjNSdmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMExtUjFiWEJGYm5acGNtOXUKYldW dWREbzBOVGdnUlU1V1NWSlBUazFGVGxRZ1JGVk5VQ0F0SUVWT1JBb3lNREV6TFRFeUxUSXhJREUy T2pJM09qRTFJRVJGUWxWSApJRzkwYjNCcExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1ZlpYaGxZM1Yw WlUxbGRHaHZaRG94TWpNZ1UzUmhaMlVnYVc1cGRDQk5SVlJJClQwUWdiM1J2Y0drdWNHeDFaMmx1 Y3k1dmRHOXdhUzV1WlhSM2IzSnJMbWx3ZEdGaWJHVnpMbEJzZFdkcGJpNWZhVzVwZEFveU1ERXoK TFRFeUxUSXhJREUyT2pJM09qRTFJRVJGUWxWSElHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRk QzVrZFcxd1JXNTJhWEp2Ym0xbApiblE2TkRReElFVk9Wa2xTVDA1TlJVNVVJRVJWVFZBZ0xTQkNS VWRKVGdveU1ERXpMVEV5TFRJeElERTJPakkzT2pFMUlFUkZRbFZICklHOTBiM0JwTG1OdmJuUmxl SFFnWTI5dWRHVjRkQzVrZFcxd1JXNTJhWEp2Ym0xbGJuUTZORFUySUVWT1ZpQk9SVlJYVDFKTEwy bHcKZEdGaWJHVnpSVzVoWW14bFBXSnZiMnc2SjBaaGJITmxKd295TURFekxURXlMVEl4SURFMk9q STNPakUxSUVSRlFsVkhJRzkwYjNCcApMbU52Ym5SbGVIUWdZMjl1ZEdWNGRDNWtkVzF3Ulc1MmFY SnZibTFsYm5RNk5EVTRJRVZPVmtsU1QwNU5SVTVVSUVSVlRWQWdMU0JGClRrUUtNakF4TXkweE1p MHlNU0F4TmpveU56b3hOU0JFUlVKVlJ5QnZkRzl3YVM1amIyNTBaWGgwSUdOdmJuUmxlSFF1WDJW NFpXTjEKZEdWTlpYUm9iMlE2TVRJeklGTjBZV2RsSUdsdWFYUWdUVVZVU0U5RUlHOTBiM0JwTG5C c2RXZHBibk11YjNSdmNHa3VibVYwZDI5eQpheTV6YzJndVVHeDFaMmx1TGw5cGJtbDBDakl3TVRN dE1USXRNakVnTVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0CmRDQmpiMjUwWlho MExtUjFiWEJGYm5acGNtOXViV1Z1ZERvME5ERWdSVTVXU1ZKUFRrMUZUbFFnUkZWTlVDQXRJRUpG UjBsT0NqSXcKTVRNdE1USXRNakVnTVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0 ZENCamIyNTBaWGgwTG1SMWJYQkZiblpwY205dQpiV1Z1ZERvME5UWWdSVTVXSUU1RlZGZFBVa3N2 YzNOb1JXNWhZbXhsUFdKdmIydzZKMFpoYkhObEp3b3lNREV6TFRFeUxUSXhJREUyCk9qSTNPakUx SUVSRlFsVkhJRzkwYjNCcExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdSVzUyYVhKdmJtMWxi blE2TkRVMklFVk8KVmlCT1JWUlhUMUpMTDNOemFGVnpaWEk5YzNSeU9pY25Dakl3TVRNdE1USXRN akVnTVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdQpZMjl1ZEdWNGRDQmpiMjUwWlhoMExtUjFi WEJGYm5acGNtOXViV1Z1ZERvME5UZ2dSVTVXU1ZKUFRrMUZUbFFnUkZWTlVDQXRJRVZPClJBb3lN REV6TFRFeUxUSXhJREUyT2pJM09qRTFJRVJGUWxWSElHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRH VjRkQzVmWlhobFkzVjAKWlUxbGRHaHZaRG94TWpNZ1UzUmhaMlVnYVc1cGRDQk5SVlJJVDBRZ2Iz UnZjR2t1Y0d4MVoybHVjeTV2ZEc5d2FTNXplWE4wWlcwdQpZMnh2WTJzdVVHeDFaMmx1TGw5cGJt bDBDakl3TVRNdE1USXRNakVnTVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0CmRD QmpiMjUwWlhoMExtUjFiWEJGYm5acGNtOXViV1Z1ZERvME5ERWdSVTVXU1ZKUFRrMUZUbFFnUkZW TlVDQXRJRUpGUjBsT0NqSXcKTVRNdE1USXRNakVnTVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0dr dVkyOXVkR1Y0ZENCamIyNTBaWGgwTG1SMWJYQkZiblpwY205dQpiV1Z1ZERvME5UWWdSVTVXSUZO WlUxUkZUUzlqYkc5amEwMWhlRWRoY0QxcGJuUTZKelVuQ2pJd01UTXRNVEl0TWpFZ01UWTZNamM2 Ck1UVWdSRVZDVlVjZ2IzUnZjR2t1WTI5dWRHVjRkQ0JqYjI1MFpYaDBMbVIxYlhCRmJuWnBjbTl1 YldWdWREbzBOVFlnUlU1V0lGTloKVTFSRlRTOWpiRzlqYTFObGREMWliMjlzT2lkR1lXeHpaU2NL TWpBeE15MHhNaTB5TVNBeE5qb3lOem94TlNCRVJVSlZSeUJ2ZEc5dwphUzVqYjI1MFpYaDBJR052 Ym5SbGVIUXVaSFZ0Y0VWdWRtbHliMjV0Wlc1ME9qUTFPQ0JGVGxaSlVrOU9UVVZPVkNCRVZVMVFJ QzBnClJVNUVDakl3TVRNdE1USXRNakVnTVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdVkyOXVk R1Y0ZENCamIyNTBaWGgwTGw5bGVHVmoKZFhSbFRXVjBhRzlrT2pFeU15QlRkR0ZuWlNCcGJtbDBJ RTFGVkVoUFJDQnZkRzl3YVM1d2JIVm5hVzV6TG05MGIzQnBMbk41YzNSbApiUzV5WldKdmIzUXVV R3gxWjJsdUxsOXBibWwwQ2pJd01UTXRNVEl0TWpFZ01UWTZNamM2TVRVZ1JFVkNWVWNnYjNSdmNH a3VZMjl1CmRHVjRkQ0JqYjI1MFpYaDBMbVIxYlhCRmJuWnBjbTl1YldWdWREbzBOREVnUlU1V1NW SlBUazFGVGxRZ1JGVk5VQ0F0SUVKRlIwbE8KQ2pJd01UTXRNVEl0TWpFZ01UWTZNamM2TVRVZ1JF VkNWVWNnYjNSdmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMExtUjFiWEJGYm5acApjbTl1YldWdWRE bzBOVFlnUlU1V0lGTlpVMVJGVFM5eVpXSnZiM1E5WW05dmJEb25SbUZzYzJVbkNqSXdNVE10TVRJ dE1qRWdNVFk2Ck1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTG1S MWJYQkZiblpwY205dWJXVnVkRG8wTlRZZ1JVNVcKSUZOWlUxUkZUUzl5WldKdmIzUkJiR3h2ZHox aWIyOXNPaWRVY25WbEp3b3lNREV6TFRFeUxUSXhJREUyT2pJM09qRTFJRVJGUWxWSApJRzkwYjNC cExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdSVzUyYVhKdmJtMWxiblE2TkRVMklFVk9WaUJU V1ZOVVJVMHZjbVZpCmIyOTBSR1ZtWlhKVWFXMWxQV2x1ZERvbk1UQW5Dakl3TVRNdE1USXRNakVn TVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdVkyOXUKZEdWNGRDQmpiMjUwWlhoMExtUjFiWEJG Ym5acGNtOXViV1Z1ZERvME5UZ2dSVTVXU1ZKUFRrMUZUbFFnUkZWTlVDQXRJRVZPUkFveQpNREV6 TFRFeUxUSXhJREUyT2pJM09qRTFJRVJGUWxWSElHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRk QzVmWlhobFkzVjBaVTFsCmRHaHZaRG94TWpNZ1UzUmhaMlVnYVc1cGRDQk5SVlJJVDBRZ2IzUnZj R2t1Y0d4MVoybHVjeTV2ZG1seWRGOWxibWRwYm1WZmMyVjAKZFhBdWQyVmljMjlqYTJWMFgzQnli M2g1TG1OdmJtWnBaeTVRYkhWbmFXNHVYMmx1YVhRS01qQXhNeTB4TWkweU1TQXhOam95TnpveApO U0JFUlVKVlJ5QnZkRzl3YVM1amIyNTBaWGgwSUdOdmJuUmxlSFF1WkhWdGNFVnVkbWx5YjI1dFpX NTBPalEwTVNCRlRsWkpVazlPClRVVk9WQ0JFVlUxUUlDMGdRa1ZIU1U0S01qQXhNeTB4TWkweU1T QXhOam95TnpveE5TQkVSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDAKSUdOdmJuUmxlSFF1WkhWdGNF VnVkbWx5YjI1dFpXNTBPalExTmlCRlRsWWdUMVpGVTBWVVZWQmZRMDlPUmtsSEwzZGxZbk52WTJ0 bApkRkJ5YjNoNVVHOXlkRDFwYm5RNkp6WXhNREFuQ2pJd01UTXRNVEl0TWpFZ01UWTZNamM2TVRV Z1JFVkNWVWNnYjNSdmNHa3VZMjl1CmRHVjRkQ0JqYjI1MFpYaDBMbVIxYlhCRmJuWnBjbTl1YldW dWREbzBOVGdnUlU1V1NWSlBUazFGVGxRZ1JGVk5VQ0F0SUVWT1JBb3kKTURFekxURXlMVEl4SURF Mk9qSTNPakUxSUVsT1JrOGdiM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTG5KMWJsTmxjWFZs Ym1ObApPak00TUNCVGRHRm5aVG9nUlc1MmFYSnZibTFsYm5RZ2MyVjBkWEFLTWpBeE15MHhNaTB5 TVNBeE5qb3lOem94TlNCRVJVSlZSeUJ2CmRHOXdhUzVqYjI1MFpYaDBJR052Ym5SbGVIUXVjblZ1 VTJWeGRXVnVZMlU2TXpnMElGTlVRVWRGSUhObGRIVndDakl3TVRNdE1USXQKTWpFZ01UWTZNamM2 TVRVZ1JFVkNWVWNnYjNSdmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMExsOWxlR1ZqZFhSbFRXVjBh RzlrT2pFeQpNeUJUZEdGblpTQnpaWFIxY0NCTlJWUklUMFFnYjNSdmNHa3VjR3gxWjJsdWN5NXZk Rzl3YVM1amIzSmxMbU52Ym1acFp5NVFiSFZuCmFXNHVYM0J2YzNSZmFXNXBkQW95TURFekxURXlM VEl4SURFMk9qSTNPakUxSUVSRlFsVkhJRzkwYjNCcExuQnNkV2RwYm5NdWIzUnYKY0drdVpHbGhi RzluTG1oMWJXRnVJR1JwWVd4dlp5NWZYMnh2WjFOMGNtbHVaem95TVRVZ1JFbEJURTlIT2xORlRr UWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJRU52Ym1acFozVnlZWFJwYjI0Z1ptbHNaWE02SUZ0ZENq SXdNVE10TVRJdE1qRWdNVFk2TWpjNk1UVWdSRVZDClZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIy NTBaWGgwTGw5bGVHVmpkWFJsVFdWMGFHOWtPakV5TXlCVGRHRm5aU0J6WlhSMWNDQk4KUlZSSVQw UWdiM1J2Y0drdWNHeDFaMmx1Y3k1dmRHOXdhUzVqYjNKbExteHZaeTVRYkhWbmFXNHVYM05sZEhW d0NqSXdNVE10TVRJdApNakVnTVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdWNHeDFaMmx1Y3k1 dmRHOXdhUzVrYVdGc2IyY3VhSFZ0WVc0Z1pHbGhiRzluCkxsOWZiRzluVTNSeWFXNW5Pakl4TlNC RVNVRk1UMGM2VTBWT1JDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1RHOW5JR1pwYkdVNklDOTAKYlhB dmIzUnZjR2t0TWpBeE16RXlNakV4TmpJM01USXViRzluQ2pJd01UTXRNVEl0TWpFZ01UWTZNamM2 TVRVZ1JFVkNWVWNnYjNSdgpjR2t1WTI5dWRHVjRkQ0JqYjI1MFpYaDBMbDlsZUdWamRYUmxUV1Yw YUc5a09qRXlNeUJUZEdGblpTQnpaWFIxY0NCTlJWUklUMFFnCmIzUnZjR2t1Y0d4MVoybHVjeTV2 ZEc5d2FTNWpiM0psTG0xcGMyTXVVR3gxWjJsdUxsOXpaWFIxY0FveU1ERXpMVEV5TFRJeElERTIK T2pJM09qRTFJRVJGUWxWSElHOTBiM0JwTG5Cc2RXZHBibk11YjNSdmNHa3VaR2xoYkc5bkxtaDFi V0Z1SUdScFlXeHZaeTVmWDJ4dgpaMU4wY21sdVp6b3lNVFVnUkVsQlRFOUhPbE5GVGtRZ0lDQWdJ Q0FnSUNBZ0lDQWdJQ0FnSUZabGNuTnBiMjQ2SUc5MGIzQnBMVEV1Ck1pNHdYMjFoYzNSbGNpQW9i M1J2Y0drdE1TNHlMakF0TUM0d0xtMWhjM1JsY2k0eU1ERXpNVEF3Tnk1bmFYUTJaamhoWXpaa0xt WmoKTVRrcENqSXdNVE10TVRJdE1qRWdNVFk2TWpjNk1UVWdSRVZDVlVjZ2IzUnZjR2t1WTI5dWRH VjRkQ0JqYjI1MFpYaDBMbDlsZUdWagpkWFJsVFdWMGFHOWtPakV5TXlCVGRHRm5aU0J6WlhSMWND Qk5SVlJJVDBRZ2IzUnZjR2t1Y0d4MVoybHVjeTV2ZEc5d2FTNXdZV05yCllXZGxjbk11ZVhWdGNH RmphMkZuWlhJdVVHeDFaMmx1TGw5elpYUjFjQW95TURFekxURXlMVEl4SURFMk9qSTNPakUxSUVS RlFsVkgKSUc5MGIzQnBMbU52Ym5SbGVIUWdZMjl1ZEdWNGRDNWZaWGhsWTNWMFpVMWxkR2h2WkRv eE1qa2dZMjl1WkdsMGFXOXVJRVpoYkhObApDakl3TVRNdE1USXRNakVnTVRZNk1qYzZNVFVnUkVW Q1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTGw5bGVHVmpkWFJsClRXVjBhRzlrT2pF eU15QlRkR0ZuWlNCelpYUjFjQ0JOUlZSSVQwUWdiM1J2Y0drdWNHeDFaMmx1Y3k1dmRHOXdhUzV1 WlhSM2IzSnIKTG1acGNtVjNZV3hzWkM1UWJIVm5hVzR1WDNObGRIVndDakl3TVRNdE1USXRNakVn TVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdQpZMjl1ZEdWNGRDQmpiMjUwWlhoMExsOWxlR1Zq ZFhSbFRXVjBhRzlrT2pFeU9TQmpiMjVrYVhScGIyNGdSbUZzYzJVS01qQXhNeTB4Ck1pMHlNU0F4 TmpveU56b3hOU0JFUlVKVlJ5QnZkRzl3YVM1amIyNTBaWGgwSUdOdmJuUmxlSFF1WDJWNFpXTjFk R1ZOWlhSb2IyUTYKTVRJeklGTjBZV2RsSUhObGRIVndJRTFGVkVoUFJDQnZkRzl3YVM1d2JIVm5h VzV6TG05MGIzQnBMbTVsZEhkdmNtc3VhRzl6ZEc1aApiV1V1VUd4MVoybHVMbDl6WlhSMWNBb3lN REV6TFRFeUxUSXhJREUyT2pJM09qRTFJRVJGUWxWSElHOTBiM0JwTG1OdmJuUmxlSFFnClkyOXVk R1Y0ZEM1a2RXMXdSVzUyYVhKdmJtMWxiblE2TkRReElFVk9Wa2xTVDA1TlJVNVVJRVJWVFZBZ0xT QkNSVWRKVGdveU1ERXoKTFRFeUxUSXhJREUyT2pJM09qRTFJRVJGUWxWSElHOTBiM0JwTG1OdmJu UmxlSFFnWTI5dWRHVjRkQzVrZFcxd1JXNTJhWEp2Ym0xbApiblE2TkRVNElFVk9Wa2xTVDA1TlJV NVVJRVJWVFZBZ0xTQkZUa1FLTWpBeE15MHhNaTB5TVNBeE5qb3lOem94TlNCRVJVSlZSeUJ2CmRH OXdhUzVqYjI1MFpYaDBJR052Ym5SbGVIUXVYMlY0WldOMWRHVk5aWFJvYjJRNk1USXpJRk4wWVdk bElITmxkSFZ3SUUxRlZFaFAKUkNCdmRHOXdhUzV3YkhWbmFXNXpMbTkwYjNCcExtNWxkSGR2Y21z dWMzTm9MbEJzZFdkcGJpNWZjMlYwZFhBS01qQXhNeTB4TWkweQpNU0F4TmpveU56b3hOU0JFUlVK VlJ5QnZkRzl3YVM1amIyNTBaWGgwSUdOdmJuUmxlSFF1WkhWdGNFVnVkbWx5YjI1dFpXNTBPalEw Ck1TQkZUbFpKVWs5T1RVVk9WQ0JFVlUxUUlDMGdRa1ZIU1U0S01qQXhNeTB4TWkweU1TQXhOam95 TnpveE5TQkVSVUpWUnlCdmRHOXcKYVM1amIyNTBaWGgwSUdOdmJuUmxlSFF1WkhWdGNFVnVkbWx5 YjI1dFpXNTBPalExT0NCRlRsWkpVazlPVFVWT1ZDQkVWVTFRSUMwZwpSVTVFQ2pJd01UTXRNVEl0 TWpFZ01UWTZNamM2TVRVZ1JFVkNWVWNnYjNSdmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMExsOWxl R1ZqCmRYUmxUV1YwYUc5a09qRXlNeUJUZEdGblpTQnpaWFIxY0NCTlJWUklUMFFnYjNSdmNHa3Vj R3gxWjJsdWN5NXZkRzl3YVM1elpYSjIKYVdObGN5NXZjR1Z1Y21NdVVHeDFaMmx1TGw5elpYUjFj QW95TURFekxURXlMVEl4SURFMk9qSTNPakUxSUVSRlFsVkhJRzkwYjNCcApMbU52Ym5SbGVIUWdZ Mjl1ZEdWNGRDNWtkVzF3Ulc1MmFYSnZibTFsYm5RNk5EUXhJRVZPVmtsU1QwNU5SVTVVSUVSVlRW QWdMU0JDClJVZEpUZ295TURFekxURXlMVEl4SURFMk9qSTNPakUxSUVSRlFsVkhJRzkwYjNCcExt TnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXcKUlc1MmFYSnZibTFsYm5RNk5EVTRJRVZPVmtsU1Qw NU5SVTVVSUVSVlRWQWdMU0JGVGtRS01qQXhNeTB4TWkweU1TQXhOam95TnpveApOU0JFUlVKVlJ5 QnZkRzl3YVM1amIyNTBaWGgwSUdOdmJuUmxlSFF1WDJWNFpXTjFkR1ZOWlhSb2IyUTZNVEl6SUZO MFlXZGxJSE5sCmRIVndJRTFGVkVoUFJDQnZkRzl3YVM1d2JIVm5hVzV6TG05MGIzQnBMbk5sY25a cFkyVnpMbkpvWld3dVVHeDFaMmx1TGw5elpYUjEKY0FveU1ERXpMVEV5TFRJeElERTJPakkzT2pF MUlFUkZRbFZISUc5MGIzQnBMbU52Ym5SbGVIUWdZMjl1ZEdWNGRDNWtkVzF3Ulc1MgphWEp2Ym0x bGJuUTZORFF4SUVWT1ZrbFNUMDVOUlU1VUlFUlZUVkFnTFNCQ1JVZEpUZ295TURFekxURXlMVEl4 SURFMk9qSTNPakUxCklFUkZRbFZISUc5MGIzQnBMbU52Ym5SbGVIUWdZMjl1ZEdWNGRDNWtkVzF3 Ulc1MmFYSnZibTFsYm5RNk5EVTRJRVZPVmtsU1QwNU4KUlU1VUlFUlZUVkFnTFNCRlRrUUtNakF4 TXkweE1pMHlNU0F4TmpveU56b3hOU0JFUlVKVlJ5QnZkRzl3YVM1amIyNTBaWGgwSUdOdgpiblJs ZUhRdVgyVjRaV04xZEdWTlpYUm9iMlE2TVRJeklGTjBZV2RsSUhObGRIVndJRTFGVkVoUFJDQnZk Rzl3YVM1d2JIVm5hVzV6CkxtOTBiM0JwTG5ObGNuWnBZMlZ6TG5ONWMzUmxiV1F1VUd4MVoybHVM bDl6WlhSMWNBb3lNREV6TFRFeUxUSXhJREUyT2pJM09qRTEKSUVSRlFsVkhJRzkwYjNCcExtTnZi blJsZUhRZ1kyOXVkR1Y0ZEM1ZlpYaGxZM1YwWlUxbGRHaHZaRG94TWpNZ1UzUmhaMlVnYzJWMApk WEFnVFVWVVNFOUVJRzkwYjNCcExuQnNkV2RwYm5NdWIzUnZjR2t1YzNsemRHVnRMbU5zYjJOckxs QnNkV2RwYmk1ZmMyVjBkWEFLCk1qQXhNeTB4TWkweU1TQXhOam95TnpveE5TQkVSVUpWUnlCdmRH OXdhUzVqYjI1MFpYaDBJR052Ym5SbGVIUXVaSFZ0Y0VWdWRtbHkKYjI1dFpXNTBPalEwTVNCRlRs WkpVazlPVFVWT1ZDQkVWVTFRSUMwZ1FrVkhTVTRLTWpBeE15MHhNaTB5TVNBeE5qb3lOem94TlNC RQpSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDBJR052Ym5SbGVIUXVaSFZ0Y0VWdWRtbHliMjV0Wlc1 ME9qUTFPQ0JGVGxaSlVrOU9UVVZPClZDQkVWVTFRSUMwZ1JVNUVDakl3TVRNdE1USXRNakVnTVRZ Nk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTAKWlhoMExsOWxlR1ZqZFhS bFRXVjBhRzlrT2pFeU15QlRkR0ZuWlNCelpYUjFjQ0JOUlZSSVQwUWdiM1J2Y0drdWNHeDFaMmx1 Y3k1dgpkRzl3YVM1emVYTjBaVzB1Y21WaWIyOTBMbEJzZFdkcGJpNWZjMlYwZFhBS01qQXhNeTB4 TWkweU1TQXhOam95TnpveE5TQkVSVUpWClJ5QnZkRzl3YVM1amIyNTBaWGgwSUdOdmJuUmxlSFF1 WkhWdGNFVnVkbWx5YjI1dFpXNTBPalEwTVNCRlRsWkpVazlPVFVWT1ZDQkUKVlUxUUlDMGdRa1ZI U1U0S01qQXhNeTB4TWkweU1TQXhOam95TnpveE5TQkVSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDBJ R052Ym5SbAplSFF1WkhWdGNFVnVkbWx5YjI1dFpXNTBPalExT0NCRlRsWkpVazlPVFVWT1ZDQkVW VTFRSUMwZ1JVNUVDakl3TVRNdE1USXRNakVnCk1UWTZNamM2TVRVZ1NVNUdUeUJ2ZEc5d2FTNWpi MjUwWlhoMElHTnZiblJsZUhRdWNuVnVVMlZ4ZFdWdVkyVTZNemd3SUZOMFlXZGwKT2lCRmJuWnBj bTl1YldWdWRDQndZV05yWVdkbGN5QnpaWFIxY0FveU1ERXpMVEV5TFRJeElERTJPakkzT2pFMUlF UkZRbFZISUc5MApiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzV5ZFc1VFpYRjFaVzVqWlRvek9E UWdVMVJCUjBVZ2FXNTBaWEp1WVd4ZmNHRmphMkZuClpYTUtNakF4TXkweE1pMHlNU0F4TmpveU56 b3hOU0JFUlVKVlJ5QnZkRzl3YVM1amIyNTBaWGgwSUdOdmJuUmxlSFF1WDJWNFpXTjEKZEdWTlpY Um9iMlE2TVRJeklGTjBZV2RsSUdsdWRHVnlibUZzWDNCaFkydGhaMlZ6SUUxRlZFaFBSQ0J2ZEc5 d2FTNXdiSFZuYVc1egpMbTkwYjNCcExtTnZjbVV1ZEhKaGJuTmhZM1JwYjI0dVVHeDFaMmx1TGw5 d2NtVmZjSEpsY0dGeVpRb3lNREV6TFRFeUxUSXhJREUyCk9qSTNPakUxSUVSRlFsVkhJRzkwYjNC cExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1ZlpYaGxZM1YwWlUxbGRHaHZaRG94TWpNZ1UzUmgKWjJV Z2FXNTBaWEp1WVd4ZmNHRmphMkZuWlhNZ1RVVlVTRTlFSUc5MGIzQnBMbkJzZFdkcGJuTXViM1J2 Y0drdWJtVjBkMjl5YXk1bwpiM04wYm1GdFpTNVFiSFZuYVc0dVgybHVkR1Z5Ym1Gc1gzQmhZMnRo WjJWekNqSXdNVE10TVRJdE1qRWdNVFk2TWpjNk1UVWdSRVZDClZVY2diM1J2Y0drdVkyOXVkR1Y0 ZENCamIyNTBaWGgwTGw5bGVHVmpkWFJsVFdWMGFHOWtPakV6TnlCdFpYUm9iMlFnWlhoalpYQjAK YVc5dUNsUnlZV05sWW1GamF5QW9iVzl6ZENCeVpXTmxiblFnWTJGc2JDQnNZWE4wS1RvS0lDQkdh V3hsSUNJdmRYTnlMMnhwWWk5dwplWFJvYjI0eUxqY3ZjMmwwWlMxd1lXTnJZV2RsY3k5dmRHOXdh UzlqYjI1MFpYaDBMbkI1SWl3Z2JHbHVaU0F4TWpjc0lHbHVJRjlsCmVHVmpkWFJsVFdWMGFHOWtD aUFnSUNCdFpYUm9iMlJiSjIxbGRHaHZaQ2RkS0NrS0lDQkdhV3hsSUNJdmRYTnlMM05vWVhKbEwy OTAKYjNCcEwzQnNkV2RwYm5NdmIzUnZjR2t2Ym1WMGQyOXlheTlvYjNOMGJtRnRaUzV3ZVNJc0lH eHBibVVnTmpZc0lHbHVJRjlwYm5SbApjbTVoYkY5d1lXTnJZV2RsY3dvZ0lDQWdjMlZzWmk1d1lX TnJZV2RsY2k1cGJuTjBZV3hzS0hCaFkydGhaMlZ6UFNnbmFYQnliM1YwClpTY3NLU2tLSUNCR2FX eGxJQ0l2ZFhOeUwyeHBZaTl3ZVhSb2IyNHlMamN2YzJsMFpTMXdZV05yWVdkbGN5OXZkRzl3YVM5 d1lXTnIKWVdkbGNpNXdlU0lzSUd4cGJtVWdNVEV3TENCcGJpQnBibk4wWVd4c0NpQWdJQ0J5WVds elpTQk9iM1JKYlhCc1pXMWxiblJsWkVWeQpjbTl5S0Y4b0oxQmhZMnRoWjJWeUlHbHVjM1JoYkd3 Z2JtOTBJR2x0Y0d4bGJXVnVkR1ZrSnlrcENrNXZkRWx0Y0d4bGJXVnVkR1ZrClJYSnliM0k2SUZC aFkydGhaMlZ5SUdsdWMzUmhiR3dnYm05MElHbHRjR3hsYldWdWRHVmtDakl3TVRNdE1USXRNakVn TVRZNk1qYzYKTVRVZ1JWSlNUMUlnYjNSdmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMExsOWxlR1Zq ZFhSbFRXVjBhRzlrT2pFME5pQkdZV2xzWldRZwpkRzhnWlhobFkzVjBaU0J6ZEdGblpTQW5SVzUy YVhKdmJtMWxiblFnY0dGamEyRm5aWE1nYzJWMGRYQW5PaUJRWVdOcllXZGxjaUJwCmJuTjBZV3hz SUc1dmRDQnBiWEJzWlcxbGJuUmxaQW95TURFekxURXlMVEl4SURFMk9qSTNPakUxSUVSRlFsVkhJ RzkwYjNCcExtTnYKYm5SbGVIUWdZMjl1ZEdWNGRDNWtkVzF3Ulc1MmFYSnZibTFsYm5RNk5EUXhJ RVZPVmtsU1QwNU5SVTVVSUVSVlRWQWdMU0JDUlVkSgpUZ295TURFekxURXlMVEl4SURFMk9qSTNP akUxSUVSRlFsVkhJRzkwYjNCcExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdSVzUyCmFYSnZi bTFsYm5RNk5EVTJJRVZPVmlCQ1FWTkZMMlZ5Y205eVBXSnZiMnc2SjFSeWRXVW5Dakl3TVRNdE1U SXRNakVnTVRZNk1qYzYKTVRVZ1JFVkNWVWNnYjNSdmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMExt UjFiWEJGYm5acGNtOXViV1Z1ZERvME5UZ2dSVTVXU1ZKUApUazFGVGxRZ1JGVk5VQ0F0SUVWT1JB b3lNREV6TFRFeUxUSXhJREUyT2pJM09qRTFJRWxPUms4Z2IzUnZjR2t1WTI5dWRHVjRkQ0JqCmIy NTBaWGgwTG5KMWJsTmxjWFZsYm1ObE9qTTRNQ0JUZEdGblpUb2dVSEpsTFhSbGNtMXBibUYwYVc5 dUNqSXdNVE10TVRJdE1qRWcKTVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENC amIyNTBaWGgwTG5KMWJsTmxjWFZsYm1ObE9qTTROQ0JUVkVGSApSU0J3Y21VdGRHVnliV2x1WVhS bENqSXdNVE10TVRJdE1qRWdNVFk2TWpjNk1UVWdSRVZDVlVjZ2IzUnZjR2t1WTI5dWRHVjRkQ0Jq CmIyNTBaWGgwTGw5bGVHVmpkWFJsVFdWMGFHOWtPakV5TXlCVGRHRm5aU0J3Y21VdGRHVnliV2x1 WVhSbElFMUZWRWhQUkNCdmRHOXcKYVM1d2JIVm5hVzV6TG05MGIzQnBMbU52Y21VdWJXbHpZeTVR YkhWbmFXNHVYM0J5WlZSbGNtMXBibUYwWlFveU1ERXpMVEV5TFRJeApJREUyT2pJM09qRTFJRVJG UWxWSElHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcxd1JXNTJhWEp2Ym0xbGJuUTZO RFF4CklFVk9Wa2xTVDA1TlJVNVVJRVJWVFZBZ0xTQkNSVWRKVGdveU1ERXpMVEV5TFRJeElERTJP akkzT2pFMUlFUkZRbFZISUc5MGIzQnAKTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcxd1JXNTJh WEp2Ym0xbGJuUTZORFUySUVWT1ZpQkNRVk5GTDJGaWIzSjBaV1E5WW05dgpiRG9uUm1Gc2MyVW5D akl3TVRNdE1USXRNakVnTVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIy NTBaWGgwCkxtUjFiWEJGYm5acGNtOXViV1Z1ZERvME5UWWdSVTVXSUVKQlUwVXZaR1ZpZFdjOWFX NTBPaWN3SndveU1ERXpMVEV5TFRJeElERTIKT2pJM09qRTFJRVJGUWxWSElHOTBiM0JwTG1OdmJu UmxlSFFnWTI5dWRHVjRkQzVrZFcxd1JXNTJhWEp2Ym0xbGJuUTZORFUySUVWTwpWaUJDUVZORkwy VnljbTl5UFdKdmIydzZKMVJ5ZFdVbkNqSXdNVE10TVRJdE1qRWdNVFk2TWpjNk1UVWdSRVZDVlVj Z2IzUnZjR2t1ClkyOXVkR1Y0ZENCamIyNTBaWGgwTG1SMWJYQkZiblpwY205dWJXVnVkRG8wTlRZ Z1JVNVdJRUpCVTBVdlpYaGpaWEIwYVc5dVNXNW0KYnoxc2FYTjBPaWRiS0R4MGVYQmxJQ2RsZUdO bGNIUnBiMjV6TGs1dmRFbHRjR3hsYldWdWRHVmtSWEp5YjNJblBpd2dUbTkwU1cxdwpiR1Z0Wlc1 MFpXUkZjbkp2Y2lnblVHRmphMkZuWlhJZ2FXNXpkR0ZzYkNCdWIzUWdhVzF3YkdWdFpXNTBaV1Fu TENrc0lEeDBjbUZqClpXSmhZMnNnYjJKcVpXTjBJR0YwSURCNE1UQmhNVFk0TUQ0cFhTY0tNakF4 TXkweE1pMHlNU0F4TmpveU56b3hOU0JFUlVKVlJ5QnYKZEc5d2FTNWpiMjUwWlhoMElHTnZiblJs ZUhRdVpIVnRjRVZ1ZG1seWIyNXRaVzUwT2pRMU5pQkZUbFlnUWtGVFJTOWxlR1ZqZFhScApiMjVF YVhKbFkzUnZjbms5YzNSeU9pY3ZhRzl0WlM5dGRHRjVaWEl2WkdWMkwyOTJhWEowTFdWdVoybHVa Uzl6Y21NbkNqSXdNVE10Ck1USXRNakVnTVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdVkyOXVk R1Y0ZENCamIyNTBaWGgwTG1SMWJYQkZiblpwY205dWJXVnUKZERvME5UWWdSVTVXSUVKQlUwVXZi RzluUFdKdmIydzZKMVJ5ZFdVbkNqSXdNVE10TVRJdE1qRWdNVFk2TWpjNk1UVWdSRVZDVlVjZwpi M1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTG1SMWJYQkZiblpwY205dWJXVnVkRG8wTlRZZ1JV NVdJRUpCVTBVdmNHeDFaMmx1ClIzSnZkWEJ6UFhOMGNqb25iM1J2Y0drNmIzWnBjblF0Wlc1bmFX NWxMV052YlcxdmJqcHZkbWx5ZEMxbGJtZHBibVV0YzJWMGRYQW4KQ2pJd01UTXRNVEl0TWpFZ01U WTZNamM2TVRVZ1JFVkNWVWNnYjNSdmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMExtUjFiWEJGYm5a cApjbTl1YldWdWREbzBOVFlnUlU1V0lFSkJVMFV2Y0d4MVoybHVVR0YwYUQxemRISTZKeTkxYzNJ dmMyaGhjbVV2YjNSdmNHa3ZjR3gxCloybHVjem92YUc5dFpTOXRkR0Y1WlhJdlpHVjJMMjkyYVhK MExXVnVaMmx1WlM5bmFYUmZjMjV0Y0Y5amJHVmhiblZ3TDNOb1lYSmwKTDI5MmFYSjBMV1Z1WjJs dVpTOXpaWFIxY0M5aWFXNHZMaTR2Y0d4MVoybHVjeWNLTWpBeE15MHhNaTB5TVNBeE5qb3lOem94 TlNCRQpSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDBJR052Ym5SbGVIUXVaSFZ0Y0VWdWRtbHliMjV0 Wlc1ME9qUTFOaUJGVGxZZ1FrRlRSUzl6CmRYQndjbVZ6YzBWdWRtbHliMjV0Wlc1MFMyVjVjejFz YVhOME9pZGJYU2NLTWpBeE15MHhNaTB5TVNBeE5qb3lOem94TlNCRVJVSlYKUnlCdmRHOXdhUzVq YjI1MFpYaDBJR052Ym5SbGVIUXVaSFZ0Y0VWdWRtbHliMjV0Wlc1ME9qUTFOaUJGVGxZZ1EwOU5U VUZPUkM5agphR3RqYjI1bWFXYzlUbTl1WlZSNWNHVTZKMDV2Ym1VbkNqSXdNVE10TVRJdE1qRWdN VFk2TWpjNk1UVWdSRVZDVlVjZ2IzUnZjR2t1ClkyOXVkR1Y0ZENCamIyNTBaWGgwTG1SMWJYQkZi blpwY205dWJXVnVkRG8wTlRZZ1JVNVdJRU5QVFUxQlRrUXZZMmh5YjI1NVl6MU8KYjI1bFZIbHda VG9uVG05dVpTY0tNakF4TXkweE1pMHlNU0F4TmpveU56b3hOU0JFUlVKVlJ5QnZkRzl3YVM1amIy NTBaWGgwSUdOdgpiblJsZUhRdVpIVnRjRVZ1ZG1seWIyNXRaVzUwT2pRMU5pQkZUbFlnUTA5TlRV Rk9SQzlrWVhSbFBVNXZibVZVZVhCbE9pZE9iMjVsCkp3b3lNREV6TFRFeUxUSXhJREUyT2pJM09q RTFJRVJGUWxWSElHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcxd1JXNTIKYVhKdmJt MWxiblE2TkRVMklFVk9WaUJEVDAxTlFVNUVMMmgzWTJ4dlkyczlUbTl1WlZSNWNHVTZKMDV2Ym1V bkNqSXdNVE10TVRJdApNakVnTVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENC amIyNTBaWGgwTG1SMWJYQkZiblpwY205dWJXVnVkRG8wCk5UWWdSVTVXSUVOUFRVMUJUa1F2YVc1 cGRHTjBiRDFPYjI1bFZIbHdaVG9uVG05dVpTY0tNakF4TXkweE1pMHlNU0F4TmpveU56b3gKTlNC RVJVSlZSeUJ2ZEc5d2FTNWpiMjUwWlhoMElHTnZiblJsZUhRdVpIVnRjRVZ1ZG1seWIyNXRaVzUw T2pRMU5pQkZUbFlnUTA5TgpUVUZPUkM5cGNEMU9iMjVsVkhsd1pUb25UbTl1WlNjS01qQXhNeTB4 TWkweU1TQXhOam95TnpveE5TQkVSVUpWUnlCdmRHOXdhUzVqCmIyNTBaWGgwSUdOdmJuUmxlSFF1 WkhWdGNFVnVkbWx5YjI1dFpXNTBPalExTmlCRlRsWWdRMDlOVFVGT1JDOXVkSEJ4UFU1dmJtVlUK ZVhCbE9pZE9iMjVsSndveU1ERXpMVEV5TFRJeElERTJPakkzT2pFMUlFUkZRbFZISUc5MGIzQnBM bU52Ym5SbGVIUWdZMjl1ZEdWNApkQzVrZFcxd1JXNTJhWEp2Ym0xbGJuUTZORFUySUVWT1ZpQkRU MDFOUVU1RUwzSmpQVTV2Ym1WVWVYQmxPaWRPYjI1bEp3b3lNREV6CkxURXlMVEl4SURFMk9qSTNP akUxSUVSRlFsVkhJRzkwYjNCcExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdSVzUyYVhKdmJt MWwKYm5RNk5EVTJJRVZPVmlCRFQwMU5RVTVFTDNKakxYVndaR0YwWlQxT2IyNWxWSGx3WlRvblRt OXVaU2NLTWpBeE15MHhNaTB5TVNBeApOam95TnpveE5TQkVSVUpWUnlCdmRHOXdhUzVqYjI1MFpY aDBJR052Ym5SbGVIUXVaSFZ0Y0VWdWRtbHliMjV0Wlc1ME9qUTFOaUJGClRsWWdRMDlOVFVGT1JD OXlaV0p2YjNROVRtOXVaVlI1Y0dVNkowNXZibVVuQ2pJd01UTXRNVEl0TWpFZ01UWTZNamM2TVRV Z1JFVkMKVlVjZ2IzUnZjR2t1WTI5dWRHVjRkQ0JqYjI1MFpYaDBMbVIxYlhCRmJuWnBjbTl1YldW dWREbzBOVFlnUlU1V0lFTlBUVTFCVGtRdgpjbVZ6ZEc5eVpXTnZiajFPYjI1bFZIbHdaVG9uVG05 dVpTY0tNakF4TXkweE1pMHlNU0F4TmpveU56b3hOU0JFUlVKVlJ5QnZkRzl3CmFTNWpiMjUwWlho MElHTnZiblJsZUhRdVpIVnRjRVZ1ZG1seWIyNXRaVzUwT2pRMU5pQkZUbFlnUTA5TlRVRk9SQzl6 WlhKMmFXTmwKUFU1dmJtVlVlWEJsT2lkT2IyNWxKd295TURFekxURXlMVEl4SURFMk9qSTNPakUx SUVSRlFsVkhJRzkwYjNCcExtTnZiblJsZUhRZwpZMjl1ZEdWNGRDNWtkVzF3Ulc1MmFYSnZibTFs Ym5RNk5EVTJJRVZPVmlCRFQwMU5RVTVFTDNONWMzUmxiV04wYkQxT2IyNWxWSGx3ClpUb25UbTl1 WlNjS01qQXhNeTB4TWkweU1TQXhOam95TnpveE5TQkVSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDBJ R052Ym5SbGVIUXUKWkhWdGNFVnVkbWx5YjI1dFpXNTBPalExTmlCRlRsWWdRMDlTUlM5amIyNW1h V2RHYVd4bFFYQndaVzVrUFU1dmJtVlVlWEJsT2lkTwpiMjVsSndveU1ERXpMVEV5TFRJeElERTJP akkzT2pFMUlFUkZRbFZISUc5MGIzQnBMbU52Ym5SbGVIUWdZMjl1ZEdWNGRDNWtkVzF3ClJXNTJh WEp2Ym0xbGJuUTZORFUySUVWT1ZpQkRUMUpGTDJOdmJtWnBaMFpwYkdWT1lXMWxQWE4wY2pvbkwy VjBZeTl2ZEc5d2FTNWoKYjI1bUp3b3lNREV6TFRFeUxUSXhJREUyT2pJM09qRTFJRVJGUWxWSElH OTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcxdwpSVzUyYVhKdmJtMWxiblE2TkRVMklF Vk9WaUJEVDFKRkwybHVkR1Z5Ym1Gc1VHRmphMkZuWlZSeVlXNXpZV04wYVc5dVBWUnlZVzV6CllX TjBhVzl1T2lkMGNtRnVjMkZqZEdsdmJpY0tNakF4TXkweE1pMHlNU0F4TmpveU56b3hOU0JFUlVK VlJ5QnZkRzl3YVM1amIyNTAKWlhoMElHTnZiblJsZUhRdVpIVnRjRVZ1ZG1seWIyNXRaVzUwT2pR MU5pQkZUbFlnUTA5U1JTOXNiMmRFYVhJOWMzUnlPaWN2ZEcxdwpKd295TURFekxURXlMVEl4SURF Mk9qSTNPakUxSUVSRlFsVkhJRzkwYjNCcExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdSVzUy CmFYSnZibTFsYm5RNk5EVTJJRVZPVmlCRFQxSkZMMnh2WjBacGJHVklZVzVrYkdVOVptbHNaVG9u UEc5d1pXNGdabWxzWlNBbkwzUnQKY0M5dmRHOXdhUzB5TURFek1USXlNVEUyTWpjeE1pNXNiMmNu TENCdGIyUmxJQ2RoSnlCaGRDQXdlRGRtTURVd04yTTROalF5TUQ0bgpDakl3TVRNdE1USXRNakVn TVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTG1SMWJYQkZi blpwCmNtOXViV1Z1ZERvME5UWWdSVTVXSUVOUFVrVXZiRzluUm1sc1pVNWhiV1U5YzNSeU9pY3Zk RzF3TDI5MGIzQnBMVEl3TVRNeE1qSXgKTVRZeU56RXlMbXh2WnljS01qQXhNeTB4TWkweU1TQXhO am95TnpveE5TQkVSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDBJR052Ym5SbAplSFF1WkhWdGNFVnVk bWx5YjI1dFpXNTBPalExTmlCRlRsWWdRMDlTUlM5c2IyZEdhV3hsVG1GdFpWQnlaV1pwZUQxemRI STZKMjkwCmIzQnBKd295TURFekxURXlMVEl4SURFMk9qSTNPakUxSUVSRlFsVkhJRzkwYjNCcExt TnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXcKUlc1MmFYSnZibTFsYm5RNk5EVTJJRVZPVmlCRFQx SkZMMnh2WjBacGJIUmxjajFmVFhsTWIyZG5aWEpHYVd4MFpYSTZKMlpwYkhSbApjaWNLTWpBeE15 MHhNaTB5TVNBeE5qb3lOem94TlNCRVJVSlZSeUJ2ZEc5d2FTNWpiMjUwWlhoMElHTnZiblJsZUhR dVpIVnRjRVZ1CmRtbHliMjV0Wlc1ME9qUTFOaUJGVGxZZ1EwOVNSUzlzYjJkR2FXeDBaWEpMWlhs elBXeHBjM1E2SjF0ZEp3b3lNREV6TFRFeUxUSXgKSURFMk9qSTNPakUxSUVSRlFsVkhJRzkwYjNC cExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdSVzUyYVhKdmJtMWxiblE2TkRVMgpJRVZPVmlC RFQxSkZMMnh2WjFKbGJXOTJaVUYwUlhocGREMWliMjlzT2lkR1lXeHpaU2NLTWpBeE15MHhNaTB5 TVNBeE5qb3lOem94Ck5TQkVSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDBJR052Ym5SbGVIUXVaSFZ0 Y0VWdWRtbHliMjV0Wlc1ME9qUTFOaUJGVGxZZ1EwOVMKUlM5dFlXbHVWSEpoYm5OaFkzUnBiMjQ5 VkhKaGJuTmhZM1JwYjI0NkozUnlZVzV6WVdOMGFXOXVKd295TURFekxURXlMVEl4SURFMgpPakkz T2pFMUlFUkZRbFZISUc5MGIzQnBMbU52Ym5SbGVIUWdZMjl1ZEdWNGRDNWtkVzF3Ulc1MmFYSnZi bTFsYm5RNk5EVTJJRVZPClZpQkRUMUpGTDIxdlpHbG1hV1ZrUm1sc1pYTTliR2x6ZERvblcxMG5D akl3TVRNdE1USXRNakVnTVRZNk1qYzZNVFVnUkVWQ1ZVY2cKYjNSdmNHa3VZMjl1ZEdWNGRDQmpi MjUwWlhoMExtUjFiWEJGYm5acGNtOXViV1Z1ZERvME5UWWdSVTVXSUVOUFVrVXZjbUZ1Wkc5dAph WHBsUlhabGJuUnpQV0p2YjJ3NkowWmhiSE5sSndveU1ERXpMVEV5TFRJeElERTJPakkzT2pFMUlF UkZRbFZISUc5MGIzQnBMbU52CmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcxd1JXNTJhWEp2Ym0xbGJu UTZORFUySUVWT1ZpQkVTVUZNVDBjdlltOTFibVJoY25rOWMzUnkKT2ljdExUMDBOVEZpT0RCa1l5 MDVPVFptTFRRek1tVXRPV1UwWmkweVlqSTVaV1kyWkRFeE5ERTlMUzBuQ2pJd01UTXRNVEl0TWpF ZwpNVFk2TWpjNk1UVWdSRVZDVlVjZ2IzUnZjR2t1WTI5dWRHVjRkQ0JqYjI1MFpYaDBMbVIxYlhC RmJuWnBjbTl1YldWdWREbzBOVFlnClJVNVdJRVJKUVV4UFJ5OWpiR2xXWlhKemFXOXVQV2x1ZERv bk1TY0tNakF4TXkweE1pMHlNU0F4TmpveU56b3hOU0JFUlVKVlJ5QnYKZEc5d2FTNWpiMjUwWlho MElHTnZiblJsZUhRdVpIVnRjRVZ1ZG1seWIyNXRaVzUwT2pRMU5pQkZUbFlnUkVsQlRFOUhMMk4x YzNSdgpiV2w2WVhScGIyNDlZbTl2YkRvblJtRnNjMlVuQ2pJd01UTXRNVEl0TWpFZ01UWTZNamM2 TVRVZ1JFVkNWVWNnYjNSdmNHa3VZMjl1CmRHVjRkQ0JqYjI1MFpYaDBMbVIxYlhCRmJuWnBjbTl1 YldWdWREbzBOVFlnUlU1V0lFUkpRVXhQUnk5a2FXRnNaV04wUFhOMGNqb24KYUhWdFlXNG5Dakl3 TVRNdE1USXRNakVnTVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBa WGgwTG1SMQpiWEJGYm5acGNtOXViV1Z1ZERvME5UWWdSVTVXSUVsT1JrOHZVRUZEUzBGSFJWOU9R VTFGUFhOMGNqb25iM1J2Y0drbkNqSXdNVE10Ck1USXRNakVnTVRZNk1qYzZNVFVnUkVWQ1ZVY2di M1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTG1SMWJYQkZiblpwY205dWJXVnUKZERvME5UWWdS VTVXSUVsT1JrOHZVRUZEUzBGSFJWOVdSVkpUU1U5T1BYTjBjam9uTVM0eUxqQmZiV0Z6ZEdWeUp3 b3lNREV6TFRFeQpMVEl4SURFMk9qSTNPakUxSUVSRlFsVkhJRzkwYjNCcExtTnZiblJsZUhRZ1ky OXVkR1Y0ZEM1a2RXMXdSVzUyYVhKdmJtMWxiblE2Ck5EVTJJRVZPVmlCT1JWUlhUMUpMTDJacGNt VjNZV3hzWkVGMllXbHNZV0pzWlQxaWIyOXNPaWRHWVd4elpTY0tNakF4TXkweE1pMHkKTVNBeE5q b3lOem94TlNCRVJVSlZSeUJ2ZEc5d2FTNWpiMjUwWlhoMElHTnZiblJsZUhRdVpIVnRjRVZ1ZG1s eWIyNXRaVzUwT2pRMQpOaUJGVGxZZ1RrVlVWMDlTU3k5bWFYSmxkMkZzYkdSRWFYTmhZbXhsVTJW eWRtbGpaWE05YkdsemREb25XMTBuQ2pJd01UTXRNVEl0Ck1qRWdNVFk2TWpjNk1UVWdSRVZDVlVj Z2IzUnZjR2t1WTI5dWRHVjRkQ0JqYjI1MFpYaDBMbVIxYlhCRmJuWnBjbTl1YldWdWREbzAKTlRZ Z1JVNVdJRTVGVkZkUFVrc3ZabWx5WlhkaGJHeGtSVzVoWW14bFBXSnZiMnc2SjBaaGJITmxKd295 TURFekxURXlMVEl4SURFMgpPakkzT2pFMUlFUkZRbFZISUc5MGIzQnBMbU52Ym5SbGVIUWdZMjl1 ZEdWNGRDNWtkVzF3Ulc1MmFYSnZibTFsYm5RNk5EVTJJRVZPClZpQk9SVlJYVDFKTEwybHdkR0Zp YkdWelJXNWhZbXhsUFdKdmIydzZKMFpoYkhObEp3b3lNREV6TFRFeUxUSXhJREUyT2pJM09qRTEK SUVSRlFsVkhJRzkwYjNCcExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdSVzUyYVhKdmJtMWxi blE2TkRVMklFVk9WaUJPUlZSWApUMUpMTDJsd2RHRmliR1Z6VW5Wc1pYTTlUbTl1WlZSNWNHVTZK MDV2Ym1VbkNqSXdNVE10TVRJdE1qRWdNVFk2TWpjNk1UVWdSRVZDClZVY2diM1J2Y0drdVkyOXVk R1Y0ZENCamIyNTBaWGgwTG1SMWJYQkZiblpwY205dWJXVnVkRG8wTlRZZ1JVNVdJRTVGVkZkUFVr c3YKYzNOb1JXNWhZbXhsUFdKdmIydzZKMFpoYkhObEp3b3lNREV6TFRFeUxUSXhJREUyT2pJM09q RTFJRVJGUWxWSElHOTBiM0JwTG1OdgpiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdSVzUyYVhKdmJt MWxiblE2TkRVMklFVk9WaUJPUlZSWFQxSkxMM056YUV0bGVUMU9iMjVsClZIbHdaVG9uVG05dVpT Y0tNakF4TXkweE1pMHlNU0F4TmpveU56b3hOU0JFUlVKVlJ5QnZkRzl3YVM1amIyNTBaWGgwSUdO dmJuUmwKZUhRdVpIVnRjRVZ1ZG1seWIyNXRaVzUwT2pRMU5pQkZUbFlnVGtWVVYwOVNTeTl6YzJo VmMyVnlQWE4wY2pvbkp3b3lNREV6TFRFeQpMVEl4SURFMk9qSTNPakUxSUVSRlFsVkhJRzkwYjNC cExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdSVzUyYVhKdmJtMWxiblE2Ck5EVTJJRVZPVmlC UFZrVlRSVlJWVUY5RFQwNUdTVWN2ZDJWaWMyOWphMlYwVUhKdmVIbERiMjVtYVdjOVRtOXVaVlI1 Y0dVNkowNXYKYm1VbkNqSXdNVE10TVRJdE1qRWdNVFk2TWpjNk1UVWdSRVZDVlVjZ2IzUnZjR2t1 WTI5dWRHVjRkQ0JqYjI1MFpYaDBMbVIxYlhCRgpiblpwY205dWJXVnVkRG8wTlRZZ1JVNVdJRTlX UlZORlZGVlFYME5QVGtaSlJ5OTNaV0p6YjJOclpYUlFjbTk0ZVZCdmNuUTlhVzUwCk9pYzJNVEF3 SndveU1ERXpMVEV5TFRJeElERTJPakkzT2pFMUlFUkZRbFZISUc5MGIzQnBMbU52Ym5SbGVIUWdZ Mjl1ZEdWNGRDNWsKZFcxd1JXNTJhWEp2Ym0xbGJuUTZORFUySUVWT1ZpQlFRVU5MUVVkRlVpOXJa V1Z3UVd4cGRtVkpiblJsY25aaGJEMXBiblE2SnpNdwpKd295TURFekxURXlMVEl4SURFMk9qSTNP akUxSUVSRlFsVkhJRzkwYjNCcExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdSVzUyCmFYSnZi bTFsYm5RNk5EVTJJRVZPVmlCUVFVTkxRVWRGVWk5NWRXMUVhWE5oWW14bFpGQnNkV2RwYm5NOWJH bHpkRG9uVzEwbkNqSXcKTVRNdE1USXRNakVnTVRZNk1qYzZNVFVnUkVWQ1ZVY2diM1J2Y0drdVky OXVkR1Y0ZENCamIyNTBaWGgwTG1SMWJYQkZiblpwY205dQpiV1Z1ZERvME5UWWdSVTVXSUZCQlEw dEJSMFZTTDNsMWJVVnVZV0pzWldSUWJIVm5hVzV6UFd4cGMzUTZKMXRkSndveU1ERXpMVEV5CkxU SXhJREUyT2pJM09qRTFJRVJGUWxWSElHOTBiM0JwTG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVrZFcx d1JXNTJhWEp2Ym0xbGJuUTYKTkRVMklFVk9WaUJRUVVOTFFVZEZVaTk1ZFcxRmVIQnBjbVZEWVdO b1pUMWliMjlzT2lkVWNuVmxKd295TURFekxURXlMVEl4SURFMgpPakkzT2pFMUlFUkZRbFZISUc5 MGIzQnBMbU52Ym5SbGVIUWdZMjl1ZEdWNGRDNWtkVzF3Ulc1MmFYSnZibTFsYm5RNk5EVTJJRVZP ClZpQlRXVk5VUlUwdlkyeHZZMnROWVhoSFlYQTlhVzUwT2ljMUp3b3lNREV6TFRFeUxUSXhJREUy T2pJM09qRTFJRVJGUWxWSElHOTAKYjNCcExtTnZiblJsZUhRZ1kyOXVkR1Y0ZEM1a2RXMXdSVzUy YVhKdmJtMWxiblE2TkRVMklFVk9WaUJUV1ZOVVJVMHZZMnh2WTJ0VApaWFE5WW05dmJEb25SbUZz YzJVbkNqSXdNVE10TVRJdE1qRWdNVFk2TWpjNk1UVWdSRVZDVlVjZ2IzUnZjR2t1WTI5dWRHVjRk Q0JqCmIyNTBaWGgwTG1SMWJYQkZiblpwY205dWJXVnVkRG8wTlRZZ1JVNVdJRk5aVTFSRlRTOWpi MjF0WVc1a1VHRjBhRDF6ZEhJNkp5OTEKYzNJdmJHOWpZV3d2YzJKcGJqb3ZkWE55TDJ4dlkyRnNM MkpwYmpvdmRYTnlMM05pYVc0NkwzVnpjaTlpYVc0NkwzTmlhVzQ2TDJKcApiaWNLTWpBeE15MHhN aTB5TVNBeE5qb3lOem94TlNCRVJVSlZSeUJ2ZEc5d2FTNWpiMjUwWlhoMElHTnZiblJsZUhRdVpI VnRjRVZ1CmRtbHliMjV0Wlc1ME9qUTFOaUJGVGxZZ1UxbFRWRVZOTDNKbFltOXZkRDFpYjI5c09p ZEdZV3h6WlNjS01qQXhNeTB4TWkweU1TQXgKTmpveU56b3hOU0JFUlVKVlJ5QnZkRzl3YVM1amIy NTBaWGgwSUdOdmJuUmxlSFF1WkhWdGNFVnVkbWx5YjI1dFpXNTBPalExTmlCRgpUbFlnVTFsVFZF Vk5MM0psWW05dmRFRnNiRzkzUFdKdmIydzZKMVJ5ZFdVbkNqSXdNVE10TVRJdE1qRWdNVFk2TWpj Nk1UVWdSRVZDClZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTG1SMWJYQkZiblpwY205 dWJXVnVkRG8wTlRZZ1JVNVdJRk5aVTFSRlRTOXkKWldKdmIzUkVaV1psY2xScGJXVTlhVzUwT2lj eE1DY0tNakF4TXkweE1pMHlNU0F4TmpveU56b3hOU0JFUlVKVlJ5QnZkRzl3YVM1agpiMjUwWlho MElHTnZiblJsZUhRdVpIVnRjRVZ1ZG1seWIyNXRaVzUwT2pRMU9DQkZUbFpKVWs5T1RVVk9WQ0JF VlUxUUlDMGdSVTVFCkNqSXdNVE10TVRJdE1qRWdNVFk2TWpjNk1UVWdSRVZDVlVjZ2IzUnZjR2t1 WTI5dWRHVjRkQ0JqYjI1MFpYaDBMbDlsZUdWamRYUmwKVFdWMGFHOWtPakV5TXlCVGRHRm5aU0J3 Y21VdGRHVnliV2x1WVhSbElFMUZWRWhQUkNCdmRHOXdhUzV3YkhWbmFXNXpMbTkwYjNCcApMbVJw WVd4dlp5NWpiR2t1VUd4MVoybHVMbDl3Y21WZmRHVnliV2x1WVhSbENqSXdNVE10TVRJdE1qRWdN VFk2TWpjNk1UVWdSRVZDClZVY2diM1J2Y0drdVkyOXVkR1Y0ZENCamIyNTBaWGgwTGw5bGVHVmpk WFJsVFdWMGFHOWtPakV5T1NCamIyNWthWFJwYjI0Z1JtRnMKYzJVS01qQXhNeTB4TWkweU1TQXhO am95TnpveE5TQkpUa1pQSUc5MGIzQnBMbU52Ym5SbGVIUWdZMjl1ZEdWNGRDNXlkVzVUWlhGMQpa VzVqWlRvek9EQWdVM1JoWjJVNklGUmxjbTFwYm1GMGFXOXVDakl3TVRNdE1USXRNakVnTVRZNk1q YzZNVFVnUkVWQ1ZVY2diM1J2CmNHa3VZMjl1ZEdWNGRDQmpiMjUwWlhoMExuSjFibE5sY1hWbGJt TmxPak00TkNCVFZFRkhSU0IwWlhKdGFXNWhkR1VLTWpBeE15MHgKTWkweU1TQXhOam95TnpveE5T QkVSVUpWUnlCdmRHOXdhUzVqYjI1MFpYaDBJR052Ym5SbGVIUXVYMlY0WldOMWRHVk5aWFJvYjJR NgpNVEl6SUZOMFlXZGxJSFJsY20xcGJtRjBaU0JOUlZSSVQwUWdiM1J2Y0drdWNHeDFaMmx1Y3k1 dmRHOXdhUzVrYVdGc2IyY3VhSFZ0CllXNHVVR3gxWjJsdUxsOTBaWEp0YVc1aGRHVUtNakF4TXkw eE1pMHlNU0F4TmpveU56b3hOU0JFUlVKVlJ5QnZkRzl3YVM1amIyNTAKWlhoMElHTnZiblJsZUhR dVgyVjRaV04xZEdWTlpYUm9iMlE2TVRJeklGTjBZV2RsSUhSbGNtMXBibUYwWlNCTlJWUklUMFFn YjNSdgpjR2t1Y0d4MVoybHVjeTV2ZEc5d2FTNWthV0ZzYjJjdWJXRmphR2x1WlM1UWJIVm5hVzR1 WDNSbGNtMXBibUYwWlFveU1ERXpMVEV5CkxUSXhJREUyT2pJM09qRTFJRVJGUWxWSElHOTBiM0Jw TG1OdmJuUmxlSFFnWTI5dWRHVjRkQzVmWlhobFkzVjBaVTFsZEdodlpEb3gKTWprZ1kyOXVaR2ww YVc5dUlFWmhiSE5sQ2pJd01UTXRNVEl0TWpFZ01UWTZNamM2TVRVZ1JFVkNWVWNnYjNSdmNHa3VZ Mjl1ZEdWNApkQ0JqYjI1MFpYaDBMbDlsZUdWamRYUmxUV1YwYUc5a09qRXlNeUJUZEdGblpTQjBa WEp0YVc1aGRHVWdUVVZVU0U5RUlHOTBiM0JwCkxuQnNkV2RwYm5NdWIzUnZjR2t1WTI5eVpTNXNi MmN1VUd4MVoybHVMbDkwWlhKdGFXNWhkR1VLCi0tLS0tLT1fUGFydF8xMDAwMzQ1Ml80NTIwNjY4 OTkuMTM4NzYzODk0NDczMy0tCg== --===============8299552377569800721==-- From alonbl at redhat.com Sat Dec 21 14:54:45 2013 Content-Type: multipart/mixed; boundary="===============0019673542271452059==" MIME-Version: 1.0 From: Alon Bar-Lev To: devel at ovirt.org Subject: Re: [Engine-devel] [ATN] [devenv] packaging: setup: refactoring Date: Sat, 21 Dec 2013 14:54:44 -0500 Message-ID: <969284360.27907795.1387655684356.JavaMail.root@redhat.com> In-Reply-To: 52B194FF.6090509@redhat.com --===============0019673542271452059== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hello all, Please re-notice this announcement regarding master and update otopi to at = least otopi-1.2.0-0.0.master.20131217 from[1] If you want to use existing devenv installation, you should remove $HOME/ov= irt-engine/share/ovirt-engine/setup, then install-dev. Regards, Alon Bar-Lev. [1] http://resources.ovirt.org/releases/nightly/rpm/Fedora/ ----- Original Message ----- > From: "Sandro Bonazzola" > To: "engine-devel" > Cc: "Alon Bar-Lev" > Sent: Wednesday, December 18, 2013 2:28:47 PM > Subject: [ATN] [devenv] packaging: setup: refactoring > = > Hello All, > a patch refactoring the packaging of ovirt-engine-setup[1] will be merged > soon. > The change requires latest version of the otopi package to be installed. > = > Please update it in your development environment. > = > [1] http://gerrit.ovirt.org/20293 > = > Thanks, > = > -- > Sandro Bonazzola > Better technology. Faster innovation. Powered by community collaboration. > See how it works at redhat.com >=20 --===============0019673542271452059==-- From alonbl at redhat.com Sat Dec 21 14:58:43 2013 Content-Type: multipart/mixed; boundary="===============4704577738809331078==" MIME-Version: 1.0 From: Alon Bar-Lev To: devel at ovirt.org Subject: Re: [Engine-devel] Help with "Packager install not implemented" Date: Sat, 21 Dec 2013 14:58:43 -0500 Message-ID: <1531329480.27907820.1387655923515.JavaMail.root@redhat.com> In-Reply-To: 848629573.10003454.1387638944738.JavaMail.root@redhat.com --===============4704577738809331078== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Related to[1]? [1] http://comments.gmane.org/gmane.comp.emulators.ovirt.engine.devel/5697 ----- Original Message ----- > From: "Mooli Tayer" > To: "engine-devel" > Sent: Saturday, December 21, 2013 5:15:44 PM > Subject: [Engine-devel] Help with "Packager install not implemented" > = > For patch[1], running: > = > setup/ovirt-install > = > Produces: > = > [ INFO ] Stage: Initializing > [ INFO ] Stage: Environment setup > Configuration files: [] > Log file: /tmp/otopi-20131221103813.log > Version: otopi-1.2.0_master > (otopi-1.2.0-0.0.master.20131007.git6f8ac6d.fc19) > [ INFO ] Stage: Environment packages setup > [ ERROR ] Failed to execute stage 'Environment packages setup': Packager > install not implemented > [ INFO ] Stage: Pre-termination > [ INFO ] Stage: Termination > = > The only relevant information I could find was here: > http://gerrit.ovirt.org/#/c/17637/1/packaging/setup/bin/ovirt-engine-remo= ve > = > I've attached the otopi log > = > [1] http://gerrit.ovirt.org/#/c/22135/ > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============4704577738809331078==-- From ofrenkel at redhat.com Sun Dec 22 10:37:19 2013 Content-Type: multipart/mixed; boundary="===============1008522796236795542==" MIME-Version: 1.0 From: Omer Frenkel To: devel at ovirt.org Subject: Re: [Engine-devel] missing javadoc for restapi? Date: Sun, 22 Dec 2013 10:37:13 -0500 Message-ID: <1738028297.37415717.1387726633311.JavaMail.root@redhat.com> In-Reply-To: 52B422FB.3020607@mittwald.de --===============1008522796236795542== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Sven Kieske" > To: engine-devel(a)ovirt.org > Sent: Friday, December 20, 2013 12:56:32 PM > Subject: Re: [Engine-devel] missing javadoc for restapi? > = > I'm asking because the rsdl is not correct about cloud-init, specific: > = > http://www.ovirt.org/Features/Cloud-Init_Integration > = > e.g. it is not mentioned that there is an collection "ips", > not in the wiki and not in the rsdl. > = > ATM our developers are cursing at me/ovirt. > = > I'd like to stop this asap. > = what version are you working on? please note that under was changed to recently. i've updated the wiki as well. if this doesn't help, please attach the xml you are using and i could try a= nd look for the error. > Am 20.12.2013 11:47, schrieb Sven Kieske: > > Hi, > > = > > we are not able to find the javadoc for the restapi. > > I can find the javadoc for the java sdk but not for REST. > > = > > Are we looking in the wrong place? > > Any links or help would be appreciated! > > = > = > -- > Mit freundlichen Gr=C3=BC=C3=9Fen / Regards > = > Sven Kieske > = > Systemadministrator > Mittwald CM Service GmbH & Co. KG > K=C3=B6nigsberger Stra=C3=9Fe 6 > 32339 Espelkamp > T: +49-5772-293-100 > F: +49-5772-293-333 > https://www.mittwald.de > Gesch=C3=A4ftsf=C3=BChrer: Robert Meyer > St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen > Komplement=C3=A4rin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oey= nhausen > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============1008522796236795542==-- From sbonazzo at redhat.com Mon Dec 23 01:57:01 2013 Content-Type: multipart/mixed; boundary="===============2925716134165926130==" MIME-Version: 1.0 From: Sandro Bonazzola To: devel at ovirt.org Subject: Re: [Engine-devel] oVirt 3.3.2 release Date: Mon, 23 Dec 2013 07:56:55 +0100 Message-ID: <52B7DEB7.6080801@redhat.com> In-Reply-To: 52B46F10.5000005@doolittle.us.com --===============2925716134165926130== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Il 20/12/2013 17:23, Bob Doolittle ha scritto: > I think the problem may be other than I indicated, however, because I don= 't see ovirt-engine-3.3.2 in the FC19 stable repo either. Here's the error > output of my update command: > = > Error: Package: ovirt-engine-3.3.1-2.el6.noarch (@ovirt-stable) > Requires: ovirt-engine-websocket-proxy =3D 3.3.1-2.el6 > Removing: ovirt-engine-websocket-proxy-3.3.1-2.el6.noarch (@ov= irt-stable) > ovirt-engine-websocket-proxy =3D 3.3.1-2.el6 > Updated By: ovirt-engine-websocket-proxy-3.3.2-1.el6.noarch (o= virt-3.3.2) > ovirt-engine-websocket-proxy =3D 3.3.2-1.el6 > Available: ovirt-engine-websocket-proxy-3.3.0-3.el6.noarch (ov= irt-stable) > ovirt-engine-websocket-proxy =3D 3.3.0-3.el6 > Available: ovirt-engine-websocket-proxy-3.3.0-4.el6.noarch (ov= irt-stable) > ovirt-engine-websocket-proxy =3D 3.3.0-4.el6 > Available: ovirt-engine-websocket-proxy-3.3.0.1-1.el6.noarch (= ovirt-stable) > ovirt-engine-websocket-proxy =3D 3.3.0.1-1.el6 > Available: ovirt-engine-websocket-proxy-3.3.1-1.el6.noarch (ov= irt-stable) > ovirt-engine-websocket-proxy =3D 3.3.1-1.el6 This is a bug in ovirt-engine-3.3.1 dependencies fixed in 3.3.2 (Bug 1033629 - Unable to run regular yum update due to implicit (undeclared= ) version lock on rhevm-websocket-proxy ) please follow upgrade path as in release notes: # yum update ovirt-release # yum repolist enabled # yum update ovirt-engine-setup # engine-setup > = > I have attached my current repo config, after the update of ovirt-release= -el6-10-1 > = > I'm not sure why it's not seeing http://resources.ovirt.org/releases/3.3.= 2/rpm/EL/6/noarch/ovirt-engine-3.3.2-1.el6.noarch.rpm > = > I do see that repository enabled in "yum repolist enabled" output. > = > -Bob > = > On 12/20/2013 11:13 AM, Fabian Deutsch wrote: >> Am Freitag, den 20.12.2013, 11:12 -0500 schrieb Bob Doolittle: >>> I can't do an update of Engine for RHEL 6. >>> >>> The 3.3.2 packages do not seem to have been pushed here: >>> >>> http://resources.ovirt.org/releases/stable/rpm/EL/6/noarch/ >> Thanks - I observed the same. >> >> - fabian >> >>> -Bob >>> >>> On 12/19/2013 09:03 AM, Sandro Bonazzola wrote: >>>> The oVirt development team is very happy to announce the general >>>> availability of oVirt 3.3.2 as of December 19th 2013. This release >>>> solidifies oVirt as a leading KVM management application and open >>>> source alternative to VMware vSphere. >>>> >>>> oVirt is available now for Fedora 19 and Red Hat Enterprise Linux 6.5 >>>> (or similar). >>>> >>>> This release of oVirt includes 175 bug fixes and the first release of = the >>>> Backup and Restore API, which enables backup programs to integrate wit= h oVirt. >>>> This release also simplifies the Guide Me VM-creation wizard. See the = release >>>> notes [1] for a list of the new features and bugs fixed. >>>> >>>> IMPORTANT NOTE: If you're upgrading from a previous version, please up= date >>>> ovirt-release to the latest version (10) and verify you have the corre= ct >>>> repositories enabled by running the following commands >>>> >>>> # yum update ovirt-release >>>> # yum repolist enabled >>>> >>>> before upgrading with the usual procedure. You should see the ovirt-3.= 3.2 and >>>> ovirt-stable repositories listed in the output of the repolist command. >>>> >>>> >>>> >>>> [1] http://www.ovirt.org/OVirt_3.3.2_release_notes >>>> >>> _______________________________________________ >>> Arch mailing list >>> Arch(a)ovirt.org >>> http://lists.ovirt.org/mailman/listinfo/arch > = -- = Sandro Bonazzola Better technology. Faster innovation. Powered by community collaboration. See how it works at redhat.com --===============2925716134165926130==-- From oliel at redhat.com Mon Dec 23 03:46:48 2013 Content-Type: multipart/mixed; boundary="===============7040001463007894996==" MIME-Version: 1.0 From: Ori Liel To: devel at ovirt.org Subject: Re: [Engine-devel] Proposal to add Juan Hernandez as maintainer to api/sdk/cli Date: Mon, 23 Dec 2013 03:46:46 -0500 Message-ID: <1193027693.8883136.1387788406245.JavaMail.root@redhat.com> In-Reply-To: 52B2C3BA.7000505@redhat.com --===============7040001463007894996== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sorry guys, I wasn't here - big +1 from me ----- Original Message ----- From: "Itamar Heim" To: "Einav Cohen" , "Michael Pasternak" Cc: "engine-devel" , "infra" Sent: Thursday, December 19, 2013 12:00:26 PM Subject: Re: [Engine-devel] Proposal to add Juan Hernandez as maintainer to= api/sdk/cli On 12/18/2013 08:58 AM, Einav Cohen wrote: > +1, well deserved. added. > > ----- Original Message ----- >> From: "Michael Pasternak" >> To: "engine-devel" , "infra" >> Sent: Monday, December 16, 2013 10:34:36 AM >> Subject: [Engine-devel] Proposal to add Juan Hernandez as maintainer to = api/sdk/cli >> >> >> Juan has worked on oVirt for a long period of time, developing >> several features in the different areas (including api and cli), >> and obviously gained a lot of experience and knowledge, >> >> I'd like to propose Juan as a maintainer of the api/sdk/cli projects. >> >> -- >> >> Michael Pasternak >> RedHat, ENG-Virtualization R&D >> _______________________________________________ >> Engine-devel mailing list >> Engine-devel(a)ovirt.org >> http://lists.ovirt.org/mailman/listinfo/engine-devel >> > _______________________________________________ > Infra mailing list > Infra(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/infra > _______________________________________________ Engine-devel mailing list Engine-devel(a)ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel --===============7040001463007894996==-- From mpastern at redhat.com Mon Dec 23 06:10:46 2013 Content-Type: multipart/mixed; boundary="===============3685503840657043368==" MIME-Version: 1.0 From: Michael Pasternak To: devel at ovirt.org Subject: Re: [Engine-devel] missing javadoc for restapi? Date: Mon, 23 Dec 2013 13:11:15 +0200 Message-ID: <52B81A53.7010001@redhat.com> In-Reply-To: 52B420D6.5010201@mittwald.de --===============3685503840657043368== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sven, if you would like to develop against REST-API =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D REST-API is a web application, there is no javadoc for it simply because you should develop against HTTP interface, we have RSDL (RESTful service description language) that you can use as api documentation [1]. [1] http(s)://server[:port]/api?rsdl http(s)://server[:port]/ovirt-engine/api?rsdl if you would like to develop the REST-API itself =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D you working against the actual sources (not installed jar), so you don't need any javadoc to be installed. hope it helps. On 12/20/2013 12:47 PM, Sven Kieske wrote: > Hi, > = > we are not able to find the javadoc for the restapi. > I can find the javadoc for the java sdk but not for REST. > = > Are we looking in the wrong place? > Any links or help would be appreciated! > -- Mit freundlichen Gr=C3=BC=C3=9Fen / Regards Sven Kieske Systemadminist= rator Mittwald CM Service GmbH & Co. KG K=C3=B6nigsberger Stra=C3=9Fe 6 323= 39 Espelkamp T: +49-5772-293-100 F: > +49-5772-293-333 https://www.mittwald.de Gesch=C3=A4ftsf=C3=BChrer: Rober= t Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oey= nhausen Komplement=C3=A4rin: Robert > Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynhausen ____________________= ___________________________ Engine-devel mailing list Engine-devel(a)ovirt.= org > http://lists.ovirt.org/mailman/listinfo/engine-devel > = -- = Michael Pasternak RedHat, ENG-Virtualization R&D --===============3685503840657043368==-- From mpastern at redhat.com Mon Dec 23 06:12:28 2013 Content-Type: multipart/mixed; boundary="===============4847789144193500469==" MIME-Version: 1.0 From: Michael Pasternak To: devel at ovirt.org Subject: Re: [Engine-devel] missing javadoc for restapi? Date: Mon, 23 Dec 2013 13:13:02 +0200 Message-ID: <52B81ABE.6000107@redhat.com> In-Reply-To: 52B422FB.3020607@mittwald.de --===============4847789144193500469== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 12/20/2013 12:56 PM, Sven Kieske wrote: > I'm asking because the rsdl is not correct about cloud-init, specific: > = > http://www.ovirt.org/Features/Cloud-Init_Integration > = > e.g. it is not mentioned that there is an collection "ips", > not in the wiki and not in the rsdl. Omer? > = > ATM our developers are cursing at me/ovirt. > = > I'd like to stop this asap. > = > Am 20.12.2013 11:47, schrieb Sven Kieske: >> Hi, >> >> we are not able to find the javadoc for the restapi. >> I can find the javadoc for the java sdk but not for REST. >> >> Are we looking in the wrong place? >> Any links or help would be appreciated! >> > = -- = Michael Pasternak RedHat, ENG-Virtualization R&D --===============4847789144193500469==-- From liran.zelkha at gmail.com Mon Dec 23 06:54:08 2013 Content-Type: multipart/mixed; boundary="===============6537106016712244595==" MIME-Version: 1.0 From: Liran Zelkha To: devel at ovirt.org Subject: [Engine-devel] Installing RHEVM DWH 3.2 Date: Mon, 23 Dec 2013 13:54:07 +0200 Message-ID: --===============6537106016712244595== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Anybody knows how to install RHEVM DWH version 3.2 using the subscription-manager? --===============6537106016712244595== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGRpdiBkaXI9Imx0ciI+QW55Ym9keSBrbm93cyBob3cgdG8gaW5zdGFsbCBSSEVWTSBEV0ggdmVy c2lvbiAzLjIgdXNpbmcgdGhlIHN1YnNjcmlwdGlvbi1tYW5hZ2VyPzwvZGl2Pgo= --===============6537106016712244595==-- From mrao at redhat.com Mon Dec 23 16:43:08 2013 Content-Type: multipart/mixed; boundary="===============5294331786392299303==" MIME-Version: 1.0 From: Malini Rao To: devel at ovirt.org Subject: [Engine-devel] Options for embedding Cloud init features into VM dialog - Need Input Date: Mon, 23 Dec 2013 16:43:07 -0500 Message-ID: <346065258.46639370.1387834987825.JavaMail.root@redhat.com> In-Reply-To: 645376143.46637238.1387834492672.JavaMail.root@redhat.com --===============5294331786392299303== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hello all, = There is a current feature to embed cloud init configuration which was orig= inally part of the Run dialog to be part of the create/ Edit VM dialog. Thi= s presents a challenge in terms of good display of the hierarchies of info= rmation since the VM dialog is already having subtabs stacked vertically. P= lease find here (http://www.ovirt.org/UX/cloud_init) alternate concepts of = how we might represent all the levels of hierarchy from the VM dialog sub t= abs to the cloud init categories and the content ( which is also nested som= etimes) for each. I have provided brief explanations of each concept and I would like your fe= edback on these ... esp with regard to feasibility. The general goals that = govern the various concepts are - = - Correct representation of the hierarchy - Not overloading the users with too much info and cluttering the screen - Not utilizing the same UI paradigm ( like expand/ collapse) for different= types of info. For example, we have categories of info where the fields ar= e distinct from each other and then we have times where the user is able to= add multiple instances of the same object type - e.g NICs and have the sam= e set of fields be defined for each instance. = Your feedback is appreciated. Thanks Malini --===============5294331786392299303==-- From mpastern at redhat.com Tue Dec 24 04:29:21 2013 Content-Type: multipart/mixed; boundary="===============9198026521816780970==" MIME-Version: 1.0 From: Michael Pasternak To: devel at ovirt.org Subject: [Engine-devel] [CORE] broken backward compatibility for vm creation Date: Tue, 24 Dec 2013 11:29:55 +0200 Message-ID: <52B95413.8010508@redhat.com> --===============9198026521816780970== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable [oVirt shell (connected)]# add vm --name test --cluster-id 00000001-0001-00= 01-0001-000000000001 --template-id 00000000-0000-0000-0000-000000000000 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D ERROR =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D status: 400 reason: Bad Request detail: Cannot add VM. Selected operating system is not supported by the = architecture. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D [oVirt shell (connected)]# show template 00000000-0000-0000-0000-0000000000= 00 id : 00000000-0000-0000-0000-000000000000 name : Blank description : Blank template cluster-id : 00000001-0001-0001-0001-000000000001 cpu-architecture : UNDEFINED cpu-topology-cores : 1 cpu-topology-sockets : 1 cpu_shares : 0 creation_time : 2008-04-01 00:00:00+03:00 delete_protected : False display-allow_override : False display-monitors : 1 display-single_qxl_pci : False display-smartcard_enabled : False display-type : spice high_availability-enabled : False high_availability-priority: 0 memory : 1073741824 origin : rhev os-boot-dev : hd os-type : other stateless : False status-state : ok type : desktop usb-enabled : False [oVirt shell (connected)]# show cluster 00000001-0001-0001-0001-000000000001 id : 00000001-0001-0001-0001-000000= 000001 name : Default description : The default server cluster ballooning_enabled : False data_center-id : 00000002-0002-0002-0002-000000= 000002 error_handling-on_error : migrate gluster_service : False memory_policy-overcommit-percent : 100 memory_policy-transparent_hugepages-enabled: True scheduling_policy-policy : none threads_as_cores : False trusted_service : False tunnel_migration : False version-major : 3 version-minor : 3 virt_service : True -- = Michael Pasternak RedHat, ENG-Virtualization R&D --===============9198026521816780970==-- From vitor.lima at eldorado.org.br Tue Dec 24 07:04:35 2013 Content-Type: multipart/mixed; boundary="===============5791313284252999752==" MIME-Version: 1.0 From: Vitor de Lima To: devel at ovirt.org Subject: Re: [Engine-devel] [CORE] broken backward compatibility for vm creation Date: Tue, 24 Dec 2013 12:04:32 +0000 Message-ID: In-Reply-To: 52B95413.8010508@redhat.com --===============5791313284252999752== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable This is temporarily broken due to the introduction of multi-architecture su= pport. Changes #18227 and #20667 are going to fix this by blocking the addi= tion of VMs into clusters without a defined architecture and properly selec= ting the default OS when creating VMs. > -----Original Message----- > From: engine-devel-bounces(a)ovirt.org [mailto:engine-devel- > bounces(a)ovirt.org] On Behalf Of Michael Pasternak > Sent: ter=C3=A7a-feira, 24 de dezembro de 2013 07:30 > To: engine-devel > Cc: Michal Skrivanek > Subject: [Engine-devel] [CORE] broken backward compatibility for vm > creation > = > = > [oVirt shell (connected)]# add vm --name test --cluster-id 00000001-0001- > 0001-0001-000000000001 --template-id 00000000-0000-0000-0000- > 000000000000 > = > = > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ERROR > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > status: 400 > reason: Bad Request > detail: Cannot add VM. Selected operating system is not supported by the > architecture. > = > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > = > [oVirt shell (connected)]# show template 00000000-0000-0000-0000- > 000000000000 > = > id : 00000000-0000-0000-0000-000000000000 > name : Blank > description : Blank template > cluster-id : 00000001-0001-0001-0001-000000000001 > cpu-architecture : UNDEFINED > cpu-topology-cores : 1 > cpu-topology-sockets : 1 > cpu_shares : 0 > creation_time : 2008-04-01 00:00:00+03:00 > delete_protected : False > display-allow_override : False > display-monitors : 1 > display-single_qxl_pci : False > display-smartcard_enabled : False > display-type : spice > high_availability-enabled : False > high_availability-priority: 0 > memory : 1073741824 > origin : rhev > os-boot-dev : hd > os-type : other > stateless : False > status-state : ok > type : desktop > usb-enabled : False > = > [oVirt shell (connected)]# show cluster 00000001-0001-0001-0001- > 000000000001 > = > id : 00000001-0001-0001-0001-0000= 00000001 > name : Default > description : The default server cluster > ballooning_enabled : False > data_center-id : 00000002-0002-0002-0002-0000= 00000002 > error_handling-on_error : migrate > gluster_service : False > memory_policy-overcommit-percent : 100 > memory_policy-transparent_hugepages-enabled: True > scheduling_policy-policy : none > threads_as_cores : False > trusted_service : False > tunnel_migration : False > version-major : 3 > version-minor : 3 > virt_service : True > = > -- > = > Michael Pasternak > RedHat, ENG-Virtualization R&D > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel --===============5791313284252999752==-- From mpastern at redhat.com Tue Dec 24 07:09:40 2013 Content-Type: multipart/mixed; boundary="===============2505240455483786816==" MIME-Version: 1.0 From: Michael Pasternak To: devel at ovirt.org Subject: Re: [Engine-devel] [CORE] broken backward compatibility for vm creation Date: Tue, 24 Dec 2013 14:10:13 +0200 Message-ID: <52B979A5.2010404@redhat.com> In-Reply-To: B2CAFC4D5E2D574A883EF61ACD5ADE33566E16C7@SERV070.corp.eldorado.org.br --===============2505240455483786816== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Thanks Vitor, Such changes should be merged all together, otherwise they create significa= nt noise in master, and make testing not possible what can lead to not stable master afterwards, btw eyal, shouldn't Jenkins job be alerting on such changes? On 12/24/2013 02:04 PM, Vitor de Lima wrote: > This is temporarily broken due to the introduction of multi-architecture = support. Changes #18227 and #20667 are going to fix this by blocking the ad= dition of VMs into clusters without a defined architecture and properly sel= ecting the default OS when creating VMs. > = >> -----Original Message----- >> From: engine-devel-bounces(a)ovirt.org [mailto:engine-devel- >> bounces(a)ovirt.org] On Behalf Of Michael Pasternak >> Sent: ter=C3=A7a-feira, 24 de dezembro de 2013 07:30 >> To: engine-devel >> Cc: Michal Skrivanek >> Subject: [Engine-devel] [CORE] broken backward compatibility for vm >> creation >> >> >> [oVirt shell (connected)]# add vm --name test --cluster-id 00000001-0001- >> 0001-0001-000000000001 --template-id 00000000-0000-0000-0000- >> 000000000000 >> >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ERROR >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> status: 400 >> reason: Bad Request >> detail: Cannot add VM. Selected operating system is not supported by t= he >> architecture. >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> >> [oVirt shell (connected)]# show template 00000000-0000-0000-0000- >> 000000000000 >> >> id : 00000000-0000-0000-0000-000000000000 >> name : Blank >> description : Blank template >> cluster-id : 00000001-0001-0001-0001-000000000001 >> cpu-architecture : UNDEFINED >> cpu-topology-cores : 1 >> cpu-topology-sockets : 1 >> cpu_shares : 0 >> creation_time : 2008-04-01 00:00:00+03:00 >> delete_protected : False >> display-allow_override : False >> display-monitors : 1 >> display-single_qxl_pci : False >> display-smartcard_enabled : False >> display-type : spice >> high_availability-enabled : False >> high_availability-priority: 0 >> memory : 1073741824 >> origin : rhev >> os-boot-dev : hd >> os-type : other >> stateless : False >> status-state : ok >> type : desktop >> usb-enabled : False >> >> [oVirt shell (connected)]# show cluster 00000001-0001-0001-0001- >> 000000000001 >> >> id : 00000001-0001-0001-0001-000= 000000001 >> name : Default >> description : The default server cluster >> ballooning_enabled : False >> data_center-id : 00000002-0002-0002-0002-000= 000000002 >> error_handling-on_error : migrate >> gluster_service : False >> memory_policy-overcommit-percent : 100 >> memory_policy-transparent_hugepages-enabled: True >> scheduling_policy-policy : none >> threads_as_cores : False >> trusted_service : False >> tunnel_migration : False >> version-major : 3 >> version-minor : 3 >> virt_service : True >> >> -- >> >> Michael Pasternak >> RedHat, ENG-Virtualization R&D >> _______________________________________________ >> Engine-devel mailing list >> Engine-devel(a)ovirt.org >> http://lists.ovirt.org/mailman/listinfo/engine-devel -- = Michael Pasternak RedHat, ENG-Virtualization R&D --===============2505240455483786816==-- From rgolan at redhat.com Tue Dec 24 07:14:00 2013 Content-Type: multipart/mixed; boundary="===============1031134414970547411==" MIME-Version: 1.0 From: Roy Golan To: devel at ovirt.org Subject: Re: [Engine-devel] [CORE] broken backward compatibility for vm creation Date: Tue, 24 Dec 2013 14:13:54 +0200 Message-ID: <52B97A82.5050609@redhat.com> In-Reply-To: 52B979A5.2010404@redhat.com --===============1031134414970547411== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On Tue 24 Dec 2013 02:10:13 PM IST, Michael Pasternak wrote: > > Thanks Vitor, > > Such changes should be merged all together, otherwise they create signifi= cant noise in master, > and make testing not possible what can lead to not stable master afterwar= ds, > > btw eyal, shouldn't Jenkins job be alerting on such changes? > > On 12/24/2013 02:04 PM, Vitor de Lima wrote: >> This is temporarily broken due to the introduction of multi-architecture= support. Changes #18227 and #20667 are going to fix this by blocking the a= ddition of VMs into clusters without a defined architecture and properly se= lecting the default OS when creating VMs. >> >>> -----Original Message----- >>> From: engine-devel-bounces(a)ovirt.org [mailto:engine-devel- >>> bounces(a)ovirt.org] On Behalf Of Michael Pasternak >>> Sent: ter=C3=A7a-feira, 24 de dezembro de 2013 07:30 >>> To: engine-devel >>> Cc: Michal Skrivanek >>> Subject: [Engine-devel] [CORE] broken backward compatibility for vm >>> creation >>> >>> >>> [oVirt shell (connected)]# add vm --name test --cluster-id 00000001-000= 1- >>> 0001-0001-000000000001 --template-id 00000000-0000-0000-0000- >>> 000000000000 >>> >>> >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ERROR >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> status: 400 >>> reason: Bad Request >>> detail: Cannot add VM. Selected operating system is not supported by= the >>> architecture. >>> >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> >>> [oVirt shell (connected)]# show template 00000000-0000-0000-0000- >>> 000000000000 >>> >>> id : 00000000-0000-0000-0000-000000000000 >>> name : Blank >>> description : Blank template >>> cluster-id : 00000001-0001-0001-0001-000000000001 >>> cpu-architecture : UNDEFINED >>> cpu-topology-cores : 1 >>> cpu-topology-sockets : 1 >>> cpu_shares : 0 >>> creation_time : 2008-04-01 00:00:00+03:00 >>> delete_protected : False >>> display-allow_override : False >>> display-monitors : 1 >>> display-single_qxl_pci : False >>> display-smartcard_enabled : False >>> display-type : spice >>> high_availability-enabled : False >>> high_availability-priority: 0 >>> memory : 1073741824 >>> origin : rhev >>> os-boot-dev : hd >>> os-type : other >>> stateless : False >>> status-state : ok >>> type : desktop >>> usb-enabled : False >>> >>> [oVirt shell (connected)]# show cluster 00000001-0001-0001-0001- >>> 000000000001 >>> >>> id : 00000001-0001-0001-0001-00= 0000000001 >>> name : Default >>> description : The default server cluster >>> ballooning_enabled : False >>> data_center-id : 00000002-0002-0002-0002-00= 0000000002 >>> error_handling-on_error : migrate >>> gluster_service : False >>> memory_policy-overcommit-percent : 100 >>> memory_policy-transparent_hugepages-enabled: True >>> scheduling_policy-policy : none >>> threads_as_cores : False >>> trusted_service : False >>> tunnel_migration : False >>> version-major : 3 >>> version-minor : 3 >>> virt_service : True >>> >>> -- >>> >>> Michael Pasternak >>> RedHat, ENG-Virtualization R&D >>> _______________________________________________ >>> Engine-devel mailing list >>> Engine-devel(a)ovirt.org >>> http://lists.ovirt.org/mailman/listinfo/engine-devel > > 18227 is merged now. Michael so while at it http://gerrit.ovirt.org/#/c/20667/ needs REST +1 = to be merged --===============1031134414970547411==-- From eedri at redhat.com Tue Dec 24 07:21:38 2013 Content-Type: multipart/mixed; boundary="===============8668737921950942280==" MIME-Version: 1.0 From: Eyal Edri To: devel at ovirt.org Subject: Re: [Engine-devel] [CORE] broken backward compatibility for vm creation Date: Tue, 24 Dec 2013 07:21:35 -0500 Message-ID: <641168458.9203758.1387887695868.JavaMail.root@redhat.com> In-Reply-To: 52B979A5.2010404@redhat.com --===============8668737921950942280== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Michael Pasternak" > To: "Vitor de Lima" , "engine-devel" , "Eyal Edri" > > Cc: "Michal Skrivanek" > Sent: Tuesday, December 24, 2013 2:10:13 PM > Subject: Re: [Engine-devel] [CORE] broken backward compatibility for vm c= reation > = > = > Thanks Vitor, > = > Such changes should be merged all together, otherwise they create signifi= cant > noise in master, > and make testing not possible what can lead to not stable master afterwar= ds, > = > btw eyal, shouldn't Jenkins job be alerting on such changes? we don't have currently any tests on engine rest other than unit tests/dao = tests running on oVirt. > = > On 12/24/2013 02:04 PM, Vitor de Lima wrote: > > This is temporarily broken due to the introduction of multi-architecture > > support. Changes #18227 and #20667 are going to fix this by blocking the > > addition of VMs into clusters without a defined architecture and proper= ly > > selecting the default OS when creating VMs. > > = > >> -----Original Message----- > >> From: engine-devel-bounces(a)ovirt.org [mailto:engine-devel- > >> bounces(a)ovirt.org] On Behalf Of Michael Pasternak > >> Sent: ter=C3=A7a-feira, 24 de dezembro de 2013 07:30 > >> To: engine-devel > >> Cc: Michal Skrivanek > >> Subject: [Engine-devel] [CORE] broken backward compatibility for vm > >> creation > >> > >> > >> [oVirt shell (connected)]# add vm --name test --cluster-id 00000001-00= 01- > >> 0001-0001-000000000001 --template-id 00000000-0000-0000-0000- > >> 000000000000 > >> > >> > >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ERROR > >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > >> status: 400 > >> reason: Bad Request > >> detail: Cannot add VM. Selected operating system is not supported by= the > >> architecture. > >> > >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > >> > >> [oVirt shell (connected)]# show template 00000000-0000-0000-0000- > >> 000000000000 > >> > >> id : 00000000-0000-0000-0000-000000000000 > >> name : Blank > >> description : Blank template > >> cluster-id : 00000001-0001-0001-0001-000000000001 > >> cpu-architecture : UNDEFINED > >> cpu-topology-cores : 1 > >> cpu-topology-sockets : 1 > >> cpu_shares : 0 > >> creation_time : 2008-04-01 00:00:00+03:00 > >> delete_protected : False > >> display-allow_override : False > >> display-monitors : 1 > >> display-single_qxl_pci : False > >> display-smartcard_enabled : False > >> display-type : spice > >> high_availability-enabled : False > >> high_availability-priority: 0 > >> memory : 1073741824 > >> origin : rhev > >> os-boot-dev : hd > >> os-type : other > >> stateless : False > >> status-state : ok > >> type : desktop > >> usb-enabled : False > >> > >> [oVirt shell (connected)]# show cluster 00000001-0001-0001-0001- > >> 000000000001 > >> > >> id : > >> 00000001-0001-0001-0001-000000000001 > >> name : Default > >> description : The default server cluster > >> ballooning_enabled : False > >> data_center-id : > >> 00000002-0002-0002-0002-000000000002 > >> error_handling-on_error : migrate > >> gluster_service : False > >> memory_policy-overcommit-percent : 100 > >> memory_policy-transparent_hugepages-enabled: True > >> scheduling_policy-policy : none > >> threads_as_cores : False > >> trusted_service : False > >> tunnel_migration : False > >> version-major : 3 > >> version-minor : 3 > >> virt_service : True > >> > >> -- > >> > >> Michael Pasternak > >> RedHat, ENG-Virtualization R&D > >> _______________________________________________ > >> Engine-devel mailing list > >> Engine-devel(a)ovirt.org > >> http://lists.ovirt.org/mailman/listinfo/engine-devel > = > = > -- > = > Michael Pasternak > RedHat, ENG-Virtualization R&D >=20 --===============8668737921950942280==-- From shaharh at redhat.com Tue Dec 24 07:33:30 2013 Content-Type: multipart/mixed; boundary="===============2194847372952931763==" MIME-Version: 1.0 From: Shahar Havivi To: devel at ovirt.org Subject: Re: [Engine-devel] Options for embedding Cloud init features into VM dialog - Need Input Date: Tue, 24 Dec 2013 14:33:28 +0200 Message-ID: <20131224123327.GA22146@redhat.com> In-Reply-To: 1749377184.772885.1387875352641.JavaMail.root@redhat.com --===============2194847372952931763== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, We have a feature page for the VM Init (including Cloud-Init and Windows Sysprep): http://www.ovirt.org/Features/vm-init-persistent >From: "Malini Rao" >To: "engine-devel" >Cc: "Eldan Hildesheim" >Sent: Monday, December 23, 2013 11:43:07 PM >Subject: [Engine-devel] Options for embedding Cloud init features into VM = dialog - Need Input > >Hello all, = > >There is a current feature to embed cloud init configuration which was ori= ginally part of the Run dialog to be part of the create/ Edit VM dialog. Th= is presents a challenge in terms of good display of the hierarchies of inf= ormation since the VM dialog is already having subtabs stacked vertically. = Please find here (http://www.ovirt.org/UX/cloud_init) alternate concepts of= how we might represent all the levels of hierarchy from the VM dialog sub = tabs to the cloud init categories and the content ( which is also nested so= metimes) for each. > >I have provided brief explanations of each concept and I would like your f= eedback on these ... esp with regard to feasibility. The general goals that= govern the various concepts are - = > >- Correct representation of the hierarchy >- Not overloading the users with too much info and cluttering the screen >- Not utilizing the same UI paradigm ( like expand/ collapse) for differen= t types of info. For example, we have categories of info where the fields a= re distinct from each other and then we have times where the user is able t= o add multiple instances of the same object type - e.g NICs and have the sa= me set of fields be defined for each instance. = > >Your feedback is appreciated. > >Thanks >Malini >_______________________________________________ >Engine-devel mailing list >Engine-devel(a)ovirt.org >http://lists.ovirt.org/mailman/listinfo/engine-devel --===============2194847372952931763==-- From ehildesh at redhat.com Tue Dec 24 07:49:41 2013 Content-Type: multipart/mixed; boundary="===============2245476782360118672==" MIME-Version: 1.0 From: Eldan Hildesheim To: devel at ovirt.org Subject: Re: [Engine-devel] Options for embedding Cloud init features into VM dialog - Need Input Date: Tue, 24 Dec 2013 07:49:39 -0500 Message-ID: <862653061.9206095.1387889379994.JavaMail.root@redhat.com> In-Reply-To: 20131224123327.GA22146@redhat.com --===============2245476782360118672== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, Can we merge those 2 pages together? Eldan ----- Original Message ----- From: "Shahar Havivi" To: "Malini Rao" Cc: "engine-devel" , "Eldan Hildesheim" , "Omer Frenkel" , "Michal Skrivanek" = Sent: Tuesday, December 24, 2013 2:33:28 PM Subject: Re: [Engine-devel] Options for embedding Cloud init features into = VM dialog - Need Input Hi, We have a feature page for the VM Init (including Cloud-Init and Windows Sysprep): http://www.ovirt.org/Features/vm-init-persistent >From: "Malini Rao" >To: "engine-devel" >Cc: "Eldan Hildesheim" >Sent: Monday, December 23, 2013 11:43:07 PM >Subject: [Engine-devel] Options for embedding Cloud init features into VM = dialog - Need Input > >Hello all, = > >There is a current feature to embed cloud init configuration which was ori= ginally part of the Run dialog to be part of the create/ Edit VM dialog. Th= is presents a challenge in terms of good display of the hierarchies of inf= ormation since the VM dialog is already having subtabs stacked vertically. = Please find here (http://www.ovirt.org/UX/cloud_init) alternate concepts of= how we might represent all the levels of hierarchy from the VM dialog sub = tabs to the cloud init categories and the content ( which is also nested so= metimes) for each. > >I have provided brief explanations of each concept and I would like your f= eedback on these ... esp with regard to feasibility. The general goals that= govern the various concepts are - = > >- Correct representation of the hierarchy >- Not overloading the users with too much info and cluttering the screen >- Not utilizing the same UI paradigm ( like expand/ collapse) for differen= t types of info. For example, we have categories of info where the fields a= re distinct from each other and then we have times where the user is able t= o add multiple instances of the same object type - e.g NICs and have the sa= me set of fields be defined for each instance. = > >Your feedback is appreciated. > >Thanks >Malini >_______________________________________________ >Engine-devel mailing list >Engine-devel(a)ovirt.org >http://lists.ovirt.org/mailman/listinfo/engine-devel --===============2245476782360118672==-- From mpastern at redhat.com Wed Dec 25 02:48:24 2013 Content-Type: multipart/mixed; boundary="===============0638342695545224203==" MIME-Version: 1.0 From: Michael Pasternak To: devel at ovirt.org Subject: [Engine-devel] ovirt-engine-sdk-python 3.4.0.1-1 released Date: Wed, 25 Dec 2013 09:48:58 +0200 Message-ID: <52BA8DEA.7090309@redhat.com> In-Reply-To: 5270D591.3070604@redhat.com --===============0638342695545224203== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable - to host.install() added ssh related details - to template added virtio_scsi.enabled - to vm added virtio_scsi.enabled - to File class added 'content' field - Payload class now reuses Files instead of own List of objec= ts - added ability to attach a disk snapshot to the virtual machine - to vms.add() added [action.vm.initialization.cloud-init] - to NIC added OnBoot/BootProtocol properties - to VersionCaps added a list of supported payload-encodings - to Step added externalType - to NIC added vnicProfile and bootProtocol - to CPU added architecture - to VnicProfilePermission added delete() method - to Disk added readOnly - to VMs.add() added [vm.cpu.architecture], [action.vm.initialization.cloud= _init.*] arguments - to Templates.add() added [template.cpu.architecture], [action.template.in= itialization.cloud_init.*] arguments - to UserRoles.add() added permit.id|name arguments - at VMSnapshot removed preview/undo/commit methods - to DataCenterClusterGlusterVolumeGlusterBricks added activate/stopmigrate= /migrate actions - to NetworkVnicProfile added Permissions sub-collection - to Cluster added [cluster.cpu.architecture] - to DataCenter added Networks sub-collection - to ClusterGlusterVolumeGlusterBricks added activate method - to ClusterGlusterVolume added stoprebalance method - to entry-point API added Permissions collection (for managing system-perm= issions) - to host.install() added ssh related arguments - to template added virtio_scsi.enabled - to vm added virtio_scsi.enabled - added ability to attach a disk snapshot to the virtual machine - to File class added 'content' field - Payload class now reuses Files instead of own PayloadFile collection - to Cluster added [cluster.display.proxy] - to VmPool added [vmpool.display.proxy] - sdk ignores url attribute and hardcode /api #1038952 - support automatic auth session invalidation #1018559 more details can be found at [1]. [1] http://www.ovirt.org/Python-sdk-changelog -- = Michael Pasternak RedHat, ENG-Virtualization R&D --===============0638342695545224203==-- From mpastern at redhat.com Wed Dec 25 02:52:34 2013 Content-Type: multipart/mixed; boundary="===============0589477105348322711==" MIME-Version: 1.0 From: Michael Pasternak To: devel at ovirt.org Subject: [Engine-devel] ovirt-engine-sdk-java 3.4.0.1-1 released Date: Wed, 25 Dec 2013 09:53:06 +0200 Message-ID: <52BA8EE2.70907@redhat.com> In-Reply-To: 5270DF6D.80800@redhat.com --===============0589477105348322711== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable - to vms.add() added [action.vm.initialization.cloud-init] - to NIC added OnBoot/BootProtocol properties - to VersionCaps added a list of supported payload-encodings - to Step added externalType - to NIC added vnicProfile and bootProtocol - to CPU added architecture - to VnicProfilePermission added delete() method - to Disk added readOnly - to VMs.add() added [vm.cpu.architecture], [action.vm.initialization.cloud= _init.*] arguments - to Templates.add() added [template.cpu.architecture], [action.template.in= itialization.cloud_init.*] arguments - to UserRoles.add() added permit.id|name arguments - at VMSnapshot removed preview/undo/commit methods - to DataCenterClusterGlusterVolumeGlusterBricks added activate/stopmigrate= /migrate actions - to NetworkVnicProfile added Permissions sub-collection - to Cluster added [cluster.cpu.architecture] - to DataCenter added Networks sub-collection - to ClusterGlusterVolumeGlusterBricks added activate method - to ClusterGlusterVolume added stoprebalance method - to entry-point API added Permissions collection (for managing system-perm= issions) - to host.install() added ssh related arguments - to template added virtio_scsi.enabled - to vm added virtio_scsi.enabled - added ability to attach a disk snapshot to the virtual machine - to File class added 'content' field - Payload class now reuses Files instead of own PayloadFile collection more details can be found at [1]. [1] http://www.ovirt.org/Java-sdk-changelog -- = Michael Pasternak RedHat, ENG-Virtualization R&D --===============0589477105348322711==-- From nsoffer at redhat.com Wed Dec 25 08:43:42 2013 Content-Type: multipart/mixed; boundary="===============3184635786746797539==" MIME-Version: 1.0 From: Nir Soffer To: devel at ovirt.org Subject: [Engine-devel] Request for power-user permissions Date: Wed, 25 Dec 2013 08:43:42 -0500 Message-ID: <552514867.34415392.1387979022440.JavaMail.root@redhat.com> In-Reply-To: 1707752002.34415098.1387978523110.JavaMail.root@redhat.com --===============3184635786746797539== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi all, I'm Nir from storage team. I work mostly on vdsm. I want power-user permissions for jenkins.ovirt.org so I would be able to = create and modify jobs related to vdsm. Thanks, Nir --===============3184635786746797539==-- From shtripat at redhat.com Thu Dec 26 00:35:40 2013 Content-Type: multipart/mixed; boundary="===============1214133522515825312==" MIME-Version: 1.0 From: Shubhendu Tripathi To: devel at ovirt.org Subject: [Engine-devel] Is there is time based task scheduling available in oVirt ? Date: Thu, 26 Dec 2013 11:05:35 +0530 Message-ID: <52BBC027.10602@redhat.com> --===============1214133522515825312== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable We are in a requirement where time based task scheduling is required for = gluster tasks. I understand that, as is there is no such mechanism available in oVirt = using which we can schedule tasks like volume snaps creation at a given = time and frequency. Wanted to know if there is some plan in near future for supporting this = feature. This certainly would open other automation options in oVirt. Regards, Shubhendu --===============1214133522515825312==-- From abaron at redhat.com Thu Dec 26 03:10:28 2013 Content-Type: multipart/mixed; boundary="===============6971623644617669296==" MIME-Version: 1.0 From: Ayal Baron To: devel at ovirt.org Subject: Re: [Engine-devel] Request for power-user permissions Date: Thu, 26 Dec 2013 03:10:27 -0500 Message-ID: <1418459252.43511749.1388045427429.JavaMail.root@redhat.com> In-Reply-To: 552514867.34415392.1387979022440.JavaMail.root@redhat.com --===============6971623644617669296== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > Hi all, > = > I'm Nir from storage team. I work mostly on vdsm. > = > I want power-user permissions for jenkins.ovirt.org so I would be able to > create and modify jobs related to vdsm. +1 from me. > = > Thanks, > Nir > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============6971623644617669296==-- From eedri at redhat.com Thu Dec 26 05:30:45 2013 Content-Type: multipart/mixed; boundary="===============0357762391658205689==" MIME-Version: 1.0 From: Eyal Edri To: devel at ovirt.org Subject: [Engine-devel] [test email - sent at 12:30 IST] Date: Thu, 26 Dec 2013 05:30:45 -0500 Message-ID: <1014674092.9357766.1388053845063.JavaMail.root@redhat.com> --===============0357762391658205689== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable sorry for the noise, testing mailman. Eyal. --===============0357762391658205689==-- From gustavo.pedrosa at eldorado.org.br Thu Dec 26 07:46:00 2013 Content-Type: multipart/mixed; boundary="===============7331847630434093815==" MIME-Version: 1.0 From: Gustavo Frederico Temple Pedrosa To: devel at ovirt.org Subject: Re: [Engine-devel] Options for embedding Cloud init features into VM dialog - Need Input Date: Thu, 26 Dec 2013 12:45:57 +0000 Message-ID: --===============7331847630434093815== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable --_000_EF26FC1776F7FF46BFC072393EFD13A2558049E0SERV070corpeldo_ Content-Type: text/plain; charset=3D"us-ascii" Content-Transfer-Encoding: quoted-printable Hi, In an initial analysis, in my opinion I would discard the "Alternate Concep= =3D t 3", because it goes against the heuristic number #6 of Nielsen (recogniti= =3D on rather than recall), it soon becomes difficult for the user remember whe= =3D re are the options. Also discard the "Alternate Concept 1", because it blends vertical and hori= =3D zontal menus, it soon avoids a pattern (system of meaning) and confuses the= =3D user. Thanks. Date: Tue, 24 Dec 2013 07:49:39 -0500 (EST) From: Eldan Hildesheim > To: Shahar Havivi > Cc: engine-devel > Subject: Re: [Engine-devel] Options for embedding Cloud init features into = =3D VM dialog - Need Input Hi, Can we merge those 2 pages together? Eldan ----- Original Message ----- From: "Shahar Havivi" To: "Malini Rao" Cc: "engine-devel" , "Eldan Hildesheim" , "Omer Frenkel" , "Michal Skrivane= =3D k" Sent: Tuesday, December 24, 2013 2:33:28 PM Subject: Re: [Engine-devel] Options for embedding Cloud init features into = =3D VM dialog - Need Input Hi, We have a feature page for the VM Init (including Cloud-Init and Windows Sysprep): http://www.ovirt.org/Features/vm-init-persistent >From: "Malini Rao" >To: "engine-devel" >Cc: "Eldan Hildesheim" >Sent: Monday, December 23, 2013 11:43:07 PM >Subject: [Engine-devel] Options for embedding Cloud init features into VM = =3D dialog - Need Input > >Hello all, > >There is a current feature to embed cloud init configuration which was ori= =3D ginally part of the Run dialog to be part of the create/ Edit VM dialog. Th= =3D is presents a challenge in terms of good display of the hierarchies of inf= =3D ormation since the VM dialog is already having subtabs stacked vertically. = =3D Please find here (http://www.ovirt.org/UX/cloud_init) alternate concepts of= =3D how we might represent all the levels of hierarchy from the VM dialog sub = =3D tabs to the cloud init categories and the content ( which is also nested so= =3D metimes) for each. > >I have provided brief explanations of each concept and I would like your f= =3D eedback on these ... esp with regard to feasibility. The general goals that= =3D govern the various concepts are - > >- Correct representation of the hierarchy >- Not overloading the users with too much info and cluttering the screen >- Not utilizing the same UI paradigm ( like expand/ collapse) for differen= =3D t types of info. For example, we have categories of info where the fields a= =3D re distinct from each other and then we have times where the user is able t= =3D o add multiple instances of the same object type - e.g NICs and have the sa= =3D me set of fields be defined for each instance. > >Your feedback is appreciated. > >Thanks >Malini --_000_EF26FC1776F7FF46BFC072393EFD13A2558049E0SERV070corpeldo_ Content-Type: text/html; charset=3D"us-ascii" Content-Transfer-Encoding: quoted-printable

H= i,

<= o:p>&n=3D bsp;

I= n an i=3D nitial analysis, in my opinion I would discard the "Alternate Concept = =3D 3", because it goes against the heuristic number #6 of Nielsen (recogn= =3D ition rather than recall), it soon becomes difficult for the user remember where are the options.

A= lso di=3D scard the "Alternate Concept 1", because it blends vertical and h= =3D orizontal menus, it soon avoids a pattern (system of meaning) and confuses = =3D the user.

<= o:p>&n=3D bsp;

Thanks.=

 <= /spa=3D n>

 <= /spa=3D n>

 <= /spa=3D n>

 <= /spa=3D n>

Date: Tue, 24 Dec 2013 07:4= 9:39=3D -0500 (EST)

From: Eldan Hildesheim <= ehildesh(a)redhat.com>

To: Shahar Havivi <shaharh(a)redhat.com><= /span>=3D

Cc: engine-devel <engine-devel(a)ovirt.org>

Subject: Re: [Engine-devel]= Opt=3D ions for embedding Cloud init features into VM dialog - Need Input

 

Hi,

Can we merge those 2 pages = toge=3D ther?

Eldan

 

----- Original Message ----= -

From: "Shahar Havivi&q= uot;=3D <shaharh at redhat.com>

To: "Malini Rao" = <=3D mrao at redhat.com>

Cc: "engine-devel"= ; &l=3D t;engine-devel at ovirt.org>, "Eldan Hildesheim" <ehildesh = =3D at redhat.com>, "Omer Frenkel" <ofrenkel at redhat.com>,= =3D "Michal Skrivanek" <michal.skrivanek at redhat.com>

Sent: Tuesday, December 24,= 201=3D 3 2:33:28 PM

Subject: Re: [Engine-devel]= Opt=3D ions for embedding Cloud init features into VM dialog - Need Input

 

Hi,

We have a feature page for = the =3D VM Init (including Cloud-Init and Windows

Sysprep):=

 

http://www.ovirt.org/Features/vm-init-persist= =3D ent

 

 

>From: "Malini Rao&= quot=3D ; <mrao at redhat.com>

>To: "engine-devel&= quot=3D ; <engine-devel at ovirt.org>

>Cc: "Eldan Hildesh= eim&=3D quot; <ehildesh at redhat.com>

>Sent: Monday, December = 23, =3D 2013 11:43:07 PM

>Subject: [Engine-devel]= Opt=3D ions for embedding Cloud init features into VM dialog - Need Input

> 

>Hello all, <= /spa=3D n>

> 

>There is a current feat= ure =3D to embed cloud init configuration which was originally part of the Run dial= =3D og to be part of the create/ Edit VM dialog. This presents a challenge in t= =3D erms of  good display of the hierarchies of information since the VM dialog is already having subtabs stacked verti= =3D cally. Please find here (h= tt=3D p://www.ovirt.org/UX/cloud_init) alternate concepts of how we might rep= =3D resent all the levels of hierarchy from the VM dialog sub tabs to the cloud init categories and the content (= =3D which is also nested sometimes) for each.

> 

>I have provided brief e= xpla=3D nations of each concept and I would like your feedback on these ... esp wit= =3D h regard to feasibility. The general goals that govern the various concepts= =3D are -

> 

>- Correct representatio= n of=3D the hierarchy

>- Not overloading the u= sers=3D with too much info and cluttering the screen

>- Not utilizing the sam= e UI=3D paradigm ( like expand/ collapse) for different types of info. For example= =3D , we have categories of info where the fields are distinct from each other = =3D and then we have times where the user is able to add multiple instances of the same object type - e.g NICs and have= =3D the same set of fields be defined for each instance.

> 

>Your feedback is appreciated.

> 

>Thanks

>Malini

--_000_EF26FC1776F7FF46BFC072393EFD13A2558049E0SERV070corpeldo_-- --===============7331847630434093815== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS1fMDAwX0VGMjZGQzE3NzZGN0ZGNDZCRkMwNzIzOTNFRkQxM0EyNTU4MDQ5RTBTRVJWMDcwY29y cGVsZG9fCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiCkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKCkhpLAoKSW4gYW4gaW5pdGlh bCBhbmFseXNpcywgaW4gbXkgb3BpbmlvbiBJIHdvdWxkIGRpc2NhcmQgdGhlICJBbHRlcm5hdGUg Q29uY2VwPQp0IDMiLCBiZWNhdXNlIGl0IGdvZXMgYWdhaW5zdCB0aGUgaGV1cmlzdGljIG51bWJl ciAjNiBvZiBOaWVsc2VuIChyZWNvZ25pdGk9Cm9uIHJhdGhlciB0aGFuIHJlY2FsbCksIGl0IHNv b24gYmVjb21lcyBkaWZmaWN1bHQgZm9yIHRoZSB1c2VyIHJlbWVtYmVyIHdoZT0KcmUgYXJlIHRo ZSBvcHRpb25zLgpBbHNvIGRpc2NhcmQgdGhlICJBbHRlcm5hdGUgQ29uY2VwdCAxIiwgYmVjYXVz ZSBpdCBibGVuZHMgdmVydGljYWwgYW5kIGhvcmk9CnpvbnRhbCBtZW51cywgaXQgc29vbiBhdm9p ZHMgYSBwYXR0ZXJuIChzeXN0ZW0gb2YgbWVhbmluZykgYW5kIGNvbmZ1c2VzIHRoZT0KIHVzZXIu CgpUaGFua3MuCgoKCgpEYXRlOiBUdWUsIDI0IERlYyAyMDEzIDA3OjQ5OjM5IC0wNTAwIChFU1Qp CkZyb206IEVsZGFuIEhpbGRlc2hlaW0gPGVoaWxkZXNoQHJlZGhhdC5jb208bWFpbHRvOmVoaWxk ZXNoQHJlZGhhdC5jb20+PgpUbzogU2hhaGFyIEhhdml2aSA8c2hhaGFyaEByZWRoYXQuY29tPG1h aWx0bzpzaGFoYXJoQHJlZGhhdC5jb20+PgpDYzogZW5naW5lLWRldmVsIDxlbmdpbmUtZGV2ZWxA b3ZpcnQub3JnPG1haWx0bzplbmdpbmUtZGV2ZWxAb3ZpcnQub3JnPj4KU3ViamVjdDogUmU6IFtF bmdpbmUtZGV2ZWxdIE9wdGlvbnMgZm9yIGVtYmVkZGluZyBDbG91ZCBpbml0IGZlYXR1cmVzIGlu dG8gPQpWTSBkaWFsb2cgLSBOZWVkIElucHV0CgpIaSwKQ2FuIHdlIG1lcmdlIHRob3NlIDIgcGFn ZXMgdG9nZXRoZXI/CkVsZGFuCgotLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tCkZyb206ICJT aGFoYXIgSGF2aXZpIiA8c2hhaGFyaCBhdCByZWRoYXQuY29tPgpUbzogIk1hbGluaSBSYW8iIDxt cmFvIGF0IHJlZGhhdC5jb20+CkNjOiAiZW5naW5lLWRldmVsIiA8ZW5naW5lLWRldmVsIGF0IG92 aXJ0Lm9yZz4sICJFbGRhbiBIaWxkZXNoZWltIiA8ZWhpbGRlcz0KaCBhdCByZWRoYXQuY29tPiwg Ik9tZXIgRnJlbmtlbCIgPG9mcmVua2VsIGF0IHJlZGhhdC5jb20+LCAiTWljaGFsIFNrcml2YW5l PQprIiA8bWljaGFsLnNrcml2YW5layBhdCByZWRoYXQuY29tPgpTZW50OiBUdWVzZGF5LCBEZWNl bWJlciAyNCwgMjAxMyAyOjMzOjI4IFBNClN1YmplY3Q6IFJlOiBbRW5naW5lLWRldmVsXSBPcHRp b25zIGZvciBlbWJlZGRpbmcgQ2xvdWQgaW5pdCBmZWF0dXJlcyBpbnRvID0KVk0gZGlhbG9nIC0g TmVlZCBJbnB1dAoKSGksCldlIGhhdmUgYSBmZWF0dXJlIHBhZ2UgZm9yIHRoZSBWTSBJbml0IChp bmNsdWRpbmcgQ2xvdWQtSW5pdCBhbmQgV2luZG93cwpTeXNwcmVwKToKCmh0dHA6Ly93d3cub3Zp cnQub3JnL0ZlYXR1cmVzL3ZtLWluaXQtcGVyc2lzdGVudAoKCj5Gcm9tOiAiTWFsaW5pIFJhbyIg PG1yYW8gYXQgcmVkaGF0LmNvbT4KPlRvOiAiZW5naW5lLWRldmVsIiA8ZW5naW5lLWRldmVsIGF0 IG92aXJ0Lm9yZz4KPkNjOiAiRWxkYW4gSGlsZGVzaGVpbSIgPGVoaWxkZXNoIGF0IHJlZGhhdC5j b20+Cj5TZW50OiBNb25kYXksIERlY2VtYmVyIDIzLCAyMDEzIDExOjQzOjA3IFBNCj5TdWJqZWN0 OiBbRW5naW5lLWRldmVsXSBPcHRpb25zIGZvciBlbWJlZGRpbmcgQ2xvdWQgaW5pdCBmZWF0dXJl cyBpbnRvIFZNID0KZGlhbG9nIC0gTmVlZCBJbnB1dAo+Cj5IZWxsbyBhbGwsCj4KPlRoZXJlIGlz IGEgY3VycmVudCBmZWF0dXJlIHRvIGVtYmVkIGNsb3VkIGluaXQgY29uZmlndXJhdGlvbiB3aGlj aCB3YXMgb3JpPQpnaW5hbGx5IHBhcnQgb2YgdGhlIFJ1biBkaWFsb2cgdG8gYmUgcGFydCBvZiB0 aGUgY3JlYXRlLyBFZGl0IFZNIGRpYWxvZy4gVGg9CmlzIHByZXNlbnRzIGEgY2hhbGxlbmdlIGlu IHRlcm1zIG9mICBnb29kIGRpc3BsYXkgb2YgdGhlIGhpZXJhcmNoaWVzIG9mIGluZj0Kb3JtYXRp b24gc2luY2UgdGhlIFZNIGRpYWxvZyBpcyBhbHJlYWR5IGhhdmluZyBzdWJ0YWJzIHN0YWNrZWQg dmVydGljYWxseS4gPQpQbGVhc2UgZmluZCBoZXJlIChodHRwOi8vd3d3Lm92aXJ0Lm9yZy9VWC9j bG91ZF9pbml0KSBhbHRlcm5hdGUgY29uY2VwdHMgb2Y9CiBob3cgd2UgbWlnaHQgcmVwcmVzZW50 IGFsbCB0aGUgbGV2ZWxzIG9mIGhpZXJhcmNoeSBmcm9tIHRoZSBWTSBkaWFsb2cgc3ViID0KdGFi cyB0byB0aGUgY2xvdWQgaW5pdCBjYXRlZ29yaWVzIGFuZCB0aGUgY29udGVudCAoIHdoaWNoIGlz IGFsc28gbmVzdGVkIHNvPQptZXRpbWVzKSBmb3IgZWFjaC4KPgo+SSBoYXZlIHByb3ZpZGVkIGJy aWVmIGV4cGxhbmF0aW9ucyBvZiBlYWNoIGNvbmNlcHQgYW5kIEkgd291bGQgbGlrZSB5b3VyIGY9 CmVlZGJhY2sgb24gdGhlc2UgLi4uIGVzcCB3aXRoIHJlZ2FyZCB0byBmZWFzaWJpbGl0eS4gVGhl IGdlbmVyYWwgZ29hbHMgdGhhdD0KIGdvdmVybiB0aGUgdmFyaW91cyBjb25jZXB0cyBhcmUgLQo+ Cj4tIENvcnJlY3QgcmVwcmVzZW50YXRpb24gb2YgdGhlIGhpZXJhcmNoeQo+LSBOb3Qgb3Zlcmxv YWRpbmcgdGhlIHVzZXJzIHdpdGggdG9vIG11Y2ggaW5mbyBhbmQgY2x1dHRlcmluZyB0aGUgc2Ny ZWVuCj4tIE5vdCB1dGlsaXppbmcgdGhlIHNhbWUgVUkgcGFyYWRpZ20gKCBsaWtlIGV4cGFuZC8g Y29sbGFwc2UpIGZvciBkaWZmZXJlbj0KdCB0eXBlcyBvZiBpbmZvLiBGb3IgZXhhbXBsZSwgd2Ug aGF2ZSBjYXRlZ29yaWVzIG9mIGluZm8gd2hlcmUgdGhlIGZpZWxkcyBhPQpyZSBkaXN0aW5jdCBm cm9tIGVhY2ggb3RoZXIgYW5kIHRoZW4gd2UgaGF2ZSB0aW1lcyB3aGVyZSB0aGUgdXNlciBpcyBh YmxlIHQ9Cm8gYWRkIG11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBvYmplY3QgdHlwZSAt IGUuZyBOSUNzIGFuZCBoYXZlIHRoZSBzYT0KbWUgc2V0IG9mIGZpZWxkcyBiZSBkZWZpbmVkIGZv ciBlYWNoIGluc3RhbmNlLgo+Cj5Zb3VyIGZlZWRiYWNrIGlzIGFwcHJlY2lhdGVkLgo+Cj5UaGFu a3MKPk1hbGluaQoKLS1fMDAwX0VGMjZGQzE3NzZGN0ZGNDZCRkMwNzIzOTNFRkQxM0EyNTU4MDQ5 RTBTRVJWMDcwY29ycGVsZG9fCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSJ1cy1h c2NpaSIKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQoKPGh0bWwg eG1sbnM6dj0zRCJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbCIgeG1sbnM6bz0zRCJ1cm46 c2NoZW1hcy1taWNyPQpvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0zRCJ1cm46c2No ZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIiA9CnhtbG5zOm09M0QiaHR0cDovL3NjaGVt YXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0zRCJodHRwOj0KLy93 d3cudzMub3JnL1RSL1JFQy1odG1sNDAiPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0zRCJDb250 ZW50LVR5cGUiIGNvbnRlbnQ9M0QidGV4dC9odG1sOyBjaGFyc2V0PTNEdXMtYXNjaWkiPQo+Cjxt ZXRhIG5hbWU9M0QiR2VuZXJhdG9yIiBjb250ZW50PTNEIk1pY3Jvc29mdCBXb3JkIDE1IChmaWx0 ZXJlZCBtZWRpdW0pIj4KPHN0eWxlPjwhLS0KLyogRm9udCBEZWZpbml0aW9ucyAqLwpAZm9udC1m YWNlCgl7Zm9udC1mYW1pbHk6IkNhbWJyaWEgTWF0aCI7CglwYW5vc2UtMTowIDAgMCAwIDAgMCAw IDAgMCAwO30KQGZvbnQtZmFjZQoJe2ZvbnQtZmFtaWx5OkNhbGlicmk7CglwYW5vc2UtMToyIDE1 IDUgMiAyIDIgNCAzIDIgNDt9Ci8qIFN0eWxlIERlZmluaXRpb25zICovCnAuTXNvTm9ybWFsLCBs aS5Nc29Ob3JtYWwsIGRpdi5Nc29Ob3JtYWwKCXttYXJnaW46MGNtOwoJbWFyZ2luLWJvdHRvbTou MDAwMXB0OwoJZm9udC1zaXplOjExLjBwdDsKCWZvbnQtZmFtaWx5OiJDYWxpYnJpIiwic2Fucy1z ZXJpZiI7Cgltc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUzt9CmE6bGluaywgc3Bhbi5Nc29IeXBl cmxpbmsKCXttc28tc3R5bGUtcHJpb3JpdHk6OTk7Cgljb2xvcjojMDU2M0MxOwoJdGV4dC1kZWNv cmF0aW9uOnVuZGVybGluZTt9CmE6dmlzaXRlZCwgc3Bhbi5Nc29IeXBlcmxpbmtGb2xsb3dlZAoJ e21zby1zdHlsZS1wcmlvcml0eTo5OTsKCWNvbG9yOiM5NTRGNzI7Cgl0ZXh0LWRlY29yYXRpb246 dW5kZXJsaW5lO30Kc3Bhbi5FbWFpbFN0eWxlMTcKCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbDsK CWZvbnQtZmFtaWx5OiJDYWxpYnJpIiwic2Fucy1zZXJpZiI7Cgljb2xvcjp3aW5kb3d0ZXh0O30K c3Bhbi5FbWFpbFN0eWxlMTgKCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbC1yZXBseTsKCWZvbnQt ZmFtaWx5OiJDYWxpYnJpIiwic2Fucy1zZXJpZiI7Cgljb2xvcjojMUY0OTdEO30KLk1zb0NocERl ZmF1bHQKCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsKCWZvbnQtc2l6ZToxMC4wcHQ7fQpA cGFnZSBXb3JkU2VjdGlvbjEKCXtzaXplOjYxMi4wcHQgNzkyLjBwdDsKCW1hcmdpbjo3MC44NXB0 IDMuMGNtIDcwLjg1cHQgMy4wY207fQpkaXYuV29yZFNlY3Rpb24xCgl7cGFnZTpXb3JkU2VjdGlv bjE7fQotLT48L3N0eWxlPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgo8bzpzaGFwZWRlZmF1bHRz IHY6ZXh0PTNEImVkaXQiIHNwaWRtYXg9M0QiMTAyNiIgLz4KPC94bWw+PCFbZW5kaWZdLS0+PCEt LVtpZiBndGUgbXNvIDldPjx4bWw+CjxvOnNoYXBlbGF5b3V0IHY6ZXh0PTNEImVkaXQiPgo8bzpp ZG1hcCB2OmV4dD0zRCJlZGl0IiBkYXRhPTNEIjEiIC8+CjwvbzpzaGFwZWxheW91dD48L3htbD48 IVtlbmRpZl0tLT4KPC9oZWFkPgo8Ym9keSBsYW5nPTNEIlBULUJSIiBsaW5rPTNEIiMwNTYzQzEi IHZsaW5rPTNEIiM5NTRGNzIiPgo8ZGl2IGNsYXNzPTNEIldvcmRTZWN0aW9uMSI+CjxwIGNsYXNz PTNEIk1zb05vcm1hbCI+PHNwYW4gbGFuZz0zRCJFTi1VUyIgc3R5bGU9M0QiY29sb3I6IzFGNDk3 RCI+SGksPG86cD0KPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNw YW4gbGFuZz0zRCJFTi1VUyIgc3R5bGU9M0QiY29sb3I6IzFGNDk3RCI+PG86cD4mbj0KYnNwOzwv bzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNwYW4gbGFuZz0zRCJFTi1V UyIgc3R5bGU9M0QiY29sb3I6IzFGNDk3RCI+SW4gYW4gaT0Kbml0aWFsIGFuYWx5c2lzLCBpbiBt eSBvcGluaW9uIEkgd291bGQgZGlzY2FyZCB0aGUgJnF1b3Q7QWx0ZXJuYXRlIENvbmNlcHQgPQoz JnF1b3Q7LCBiZWNhdXNlIGl0IGdvZXMgYWdhaW5zdCB0aGUgaGV1cmlzdGljIG51bWJlciAjNiBv ZiBOaWVsc2VuIChyZWNvZ249Cml0aW9uIHJhdGhlciB0aGFuIHJlY2FsbCksIGl0IHNvb24gYmVj b21lcyBkaWZmaWN1bHQKIGZvciB0aGUgdXNlciByZW1lbWJlciB3aGVyZSBhcmUgdGhlIG9wdGlv bnMuPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIGxh bmc9M0QiRU4tVVMiIHN0eWxlPTNEImNvbG9yOiMxRjQ5N0QiPkFsc28gZGk9CnNjYXJkIHRoZSAm cXVvdDtBbHRlcm5hdGUgQ29uY2VwdCAxJnF1b3Q7LCBiZWNhdXNlIGl0IGJsZW5kcyB2ZXJ0aWNh bCBhbmQgaD0Kb3Jpem9udGFsIG1lbnVzLCBpdCBzb29uIGF2b2lkcyBhIHBhdHRlcm4gKHN5c3Rl bSBvZiBtZWFuaW5nKSBhbmQgY29uZnVzZXMgPQp0aGUgdXNlci48bzpwPjwvbzpwPjwvc3Bhbj48 L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNwYW4gbGFuZz0zRCJFTi1VUyIgc3R5bGU9M0Qi Y29sb3I6IzFGNDk3RCI+PG86cD4mbj0KYnNwOzwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNE Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9M0QiY29sb3I6IzFGNDk3RCI+VGhhbmtzLjxvOnA+PC9v OnA+PC9zcD0KYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPTNEImNv bG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGE9Cm4+PC9wPgo8cCBjbGFzcz0zRCJN c29Ob3JtYWwiPjxzcGFuIHN0eWxlPTNEImNvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+ PC9zcGE9Cm4+PC9wPgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPTNEImNvbG9y OiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGE9Cm4+PC9wPgo8cCBjbGFzcz0zRCJNc29O b3JtYWwiPjxzcGFuIHN0eWxlPTNEImNvbG9yOiMxRjQ5N0QiPjxvOnA+Jm5ic3A7PC9vOnA+PC9z cGE9Cm4+PC9wPgo8ZGl2IHN0eWxlPTNEImJvcmRlcjpub25lO2JvcmRlci1sZWZ0OnNvbGlkIGJs dWUgMS41cHQ7cGFkZGluZzowY20gMGNtIDBjbSA9CjQuMHB0Ij4KPHAgY2xhc3M9M0QiTXNvTm9y bWFsIj48c3BhbiBsYW5nPTNEIkVOLVVTIj5EYXRlOiBUdWUsIDI0IERlYyAyMDEzIDA3OjQ5OjM5 PQogLTA1MDAgKEVTVCk8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1h bCI+PHNwYW4gbGFuZz0zRCJFTi1VUyI+RnJvbTogRWxkYW4gSGlsZGVzaGVpbSAmbHQ7PGEgaD0K cmVmPTNEIm1haWx0bzplaGlsZGVzaEByZWRoYXQuY29tIj5laGlsZGVzaEByZWRoYXQuY29tPC9h PiZndDs8bzpwPjwvbzpwPjwvPQpzcGFuPjwvcD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3Bh biBsYW5nPTNEIkVOLVVTIj5UbzogU2hhaGFyIEhhdml2aSAmbHQ7PGEgaHJlZj0KPTNEIm1haWx0 bzpzaGFoYXJoQHJlZGhhdC5jb20iPnNoYWhhcmhAcmVkaGF0LmNvbTwvYT4mZ3Q7PG86cD48L286 cD48L3NwYW4+PQo8L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNwYW4gbGFuZz0zRCJFTi1V UyI+Q2M6IGVuZ2luZS1kZXZlbCAmbHQ7PGEgaHJlZj0zRD0KIm1haWx0bzplbmdpbmUtZGV2ZWxA b3ZpcnQub3JnIj5lbmdpbmUtZGV2ZWxAb3ZpcnQub3JnPC9hPiZndDs8bzpwPjwvbzpwPjwvPQpz cGFuPjwvcD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5nPTNEIkVOLVVTIj5TdWJq ZWN0OiBSZTogW0VuZ2luZS1kZXZlbF0gT3B0PQppb25zIGZvciBlbWJlZGRpbmcgQ2xvdWQgaW5p dCBmZWF0dXJlcyBpbnRvIFZNIGRpYWxvZyAtIE5lZWQgSW5wdXQ8bzpwPjwvbzo9CnA+PC9zcGFu PjwvcD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5nPTNEIkVOLVVTIj48bzpwPiZu YnNwOzwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNwYW4gbGFuZz0z RCJFTi1VUyI+SGksPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwi PjxzcGFuIGxhbmc9M0QiRU4tVVMiPkNhbiB3ZSBtZXJnZSB0aG9zZSAyIHBhZ2VzIHRvZ2U9CnRo ZXI/PG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIGxh bmc9M0QiRU4tVVMiPkVsZGFuPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29O b3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4K PHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5nPTNEIkVOLVVTIj4tLS0tLSBPcmlnaW5h bCBNZXNzYWdlIC0tLS0tPG86PQpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05v cm1hbCI+PHNwYW4gbGFuZz0zRCJFTi1VUyI+RnJvbTogJnF1b3Q7U2hhaGFyIEhhdml2aSZxdW90 Oz0KICZsdDtzaGFoYXJoIGF0IHJlZGhhdC5jb20mZ3Q7PG86cD48L286cD48L3NwYW4+PC9wPgo8 cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiPlRvOiAmcXVvdDtNYWxp bmkgUmFvJnF1b3Q7ICZsdDs9Cm1yYW8gYXQgcmVkaGF0LmNvbSZndDs8bzpwPjwvbzpwPjwvc3Bh bj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNwYW4gbGFuZz0zRCJFTi1VUyI+Q2M6ICZx dW90O2VuZ2luZS1kZXZlbCZxdW90OyAmbD0KdDtlbmdpbmUtZGV2ZWwgYXQgb3ZpcnQub3JnJmd0 OywgJnF1b3Q7RWxkYW4gSGlsZGVzaGVpbSZxdW90OyAmbHQ7ZWhpbGRlc2ggPQphdCByZWRoYXQu Y29tJmd0OywgJnF1b3Q7T21lciBGcmVua2VsJnF1b3Q7ICZsdDtvZnJlbmtlbCBhdCByZWRoYXQu Y29tJmd0Oyw9CiAmcXVvdDtNaWNoYWwgU2tyaXZhbmVrJnF1b3Q7ICZsdDttaWNoYWwuc2tyaXZh bmVrIGF0IHJlZGhhdC5jb20mZ3Q7PG86cD48Lz0KbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNE Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0zRCJFTi1VUyI+U2VudDogVHVlc2RheSwgRGVjZW1iZXIg MjQsIDIwMT0KMyAyOjMzOjI4IFBNPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJN c29Ob3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiPlN1YmplY3Q6IFJlOiBbRW5naW5lLWRldmVs XSBPcHQ9CmlvbnMgZm9yIGVtYmVkZGluZyBDbG91ZCBpbml0IGZlYXR1cmVzIGludG8gVk0gZGlh bG9nIC0gTmVlZCBJbnB1dDxvOnA+PC9vOj0KcD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29O b3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4K PHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5nPTNEIkVOLVVTIj5IaSw8bzpwPjwvbzpw Pjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNwYW4gbGFuZz0zRCJFTi1VUyI+ V2UgaGF2ZSBhIGZlYXR1cmUgcGFnZSBmb3IgdGhlID0KVk0gSW5pdCAoaW5jbHVkaW5nIENsb3Vk LUluaXQgYW5kIFdpbmRvd3M8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05v cm1hbCI+PHNwYW4gbGFuZz0zRCJFTi1VUyI+U3lzcHJlcCk6PG86cD48L286cD48L3NwYW4+PC9w Pgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiPjxvOnA+Jm5ic3A7 PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5nPTNEIkVO LVVTIj48YSBocmVmPTNEImh0dHA6Ly93d3cub3ZpcnQub3JnPQovRmVhdHVyZXMvdm0taW5pdC1w ZXJzaXN0ZW50Ij5odHRwOi8vd3d3Lm92aXJ0Lm9yZy9GZWF0dXJlcy92bS1pbml0LXBlcnNpc3Q9 CmVudDwvYT48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNw YW4gbGFuZz0zRCJFTi1VUyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0z RCJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFu PjwvcD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5nPTNEIkVOLVVTIj4mZ3Q7RnJv bTogJnF1b3Q7TWFsaW5pIFJhbyZxdW90PQo7ICZsdDttcmFvIGF0IHJlZGhhdC5jb20mZ3Q7PG86 cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9M0Qi RU4tVVMiPiZndDtUbzogJnF1b3Q7ZW5naW5lLWRldmVsJnF1b3Q9CjsgJmx0O2VuZ2luZS1kZXZl bCBhdCBvdmlydC5vcmcmZ3Q7PG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29O b3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiPiZndDtDYzogJnF1b3Q7RWxkYW4gSGlsZGVzaGVp bSY9CnF1b3Q7ICZsdDtlaGlsZGVzaCBhdCByZWRoYXQuY29tJmd0OzxvOnA+PC9vOnA+PC9zcGFu PjwvcD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5nPTNEIkVOLVVTIj4mZ3Q7U2Vu dDogTW9uZGF5LCBEZWNlbWJlciAyMywgPQoyMDEzIDExOjQzOjA3IFBNPG86cD48L286cD48L3Nw YW4+PC9wPgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiPiZndDtT dWJqZWN0OiBbRW5naW5lLWRldmVsXSBPcHQ9CmlvbnMgZm9yIGVtYmVkZGluZyBDbG91ZCBpbml0 IGZlYXR1cmVzIGludG8gVk0gZGlhbG9nIC0gTmVlZCBJbnB1dDxvOnA+PC9vOj0KcD48L3NwYW4+ PC9wPgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMiPiZndDs8bzpw PiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A9Cj4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBs YW5nPTNEIkVOLVVTIj4mZ3Q7SGVsbG8gYWxsLCA8bzpwPjwvbzpwPjwvc3BhPQpuPjwvcD4KPHAg Y2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5nPTNEIkVOLVVTIj4mZ3Q7PG86cD4mbmJzcDs8 L286cD48L3NwYW4+PC9wPQo+CjxwIGNsYXNzPTNEIk1zb05vcm1hbCI+PHNwYW4gbGFuZz0zRCJF Ti1VUyI+Jmd0O1RoZXJlIGlzIGEgY3VycmVudCBmZWF0dXJlID0KdG8gZW1iZWQgY2xvdWQgaW5p dCBjb25maWd1cmF0aW9uIHdoaWNoIHdhcyBvcmlnaW5hbGx5IHBhcnQgb2YgdGhlIFJ1biBkaWFs PQpvZyB0byBiZSBwYXJ0IG9mIHRoZSBjcmVhdGUvIEVkaXQgVk0gZGlhbG9nLiBUaGlzIHByZXNl bnRzIGEgY2hhbGxlbmdlIGluIHQ9CmVybXMgb2YmbmJzcDsgZ29vZCBkaXNwbGF5IG9mIHRoZSBo aWVyYXJjaGllcwogb2YgaW5mb3JtYXRpb24gc2luY2UgdGhlIFZNIGRpYWxvZyBpcyBhbHJlYWR5 IGhhdmluZyBzdWJ0YWJzIHN0YWNrZWQgdmVydGk9CmNhbGx5LiBQbGVhc2UgZmluZCBoZXJlICg8 YSBocmVmPTNEImh0dHA6Ly93d3cub3ZpcnQub3JnL1VYL2Nsb3VkX2luaXQiPmh0dD0KcDovL3d3 dy5vdmlydC5vcmcvVVgvY2xvdWRfaW5pdDwvYT4pIGFsdGVybmF0ZSBjb25jZXB0cyBvZiBob3cg d2UgbWlnaHQgcmVwPQpyZXNlbnQgYWxsIHRoZSBsZXZlbHMgb2YgaGllcmFyY2h5CiBmcm9tIHRo ZSBWTSBkaWFsb2cgc3ViIHRhYnMgdG8gdGhlIGNsb3VkIGluaXQgY2F0ZWdvcmllcyBhbmQgdGhl IGNvbnRlbnQgKD0KIHdoaWNoIGlzIGFsc28gbmVzdGVkIHNvbWV0aW1lcykgZm9yIGVhY2guPG86 cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9M0Qi RU4tVVMiPiZndDs8bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A9Cj4KPHAgY2xhc3M9M0QiTXNv Tm9ybWFsIj48c3BhbiBsYW5nPTNEIkVOLVVTIj4mZ3Q7SSBoYXZlIHByb3ZpZGVkIGJyaWVmIGV4 cGxhPQpuYXRpb25zIG9mIGVhY2ggY29uY2VwdCBhbmQgSSB3b3VsZCBsaWtlIHlvdXIgZmVlZGJh Y2sgb24gdGhlc2UgLi4uIGVzcCB3aXQ9CmggcmVnYXJkIHRvIGZlYXNpYmlsaXR5LiBUaGUgZ2Vu ZXJhbCBnb2FscyB0aGF0IGdvdmVybiB0aGUgdmFyaW91cyBjb25jZXB0cz0KIGFyZSAtCjxvOnA+ PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj48c3BhbiBsYW5nPTNEIkVO LVVTIj4mZ3Q7PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPQo+CjxwIGNsYXNzPTNEIk1zb05v cm1hbCI+PHNwYW4gbGFuZz0zRCJFTi1VUyI+Jmd0Oy0gQ29ycmVjdCByZXByZXNlbnRhdGlvbiBv Zj0KIHRoZSBoaWVyYXJjaHk8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPTNEIk1zb05v cm1hbCI+PHNwYW4gbGFuZz0zRCJFTi1VUyI+Jmd0Oy0gTm90IG92ZXJsb2FkaW5nIHRoZSB1c2Vy cz0KIHdpdGggdG9vIG11Y2ggaW5mbyBhbmQgY2x1dHRlcmluZyB0aGUgc2NyZWVuPG86cD48L286 cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9M0QiRU4tVVMi PiZndDstIE5vdCB1dGlsaXppbmcgdGhlIHNhbWUgVUk9CiBwYXJhZGlnbSAoIGxpa2UgZXhwYW5k LyBjb2xsYXBzZSkgZm9yIGRpZmZlcmVudCB0eXBlcyBvZiBpbmZvLiBGb3IgZXhhbXBsZT0KLCB3 ZSBoYXZlIGNhdGVnb3JpZXMgb2YgaW5mbyB3aGVyZSB0aGUgZmllbGRzIGFyZSBkaXN0aW5jdCBm cm9tIGVhY2ggb3RoZXIgPQphbmQgdGhlbiB3ZSBoYXZlIHRpbWVzIHdoZXJlIHRoZSB1c2VyIGlz CiBhYmxlIHRvIGFkZCBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgb2JqZWN0IHR5cGUg LSBlLmcgTklDcyBhbmQgaGF2ZT0KIHRoZSBzYW1lIHNldCBvZiBmaWVsZHMgYmUgZGVmaW5lZCBm b3IgZWFjaCBpbnN0YW5jZS4KPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0zRCJNc29O b3JtYWwiPiZndDs8bzpwPiZuYnNwOzwvbzpwPjwvcD4KPHAgY2xhc3M9M0QiTXNvTm9ybWFsIj4m Z3Q7WW91ciBmZWVkYmFjayBpcyBhcHByZWNpYXRlZC48bzpwPjwvbzpwPjwvcD4KPHAgY2xhc3M9 M0QiTXNvTm9ybWFsIj4mZ3Q7PG86cD4mbmJzcDs8L286cD48L3A+CjxwIGNsYXNzPTNEIk1zb05v cm1hbCI+Jmd0O1RoYW5rczxvOnA+PC9vOnA+PC9wPgo8cCBjbGFzcz0zRCJNc29Ob3JtYWwiPiZn dDtNYWxpbmk8bzpwPjwvbzpwPjwvcD4KPC9kaXY+CjwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4KCi0t XzAwMF9FRjI2RkMxNzc2RjdGRjQ2QkZDMDcyMzkzRUZEMTNBMjU1ODA0OUUwU0VSVjA3MGNvcnBl bGRvXy0tCg== --===============7331847630434093815==-- From gshereme at redhat.com Thu Dec 26 15:09:47 2013 Content-Type: multipart/mixed; boundary="===============2680546539303744870==" MIME-Version: 1.0 From: Greg Sheremeta To: devel at ovirt.org Subject: Re: [Engine-devel] Engine on Fedora 20 Date: Thu, 26 Dec 2013 15:09:46 -0500 Message-ID: <1477991776.28243512.1388088586904.JavaMail.root@redhat.com> In-Reply-To: 20131219202255.GB3468@redhat.com --===============2680546539303744870== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Adam Litke" > To: "engine-devel" > Sent: Thursday, December 19, 2013 3:22:55 PM > Subject: Re: [Engine-devel] Engine on Fedora 20 > = > On 19/12/13 15:05 -0500, Adam Litke wrote: > >Has anyone had success running ovirt-engine on Fedora 20? I upgraded > >my system on Wednesday and thought everything was fine but then I > >started getting the following error: > > > >2013-12-19 14:53:31,447 ERROR [org.ovirt.engine.core.bll.Backend] (MSC > >service thread 1-5) Error in getting DB connection. The database is > >inaccessible. Original exception is: > >DataAccessResourceFailureException: Error retreiving database > >metadata; nested exception is > >org.springframework.jdbc.support.MetaDataAccessException: Could not > >get Connection for extracting meta data; nested exception is > >org.springframework.jdbc.CannotGetJdbcConnectionException: Could not > >get JDBC Connection; nested exception is java.sql.SQLException: > >javax.resource.ResourceException: IJ000453: Unable to get managed > >connection for java:/ENGINEDataSource > > > >Has anyone encountered this recently? > = > Thanks to alonb for his help on IRC. As it turns out, I had a poorly > configured pg_hba.conf file that only started causing problems on F20. > To fix I replaced my contents with the following two lines: > = > host engine engine 0.0.0.0/0 md5 > host engine engine ::0/0 md5 > = > Otherwise, it seems to be working fine. > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel > = This happened to me too. Alon, should we wiki this in http://www.ovirt.org/OVirt_Engine_Development_= Environment#Database ? The current instructions say to use 127.0.0.1 inste= ad of 0.0.0.0 Also, I find it strange that 127.0.0.1 wasn't working for me, whereas 0.0.0= .0 does. Greg --===============2680546539303744870==-- From alonbl at redhat.com Thu Dec 26 15:13:25 2013 Content-Type: multipart/mixed; boundary="===============0584696115417857920==" MIME-Version: 1.0 From: Alon Bar-Lev To: devel at ovirt.org Subject: Re: [Engine-devel] Engine on Fedora 20 Date: Thu, 26 Dec 2013 15:13:25 -0500 Message-ID: <1190997758.28243581.1388088805176.JavaMail.root@redhat.com> In-Reply-To: 1477991776.28243512.1388088586904.JavaMail.root@redhat.com --===============0584696115417857920== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Greg Sheremeta" > To: "Adam Litke" , "Alon Bar-Lev" > Cc: "engine-devel" > Sent: Thursday, December 26, 2013 10:09:46 PM > Subject: Re: [Engine-devel] Engine on Fedora 20 > = > = > = > ----- Original Message ----- > > From: "Adam Litke" > > To: "engine-devel" > > Sent: Thursday, December 19, 2013 3:22:55 PM > > Subject: Re: [Engine-devel] Engine on Fedora 20 > > = > > On 19/12/13 15:05 -0500, Adam Litke wrote: > > >Has anyone had success running ovirt-engine on Fedora 20? I upgraded > > >my system on Wednesday and thought everything was fine but then I > > >started getting the following error: > > > > > >2013-12-19 14:53:31,447 ERROR [org.ovirt.engine.core.bll.Backend] (MSC > > >service thread 1-5) Error in getting DB connection. The database is > > >inaccessible. Original exception is: > > >DataAccessResourceFailureException: Error retreiving database > > >metadata; nested exception is > > >org.springframework.jdbc.support.MetaDataAccessException: Could not > > >get Connection for extracting meta data; nested exception is > > >org.springframework.jdbc.CannotGetJdbcConnectionException: Could not > > >get JDBC Connection; nested exception is java.sql.SQLException: > > >javax.resource.ResourceException: IJ000453: Unable to get managed > > >connection for java:/ENGINEDataSource > > > > > >Has anyone encountered this recently? > > = > > Thanks to alonb for his help on IRC. As it turns out, I had a poorly > > configured pg_hba.conf file that only started causing problems on F20. > > To fix I replaced my contents with the following two lines: > > = > > host engine engine 0.0.0.0/0 md5 > > host engine engine ::0/0 md5 > > = > > Otherwise, it seems to be working fine. > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > = > This happened to me too. > = > Alon, should we wiki this in > http://www.ovirt.org/OVirt_Engine_Development_Environment#Database ? The > current instructions say to use 127.0.0.1 instead of 0.0.0.0 > = > Also, I find it strange that 127.0.0.1 wasn't working for me, whereas 0.0= .0.0 > does. loopback should work. Have you put the ipv6 entry as well? Alon --===============0584696115417857920==-- From gshereme at redhat.com Thu Dec 26 15:18:57 2013 Content-Type: multipart/mixed; boundary="===============8745385397702783651==" MIME-Version: 1.0 From: Greg Sheremeta To: devel at ovirt.org Subject: Re: [Engine-devel] Engine on Fedora 20 Date: Thu, 26 Dec 2013 15:18:57 -0500 Message-ID: <944984024.28243670.1388089137583.JavaMail.root@redhat.com> In-Reply-To: 1190997758.28243581.1388088805176.JavaMail.root@redhat.com --===============8745385397702783651== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Alon Bar-Lev" > To: "Greg Sheremeta" > Cc: "Adam Litke" , "engine-devel" > Sent: Thursday, December 26, 2013 3:13:25 PM > Subject: Re: [Engine-devel] Engine on Fedora 20 > = > = > = > ----- Original Message ----- > > From: "Greg Sheremeta" > > To: "Adam Litke" , "Alon Bar-Lev" > > Cc: "engine-devel" > > Sent: Thursday, December 26, 2013 10:09:46 PM > > Subject: Re: [Engine-devel] Engine on Fedora 20 > > = > > = > > = > > ----- Original Message ----- > > > From: "Adam Litke" > > > To: "engine-devel" > > > Sent: Thursday, December 19, 2013 3:22:55 PM > > > Subject: Re: [Engine-devel] Engine on Fedora 20 > > > = > > > On 19/12/13 15:05 -0500, Adam Litke wrote: > > > >Has anyone had success running ovirt-engine on Fedora 20? I upgraded > > > >my system on Wednesday and thought everything was fine but then I > > > >started getting the following error: > > > > > > > >2013-12-19 14:53:31,447 ERROR [org.ovirt.engine.core.bll.Backend] (M= SC > > > >service thread 1-5) Error in getting DB connection. The database is > > > >inaccessible. Original exception is: > > > >DataAccessResourceFailureException: Error retreiving database > > > >metadata; nested exception is > > > >org.springframework.jdbc.support.MetaDataAccessException: Could not > > > >get Connection for extracting meta data; nested exception is > > > >org.springframework.jdbc.CannotGetJdbcConnectionException: Could not > > > >get JDBC Connection; nested exception is java.sql.SQLException: > > > >javax.resource.ResourceException: IJ000453: Unable to get managed > > > >connection for java:/ENGINEDataSource > > > > > > > >Has anyone encountered this recently? > > > = > > > Thanks to alonb for his help on IRC. As it turns out, I had a poorly > > > configured pg_hba.conf file that only started causing problems on F20. > > > To fix I replaced my contents with the following two lines: > > > = > > > host engine engine 0.0.0.0/0 md5 > > > host engine engine ::0/0 md5 > > > = > > > Otherwise, it seems to be working fine. > > > _______________________________________________ > > > Engine-devel mailing list > > > Engine-devel(a)ovirt.org > > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > = > > This happened to me too. > > = > > Alon, should we wiki this in > > http://www.ovirt.org/OVirt_Engine_Development_Environment#Database ? T= he > > current instructions say to use 127.0.0.1 instead of 0.0.0.0 > > = > > Also, I find it strange that 127.0.0.1 wasn't working for me, whereas > > 0.0.0.0 > > does. > = > loopback should work. Have you put the ipv6 entry as well? > = > Alon > = You're right, either of these works: #host engine engine 0.0.0.0/0 md5 #host engine engine ::0/0 md5 host all all 127.0.0.1/32 password host all all ::1/128 password Sorry for the spam. --===============8745385397702783651==-- From danken at redhat.com Thu Dec 26 19:35:06 2013 Content-Type: multipart/mixed; boundary="===============4516883126638737541==" MIME-Version: 1.0 From: Dan Kenigsberg To: devel at ovirt.org Subject: Re: [Engine-devel] Request for power-user permissions Date: Fri, 27 Dec 2013 00:34:36 +0000 Message-ID: <20131227003435.GB22940@redhat.com> In-Reply-To: 1418459252.43511749.1388045427429.JavaMail.root@redhat.com --===============4516883126638737541== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On Thu, Dec 26, 2013 at 03:10:27AM -0500, Ayal Baron wrote: > = > = > ----- Original Message ----- > > Hi all, > > = > > I'm Nir from storage team. I work mostly on vdsm. > > = > > I want power-user permissions for jenkins.ovirt.org so I would be able = to > > create and modify jobs related to vdsm. > = > +1 from me. +1 --===============4516883126638737541==-- From wang.tianyi at qq.com Fri Dec 27 04:29:05 2013 Content-Type: multipart/mixed; boundary="===============0882498132582258413==" MIME-Version: 1.0 From: JustMan To: devel at ovirt.org Subject: [Engine-devel] How to custom the UI for oVirt? Date: Fri, 27 Dec 2013 17:29:02 +0800 Message-ID: --===============0882498132582258413== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable This is a multi-part message in MIME format. ------=3D_NextPart_52BD485E_08F68980_60AF79F1 Content-Type: text/plain; charset=3D"gb18030" Content-Transfer-Encoding: base64 SEkgQWxso7oNCg0KDQogICAgSWYgY3VzdG9tIGRldmVsb3BtZW50IHRoZSBVSSBmb3Igb1Zp cnQsIHdoYXQncyBkZXZlbG9wbWVudCB0ZWNobm9sb2d5IG11c3QgYmUgbGVhcm4sIGFuZCB3 aGVyZSBpcyB0aGUgVUkgbW9kdWxlIGluIHRoZSByZXNvdXJjZT8gV2hlcmUgaXMgdGhlIHN0 YXJ0IHN0ZXCjvw0KDQoNCiAgICBXaGVyZSBjYW4gZmluZCBvVmlydCBhcmNoaXRlY3R1cmUg ZG9jdW1lbnQ/IEkgZ290byB0aGUgb2ZmaWNlIHdlYnNpdGUsIGFscmVhZHkgcmVhZCBzb21l IGRldmVsb3BtZW50IGRvY3VtZW50LCBidXQgc3RpbGwgdmVyeSBjbGVhciB0aGUgYXJjaGl0 ZWN0dXJlIG9mIG9WaXJ0LCBzcGVjaWFsIG9mIHRoZSBHV1QgcGFydC4NCg0KDQppa2UNCg0K DQpUaGFua3M=3D ------=3D_NextPart_52BD485E_08F68980_60AF79F1 Content-Type: text/html; charset=3D"gb18030" Content-Transfer-Encoding: base64 PGRpdj5ISSBBbGyjujwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyBJ ZiBjdXN0b20gZGV2ZWxvcG1lbnQgdGhlIFVJIGZvciBvVmlydCwgd2hhdCdzIGRldmVsb3Bt ZW50IHRlY2hub2xvZ3kgbXVzdCBiZSBsZWFybiwgYW5kIHdoZXJlIGlzIHRoZSBVSSBtb2R1 bGUgaW4gdGhlIHJlc291cmNlPyBXaGVyZSBpcyB0aGUgc3RhcnQgc3RlcKO/PC9kaXY+PGRp dj48YnI+PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7IFdoZXJlIGNhbiBmaW5kIG9WaXJ0IGFy Y2hpdGVjdHVyZSBkb2N1bWVudD8gSSBnb3RvIHRoZSBvZmZpY2Ugd2Vic2l0ZSwgYWxyZWFk eSByZWFkIHNvbWUgZGV2ZWxvcG1lbnQgZG9jdW1lbnQsIGJ1dCBzdGlsbCB2ZXJ5IGNsZWFy IHRoZSBhcmNoaXRlY3R1cmUgb2Ygb1ZpcnQsIHNwZWNpYWwgb2YgdGhlIEdXVCBwYXJ0Ljwv ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+aWtlPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5U aGFua3M8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+PGJyPjwv ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2Pg=3D=3D ------=3D_NextPart_52BD485E_08F68980_60AF79F1-- --===============0882498132582258413== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" VGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC4KCi0tLS0tLT1fTmV4 dFBhcnRfNTJCRDQ4NUVfMDhGNjg5ODBfNjBBRjc5RjEKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWlu OwoJY2hhcnNldD0iZ2IxODAzMCIKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0CgpT RWtnUVd4c283b05DZzBLRFFvZ0lDQWdTV1lnWTNWemRHOXRJR1JsZG1Wc2IzQnRaVzUwSUhSb1pT QlZTU0JtYjNJZ2IxWnAKY25Rc0lIZG9ZWFFuY3lCa1pYWmxiRzl3YldWdWRDQjBaV05vYm05c2Iy ZDVJRzExYzNRZ1ltVWdiR1ZoY200c0lHRnVaQ0IzCmFHVnlaU0JwY3lCMGFHVWdWVWtnYlc5a2RX eGxJR2x1SUhSb1pTQnlaWE52ZFhKalpUOGdWMmhsY21VZ2FYTWdkR2hsSUhOMApZWEowSUhOMFpY Q2p2dzBLRFFvTkNpQWdJQ0JYYUdWeVpTQmpZVzRnWm1sdVpDQnZWbWx5ZENCaGNtTm9hWFJsWTNS MWNtVWcKWkc5amRXMWxiblEvSUVrZ1oyOTBieUIwYUdVZ2IyWm1hV05sSUhkbFluTnBkR1VzSUdG c2NtVmhaSGtnY21WaFpDQnpiMjFsCklHUmxkbVZzYjNCdFpXNTBJR1J2WTNWdFpXNTBMQ0JpZFhR Z2MzUnBiR3dnZG1WeWVTQmpiR1ZoY2lCMGFHVWdZWEpqYUdsMApaV04wZFhKbElHOW1JRzlXYVhK MExDQnpjR1ZqYVdGc0lHOW1JSFJvWlNCSFYxUWdjR0Z5ZEM0TkNnMEtEUXBwYTJVTkNnMEsKRFFw VWFHRnVhM009CgotLS0tLS09X05leHRQYXJ0XzUyQkQ0ODVFXzA4RjY4OTgwXzYwQUY3OUYxCkNv bnRlbnQtVHlwZTogdGV4dC9odG1sOwoJY2hhcnNldD0iZ2IxODAzMCIKQ29udGVudC1UcmFuc2Zl ci1FbmNvZGluZzogYmFzZTY0CgpQR1JwZGo1SVNTQkJiR3lqdWp3dlpHbDJQanhrYVhZK1BHSnlQ and2WkdsMlBqeGthWFkrSm01aWMzQTdJQ1p1WW5Od095QkoKWmlCamRYTjBiMjBnWkdWMlpXeHZj RzFsYm5RZ2RHaGxJRlZKSUdadmNpQnZWbWx5ZEN3Z2QyaGhkQ2R6SUdSbGRtVnNiM0J0ClpXNTBJ SFJsWTJodWIyeHZaM2tnYlhWemRDQmlaU0JzWldGeWJpd2dZVzVrSUhkb1pYSmxJR2x6SUhSb1pT QlZTU0J0YjJSMQpiR1VnYVc0Z2RHaGxJSEpsYzI5MWNtTmxQeUJYYUdWeVpTQnBjeUIwYUdVZ2Mz UmhjblFnYzNSbGNLTy9QQzlrYVhZK1BHUnAKZGo0OFluSStQQzlrYVhZK1BHUnBkajRtYm1KemNE c2dKbTVpYzNBN0lGZG9aWEpsSUdOaGJpQm1hVzVrSUc5V2FYSjBJR0Z5ClkyaHBkR1ZqZEhWeVpT QmtiMk4xYldWdWREOGdTU0JuYjNSdklIUm9aU0J2Wm1acFkyVWdkMlZpYzJsMFpTd2dZV3h5WldG awplU0J5WldGa0lITnZiV1VnWkdWMlpXeHZjRzFsYm5RZ1pHOWpkVzFsYm5Rc0lHSjFkQ0J6ZEds c2JDQjJaWEo1SUdOc1pXRnkKSUhSb1pTQmhjbU5vYVhSbFkzUjFjbVVnYjJZZ2IxWnBjblFzSUhO d1pXTnBZV3dnYjJZZ2RHaGxJRWRYVkNCd1lYSjBMand2ClpHbDJQanhrYVhZK1BHSnlQand2Wkds MlBqeGthWFkrYVd0bFBDOWthWFkrUEdScGRqNDhZbkkrUEM5a2FYWStQR1JwZGo1VQphR0Z1YTNN OEwyUnBkajQ4WkdsMlBqeGljajQ4TDJScGRqNDhaR2wyUGladVluTndPend2WkdsMlBqeGthWFkr UEdKeVBqd3YKWkdsMlBqeGthWFkrUEdKeVBqd3ZaR2wyUGp4a2FYWStQR0p5UGp3dlpHbDJQanhr YVhZK1BHSnlQand2WkdsMlBnPT0KCi0tLS0tLT1fTmV4dFBhcnRfNTJCRDQ4NUVfMDhGNjg5ODBf NjBBRjc5RjEtLQoK --===============0882498132582258413==-- From eedri at redhat.com Sun Dec 29 01:51:59 2013 Content-Type: multipart/mixed; boundary="===============2333167403481031592==" MIME-Version: 1.0 From: Eyal Edri To: devel at ovirt.org Subject: Re: [Engine-devel] Request for power-user permissions Date: Sun, 29 Dec 2013 01:51:58 -0500 Message-ID: <1063617015.9554645.1388299917998.JavaMail.root@redhat.com> In-Reply-To: 20131227003435.GB22940@redhat.com --===============2333167403481031592== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable OK, +1 from me as well, i don't see any objections. Nir, i will send you the credentials in private, please contact the infra team for any assistance in configuring a specific job if needed. Eyal. ----- Original Message ----- > From: "Dan Kenigsberg" > To: "Ayal Baron" > Cc: "engine-devel" , infra(a)ovirt.org > Sent: Friday, December 27, 2013 2:34:36 AM > Subject: Re: [Engine-devel] Request for power-user permissions > = > On Thu, Dec 26, 2013 at 03:10:27AM -0500, Ayal Baron wrote: > > = > > = > > ----- Original Message ----- > > > Hi all, > > > = > > > I'm Nir from storage team. I work mostly on vdsm. > > > = > > > I want power-user permissions for jenkins.ovirt.org so I would be abl= e to > > > create and modify jobs related to vdsm. > > = > > +1 from me. > = > +1 > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel >=20 --===============2333167403481031592==-- From ovedo at redhat.com Sun Dec 29 02:09:48 2013 Content-Type: multipart/mixed; boundary="===============8469224637542496893==" MIME-Version: 1.0 From: Oved Ourfalli To: devel at ovirt.org Subject: Re: [Engine-devel] How to custom the UI for oVirt? Date: Sun, 29 Dec 2013 02:09:47 -0500 Message-ID: <624425480.47269863.1388300987173.JavaMail.root@redhat.com> In-Reply-To: tencent_2F670DD84311ABA713C38D22@qq.com --===============8469224637542496893== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi If you would like to customize the UI to fit your needs, like adding new ta= bs, new action buttons, and etc., then I recommend reading the wiki pages a= bout UI plugins: Formal page: http://www.ovirt.org/Features/UIPlugins Blog posts regarding that: http://ovedou.blogspot.co.il/ http://developerblog.redhat.com/2013/12/19/advanced_integration_rhevm-part2/ http://developerblog.redhat.com/2013/12/19/advanced_integration_rhevm-part1/ http://developerblog.redhat.com/2013/12/12/advanced_integration_rhevm-part1/ As for the architecture information, there is an architecture page on http:= //www.ovirt.org/Architecture, but it doesn't have a lot on GWT. Vojtech/Einav - can you send some information on that, or better update the= wiki page? Thank you, Oved ----- Original Message ----- > From: "JustMan" > To: "engine-devel" > Sent: Friday, December 27, 2013 11:29:02 AM > Subject: [Engine-devel] How to custom the UI for oVirt? > = > HI All=EF=BC=9A > = > If custom development the UI for oVirt, what's development technology mus= t be > learn, and where is the UI module in the resource? Where is the start ste= p=EF=BC=9F > = > Where can find oVirt architecture document? I goto the office website, > already read some development document, but still very clear the > architecture of oVirt, special of the GWT part. > = > ike > = > Thanks > = > = > = > = > = > = > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel > --===============8469224637542496893==-- From gshereme at redhat.com Mon Dec 30 14:51:21 2013 Content-Type: multipart/mixed; boundary="===============8382650474082994360==" MIME-Version: 1.0 From: Greg Sheremeta To: devel at ovirt.org Subject: Re: [Engine-devel] How to custom the UI for oVirt? Date: Mon, 30 Dec 2013 14:51:19 -0500 Message-ID: <1892413815.28466668.1388433079868.JavaMail.root@redhat.com> In-Reply-To: 624425480.47269863.1388300987173.JavaMail.root@redhat.com --===============8382650474082994360== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable The GWT architecture we use is based on GWTP, an MVP framework for GWT: htt= ps://github.com/ArcBees/GWTP We don't currently have a widget hierarchy or catalog built. If you're just starting out with GWT, it's a steep learning curve. If you'r= e already familiar with GWT and GWTP, you'll be in better shape. In addition to the UI Plugins that Oved mentioned, oVirt also has branding = support for changing colors, logos, etc.: http://www.ovirt.org/Feature/Bran= ding If you're sure you want to do GWT development on oVirt, start here: http://= www.ovirt.org/DebugFrontend Greg ----- Original Message ----- > From: "Oved Ourfalli" > To: "JustMan" > Cc: "engine-devel" > Sent: Sunday, December 29, 2013 2:09:47 AM > Subject: Re: [Engine-devel] How to custom the UI for oVirt? > = > Hi > = > If you would like to customize the UI to fit your needs, like adding new > tabs, new action buttons, and etc., then I recommend reading the wiki pag= es > about UI plugins: > Formal page: http://www.ovirt.org/Features/UIPlugins > = > Blog posts regarding that: > http://ovedou.blogspot.co.il/ > http://developerblog.redhat.com/2013/12/19/advanced_integration_rhevm-par= t2/ > http://developerblog.redhat.com/2013/12/19/advanced_integration_rhevm-par= t1/ > http://developerblog.redhat.com/2013/12/12/advanced_integration_rhevm-par= t1/ > = > As for the architecture information, there is an architecture page on > http://www.ovirt.org/Architecture, but it doesn't have a lot on GWT. > Vojtech/Einav - can you send some information on that, or better update t= he > wiki page? > = > Thank you, > Oved > = > ----- Original Message ----- > > From: "JustMan" > > To: "engine-devel" > > Sent: Friday, December 27, 2013 11:29:02 AM > > Subject: [Engine-devel] How to custom the UI for oVirt? > > = > > HI All=EF=BC=9A > > = > > If custom development the UI for oVirt, what's development technology m= ust > > be > > learn, and where is the UI module in the resource? Where is the start s= tep=EF=BC=9F > > = > > Where can find oVirt architecture document? I goto the office website, > > already read some development document, but still very clear the > > architecture of oVirt, special of the GWT part. > > = > > ike > > = > > Thanks > > = > > = > > = > > = > > = > > = > > _______________________________________________ > > Engine-devel mailing list > > Engine-devel(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/engine-devel > > > _______________________________________________ > Engine-devel mailing list > Engine-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel > --===============8382650474082994360==-- From dfediuck at redhat.com Tue Dec 31 09:50:50 2013 Content-Type: multipart/mixed; boundary="===============5391644798286090000==" MIME-Version: 1.0 From: Doron Fediuck To: devel at ovirt.org Subject: [Engine-devel] Broken devel setup on Gentoo? Date: Tue, 31 Dec 2013 16:50:48 +0200 Message-ID: <52C2D9C8.7090508@redhat.com> --===============5391644798286090000== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable While refreshing my devel environment, setup fails. Log file shows this: 2013-12-31 16:26:05 DEBUG otopi.plugins.otopi.services.openrc plugin.executeRaw:366 execute: ('/etc/init.d/ovirt-websocket-proxy', '-q', 'status'), executable=3D'None', cwd=3D 'None', env=3DNone 2013-12-31 16:26:05 DEBUG otopi.plugins.otopi.services.openrc plugin.executeRaw:389 execute-result: ('/etc/init.d/ovirt-websocket-proxy', '-q', 'status'), exception Traceback (most recent call last): File "/usr/lib64/python2.7/site-packages/otopi/plugin.py", line 376, in executeRaw env=3Denv, File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__ errread, errwrite) File "/usr/lib64/python2.7/subprocess.py", line 1308, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory Should there be a redirection to use ovirt-websocket-proxy in a local script rather than daemon? --===============5391644798286090000==-- From alonbl at redhat.com Tue Dec 31 09:54:46 2013 Content-Type: multipart/mixed; boundary="===============1788771942189673954==" MIME-Version: 1.0 From: Alon Bar-Lev To: devel at ovirt.org Subject: Re: [Engine-devel] Broken devel setup on Gentoo? Date: Tue, 31 Dec 2013 09:54:45 -0500 Message-ID: <8964929.28517328.1388501685865.JavaMail.root@redhat.com> In-Reply-To: 52C2D9C8.7090508@redhat.com --===============1788771942189673954== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Doron Fediuck" > To: engine-devel(a)ovirt.org > Cc: "Alon Bar-Lev" > Sent: Tuesday, December 31, 2013 4:50:48 PM > Subject: [Engine-devel] Broken devel setup on Gentoo? > = > While refreshing my devel environment, setup fails. > Log file shows this: > = > 2013-12-31 16:26:05 DEBUG otopi.plugins.otopi.services.openrc > plugin.executeRaw:366 execute: ('/etc/init.d/ovirt-websocket-proxy', > '-q', 'status'), executable=3D'None', cwd=3D > 'None', env=3DNone > 2013-12-31 16:26:05 DEBUG otopi.plugins.otopi.services.openrc > plugin.executeRaw:389 execute-result: > ('/etc/init.d/ovirt-websocket-proxy', '-q', 'status'), exception > Traceback (most recent call last): > File "/usr/lib64/python2.7/site-packages/otopi/plugin.py", line 376, > in executeRaw > env=3Denv, > File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__ > errread, errwrite) > File "/usr/lib64/python2.7/subprocess.py", line 1308, in _execute_child > raise child_exception > OSError: [Errno 2] No such file or directory > = > Should there be a redirection to use ovirt-websocket-proxy in a local > script rather than daemon? http://gerrit.ovirt.org/#/q/I40f061ec6cf658e1d8ec5c3663698ceca7569b38,n,z --===============1788771942189673954==-- From dfediuck at redhat.com Tue Dec 31 10:20:27 2013 Content-Type: multipart/mixed; boundary="===============0549513152697938593==" MIME-Version: 1.0 From: Doron Fediuck To: devel at ovirt.org Subject: Re: [Engine-devel] Broken devel setup on Gentoo? Date: Tue, 31 Dec 2013 17:20:24 +0200 Message-ID: <52C2E0B8.4070309@redhat.com> In-Reply-To: 8964929.28517328.1388501685865.JavaMail.root@redhat.com --===============0549513152697938593== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 12/31/2013 04:54 PM, Alon Bar-Lev wrote: > > ----- Original Message ----- >> From: "Doron Fediuck" >> To: engine-devel(a)ovirt.org >> Cc: "Alon Bar-Lev" >> Sent: Tuesday, December 31, 2013 4:50:48 PM >> Subject: [Engine-devel] Broken devel setup on Gentoo? >> >> While refreshing my devel environment, setup fails. >> Log file shows this: >> >> 2013-12-31 16:26:05 DEBUG otopi.plugins.otopi.services.openrc >> plugin.executeRaw:366 execute: ('/etc/init.d/ovirt-websocket-proxy', >> '-q', 'status'), executable=3D'None', cwd=3D >> 'None', env=3DNone >> 2013-12-31 16:26:05 DEBUG otopi.plugins.otopi.services.openrc >> plugin.executeRaw:389 execute-result: >> ('/etc/init.d/ovirt-websocket-proxy', '-q', 'status'), exception >> Traceback (most recent call last): >> File "/usr/lib64/python2.7/site-packages/otopi/plugin.py", line 376, >> in executeRaw >> env=3Denv, >> File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__ >> errread, errwrite) >> File "/usr/lib64/python2.7/subprocess.py", line 1308, in _execute_child >> raise child_exception >> OSError: [Errno 2] No such file or directory >> >> Should there be a redirection to use ovirt-websocket-proxy in a local >> script rather than daemon? > http://gerrit.ovirt.org/#/q/I40f061ec6cf658e1d8ec5c3663698ceca7569b38,n,z Thanks. I'm running on this branch (ovirt-3.3) and still hitting this issue. I checked packaging/setup/plugins/ovirt-engine-setup/config/websocket_proxy.py and I can see the fix (now in line 258), but the issue is still there. --===============0549513152697938593==-- From alonbl at redhat.com Tue Dec 31 10:28:25 2013 Content-Type: multipart/mixed; boundary="===============1032367551171745546==" MIME-Version: 1.0 From: Alon Bar-Lev To: devel at ovirt.org Subject: Re: [Engine-devel] Broken devel setup on Gentoo? Date: Tue, 31 Dec 2013 10:28:24 -0500 Message-ID: <9582066.28519242.1388503704694.JavaMail.root@redhat.com> In-Reply-To: 52C2E0B8.4070309@redhat.com --===============1032367551171745546== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Doron Fediuck" > To: "Alon Bar-Lev" > Cc: engine-devel(a)ovirt.org > Sent: Tuesday, December 31, 2013 5:20:24 PM > Subject: Re: [Engine-devel] Broken devel setup on Gentoo? > = > = > On 12/31/2013 04:54 PM, Alon Bar-Lev wrote: > > > > ----- Original Message ----- > >> From: "Doron Fediuck" > >> To: engine-devel(a)ovirt.org > >> Cc: "Alon Bar-Lev" > >> Sent: Tuesday, December 31, 2013 4:50:48 PM > >> Subject: [Engine-devel] Broken devel setup on Gentoo? > >> > >> While refreshing my devel environment, setup fails. > >> Log file shows this: > >> > >> 2013-12-31 16:26:05 DEBUG otopi.plugins.otopi.services.openrc > >> plugin.executeRaw:366 execute: ('/etc/init.d/ovirt-websocket-proxy', > >> '-q', 'status'), executable=3D'None', cwd=3D > >> 'None', env=3DNone > >> 2013-12-31 16:26:05 DEBUG otopi.plugins.otopi.services.openrc > >> plugin.executeRaw:389 execute-result: > >> ('/etc/init.d/ovirt-websocket-proxy', '-q', 'status'), exception > >> Traceback (most recent call last): > >> File "/usr/lib64/python2.7/site-packages/otopi/plugin.py", line 376, > >> in executeRaw > >> env=3Denv, > >> File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__ > >> errread, errwrite) > >> File "/usr/lib64/python2.7/subprocess.py", line 1308, in _execute_ch= ild > >> raise child_exception > >> OSError: [Errno 2] No such file or directory > >> > >> Should there be a redirection to use ovirt-websocket-proxy in a local > >> script rather than daemon? > > http://gerrit.ovirt.org/#/q/I40f061ec6cf658e1d8ec5c3663698ceca7569b38,n= ,z > Thanks. > I'm running on this branch (ovirt-3.3) and still hitting this issue. > I checked > packaging/setup/plugins/ovirt-engine-setup/config/websocket_proxy.py > and I can see the fix (now in line 258), but the issue is still there. > = Please send setup log file. --===============1032367551171745546==-- From alonbl at redhat.com Tue Dec 31 11:45:35 2013 Content-Type: multipart/mixed; boundary="===============8829572983617385168==" MIME-Version: 1.0 From: Alon Bar-Lev To: devel at ovirt.org Subject: Re: [Engine-devel] Broken devel setup on Gentoo? Date: Tue, 31 Dec 2013 11:45:35 -0500 Message-ID: <271518451.28522345.1388508335524.JavaMail.root@redhat.com> In-Reply-To: 9582066.28519242.1388503704694.JavaMail.root@redhat.com --===============8829572983617385168== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Alon Bar-Lev" > To: "Doron Fediuck" > Cc: engine-devel(a)ovirt.org > Sent: Tuesday, December 31, 2013 5:28:24 PM > Subject: Re: [Engine-devel] Broken devel setup on Gentoo? > = > = > = > ----- Original Message ----- > > From: "Doron Fediuck" > > To: "Alon Bar-Lev" > > Cc: engine-devel(a)ovirt.org > > Sent: Tuesday, December 31, 2013 5:20:24 PM > > Subject: Re: [Engine-devel] Broken devel setup on Gentoo? > > = > > = > > On 12/31/2013 04:54 PM, Alon Bar-Lev wrote: > > > > > > ----- Original Message ----- > > >> From: "Doron Fediuck" > > >> To: engine-devel(a)ovirt.org > > >> Cc: "Alon Bar-Lev" > > >> Sent: Tuesday, December 31, 2013 4:50:48 PM > > >> Subject: [Engine-devel] Broken devel setup on Gentoo? > > >> > > >> While refreshing my devel environment, setup fails. > > >> Log file shows this: > > >> > > >> 2013-12-31 16:26:05 DEBUG otopi.plugins.otopi.services.openrc > > >> plugin.executeRaw:366 execute: ('/etc/init.d/ovirt-websocket-proxy', > > >> '-q', 'status'), executable=3D'None', cwd=3D > > >> 'None', env=3DNone > > >> 2013-12-31 16:26:05 DEBUG otopi.plugins.otopi.services.openrc > > >> plugin.executeRaw:389 execute-result: > > >> ('/etc/init.d/ovirt-websocket-proxy', '-q', 'status'), exception > > >> Traceback (most recent call last): > > >> File "/usr/lib64/python2.7/site-packages/otopi/plugin.py", line 37= 6, > > >> in executeRaw > > >> env=3Denv, > > >> File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__ > > >> errread, errwrite) > > >> File "/usr/lib64/python2.7/subprocess.py", line 1308, in > > >> _execute_child > > >> raise child_exception > > >> OSError: [Errno 2] No such file or directory > > >> > > >> Should there be a redirection to use ovirt-websocket-proxy in a local > > >> script rather than daemon? > > > http://gerrit.ovirt.org/#/q/I40f061ec6cf658e1d8ec5c3663698ceca7569b38= ,n,z > > Thanks. > > I'm running on this branch (ovirt-3.3) and still hitting this issue. > > I checked > > packaging/setup/plugins/ovirt-engine-setup/config/websocket_proxy.py > > and I can see the fix (now in line 258), but the issue is still there. > > = > = > Please send setup log file. Correct, the issue is that setup is trying to acquire service status before= stopping. Fix is available[1] [1] http://gerrit.ovirt.org/#/q/I0454e3f136ad1181bc01c55411b33b1e2fc20e4c,n= ,z --===============8829572983617385168==-- From dfediuck at redhat.com Tue Dec 31 12:17:41 2013 Content-Type: multipart/mixed; boundary="===============4337856782290144908==" MIME-Version: 1.0 From: Doron Fediuck To: devel at ovirt.org Subject: Re: [Engine-devel] Broken devel setup on Gentoo? Date: Tue, 31 Dec 2013 19:17:40 +0200 Message-ID: <52C2FC34.50504@redhat.com> In-Reply-To: 271518451.28522345.1388508335524.JavaMail.root@redhat.com --===============4337856782290144908== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 12/31/2013 06:45 PM, Alon Bar-Lev wrote: > > ----- Original Message ----- >> From: "Alon Bar-Lev" >> To: "Doron Fediuck" >> Cc: engine-devel(a)ovirt.org >> Sent: Tuesday, December 31, 2013 5:28:24 PM >> Subject: Re: [Engine-devel] Broken devel setup on Gentoo? >> >> >> >> ----- Original Message ----- >>> From: "Doron Fediuck" >>> To: "Alon Bar-Lev" >>> Cc: engine-devel(a)ovirt.org >>> Sent: Tuesday, December 31, 2013 5:20:24 PM >>> Subject: Re: [Engine-devel] Broken devel setup on Gentoo? >>> >>> >>> On 12/31/2013 04:54 PM, Alon Bar-Lev wrote: >>>> ----- Original Message ----- >>>>> From: "Doron Fediuck" >>>>> To: engine-devel(a)ovirt.org >>>>> Cc: "Alon Bar-Lev" >>>>> Sent: Tuesday, December 31, 2013 4:50:48 PM >>>>> Subject: [Engine-devel] Broken devel setup on Gentoo? >>>>> >>>>> While refreshing my devel environment, setup fails. >>>>> Log file shows this: >>>>> >>>>> 2013-12-31 16:26:05 DEBUG otopi.plugins.otopi.services.openrc >>>>> plugin.executeRaw:366 execute: ('/etc/init.d/ovirt-websocket-proxy', >>>>> '-q', 'status'), executable=3D'None', cwd=3D >>>>> 'None', env=3DNone >>>>> 2013-12-31 16:26:05 DEBUG otopi.plugins.otopi.services.openrc >>>>> plugin.executeRaw:389 execute-result: >>>>> ('/etc/init.d/ovirt-websocket-proxy', '-q', 'status'), exception >>>>> Traceback (most recent call last): >>>>> File "/usr/lib64/python2.7/site-packages/otopi/plugin.py", line 376, >>>>> in executeRaw >>>>> env=3Denv, >>>>> File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__ >>>>> errread, errwrite) >>>>> File "/usr/lib64/python2.7/subprocess.py", line 1308, in >>>>> _execute_child >>>>> raise child_exception >>>>> OSError: [Errno 2] No such file or directory >>>>> >>>>> Should there be a redirection to use ovirt-websocket-proxy in a local >>>>> script rather than daemon? >>>> http://gerrit.ovirt.org/#/q/I40f061ec6cf658e1d8ec5c3663698ceca7569b38,= n,z >>> Thanks. >>> I'm running on this branch (ovirt-3.3) and still hitting this issue. >>> I checked >>> packaging/setup/plugins/ovirt-engine-setup/config/websocket_proxy.py >>> and I can see the fix (now in line 258), but the issue is still there. >>> >> Please send setup log file. > Correct, the issue is that setup is trying to acquire service status befo= re stopping. > > Fix is available[1] > > [1] http://gerrit.ovirt.org/#/q/I0454e3f136ad1181bc01c55411b33b1e2fc20e4c= ,n,z > Thanks for the quick fix, verified both for 3.3 and in master. An unrelated issue I noticed when moving from 3.3 branch to master I re-built everything, yet I was unable to login. I had to update the DB with a new password to login. I suspect theres another issue here. --===============4337856782290144908==-- From alonbl at redhat.com Tue Dec 31 13:10:47 2013 Content-Type: multipart/mixed; boundary="===============6010260294465488837==" MIME-Version: 1.0 From: Alon Bar-Lev To: devel at ovirt.org Subject: Re: [Engine-devel] Broken devel setup on Gentoo? Date: Tue, 31 Dec 2013 13:10:46 -0500 Message-ID: <1708314940.28526523.1388513446173.JavaMail.root@redhat.com> In-Reply-To: 52C2FC34.50504@redhat.com --===============6010260294465488837== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----- Original Message ----- > From: "Doron Fediuck" > To: "Alon Bar-Lev" > Cc: engine-devel(a)ovirt.org > Sent: Tuesday, December 31, 2013 7:17:40 PM > Subject: Re: [Engine-devel] Broken devel setup on Gentoo? > > An unrelated issue I noticed when moving from 3.3 branch to master I > re-built everything, > yet I was unable to login. I had to update the DB with a new password to > login. > I suspect theres another issue here. > = I am unsure I follow, you cannot use the same prefix for both branches. What the exact sequence? --===============6010260294465488837==--