[OGo-Evolution] Building Evolution Connector
Jean-Pascal Robiez
evolution@opengroupware.org
Fri, 08 Oct 2004 10:56:27 +0200
--=-WOHiVg4UE/ok+FUaotVa
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: quoted-printable
hello,
you need to patch e-book-backend-ogo.c to use this version of evolution,
all backend funtion have to pass the opid parameter. I don't have access
to cvs now so I can't make a diff but I join you the version of this
file I use.
hope this helps,
JP
Le jeudi 07 octobre 2004 =E0 16:38 -0400, Benjamin Long a =E9crit :
> I'm trying to build the connector for evolution. Reading the archives
> tells me that I am running into the same problem as someone else, caused
> by the changes in evo version 2.0. Any help with this would be greatly
> appreciated as I'm working on a rollout. Here's the end of my build log:
>=20
> e-book-backend-ogo.c: In function `e_book_backend_ogo_create_contact':
> e-book-backend-ogo.c:52: error: incompatible type for argument 3 of
> `e_data_book_respond_create'
> e-book-backend-ogo.c:52: error: too few arguments to function
> `e_data_book_respond_create'
> e-book-backend-ogo.c: In function `e_book_backend_ogo_remove_contacts':
> e-book-backend-ogo.c:63: error: incompatible type for argument 3 of
> `e_data_book_respond_remove_contacts'
> e-book-backend-ogo.c:63: error: too few arguments to function
> `e_data_book_respond_remove_contacts'
> e-book-backend-ogo.c: In function `e_book_backend_ogo_modify_contact':
> e-book-backend-ogo.c:75: error: incompatible type for argument 3 of
> `e_data_book_respond_modify'
> e-book-backend-ogo.c:75: error: too few arguments to function
> `e_data_book_respond_modify'
> e-book-backend-ogo.c: In function `e_book_backend_ogo_get_contact':
> e-book-backend-ogo.c:87: error: incompatible type for argument 3 of
> `e_data_book_respond_get_contact'
> e-book-backend-ogo.c:87: error: too few arguments to function
> `e_data_book_respond_get_contact'
> e-book-backend-ogo.c: In function `e_book_backend_ogo_get_contact_list':
> e-book-backend-ogo.c:98: error: incompatible type for argument 3 of
> `e_data_book_respond_get_contact_list'
> e-book-backend-ogo.c:98: error: too few arguments to function
> `e_data_book_respond_get_contact_list'
> e-book-backend-ogo.c: In function
> `e_book_backend_ogo_authenticate_user':
> e-book-backend-ogo.c:219: error: too few arguments to function
> `e_data_book_respond_authenticate_user'
> e-book-backend-ogo.c: In function
> `e_book_backend_ogo_get_supported_fields':
> e-book-backend-ogo.c:251: error: incompatible type for argument 3 of
> `e_data_book_respond_get_supported_fields'
> e-book-backend-ogo.c:251: error: too few arguments to function
> `e_data_book_respond_get_supported_fields'
> e-book-backend-ogo.c: In function `e_book_backend_ogo_remove':
> e-book-backend-ogo.c:288: error: too few arguments to function
> `e_data_book_respond_remove'
> e-book-backend-ogo.c: In function `e_book_backend_ogo_class_init':
> e-book-backend-ogo.c:362: warning: assignment from incompatible pointer
> type
> e-book-backend-ogo.c:363: warning: assignment from incompatible pointer
> type
> e-book-backend-ogo.c:364: warning: assignment from incompatible pointer
> type
> e-book-backend-ogo.c:365: warning: assignment from incompatible pointer
> type
> e-book-backend-ogo.c:366: warning: assignment from incompatible pointer
> type
> e-book-backend-ogo.c:369: warning: assignment from incompatible pointer
> type
> e-book-backend-ogo.c:370: warning: assignment from incompatible pointer
> type
> e-book-backend-ogo.c:371: warning: assignment from incompatible pointer
> type
> e-book-backend-ogo.c:372: warning: assignment from incompatible pointer
> type
> e-book-backend-ogo.c:373: warning: assignment from incompatible pointer
> type
> make[4]: *** [e-book-backend-ogo.lo] Error 1
> make[4]: Leaving directory
> `/home/bflong/build/evolution-ogo-0.0.3/addressbook/backends/ogo'
> make[3]: *** [all-recursive] Error 1
> make[3]: Leaving directory
> `/home/bflong/build/evolution-ogo-0.0.3/addressbook/backends'
> make[2]: *** [all-recursive] Error 1
> make[2]: Leaving directory
> `/home/bflong/build/evolution-ogo-0.0.3/addressbook'
> make[1]: *** [all-recursive] Error 1
> make[1]: Leaving directory `/home/bflong/build/evolution-ogo-0.0.3'
> make: *** [all] Error 2
>=20
> --=20
> Benjamin Long
> bflong@longbros.com
>=20
--=20
Jean-Pascal Robiez
iXnos
12, rue du g=E9n=E9ral Delestraint
75016 PARIS
tel: +33(0)1 40 71 60 69
mobile : +33 (0)6 62 61 68 34
This message and any attachments are confidential and intended solely
for the addressees. If you receive this message in error, please delete it
and immediately notify the sender. If the reader of this message is not
the intended recipient, you are hereby notified that any unauthorized use,
copying or dissemination is prohibited.
E-mails are susceptible to alteration. Neither Ixnos nor any of its
subsidiaries or affiliates shall be liable for the message if altered,
changed or falsified.
--=-WOHiVg4UE/ok+FUaotVa
Content-Disposition: attachment; filename=e-book-backend-ogo.c
Content-Type: text/x-csrc; name=e-book-backend-ogo.c; charset=ISO-8859-15
Content-Transfer-Encoding: base64
LyogLSotIE1vZGU6IEM7IHRhYi13aWR0aDogMjsgaW5kZW50LXRhYnMtbW9kZTogdDsgYy1iYXNp
Yy1vZmZzZXQ6IDIgLSotICovDQovKg0KICogQXV0aG9yOg0KICogICBKZW5zIFJlaW1hbm4gPGN0
cm9uQGRlbnRyYXNzaS5kZT4NCiAqDQogKiBCYXNlZCBvbiB3b3JrIGZyb206DQogKiAgIFNpdmFp
YWggTmFsbGFnYXRsYSAoc25hbGxhZ2F0bGFAbm92ZWxsLmNvbSkNCiAqDQogKi8NCg0KI2lmZGVm
IEhBVkVfQ09ORklHX0gNCiNpbmNsdWRlIDxjb25maWcuaD4NCiNlbmRpZg0KDQoNCg0KI2luY2x1
ZGUgPGxpYmVib29rL2UtY29udGFjdC5oPg0KI2luY2x1ZGUgPGxpYmdub21lL2dub21lLWkxOG4u
aD4NCiNpbmNsdWRlIDxsaWJlZGF0YXNlcnZlci9lLXNleHAuaD4NCiNpbmNsdWRlIDxsaWJlZGF0
YS1ib29rL2UtYm9vay1iYWNrZW5kLXNleHAuaD4NCiNpbmNsdWRlIDxsaWJlZGF0YS1ib29rL2Ut
Ym9vay1iYWNrZW5kLXN1bW1hcnkuaD4NCiNpbmNsdWRlIDxsaWJlZGF0YS1ib29rL2UtZGF0YS1i
b29rLmg+DQojaW5jbHVkZSA8bGliZWRhdGEtYm9vay9lLWRhdGEtYm9vay12aWV3Lmg+DQojaW5j
bHVkZSAiZS1ib29rLWJhY2tlbmQtb2dvLmgiDQojaW5jbHVkZSA8bGliZ25vbWUvZ25vbWUtaTE4
bi5oPg0KDQojaW5jbHVkZSA8bGlic291cC9zb3VwLmg+DQoNCiNpbmNsdWRlICJvZ28tY29ubmVj
dGlvbi5oIg0KDQpzdGF0aWMgRUJvb2tCYWNrZW5kQ2xhc3MgKmVfYm9va19iYWNrZW5kX29nb19w
YXJlbnRfY2xhc3M7DQoNCnN0cnVjdCBfRUJvb2tCYWNrZW5kT0dPUHJpdmF0ZSB7DQoJY2hhciAq
dXJpOw0KCU9HT0Nvbm5lY3Rpb24gKiBjb25uZWN0aW9uOw0KfTsNCg0KI2RlZmluZSBFTEVNRU5U
X1RZUEVfU0lNUExFIDB4MDENCiNkZWZpbmUgRUxFTUVOVF9UWVBFX0NPTVBMRVggMHgwMiAvKiBm
aWVsZHMgd2hpY2ggcmVxdWlyZSBleHBsaWNpdCBmdW5jdGlvbnMgdG8gc2V0IHZhbHVlcyBpbnRv
IEVDb250YWN0IGFuZCBFR3dJdGVtICovDQoNCg0KDQpzdGF0aWMgdm9pZA0KZV9ib29rX2JhY2tl
bmRfb2dvX2NyZWF0ZV9jb250YWN0IChFQm9va0JhY2tlbmQgKmJhY2tlbmQsDQoJCQkJCQkJCQkJ
CQkJCQkJCSBFRGF0YUJvb2sgKmJvb2ssDQoJCQkJCQkJCQkJCQkJCQkJCSBndWludDMyIG9waWQs
DQoJCQkJCQkJCQkJCQkJCQkJCSBjb25zdCBjaGFyICp2Y2FyZCApDQp7DQoJRUJvb2tCYWNrZW5k
T0dPICpvZ287DQoJDQoJb2dvID0gRV9CT09LX0JBQ0tFTkRfT0dPIChiYWNrZW5kKTsNCgkNCgll
X2RhdGFfYm9va19yZXNwb25kX2NyZWF0ZShib29rLCBvcGlkLEdOT01FX0V2b2x1dGlvbl9BZGRy
ZXNzYm9va19PdGhlckVycm9yLCBOVUxMKTsgIA0KfQ0KDQpzdGF0aWMgdm9pZA0KZV9ib29rX2Jh
Y2tlbmRfb2dvX3JlbW92ZV9jb250YWN0cyAoRUJvb2tCYWNrZW5kICpiYWNrZW5kLA0KCQkJCQkJ
CQkJCQkJCQkJCQkJRURhdGFCb29rICAgICpib29rLA0KCQkJCQkJCQkJCQkJCQkJCQkJZ3VpbnQz
MiBvcGlkLA0KCQkJCQkJCQkJCQkJCQkJCQkJR0xpc3QgKmlkX2xpc3QgICAgKQ0Kew0KICANCglF
Qm9va0JhY2tlbmRPR08gKm9nbzsNCglvZ28gPSBFX0JPT0tfQkFDS0VORF9PR08gKGJhY2tlbmQp
Ow0KCWVfZGF0YV9ib29rX3Jlc3BvbmRfcmVtb3ZlX2NvbnRhY3RzIChib29rLCBvcGlkLCBHTk9N
RV9Fdm9sdXRpb25fQWRkcmVzc2Jvb2tfT3RoZXJFcnJvciwgTlVMTCk7DQp9DQoNCg0Kc3RhdGlj
IHZvaWQNCmVfYm9va19iYWNrZW5kX29nb19tb2RpZnlfY29udGFjdCAoRUJvb2tCYWNrZW5kICpi
YWNrZW5kLA0KCQkJCQkJCQkJCQkJCQkJCQkgRURhdGFCb29rICAgICpib29rLA0KCQkJCQkJCQkJ
CQkJCQkJCQkgZ3VpbnQzMiBvcGlkLA0KCQkJCQkJCQkJCQkJCQkJCQkgY29uc3QgY2hhciAqdmNh
cmQgICAgKQ0KewkNCglFQm9va0JhY2tlbmRPR08gKm9nbzsNCg0KCW9nbyA9IEVfQk9PS19CQUNL
RU5EX09HTyAoYmFja2VuZCk7DQoJZV9kYXRhX2Jvb2tfcmVzcG9uZF9tb2RpZnkgKGJvb2ssIG9w
aWQsIEdOT01FX0V2b2x1dGlvbl9BZGRyZXNzYm9va19PdGhlckVycm9yLCBOVUxMKTsNCgkNCn0N
Cg0Kc3RhdGljIHZvaWQNCmVfYm9va19iYWNrZW5kX29nb19nZXRfY29udGFjdCAoRUJvb2tCYWNr
ZW5kICpiYWNrZW5kLA0KCQkJCQkJCQkJCQkJCQkJCUVEYXRhQm9vayAgICAqYm9vaywNCgkJCQkJ
CQkJCQkJCQkJCQlndWludDMyIG9waWQsDQoJCQkJCQkJCQkJCQkJCQkJY29uc3QgY2hhciAqaWQg
ICApDQp7DQoJRUJvb2tCYWNrZW5kT0dPICpvZ287DQoNCglvZ28gPSAgRV9CT09LX0JBQ0tFTkRf
T0dPIChiYWNrZW5kKTsNCgllX2RhdGFfYm9va19yZXNwb25kX2dldF9jb250YWN0IChib29rLCBv
cGlkLCBHTk9NRV9Fdm9sdXRpb25fQWRkcmVzc2Jvb2tfT3RoZXJFcnJvciwgTlVMTCk7DQp9DQoN
CnN0YXRpYyB2b2lkDQplX2Jvb2tfYmFja2VuZF9vZ29fZ2V0X2NvbnRhY3RfbGlzdCAoRUJvb2tC
YWNrZW5kICpiYWNrZW5kLA0KCQkJCQkJCQkJCQkJCQkJCQkJIEVEYXRhQm9vayAgICAqYm9vaywN
CgkJCQkJCQkJCQkJCQkJCQkJCSBndWludDMyIG9waWQsDQoJCQkJCQkJCQkJCQkJCQkJCQkgY29u
c3QgY2hhciAqcXVlcnkgKQ0KeyAgDQoJRUJvb2tCYWNrZW5kT0dPICpvZ287DQoJb2dvID0gRV9C
T09LX0JBQ0tFTkRfT0dPIChiYWNrZW5kKTsNCg0KCWVfZGF0YV9ib29rX3Jlc3BvbmRfZ2V0X2Nv
bnRhY3RfbGlzdCAoYm9vaywgb3BpZCwgR05PTUVfRXZvbHV0aW9uX0FkZHJlc3Nib29rX0NvbnRh
Y3ROb3RGb3VuZCwgTlVMTCApOw0KDQp9DQoNCnZvaWQgYWRkX29uZV9jb250YWN0ICggT0dPUmVz
dWx0ICogcmVzdWx0LCBFRGF0YUJvb2tWaWV3ICogYm9va192aWV3ICkNCnsNCg0KCS8vIFdlIG5l
ZWQgdG8ga25vdyB3aGljaCBsb2NhbGUgdGhlIHNlcnZlciBoYXMNCglnY2hhciAqIGJ1ZmZlcjsN
CglidWZmZXIgPSBnX2xvY2FsZV90b191dGY4ICggcmVzdWx0LT5tZXNzYWdlLT5yZXNwb25zZS5i
b2R5LCByZXN1bHQtPm1lc3NhZ2UtPnJlc3BvbnNlLmxlbmd0aCwgTlVMTCwgTlVMTCwgTlVMTCAp
Ow0KDQoJLy8gSW5zZXJ0IGEgY29udGFjdA0KCUVDb250YWN0ICogY29udGFjdDsNCg0KCWNvbnRh
Y3QgPSBlX2NvbnRhY3RfbmV3X2Zyb21fdmNhcmQgKCBidWZmZXIgKTsNCg0KCWdfZnJlZSAoIGJ1
ZmZlciApOw0KDQoJaWYgKCBjb250YWN0ICkNCgkJew0KCQkJZV9kYXRhX2Jvb2tfdmlld19ub3Rp
ZnlfdXBkYXRlICggYm9va192aWV3LCBjb250YWN0ICk7DQoJCQlnX29iamVjdF91bnJlZihjb250
YWN0KTsNCgkJfQ0KfQ0KIA0Kc3RhdGljIHZvaWQNCmVfYm9va19iYWNrZW5kX29nb19zdGFydF9i
b29rX3ZpZXcgKEVCb29rQmFja2VuZCAgKmJhY2tlbmQsDQoJCQkJICAgIEVEYXRhQm9va1ZpZXcg
KmJvb2tfdmlldykNCnsNCg0KCUVCb29rQmFja2VuZE9HTyAqb2dvOw0KDQoJZ19wcmludCAoICJl
X2Jvb2tfYmFja2VuZF9vZ29fc3RhcnRfYm9va192aWV3XG4iICk7DQoNCglvZ28gID0gRV9CT09L
X0JBQ0tFTkRfT0dPIChiYWNrZW5kKTsNCiAgICANCgkvLyBTZW5kIGEgc3RhcnRpbmcgbWVzc2Fn
ZQ0KCWVfZGF0YV9ib29rX3ZpZXdfbm90aWZ5X3N0YXR1c19tZXNzYWdlIChib29rX3ZpZXcsIF8o
IlNlYXJjaGluZy4uLiIpKTsNCg0KCU9HT1Jlc3VsdExpbmtzICogcmVzdWx0TGlua3M7DQoJT0dP
UmVzdWx0ICogcmVzdWx0Ow0KDQoJLy8gZmV0Y2ggdGhlIGxpc3Qgb2YgaHJlZnMgZm9yIHRoZSBh
Y2NvdW50IFVSTA0KCXJlc3VsdExpbmtzID0gb2dvX2Nvbm5lY3Rpb25fbGlzdF9ocmVmcyAoIG9n
by0+cHJpdi0+Y29ubmVjdGlvbiwgIiIgKTsNCg0KCS8vIEFib3J0IG9uIGZhaWx1cmUNCiAJaWYg
KCBvZ29fcmVzdWx0X2ZhaWxlZCAoIE9HT19SRVNVTFQocmVzdWx0TGlua3MpICkgKQ0KCQl7DQoJ
CQlnX3ByaW50ICggIkVycm9yIG9jY3VyZWQhXG4iICk7DQoJCQkvLyBOb3RpZnkgZXJyb3INCgkJ
CWVfZGF0YV9ib29rX3ZpZXdfbm90aWZ5X2NvbXBsZXRlICggYm9va192aWV3LCBHTk9NRV9Fdm9s
dXRpb25fQWRkcmVzc2Jvb2tfUmVwb3NpdG9yeU9mZmxpbmUgKTsNCgkJCWdfb2JqZWN0X3VucmVm
ICggR19PQkpFQ1QocmVzdWx0TGlua3MpICk7DQoJCQlyZXR1cm47DQoJCX0NCg0KCUdMaXN0ICog
Y3VycmVudDsNCgkvLyBpdGVyYXRlIG92ZXIgdGhlIGxpc3Qgb2YgaHJlZnMgLi4uDQoJZm9yICgg
Y3VycmVudCA9IHJlc3VsdExpbmtzLT5saW5rczsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQt
Pm5leHQgKQ0KCQl7DQoNCgkJCXJlc3VsdCA9IG9nb19yZXN1bHRfbmV3ICgpOw0KCQkJLy8gLi4u
IGFuZCBmZXRjaCB0aGVtDQoJCQkvKg0KCQkJICogbm90IHZlcnkgZ29vZCAoPyEpIHdlIGdldCB0
aGUgY29tcGxldGUgaHJlZiEgbWlnaHQgYmUgc29tZXdoZXJlIG91dHNpZGUgdGhlIGJhc2UgdXJp
IQ0KCQkJICogc2hvdWxkIHdlIHRydXN0IGl0Pw0KCQkJICovDQoJCQlvZ29fY29ubmVjdGlvbl9z
ZW5kX3JlcXVlc3QgKCBvZ28tPnByaXYtPmNvbm5lY3Rpb24sIHJlc3VsdCwgIkdFVCIsIGN1cnJl
bnQtPmRhdGEsIE5VTEwsIDAgKTsNCg0KCQkJLy8gaWYgbm90IGZhaWxlZCAuLi4gYWRkIHRvIGJv
b2sNCgkJCWlmICggIW9nb19yZXN1bHRfZmFpbGVkICggT0dPX1JFU1VMVChyZXN1bHQpICkgKQ0K
CQkJCXsNCgkJCQkJYWRkX29uZV9jb250YWN0ICggcmVzdWx0LCBib29rX3ZpZXcgKTsNCgkJCQl9
DQoJCQllbHNlDQoJCQkJew0KCQkJCQlnX3ByaW50ICggIkZldGNoIGZhaWxlZCFcbiIgKTsNCgkJ
CQl9DQoNCgkJCWdfb2JqZWN0X3VucmVmICggR19PQkpFQ1QocmVzdWx0KSApOw0KCQl9DQoNCgln
X29iamVjdF91bnJlZiAoIEdfT0JKRUNUKHJlc3VsdExpbmtzKSApOw0KDQoJLy8gTm90aWZ5IHN1
Y2Nlc3MNCgllX2RhdGFfYm9va192aWV3X25vdGlmeV9jb21wbGV0ZSAoYm9va192aWV3LCBHTk9N
RV9Fdm9sdXRpb25fQWRkcmVzc2Jvb2tfU3VjY2Vzcyk7DQp9ICAgICANCiAgDQpzdGF0aWMgdm9p
ZA0KZV9ib29rX2JhY2tlbmRfb2dvX3N0b3BfYm9va192aWV3IChFQm9va0JhY2tlbmQgICpiYWNr
ZW5kLA0KCQkJCQkgRURhdGFCb29rVmlldyAqYm9va192aWV3KQ0Kew0KCWdfcHJpbnQgKCAiZV9i
b29rX2JhY2tlbmRfb2dvX3N0b3BfYm9va192aWV3XG4iICk7DQp9DQoNCnN0YXRpYyB2b2lkDQpl
X2Jvb2tfYmFja2VuZF9vZ29fZ2V0X2NoYW5nZXMgKEVCb29rQmFja2VuZCAqYmFja2VuZCwNCgkJ
CQkgICAgICBFRGF0YUJvb2sgICAgKmJvb2ssDQoJCQkJICAgICAgY29uc3QgY2hhciAqY2hhbmdl
X2lkICApDQp7DQoNCgkvKiBGSVhNRSA6IHByb3ZpZGUgaW1wbG1lbnRhdGlvbiAqLw0KfQ0KDQoN
CnN0YXRpYyB2b2lkDQplX2Jvb2tfYmFja2VuZF9vZ29fYXV0aGVudGljYXRlX3VzZXIgKEVCb29r
QmFja2VuZCAqYmFja2VuZCwNCgkJCQkJICAgIEVEYXRhQm9vayAgICAqYm9vaywNCgkJCQkJCWd1
aW50MzIgb3BpZCwNCgkJCQkJICAgIGNvbnN0IGNoYXIgKnVzZXIsDQoJCQkJCSAgICBjb25zdCBj
aGFyICpwYXNzd2QsDQoJCQkJCSAgICBjb25zdCBjaGFyICphdXRoX21ldGhvZCkNCnsNCglFQm9v
a0JhY2tlbmRPR08gKm9nbzsNCglFQm9va0JhY2tlbmRPR09Qcml2YXRlICpwcml2Ow0KDQoJZ19w
cmludCAoICJlX2Jvb2tfYmFja2VuZF9vZ29fYXV0aGVudGljYXRlX3VzZXIgKCA/LCA/LCAlcywg
JXMsICVzIClcbiIsIHVzZXIsIHBhc3N3ZCwgYXV0aF9tZXRob2QgKTsNCg0KCW9nbyA9IEVfQk9P
S19CQUNLRU5EX09HTyAoYmFja2VuZCk7DQoJcHJpdiA9IG9nby0+cHJpdjsNCg0KCW9nb19jb25u
ZWN0aW9uX2F1dGhlbnRpY2F0ZSAoIHByaXYtPmNvbm5lY3Rpb24sIHVzZXI/dXNlcjoiIiwgcGFz
c3dkP3Bhc3N3ZDoiIiApOw0KDQoJZV9kYXRhX2Jvb2tfcmVzcG9uZF9hdXRoZW50aWNhdGVfdXNl
ciAoYm9vaywgIG9waWQsIEdOT01FX0V2b2x1dGlvbl9BZGRyZXNzYm9va19TdWNjZXNzKTsgIA0K
fQ0KDQp0eXBlZGVmIHN0cnVjdCB7DQoJY2hhciAqIG5hbWU7DQoJaW50IGZpZWxkX2lkOw0KfSBG
aWVsZEluZm87DQoNCkZpZWxkSW5mbyBzdXBwb3J0ZWRfZmllbGRzIFtdID0gew0KCXsgIlVJRCIs
IEVfQ09OVEFDVF9VSUQgfSwNCgl7ICJOYW1lIiwgRV9DT05UQUNUX0ZVTExfTkFNRSB9LA0KCXsg
IkZpbGUgYXMiLCBFX0NPTlRBQ1RfRklMRV9BUyB9LA0KCXsgIkdpdmVuIE5hbWUiLCBFX0NPTlRB
Q1RfR0lWRU5fTkFNRSB9LA0KCXsgIkZhbWlseSBOYW1lIiwgRV9DT05UQUNUX0ZBTUlMWV9OQU1F
IH0sDQoJeyAiTmlja25hbWUiLCBFX0NPTlRBQ1RfTklDS05BTUUgfSwNCgl7IE5VTEwgfQ0KfTsN
Cg0Kc3RhdGljIHZvaWQNCmVfYm9va19iYWNrZW5kX29nb19nZXRfc3VwcG9ydGVkX2ZpZWxkcyAo
RUJvb2tCYWNrZW5kICpiYWNrZW5kLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFRGF0YUJvb2sgICAgKmJvb2ssDQoJCQkJCQkJCQkJIGd1aW50MzIgb3BpZCApDQog
ICAgICAgICAgICAgICAgICANCnsNCglHTGlzdCAqZmllbGRzID0gTlVMTDsNCg0KCUZpZWxkSW5m
byAqIGZpOw0KDQoJZm9yICggZmkgPSBzdXBwb3J0ZWRfZmllbGRzOyBmaS0+bmFtZTsgZmkrKyAp
DQoJCWZpZWxkcyA9IGdfbGlzdF9hcHBlbmQgKCBmaWVsZHMsIGdfc3RyZHVwICggZV9jb250YWN0
X2ZpZWxkX25hbWUgKCBmaS0+ZmllbGRfaWQgKSApICk7DQoJDQoJZV9kYXRhX2Jvb2tfcmVzcG9u
ZF9nZXRfc3VwcG9ydGVkX2ZpZWxkcyAoYm9vaywNCgkJCQkJCQkJCQkJICBvcGlkLA0KCQkJCQkJ
CQkJCQkgIEdOT01FX0V2b2x1dGlvbl9BZGRyZXNzYm9va19TdWNjZXNzLA0KCQkJCQkJCQkJCQkg
IGZpZWxkcyk7DQoNCgkvLwlyZXR1cm4gR05PTUVfRXZvbHV0aW9uX0FkZHJlc3Nib29rX1N1Y2Nl
c3M7DQp9DQogIA0KDQpzdGF0aWMgR05PTUVfRXZvbHV0aW9uX0FkZHJlc3Nib29rX0NhbGxTdGF0
dXMNCmVfYm9va19iYWNrZW5kX29nb19sb2FkX3NvdXJjZSAoRUJvb2tCYWNrZW5kICAgICAgICAg
ICAqYmFja2VuZCwNCgkJCQkgICAgICBFU291cmNlICAgICAgICAgICAgICAgICpzb3VyY2UsDQoJ
CQkJICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgb25seV9pZl9leGlzdHMpDQp7DQoJRUJv
b2tCYWNrZW5kT0dPICpvZ287DQoJRUJvb2tCYWNrZW5kT0dPUHJpdmF0ZSAqcHJpdjsNCg0KCWdf
cHJpbnQgKCAiZV9ib29rX2JhY2tlbmRfb2dvX2xvYWRfc291cmNlXG4iICk7DQoNCglvZ28gPSBF
X0JPT0tfQkFDS0VORF9PR08gKGJhY2tlbmQpOw0KCXByaXYgPSBvZ28tPnByaXY7DQoNCglnY2hh
ciAqIHVyaSA9IGVfc291cmNlX2dldF91cmkgKCBzb3VyY2UgKTsNCg0KCW9nb19jb25uZWN0aW9u
X3NldF9iYXNlX3VyaSAoIG9nby0+cHJpdi0+Y29ubmVjdGlvbiwgdXJpICk7DQoNCglnX2ZyZWUg
KCB1cmkgKTsNCg0KCXJldHVybiBHTk9NRV9Fdm9sdXRpb25fQWRkcmVzc2Jvb2tfU3VjY2VzczsN
Cn0NCg0Kc3RhdGljIHZvaWQNCmVfYm9va19iYWNrZW5kX29nb19yZW1vdmUgKEVCb29rQmFja2Vu
ZCAqYmFja2VuZCwNCgkJCQlnaW50MzIJb3BpZCwNCgkJCQkgRURhdGFCb29rICAgICAgICAqYm9v
aykNCnsNCglFQm9va0JhY2tlbmRPR08gKiBvZ287DQoJaW50IHN0YXR1czsNCiAgDQoJb2dvID0g
RV9CT09LX0JBQ0tFTkRfT0dPIChiYWNrZW5kKTsNCg0KCWVfZGF0YV9ib29rX3Jlc3BvbmRfcmVt
b3ZlIChib29rLCBvcGlkLCBHTk9NRV9Fdm9sdXRpb25fQWRkcmVzc2Jvb2tfT3RoZXJFcnJvcik7
ICAgIA0KfQ0KDQoNCnN0YXRpYyBjaGFyICoNCmVfYm9va19iYWNrZW5kX29nb19nZXRfc3RhdGlj
X2NhcGFiaWxpdGllcyAoRUJvb2tCYWNrZW5kICpiYWNrZW5kKQ0Kew0KCXJldHVybiBnX3N0cmR1
cCgibmV0LGJ1bGstcmVtb3Zlcyxkby1pbml0aWFsLXF1ZXJ5LHJlYWRvbmx5LHJlYWQtb25seSIp
Ow0KfQ0KDQpzdGF0aWMgdm9pZCANCmVfYm9va19iYWNrZW5kX29nb19nZXRfc3VwcG9ydGVkX2F1
dGhfbWV0aG9kcyAoRUJvb2tCYWNrZW5kICpiYWNrZW5kLCBFRGF0YUJvb2sgKmJvb2spDQp7DQoJ
LypGSVhNRSAgcHJvdmlkZSBpbXBsZW1lbnRhdGlvbiovICANCn0NCg0KDQovKioNCiAqIGVfYm9v
a19iYWNrZW5kX29nb19uZXc6DQogKi8NCkVCb29rQmFja2VuZCAqDQplX2Jvb2tfYmFja2VuZF9v
Z29fbmV3ICh2b2lkKQ0Kew0KCUVCb29rQmFja2VuZE9HTyAqYmFja2VuZDsNCg0KCWdfcHJpbnQg
KCAiZV9ib29rX2JhY2tlbmRfb2dvX25ld1xuIiApOw0KCQ0KCWJhY2tlbmQgPSBnX29iamVjdF9u
ZXcgKEVfVFlQRV9CT09LX0JBQ0tFTkRfT0dPLCBOVUxMKTsNCg0KCXJldHVybiBFX0JPT0tfQkFD
S0VORCAoYmFja2VuZCk7DQp9DQoNCnN0YXRpYyB2b2lkDQplX2Jvb2tfYmFja2VuZF9vZ29fZGlz
cG9zZSAoR09iamVjdCAqb2JqZWN0KQ0Kew0KCUVCb29rQmFja2VuZE9HTyAqb2dvOw0KDQoJb2dv
ID0gRV9CT09LX0JBQ0tFTkRfT0dPIChvYmplY3QpOw0KDQoJaWYgKG9nby0+cHJpdikNCgkJew0K
CQkJaWYgKG9nby0+cHJpdi0+dXJpKQ0KCQkJCXsNCgkJCQkJZ19mcmVlIChvZ28tPnByaXYtPnVy
aSk7DQoJCQkJCW9nby0+cHJpdi0+dXJpID0gTlVMTDsNCgkJCQl9DQoNCgkJCWlmICggb2dvLT5w
cml2LT5jb25uZWN0aW9uICkNCgkJCQlnX29iamVjdF91bnJlZiAoIEdfT0JKRUNUICggb2dvLT5w
cml2LT5jb25uZWN0aW9uICkgKTsNCg0KCQkJZ19mcmVlIChvZ28tPnByaXYpOw0KCQkJb2dvLT5w
cml2ID0gTlVMTDsNCgl9DQoJR19PQkpFQ1RfQ0xBU1MgKGVfYm9va19iYWNrZW5kX29nb19wYXJl
bnRfY2xhc3MpLT5kaXNwb3NlIChvYmplY3QpOw0KfQ0KDQpzdGF0aWMgdm9pZA0KZV9ib29rX2Jh
Y2tlbmRfb2dvX2NsYXNzX2luaXQgKEVCb29rQmFja2VuZE9HT0NsYXNzICprbGFzcykNCnsNCg0K
CWdfcHJpbnQgKCAiZV9ib29rX2JhY2tlbmRfb2dvX2NsYXNzX2luaXRcbiIgKTsNCg0KCUdPYmpl
Y3RDbGFzcyAgKm9iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChrbGFzcyk7DQoJRUJvb2tC
YWNrZW5kQ2xhc3MgKnBhcmVudF9jbGFzczsNCg0KDQoJZV9ib29rX2JhY2tlbmRfb2dvX3BhcmVu
dF9jbGFzcyA9IGdfdHlwZV9jbGFzc19wZWVrX3BhcmVudCAoa2xhc3MpOw0KDQoJcGFyZW50X2Ns
YXNzID0gRV9CT09LX0JBQ0tFTkRfQ0xBU1MgKGtsYXNzKTsNCg0KCS8qIFNldCB0aGUgdmlydHVh
bCBtZXRob2RzLiAqLw0KCXBhcmVudF9jbGFzcy0+bG9hZF9zb3VyY2UgICAgICAgICAgICAgPSBl
X2Jvb2tfYmFja2VuZF9vZ29fbG9hZF9zb3VyY2U7DQoJcGFyZW50X2NsYXNzLT5nZXRfc3RhdGlj
X2NhcGFiaWxpdGllcyA9IGVfYm9va19iYWNrZW5kX29nb19nZXRfc3RhdGljX2NhcGFiaWxpdGll
czsNCg0KCXBhcmVudF9jbGFzcy0+Y3JlYXRlX2NvbnRhY3QgICAgICAgICAgPSBlX2Jvb2tfYmFj
a2VuZF9vZ29fY3JlYXRlX2NvbnRhY3Q7DQoJcGFyZW50X2NsYXNzLT5yZW1vdmVfY29udGFjdHMg
ICAgICAgICA9IGVfYm9va19iYWNrZW5kX29nb19yZW1vdmVfY29udGFjdHM7DQoJcGFyZW50X2Ns
YXNzLT5tb2RpZnlfY29udGFjdCAgICAgICAgICA9IGVfYm9va19iYWNrZW5kX29nb19tb2RpZnlf
Y29udGFjdDsNCglwYXJlbnRfY2xhc3MtPmdldF9jb250YWN0ICAgICAgICAgICAgID0gZV9ib29r
X2JhY2tlbmRfb2dvX2dldF9jb250YWN0Ow0KCXBhcmVudF9jbGFzcy0+Z2V0X2NvbnRhY3RfbGlz
dCAgICAgICAgPSBlX2Jvb2tfYmFja2VuZF9vZ29fZ2V0X2NvbnRhY3RfbGlzdDsNCglwYXJlbnRf
Y2xhc3MtPnN0YXJ0X2Jvb2tfdmlldyAgICAgICAgID0gZV9ib29rX2JhY2tlbmRfb2dvX3N0YXJ0
X2Jvb2tfdmlldzsNCglwYXJlbnRfY2xhc3MtPnN0b3BfYm9va192aWV3ICAgICAgICAgID0gZV9i
b29rX2JhY2tlbmRfb2dvX3N0b3BfYm9va192aWV3Ow0KCXBhcmVudF9jbGFzcy0+Z2V0X2NoYW5n
ZXMgICAgICAgICAgICAgPSBlX2Jvb2tfYmFja2VuZF9vZ29fZ2V0X2NoYW5nZXM7DQoJcGFyZW50
X2NsYXNzLT5hdXRoZW50aWNhdGVfdXNlciAgICAgICA9IGVfYm9va19iYWNrZW5kX29nb19hdXRo
ZW50aWNhdGVfdXNlcjsNCglwYXJlbnRfY2xhc3MtPmdldF9zdXBwb3J0ZWRfZmllbGRzICAgID0g
ZV9ib29rX2JhY2tlbmRfb2dvX2dldF9zdXBwb3J0ZWRfZmllbGRzOw0KCXBhcmVudF9jbGFzcy0+
Z2V0X3N1cHBvcnRlZF9hdXRoX21ldGhvZHMgPSBlX2Jvb2tfYmFja2VuZF9vZ29fZ2V0X3N1cHBv
cnRlZF9hdXRoX21ldGhvZHM7DQoJcGFyZW50X2NsYXNzLT5yZW1vdmUgICAgICAgICAgICAgICAg
ICA9IGVfYm9va19iYWNrZW5kX29nb19yZW1vdmU7DQoJb2JqZWN0X2NsYXNzLT5kaXNwb3NlICAg
ICAgICAgICAgICAgICA9IGVfYm9va19iYWNrZW5kX29nb19kaXNwb3NlOw0KfQ0KDQpzdGF0aWMg
dm9pZA0KZV9ib29rX2JhY2tlbmRfb2dvX2luaXQgKEVCb29rQmFja2VuZE9HTyAqYmFja2VuZCkN
CnsNCglFQm9va0JhY2tlbmRPR09Qcml2YXRlICpwcml2Ow0KCQ0KCWdfcHJpbnQgKCAiZV9ib29r
X2JhY2tlbmRfb2dvX2luaXRcbiIgKTsNCg0KCXByaXYgPSBnX25ldzAgKEVCb29rQmFja2VuZE9H
T1ByaXZhdGUsIDEpOw0KDQoJYmFja2VuZC0+cHJpdiA9IHByaXY7DQoNCglwcml2LT5jb25uZWN0
aW9uID0gb2dvX2Nvbm5lY3Rpb25fbmV3ICgpOw0KfQ0KDQoNCi8qKg0KICogZV9ib29rX2JhY2tl
bmRfb2dvX2dldF90eXBlOg0KICovDQpHVHlwZQ0KZV9ib29rX2JhY2tlbmRfb2dvX2dldF90eXBl
ICh2b2lkKQ0Kew0KCXN0YXRpYyBHVHlwZSB0eXBlID0gMDsNCg0KCWlmICghIHR5cGUpIHsNCgkJ
R1R5cGVJbmZvIGluZm8gPSB7DQoJCQlzaXplb2YgKEVCb29rQmFja2VuZE9HT0NsYXNzKSwNCgkJ
CU5VTEwsIC8qIGJhc2VfY2xhc3NfaW5pdCAqLw0KCQkJTlVMTCwgLyogYmFzZV9jbGFzc19maW5h
bGl6ZSAqLw0KCQkJKEdDbGFzc0luaXRGdW5jKSAgZV9ib29rX2JhY2tlbmRfb2dvX2NsYXNzX2lu
aXQsDQoJCQlOVUxMLCAvKiBjbGFzc19maW5hbGl6ZSAqLw0KCQkJTlVMTCwgLyogY2xhc3NfZGF0
YSAqLw0KCQkJc2l6ZW9mIChFQm9va0JhY2tlbmRPR08pLA0KCQkJMCwgICAgLyogbl9wcmVhbGxv
Y3MgKi8NCgkJCShHSW5zdGFuY2VJbml0RnVuYykgZV9ib29rX2JhY2tlbmRfb2dvX2luaXQNCgkJ
fTsNCg0KCQl0eXBlID0gZ190eXBlX3JlZ2lzdGVyX3N0YXRpYyAoRV9UWVBFX0JPT0tfQkFDS0VO
RCwgIkVCb29rQmFja2VuZE9HTyIsICZpbmZvLCAwKTsNCgl9DQoNCglyZXR1cm4gdHlwZTsNCn0N
Cg==
--=-WOHiVg4UE/ok+FUaotVa--