From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 9A2157F726 for ; Sat, 26 Apr 2014 16:02:18 +0200 (CEST) Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of recordbot@libero.it) identity=pra; client-ip=212.52.84.103; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="recordbot@libero.it"; x-sender="recordbot@libero.it"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of recordbot@libero.it designates 212.52.84.103 as permitted sender) identity=mailfrom; client-ip=212.52.84.103; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="recordbot@libero.it"; x-sender="recordbot@libero.it"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@outrelay03.libero.it) identity=helo; client-ip=212.52.84.103; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="recordbot@libero.it"; x-sender="postmaster@outrelay03.libero.it"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoYCABq7W1PUNFRne2dsb2JhbABZhxHBc4EMFg4BAQkLCwcVKYJPgRoZAgQ+EQwxiA4BAReXY4cZiAaFWZYREBcQgRGGBxeNdxEBHFGCWYFKBJEBnhyBcA X-IPAS-Result: AoYCABq7W1PUNFRne2dsb2JhbABZhxHBc4EMFg4BAQkLCwcVKYJPgRoZAgQ+EQwxiA4BAReXY4cZiAaFWZYREBcQgRGGBxeNdxEBHFGCWYFKBJEBnhyBcA X-IronPort-AV: E=Sophos;i="4.97,933,1389740400"; d="ml'?scan'208";a="70458741" Received: from outrelay03.libero.it ([212.52.84.103]) by mail2-smtp-roc.national.inria.fr with ESMTP; 26 Apr 2014 16:02:18 +0200 X-CTCH-Spam: Unknown X-CTCH-RefID: str=0001.0A0C0206.535BBC69.00A9,ss=1,re=0.000,fgs=0 X-libjamoibt: 1587 Received: from webmail45 (172.31.0.104) by outrelay03.libero.it (8.5.140.03) id 53575B5500665761 for caml-list@inria.fr; Sat, 26 Apr 2014 16:02:17 +0200 Message-ID: <1438744026.9108751398520937421.JavaMail.actor@webmail45> Date: Sat, 26 Apr 2014 16:02:17 +0200 (CEST) From: "recordbot@libero.it" Reply-To: "recordbot@libero.it" To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_814402_1046675629.1398520937420" X-SenderIP: 94.165.228.202 X-libjamv: XXxomfNIbNI= X-libjamsun: +My5vJhIeljpSKyvjbBmEdR2dikftvIw Subject: [Caml-list] help with ocaml tic tac toe example ------=_Part_814402_1046675629.1398520937420 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi to all I'm new in Ocaml language. I tried to develop a simple program to play at tic tac toe against computer. I developed several functions: - a function to insert the coins into the grid, - functions to check win/lose/pair etc... The only thing that I cannot do is to implement the main function: the I.A algorithm! I want use the minimax algorithm using recursive function, but I'm not able.. Can anyone help me? Attached to this email there is what I developed till now Thank you ------=_Part_814402_1046675629.1398520937420 Content-Type: application/octet-stream; name=filetto.ml Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=filetto.ml; size=7886 ICBleGNlcHRpb24gRXJyb3JlTGlzdGFWdW90YTs7DQogIGV4Y2VwdGlvbiBF cnJvcmVOdW1lcm9OZWdhdGl2bzs7DQogIGV4Y2VwdGlvbiBFcnJvcmVJbmRp Y2VUcm9wcG9QaWNjb2xvOzsNCiAgZXhjZXB0aW9uIEVycm9yZUluZGljZU5v blZhbGlkbzs7DQogIGV4Y2VwdGlvbiBFcnJvcmVHZW5lcmljbzs7DQogIA0K ICAoKiBxdWkgcG9zc2lhbW8gc3RhYmlsaXJlIGxhIGdyYW5kZXp6YSBkZWxs YSBncmlnbGlhLi4uIGNoZSBjb21lIHZlZHJlbW8gw6ggcmFwcHJlc2VudGF0 YSBwZXIgbWV6em8gZGkgdW5hIGxpc3RhICopDQogICgqIGhlcmUgd2UgYXJl IGZpeGluZyB0aGUgZGltZW5zaW9uIG9mIHRoZSBncmlkLiAzIG1lYW5zIHRo YXQgdGhlIGdyaWQgaXMgM3gzLCA0IG1lYW5zIHRoYXQgaXMgNHg0IGV0Yy4g VGhlIGdyaWQgaXMgcmVwcmVzZW50ZWQgYnkgYSBsaXN0ICopDQogIGxldCBs YXJnaGV6emFfZ3JpZ2xpYSA9IDM7OyANCg0KKCogcXVpIGRlZmluaWFtbyBp bCB0aXBvIHBlciBpIHZhbG9yaSBkZWxsYSBncmlnbGlhICopDQooKiBoZXJl IHdlIHNheSB0aGUgdmFsdWUgdGhhdCBlYWNoIGdyaWQncyBjZWxsIGNhbiBh c3N1bWUuIFYgbWVhbnMgRW1wdHkgKGluIEl0YWxpYW4gIlZ1b3RvIiAqKQ0K ICB0eXBlIHZhbG9yaV9ncmlnbGlhID0NCiAgfCBPDQogIHwgWA0KICB8IFY7 OyAoKiBWdW90byAqKQ0KICANCiANCiAgDQogbGV0IGxpc3RhVnVvdGEgPSBb VjtWO1Y7VjtWO1Y7VjtWO1ZdOzsNCiANCiAoKmxldCBsaXN0YTIgPSBbCU87 TztYOw0KIAkJCQlWO1Y7VjsNCiAJCQkJVjtWO09dOzsqKQ0KIA0KICgqIGxp c3RhIGluIGN1aSBjJ8OoIHVuIGZpbGV0dG8gZGlhZ29uYWxlIGRlbGxlIE8s IMOoIHN0YXRhIGRpY2hpYXJhdGEgc2VtcGxpY2VtZW50ZSBwZXIgcHJvdmFy ZSBsZSBmdW56aW9uaSBzdWNjZXNzaXZlICopDQogbGV0IGxpc3RhMyA9IFsN CgkJCQlPO1g7TzsNCgkJCQlYO087WDsNCgkJCQlPO1g7WF07Ow0KCQkJCQ0K ICAoKnJlc3RpdHVpc2NlIGwnZW5uZXNpbW8gZWxlbWVudG8gZGVsbGEgbGlz dGEsIGRvdmUgbiDDqCBwYXNzYXRvIGluIGlucHV0KikNCiAgKCpyZXR1cm4g dGhlIG50aCBlbGVtZW50IG9mIHRoZSBsaXN0LCB3aGVyZSBuIGlzIHRoZSBp bnB1dCAqKQ0KICBsZXQgcmVjIHJldHVybl9lbm5lc2ltbyA9IGZ1bmN0aW9u IF8sW10tPnJhaXNlIEVycm9yZUxpc3RhVnVvdGEgDQogIAkJCQkJCQkJCXwg bixoOjp0IC0+ICBpZihuPDApIHRoZW4gDQogIAkJCQkJCQkJCQkJCQlyYWlz ZSBFcnJvcmVOdW1lcm9OZWdhdGl2byANCiAgCQkJCQkJCQkJCQkJICBlbHNl IA0KICAJCQkJCQkJCQkJCQkgIGlmIChuPTApIHRoZW4gDQogIAkJCQkJCQkJ CQkJCSAgCQloDQogIAkJCQkJCQkJCQkJCSAgZWxzZSANCiAgCQkJCQkJCQkJ CQkJICAJcmV0dXJuX2VubmVzaW1vKG4tMSx0KTs7DQogIAkJCQkJCQkJCQkJ CSAgCQ0KICANCiAgICAJCQkNCg0KKCogw6ggdW5hIGZ1bnppb25lIGF1c2ls aWFyaWEuLi4gcmVzdGl0dWlzY2UgaSBwcmltaSBuIGVsZW1lbnRpIGRlbGxh IGxpc3RhIGZvcm5pdGEgaW4gaW5wdXQqKQ0KKCogdGhpcyBpcyBhbiBhdXhp bGlhciBmdW5jdGlvbi4uIEl0IHJldHVybnMgdGhlIDEuLm4gZWxlbWVudHMg b2YgdGhlIGxpc3QgcGFzc2VkIGluIGlucHV0ICopDQpsZXQgcmVjIHByaW1p IG49IGZ1bmN0aW9uDQpbXSAtPiBbXQ0KfCBoOjp0IC0+IGlmIG48PTAgdGhl biBbXSANCgkJCWVsc2UgaDo6cHJpbWkgKG4tMSkgdDs7DQoJCQkNCigqIGZ1 bnppb25lIGF1c2lsaWFyaWEuLiAgdHJvdmEgbCdlbm5lc2ltbyBlbGVtZW50 byBuZWxsYSBsaXN0YSBlIGxvIHNvc3RpdHVpc2NlIGNvbiBpbCBudW92byB2 YWxvcmUgZm9ybml0byBpbiBpbnB1dAkJKikNCigqYW5vdGhlciBhdXhpbGlh ciBmdW5jdGlvbi4uIGl0IHJlcGxhY2UgdGhlIG50aCBlbGVtZW50IG9mIHRo ZSBsaXN0IHdpdGggdGhlIG5ld2VzdCBvbmUgcGFzc2VkIGluIGlucHV0ICop DQpsZXQgcmVjIHRyb3ZhX2Vfc29zdGl0dWlzY2kgbiBwPSBmdW5jdGlvbg0K W10gLT5yYWlzZSBFcnJvcmVMaXN0YVZ1b3RhDQp8IGg6OnQgLT4NCgkJCWlm IG4gPSAwIHRoZW4gDQoJCQkJcDo6dA0KCQkJZWxzZQ0KCQkJCXRyb3ZhX2Vf c29zdGl0dWlzY2kgKG4tMSkgcCB0OzsNCgkNCigqbGEgZnVuemlvbmUgaW5z ZXJpc2NpIGVmZmV0dHVhIGwnb3BlcmF6aW9uZSBkaSBzb3N0aXR1emlvbmUg ZGVsbCduLWVzaW1vIGVsZW1lbnRvIGFsbCdpbnRlcm5vIGRpIHVuYSBsaXN0 YS4gbiDDqCBsYSBwb3NpemlvbmUgaW4gY3VpIHZhIGluc2VyaXRvIGlsIHZh bG9yZSBwDQphZCBlc2VtcGlvIHNlIHN0byBwZXIgaW5zZXJpcmUgbGEgcHJp bWEgbW9zc2EsIGF2csOyIGluaXppYWxtZW50ZSBsYSBsaXN0YSBjaGUgcmFw cHJlc2VudGEgbGEgZ3JpZ2xpYSByaWVtcGl0YSBjb24gdHV0dGUgVg0KZSBz dWJpdG8gZG9wbyBhdnLDsiB1bm8gZGkgcXVlc3RpIGVsZW1lbnRpIHNvc3Rp dHVpdGkgY29uIGxhIHBlZGluYSBkZWwgZ2lvY2F0b3JlLS0+IA0KaW5wdXQ6 IDEgWCBbVjtWO1Y7VjtWO1Y7VjtWO1ZdDQpvdXRwdXQgW1Y7WDtWO1Y7VjtW O1Y7VjtWXQ0KKikJCQkNCigqIGlmIHRoZSBpbnB1dCBpczogIjEgWCBbVjtW O1Y7VjtWO1Y7VjtWO1ZdIiwgdGhlbiB0aGUgb3V0cHV0IGlzOiBbVjtYO1Y7 VjtWO1Y7VjtWO1ZdLCBhbmQgc28gb24uIHRoZSBmaXJzdCBpbnB1dCBpcyB0 aGUgcG9zaXRpb24sIHRoZSBzZWNvbmQgaW5wdXQgaXMgdGhlIHN5bWJvbCB0 byBpbnNlcnQgYW5kIHRoZSB0aGlyZCBpbnB1dCBpcyB0aGUgZ3JpZCAqKQ0K bGV0IGluc2VyaXNjaSBuIHAgPSBmdW5jdGlvbg0KCVtdIC0+IFtdDQoJfGwg LT4gcHJpbWkgbiBsIEAgdHJvdmFfZV9zb3N0aXR1aXNjaSBuIHAgbDs7DQog IAkJCQkJCQkJCSANCiAgCQkJCQkJCQkJIA0KKCpmdW56aW9uZSBjaGUgc2kg b2NjdXBhIGRpIHZlcmlmaWNhcmUgc2UgbGEgbGlzdGEgw6ggc3RhdGEgcmll bXBpdGEgdHV0dGEsIGNpb8OoIHNlIHNpYW1vIGluIHVuYSBjb25maWd1cmF6 aW9uZSB0ZXJtaW5hbGUgKikNCigqdGhpcyBmdW5jdGlvbiBjaGVjayBpZiB3 ZSBoYXZlIHRoZSBsaXN0IGZ1bGwgKikNCmxldCByZWMgaXNfcmllbXBpdGEg PSBmdW5jdGlvbg0KCQkJCQkJCVtdIC0+IHRydWUNCgkJCQkJCQl8aDo6dCAt PiBpZiAoaD1WKSB0aGVuDQoJCQkJCQkJCQkJZmFsc2UNCgkJCQkJCQkJCWVs c2UNCgkJCQkJCQkJCQlpc19yaWVtcGl0YSB0DQoJCQkJCQkJCQkJDQogICgq ZnVuemlvbmUgYXVzaWxpYXJpYSBkaSAiY29udHJvbGxhIiwgc2kgb2NjdXBh IGRpIHZlcmlmaWNhcmUgc2UgYyfDqCB1biBmaWxldHRvIG5lbGxlIHJpZ2hl KikNCiAgKCp0aGlzIGlzIGFuIGF1eGlsaWFyIGZ1bmN0aW9uIG9mICJjb250 cm9sbGEiLiBUaGlzIGZ1bmN0aW9uIGNoZWNrIGlmIHdlIGhhdmUgYSAidGhy ZWUgaW4gYSByb3ciIGluIHRoZSByb3dzICopDQogIGxldCByZWMgY29uZnJv bnRvX3JpZ2hlID0gZnVuY3Rpb24gaSxwbHlyLGwgLT4NCiAgCQkJCQkJCQkJ CWlmKCByZXR1cm5fZW5uZXNpbW8oaSxsKSA9cGx5cikgdGhlbg0KICAJCQkJ CQkJCQkJCWlmICgoaSsxKSBtb2QgKGxhcmdoZXp6YV9ncmlnbGlhKSA9IDAp IHRoZW4NCiAgCQkJCQkJCQkJCQkJdHJ1ZQ0KICAJCQkJCQkJCQkJCWVsc2UN CiAgCQkJCQkJCQkJCQkJY29uZnJvbnRvX3JpZ2hlKGkrbGFyZ2hlenphX2dy aWdsaWEscGx5cixsKQ0KICAJCQkJCQkJCQkJZWxzZQ0KICAJCQkJCQkJCQkJ CWZhbHNlOzsNCiAgKCpmdW56aW9uZSBhdXNpbGlhcmlhIGRpICJjb250cm9s bGEiLCBzaSBvY2N1cGEgZGkgdmVyaWZpY2FyZSBzZSBjJ8OoIHVuIGZpbGV0 dG8gbmVsbGEgY29sb25uZSopDQogICgqdGhpcyBpcyBhbiBhdXhpbGlhciBm dW5jdGlvbiBvZiAiY29udHJvbGxhIi4gVGhpcyBmdW5jdGlvbiBjaGVjayBp ZiB3ZSBoYXZlIGEgInRocmVlIGluIGEgcm93IiBpbiB0aGUgcm93cyAqKQ0K ICBsZXQgcmVjIGNvbmZyb250b19jb2xvbm5lID0gZnVuY3Rpb24gaSxwbHly LGwgLT4NCiAgCQkJCQkJCQkJCWlmKCByZXR1cm5fZW5uZXNpbW8oaSxsKSA9 cGx5cikgdGhlbg0KICAJCQkJCQkJCQkJCWlmIChpID49IGxhcmdoZXp6YV9n cmlnbGlhICogKGxhcmdoZXp6YV9ncmlnbGlhIC0gMSkpIHRoZW4NCiAgCQkJ CQkJCQkJCQkJdHJ1ZQ0KICAJCQkJCQkJCQkJCWVsc2UNCiAgCQkJCQkJCQkJ CQkJY29uZnJvbnRvX2NvbG9ubmUoaStsYXJnaGV6emFfZ3JpZ2xpYSxwbHly LGwpDQogIAkJCQkJCQkJCQllbHNlDQogIAkJCQkJCQkJCQkJZmFsc2U7Ow0K ICAJCQkJCQkJCQkJCQ0KICAoKmZ1bnppb25lIGF1c2lsaWFyaWEgZGkgImNv bnRyb2xsYSIsIHNpIG9jY3VwYSBkaSB2ZXJpZmljYXJlIHNlIGMnw6ggdW4g ZmlsZXR0byBuZWxsYSBkaWFnb25hbGUgcHJpbmNpcGFsZSopCQ0KICAoKnRo aXMgaXMgYW4gYXV4aWxpYXIgZnVuY3Rpb24gb2YgImNvbnRyb2xsYSIuIFRo aXMgZnVuY3Rpb24gY2hlY2sgaWYgd2UgaGF2ZSBhICJ0aHJlZSBpbiBhIHJv dyIgaW4gdGhlIG1haW4gZGlhZ29uYWwgKikNCgkJCQkJDQogIGxldCByZWMg Y29uZnJvbnRvX2RpYWdvbmFsZV9wcmluY2lwYWxlID0gZnVuY3Rpb24gaSxw bHlyLGwgLT4NCiAgCQkJCQkJCQkJCWlmKCByZXR1cm5fZW5uZXNpbW8oaSxs KSA9cGx5cikgdGhlbg0KICAJCQkJCQkJCQkJCWlmIChpID49IChsYXJnaGV6 emFfZ3JpZ2xpYSAqIGxhcmdoZXp6YV9ncmlnbGlhKSAtIDEpIHRoZW4NCiAg CQkJCQkJCQkJCQkJdHJ1ZQ0KICAJCQkJCQkJCQkJCWVsc2UNCiAgCQkJCQkJ CQkJCQkJY29uZnJvbnRvX2RpYWdvbmFsZV9wcmluY2lwYWxlKGkgKyBsYXJn aGV6emFfZ3JpZ2xpYSArIDEsIHBseXIsbCkNCiAgCQkJCQkJCQkJCWVsc2UN CiAgCQkJCQkJCQkJCQlmYWxzZTs7DQogIAkJCQkJCQkJCQkNCiAgKCpmdW56 aW9uZSBhdXNpbGlhcmlhIGRpICJjb250cm9sbGEiLCBzaSBvY2N1cGEgZGkg dmVyaWZpY2FyZSBzZSBjJ8OoIHVuIGZpbGV0dG8gbmVsbGEgZGlhZ29uYWxl IHNlY29uZGFyaWEqKQ0KICAoKnRoaXMgaXMgYW4gYXV4aWxpYXIgZnVuY3Rp b24gb2YgImNvbnRyb2xsYSIuIFRoaXMgZnVuY3Rpb24gY2hlY2sgaWYgd2Ug aGF2ZSBhICJ0aHJlZSBpbiBhIHJvdyIgaW4gdGhlIG90aGVyIGRpYWdvbmFs ICopDQogIGxldCByZWMgY29uZnJvbnRvX2RpYWdvbmFsZV9zZWNvbmRhcmlh ID0gZnVuY3Rpb24gaSxwbHlyLGwgLT4NCiAgCQkJCQkJCQkJCWlmKCByZXR1 cm5fZW5uZXNpbW8oaSxsKSA9cGx5cikgdGhlbg0KICAJCQkJCQkJCQkJCWlm IChpID49IChsYXJnaGV6emFfZ3JpZ2xpYSAqIChsYXJnaGV6emFfZ3JpZ2xp YSAtIDEpKSkgdGhlbg0KICAJCQkJCQkJCQkJCQl0cnVlDQogIAkJCQkJCQkJ CQkJZWxzZQ0KICAJCQkJCQkJCQkJCQljb25mcm9udG9fZGlhZ29uYWxlX3Nl Y29uZGFyaWEoaSArIGxhcmdoZXp6YV9ncmlnbGlhIC0gMSwgcGx5cixsKQ0K ICAJCQkJCQkJCQkJZWxzZQ0KICAJCQkJCQkJCQkJCWZhbHNlOzsNCiAgCQkJ CQkJCQkJCQkNCiAgKCpmdW56aW9uZSBjaGUgc2kgb2NjdXBhIGRpIHZlcmlm aWNhcmUgc2UgaWwgcGxheWVyIGNvbiBsYSBwZWRpbmEgcGFzc2F0YSBpbiBp bnB1dCBoYSB2aW50byBvIG5vICopDQogICgqdGhpcyBpcyB0aGUgbWFpbiBm dW5jdGlvbiB0aGF0IGNoZWNrcyBpZiB0aGVyZSBpcyBhIHdpbiBjb25kaXRp b24gaW50byB0aGUgZ3JpZCAqKQ0KICBsZXQgcmVjIGNvbnRyb2xsYSA9IGZ1 bmN0aW9uDQogIAkJCQkJCWkseCxsIC0+IGlmIChpID49IGxhcmdoZXp6YV9n cmlnbGlhKSB0aGVuDQogIAkJCQkJCQkJCWZhbHNlDQogIAkJCQkJCQkJZWxz ZQ0KICAJCQkJCQkJCQlpZiAoKGkgPSAwKSAmJiAoY29uZnJvbnRvX2RpYWdv bmFsZV9wcmluY2lwYWxlKGkseCxsKSA9IHRydWUpKSB0aGVuDQogIAkJCQkJ CQkJCQl0cnVlDQogIAkJCQkJCQkJCWVsc2UNCiAgCQkJCQkJCQkJaWYgKChp IG1vZCBsYXJnaGV6emFfZ3JpZ2xpYSA9IDApICYmIChjb25mcm9udG9fcmln aGUobGFyZ2hlenphX2dyaWdsaWEgKiBpLHgsbCkgPSB0cnVlKSkgdGhlbg0K ICAJCQkJCQkJCQkJdHJ1ZQ0KICAJCQkJCQkJCQllbHNlDQogIAkJCQkJCQkJ CWlmIChjb25mcm9udG9fY29sb25uZShpLHgsbCkgPSB0cnVlKSB0aGVuDQog IAkJCQkJCQkJCQl0cnVlDQogIAkJCQkJCQkJCWVsc2UNCiAgCQkJCQkJCQkJ aWYgKChpID0gbGFyZ2hlenphX2dyaWdsaWEgLSAxKSAmJiAoY29uZnJvbnRv X2RpYWdvbmFsZV9zZWNvbmRhcmlhKGxhcmdoZXp6YV9ncmlnbGlhIC0xLHgs bCkgPSB0cnVlKSkgdGhlbg0KICAJCQkJCQkJCQkJdHJ1ZQ0KICAJCQkJCQkJ CQllbHNlCQkNCiAgCQkJCQkJCQkJCWNvbnRyb2xsYShpKzEseCxsKTs7DQog IAkJCQkJCQkJICAJDQogKCpmdW56aW9uZSBjaGUgZmEgdXNvIGRpICJjb250 cm9sbGEiIGUgZGkgImlzX3JpZW1waXRhIiwgc2kgb2NjdXBhIGRpIHZlcmlm aWNhcmUgc2UgbGEgZ3JpZ2xpYSBvY2N1cGEgdW5hIHBvc2l6aW9uZSBkaSBw YXJpdGEqKQ0KICgqdGhpcyBmdW5jdGlvbiBjaGVjayBpZiB0aGVyZSBpcyBh IHRpZSBjb25kaXRpb24gKikNCiAgbGV0IGlzX3BhdHRhID0gZnVuY3Rpb24N CiAgCQkJCQkJCVtdIC0+IHJhaXNlIEVycm9yZUxpc3RhVnVvdGENCiAgCQkJ CQkJCXwgbCAtPiBpZiAoKGlzX3JpZW1waXRhIGwgPSB0cnVlKSAmJiAoY29u dHJvbGxhICgwLE8sbCkgPSB0cnVlIHx8IChjb250cm9sbGEgKDAsWCxsKSA9 IHRydWUpKSkgdGhlbg0KICAJCQkJCQkJCQkJdHJ1ZQ0KICAJCQkJCQkJCQll bHNlDQogIAkJCQkJCQkJCSAgCWZhbHNlOzsNCiAgCQkJCQkJCQkgIAkNCiAg CSgqcXVlc3RhIGZ1bnppb25lIGludmVydGUgbGEgcGVkaW5hLiBTZSBsYSBw ZWRpbiDDqCBYIHJpdG9ybmEgTyBlIHZpY2V2ZXJzYSAqKQ0KICAJbGV0IGlu dmVydGkgPSBmdW5jdGlvbiANCgkJbSAtPglpZiAobSA9IFgpIHRoZW4NCgkJ CQkJTw0KCQkJCWVsc2UNCgkJCQlpZiAobSA9IE8pIHRoZW4NCgkJCQkJWA0K CQkJCWVsc2UNCgkJCQkJVjs7DQoJCQ0KCQkJCQkNCiAgCSgqIG9rLi4gZmlu byBhIHF1aSBhYmJpYW1vIGxlIGZ1bnppb25pIGRpIGNvbnRvcm5vIGFsIHBy b2dyYW1tYS4uLi4gcXVlbGxlIGNoZSBzaSBhY2Nvcmdvbm8gcXVhbmRvIGMn w6ggdW5hIHZpdHRvcmlhIGFsbCdpbnRlcm5vIA0KICAJZGVsbGEgZ3JpZ2xp YSBvIHVuYSBwYXR0YSwgZSBxdWVsbGUgY2hlIHBlcm1ldHRvbm8gZGkgaW5z ZXJpcmUgcGVkaW5lIGFsbCd1bm8gbyBhbGwnYWx0cm8gKGNvbXB1dGVyKSBn aW9jYXRvcmUqKQ0KICAJDQogIAkNCiAgIGxldCBsaXN0YUFwcG9nZ2lvID0g WzA7MTsyOzM7NDs1OzY7Nzs4XTs7DQogICANCg0KCQkJCQ0KCQkJCQ0KCSgq IGRlZmluaXJlIHBlZGluYS4gRG92csOgIGVzc2VyZSB1bmEgdmFyaWFiaWxl IGNoZSBjYW1iaWEgZGkgaW5zZXJpbWVudG8gaW4gaW5zZXJpbWVudG8gZGEg WCBhIE8gZSBkYSBPIGEgWCAqKQ0KICAgbGV0IHJlYyBtaW5pTWF4IHBvcyA9 IGZ1bmN0aW9uDQogICAJCQkJW10gLT4JcmFpc2UgRXJyb3JlTGlzdGFWdW90 YQ0KICAgCQkJCXwgbCAtPglsZXQgYXNkID0gaW5zZXJpc2NpIHBvcyBwZWRp bmEgbCBpbg0KICAgCQkJCQkJbGV0IHBvcyA9IGludmVydGkgcG9zIGluDQog ICAJCQkJCQlpZiAoaXNfcmllbXBpdGEgbCA9IHRydWUpDQogICAJCQkJCQkJ aWYgKGNvbnRyb2xsYSgwLFgsbCkgPSB0cnVlKQ0KICAgCQkJCQkJCQlyZXR1 cm4gLTENCiAgIAkJCQkJCQllbHNlDQogICAJCQkJCQkJaWYgKGNvbnRyb2xs YSgwLE8sbCkgPSB0cnVlKQ0KICAgCQkJCQkJCQlyZXR1cm4gMQ0KICAgCQkJ CQkJCWVsc2UNCiAgIAkJCQkJCQkJcmV0dXJuIDANCiAgIAkJCQkJCWVsc2UN CiAgIAkJCQkJCQ0KICAgCQkJCQkJDQogICAJCQkJCQkNCiAgIAkJCQkJCQ0K ICAgCQkJCQkJDQo= ------=_Part_814402_1046675629.1398520937420--