Re: derivative of cubic spline
- To: mathgroup at smc.vnet.net
- Subject: [mg66580] Re: derivative of cubic spline
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Sat, 20 May 2006 04:48:18 -0400 (EDT)
- References: <e4ju6v$d56$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi and if you use the code in the attached notebook below below, you will get a spline that is not parametric and first and second derivative are already defined. Regards Jens Jaccard Florian wrote: > Dear All, > > I would like to know how to derivate a spline function constructed by > Mathematica. > > The question has already been posted in : > First derivative of interpolated spline > > But I wasn't able to find an answer in mathgroup. > > Example : > > > data={{0, 1}, {1, 2.3}, {2, 2.5}, {3, 1.2}, {4, 0.47}, > {5, 0.38}, {6, 0.76}} > > << "Numericalmath`SplineFit`" > > s = SplineFit[data, Cubic]; > > You can see that the spline is good : > > ParametricPlot[s[x], {x, 0, 6}, PlotStyle -> Blue, > Epilog -> {{Blue, Text[HoldForm[y = s(x)], > {2.5, g1[2.5]}, Background -> White]}, > ({PointSize[0.03], Red, Point[#1]} & ) /@ data}, > PlotRange -> {-0.5, 3}, TextStyle -> > {FontFamily -> Times}]; > > But D[s[t],t] or s'[t] or so one doesn't help... > So I'm not able to see that the spline is better than Interpolation (in > the sense of a continuous derivative)! > > Please help! > It's the first time I found something that is easier in MathCad than in > Mathematica... > > Regards > > F.Jaccard > florian.jaccard at he-arc.ch > > --------------040704020005010306080304 name="spline.nb" filename="spline.nb" KCoqKioqKioqKioqKioqIENvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vbWF0aGVtYXRpY2Eg KioqKioqKioqKioqKioNCiAgICAgICAgICAgICAgICAgICAgIENyZWF0ZWRCeT0nTWF0aGVt YXRpY2EgNS4yJw0KDQogICAgICAgICAgICAgICAgICAgIE1hdGhlbWF0aWNhLUNvbXBhdGli bGUgTm90ZWJvb2sNCg0KVGhpcyBub3RlYm9vayBjYW4gYmUgdXNlZCB3aXRoIGFueSBNYXRo ZW1hdGljYS1jb21wYXRpYmxlDQphcHBsaWNhdGlvbiwgc3VjaCBhcyBNYXRoZW1hdGljYSwg TWF0aFJlYWRlciBvciBQdWJsaWNvbi4gVGhlIGRhdGENCmZvciB0aGUgbm90ZWJvb2sgc3Rh cnRzIHdpdGggdGhlIGxpbmUgY29udGFpbmluZyBzdGFycyBhYm92ZS4NCg0KVG8gZ2V0IHRo ZSBub3RlYm9vayBpbnRvIGEgTWF0aGVtYXRpY2EtY29tcGF0aWJsZSBhcHBsaWNhdGlvbiwg ZG8NCm9uZSBvZiB0aGUgZm9sbG93aW5nOg0KDQoqIFNhdmUgdGhlIGRhdGEgc3RhcnRpbmcg d2l0aCB0aGUgbGluZSBvZiBzdGFycyBhYm92ZSBpbnRvIGEgZmlsZQ0KICB3aXRoIGEgbmFt ZSBlbmRpbmcgaW4gLm5iLCB0aGVuIG9wZW4gdGhlIGZpbGUgaW5zaWRlIHRoZQ0KICBhcHBs aWNhdGlvbjsNCg0KKiBDb3B5IHRoZSBkYXRhIHN0YXJ0aW5nIHdpdGggdGhlIGxpbmUgb2Yg c3RhcnMgYWJvdmUgdG8gdGhlDQogIGNsaXBib2FyZCwgdGhlbiB1c2UgdGhlIFBhc3RlIG1l bnUgY29tbWFuZCBpbnNpZGUgdGhlIGFwcGxpY2F0aW9uLg0KDQpEYXRhIGZvciBub3RlYm9v a3MgY29udGFpbnMgb25seSBwcmludGFibGUgNy1iaXQgQVNDSUkgYW5kIGNhbiBiZQ0Kc2Vu dCBkaXJlY3RseSBpbiBlbWFpbCBvciB0aHJvdWdoIGZ0cCBpbiB0ZXh0IG1vZGUuICBOZXds aW5lcyBjYW4gYmUNCkNSLCBMRiBvciBDUkxGIChVbml4LCBNYWNpbnRvc2ggb3IgTVMtRE9T IHN0eWxlKS4NCg0KTk9URTogSWYgeW91IG1vZGlmeSB0aGUgZGF0YSBmb3IgdGhpcyBub3Rl Ym9vayBub3QgaW4gYSBNYXRoZW1hdGljYS0NCmNvbXBhdGlibGUgYXBwbGljYXRpb24sIHlv dSBtdXN0IGRlbGV0ZSB0aGUgbGluZSBiZWxvdyBjb250YWluaW5nDQp0aGUgd29yZCBDYWNo ZUlELCBvdGhlcndpc2UgTWF0aGVtYXRpY2EtY29tcGF0aWJsZSBhcHBsaWNhdGlvbnMgbWF5 DQp0cnkgdG8gdXNlIGludmFsaWQgY2FjaGUgZGF0YS4NCg0KRm9yIG1vcmUgaW5mb3JtYXRp b24gb24gbm90ZWJvb2tzIGFuZCBNYXRoZW1hdGljYS1jb21wYXRpYmxlIA0KYXBwbGljYXRp b25zLCBjb250YWN0IFdvbGZyYW0gUmVzZWFyY2g6DQogIHdlYjogaHR0cDovL3d3dy53b2xm cmFtLmNvbQ0KICBlbWFpbDogaW5mb0B3b2xmcmFtLmNvbQ0KICBwaG9uZTogKzEtMjE3LTM5 OC0wNzAwIChVLlMuKQ0KDQpOb3RlYm9vayByZWFkZXIgYXBwbGljYXRpb25zIGFyZSBhdmFp bGFibGUgZnJlZSBvZiBjaGFyZ2UgZnJvbSANCldvbGZyYW0gUmVzZWFyY2guDQoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKQ0KDQooKkNhY2hlSUQ6IDIzMiopDQoNCg0KKCpOb3RlYm9va0ZpbGVMaW5lQnJl YWtUZXN0DQpOb3RlYm9va0ZpbGVMaW5lQnJlYWtUZXN0KikNCigqTm90ZWJvb2tPcHRpb25z UG9zaXRpb25bICAgICAgODM0MywgICAgICAgIDE5Ml0qKQ0KKCpOb3RlYm9va091dGxpbmVQ b3NpdGlvblsgICAgICA4OTg5LCAgICAgICAgMjE0XSopDQooKiAgQ2VsbFRhZ3NJbmRleFBv c2l0aW9uWyAgICAgIDg5NDUsICAgICAgICAyMTBdKikNCigqV2luZG93RnJhbWUtPk5vcm1h bCopDQoNCg0KDQpOb3RlYm9va1t7DQpDZWxsW0JveERhdGFbew0KICAgIFwoXChcKENsZWFy W0N1YmljU3BsaW5lSW50ZXJwb2xhdGlvbl1cKVwoXFtJbmRlbnRpbmdOZXdMaW5lXVwpDQog ICAgXClcKSwgIlxbSW5kZW50aW5nTmV3TGluZV0iLCANCiAgICBcKEN1YmljU3BsaW5lSW50 ZXJwb2xhdGlvblt4XywgeV8sIHlwMV8sIA0KICAgICAgICB5cG5fXSA6PSBcW0luZGVudGlu Z05ld0xpbmVdTW9kdWxlW3tuLCB1LCBkMnksIGksIHNpZywgcCwgcW4sIA0KICAgICAgICAg IHVufSwgXFtJbmRlbnRpbmdOZXdMaW5lXW4gPSBMZW5ndGhbeV07IFxbSW5kZW50aW5nTmV3 TGluZV11ID0gDQogICAgICAgICAgVGFibGVbMCwge259XTsgXFtJbmRlbnRpbmdOZXdMaW5l XWQyeSA9IHU7IFxbSW5kZW50aW5nTmV3TGluZV1JZlsNCiAgICAgICAgICBOdW1lcmljUVt5 cDFdLCBcW0luZGVudGluZ05ld0xpbmVdZDJ5W1woWzFdXCldID0gDQogICAgICAgICAgICAw LjU7IFxbSW5kZW50aW5nTmV3TGluZV11W1woWzFdXCldID0gXCgoMy4wL1woKHhbXChbMl1c KV0gLSANCiAgICAgICAgICAgICAgICAgICAgICB4W1woWzFdXCldKVwpKVwpKlwoKFwoKHlb XChbMl1cKV0gLSANCiAgICAgICAgICAgICAgICAgICAgICAgIHlbXChbMV1cKV0pXCkvXCgo eFtcKFsyXVwpXSAtIHhbXChbMV1cKV0pXCkgLSANCiAgICAgICAgICAgICAgICAgIHlwMSlc KTtcW0luZGVudGluZ05ld0xpbmVdXTsgXFtJbmRlbnRpbmdOZXdMaW5lXURvW1wNClxbSW5k ZW50aW5nTmV3TGluZV1zaWcgPSBcKCh4W1woW2ldXCldIC0gDQogICAgICAgICAgICAgICAg ICB4W1woW2kgLSAxXVwpXSlcKS9cKCh4W1woW2kgKyAxXVwpXSAtIA0KICAgICAgICAgICAg ICAgICAgeFtcKFtpIC0gMV1cKV0pXCk7IFxbSW5kZW50aW5nTmV3TGluZV1wID0gDQogICAg ICAgICAgICBzaWcqZDJ5W1woW2kgLSAxXVwpXSArIA0KICAgICAgICAgICAgICAyLjA7IFxb SW5kZW50aW5nTmV3TGluZV1kMnlbXChbaV1cKV0gPSBcKChzaWcgLSAxLjApXCkvDQogICAg ICAgICAgICAgIHA7IFxbSW5kZW50aW5nTmV3TGluZV11W1woW2ldXCldID0gXCgoeVtcKFtp ICsgMV1cKV0gLSANCiAgICAgICAgICAgICAgICAgICAgeVtcKFtpXVwpXSlcKS9cKCh4W1wo W2kgKyAxXVwpXSAtIA0KICAgICAgICAgICAgICAgICAgICB4W1woW2ldXCldKVwpIC0gXCgo eVtcKFtpXVwpXSAtIA0KICAgICAgICAgICAgICAgICAgICB5W1woW2kgLSAxXVwpXSlcKS9c KCh4W1woW2ldXCldIC0gDQogICAgICAgICAgICAgICAgICAgIHhbXChbaSAtIDFdXCldKVwp OyBcW0luZGVudGluZ05ld0xpbmVddVtcKFtpXVwpXSA9IFwoKDYuMCoNCiAgICAgICAgICAg ICAgICAgICAgdVtcKFtpXVwpXS9cKCh4W1woW2kgKyAxXVwpXSAtIHhbXChbaSAtIDFdXCld KVwpIC0gDQogICAgICAgICAgICAgICAgICBzaWcqdVtcKFtpIC0gMV1cKV0pXCkvcCwgXFtJ bmRlbnRpbmdOZXdMaW5lXXtpLCAyLCANCiAgICAgICAgICAgIG4gLSAxfVxbSW5kZW50aW5n TmV3TGluZV1dOyBcW0luZGVudGluZ05ld0xpbmVdSWZbDQogICAgICAgICAgTnVtZXJpY1Fb eXBuXSwgXFtJbmRlbnRpbmdOZXdMaW5lXXFuID0gDQogICAgICAgICAgICAwLjU7IFxbSW5k ZW50aW5nTmV3TGluZV11biA9IFwoKDMuMC9cKCh4W1woW25dXCldIC0gDQogICAgICAgICAg ICAgICAgICAgICAgeFtcKFtuIC0gMV1cKV0pXCkpXCkqXCgoeXBuIC0gXCgoeVtcKFtuXVwp XSAtIA0KICAgICAgICAgICAgICAgICAgICAgICAgeVtcKFtuIC0gMV1cKV0pXCkvXCgoeFtc KFtuXVwpXSAtIA0KICAgICAgICAgICAgICAgICAgICAgICAgeFtcKFtuIC0gMV1cKV0pXCkp XCksIFxbSW5kZW50aW5nTmV3TGluZV11biA9IFwocW4gPSANCiAgICAgICAgICAgICAgMC4w XClcW0luZGVudGluZ05ld0xpbmVdXTsgXFtJbmRlbnRpbmdOZXdMaW5lXWQyeVtcKFtuXVwp XSA9IFwNClwoKHVuIC0gcW4qdVtcKFtuIC0gMV1cKV0pXCkvXCgocW4qZDJ5W1woW24gLSAx XVwpXSArIA0KICAgICAgICAgICAgICAgIDEuMClcKTsgXFtJbmRlbnRpbmdOZXdMaW5lXURv W1xbSW5kZW50aW5nTmV3TGluZV1kMnlbXChbaV1cKV0gXA0KPSBkMnlbXChbaV1cKV0qZDJ5 W1woW2kgKyAxXVwpXSArIHVbXChbaV1cKV0sIFxbSW5kZW50aW5nTmV3TGluZV17aSwgbiAt IDEsIA0KICAgICAgICAgICAgMSwgXCgtMVwpfV07IFxbSW5kZW50aW5nTmV3TGluZV1DdWJp Y1NwbGluZVt7eCwgeSwgDQogICAgICAgICAgICBkMnl9XVxbSW5kZW50aW5nTmV3TGluZV1d XCl9XSwgIklucHV0Il0sDQoNCkNlbGxbQm94RGF0YVsNCiAgICBcKFwoc3BsaW5lID0gDQog ICAgICAgIENvbXBpbGVbe3t4LCBfUmVhbCwgMX0sIHt5LCBfUmVhbCwgMX0sIHtkMnksIF9S ZWFsLCANCiAgICAgICAgICAgICAgMX0sIHt0LCBfUmVhbH19LCBcW0luZGVudGluZ05ld0xp bmVdTW9kdWxlW3thLCBiLCBoLCBsb3cgPSAxLCANCiAgICAgICAgICAgICAgaGkgPSBMZW5n dGhbeF0sIGp9LCBcW0luZGVudGluZ05ld0xpbmVdV2hpbGVbDQogICAgICAgICAgICAgIGhp IC0gbG93ID4gMSwgXFtJbmRlbnRpbmdOZXdMaW5lXWogPSANCiAgICAgICAgICAgICAgICBR dW90aWVudFtoaSArIGxvdywgMl07IFxbSW5kZW50aW5nTmV3TGluZV1JZlt4W1woW2pdXCld ID4gdCwgDQogICAgICAgICAgICAgICAgaGkgPSBqLCBsb3cgPSBqXVxbSW5kZW50aW5nTmV3 TGluZV1dOyBcW0luZGVudGluZ05ld0xpbmVdaCA9IA0KICAgICAgICAgICAgICB4W1woW2hp XVwpXSAtIA0KICAgICAgICAgICAgICAgIHhbXChbbG93XVwpXTsgXFtJbmRlbnRpbmdOZXdM aW5lXWEgPSBcKCh4W1woW2hpXVwpXSAtIHQpXCkvDQogICAgICAgICAgICAgICAgaDsgXFtJ bmRlbnRpbmdOZXdMaW5lXWIgPSANCiAgICAgICAgICAgICAgMSAtIGE7IFxbSW5kZW50aW5n TmV3TGluZV1hKnlbXChbbG93XVwpXSArIA0KICAgICAgICAgICAgICBiKnlbXChbaGldXCld ICsgXCgoXCgoYV4zIC0gYSlcKSpkMnlbXChbbG93XVwpXSArIFwoKGJeMyAtIGIpXCkqDQog ICAgICAgICAgICAgICAgICAgICAgZDJ5W1woW2xvd11cKV0pXCkqDQogICAgICAgICAgICAg ICAgaF4yLzZcW0luZGVudGluZ05ld0xpbmVdXV07XClcKV0sICJJbnB1dCJdLA0KDQpDZWxs W0NlbGxHcm91cERhdGFbew0KDQpDZWxsW0JveERhdGFbDQogICAgXChcKGRzcGxpbmUgPSAN CiAgICAgICAgQ29tcGlsZVt7e3gsIF9SZWFsLCAxfSwge3ksIF9SZWFsLCAxfSwge2QyeSwg X1JlYWwsIA0KICAgICAgICAgICAgICAxfSwge3QsIF9SZWFsfX0sIFxbSW5kZW50aW5nTmV3 TGluZV1Nb2R1bGVbe2EsIGIsIGgsIGxvdyA9IDEsIA0KICAgICAgICAgICAgICBoaSA9IExl bmd0aFt4XSwgan0sIFxbSW5kZW50aW5nTmV3TGluZV1XaGlsZVsNCiAgICAgICAgICAgICAg aGkgLSBsb3cgPiAxLCBcW0luZGVudGluZ05ld0xpbmVdaiA9IA0KICAgICAgICAgICAgICAg IFF1b3RpZW50W2hpICsgbG93LCAyXTsgXFtJbmRlbnRpbmdOZXdMaW5lXUlmW3hbXChbal1c KV0gPiB0LCANCiAgICAgICAgICAgICAgICBoaSA9IGosIGxvdyA9IGpdXFtJbmRlbnRpbmdO ZXdMaW5lXV07IFxbSW5kZW50aW5nTmV3TGluZV1oID0gDQogICAgICAgICAgICAgIHhbXChb aGldXCldIC0gDQogICAgICAgICAgICAgICAgeFtcKFtsb3ddXCldOyBcW0luZGVudGluZ05l d0xpbmVdYSA9IFwoKHhbXChbaGldXCldIC0gdClcKS8NCiAgICAgICAgICAgICAgICBoOyBc W0luZGVudGluZ05ld0xpbmVdYiA9IA0KICAgICAgICAgICAgICAxIC0gYTsgXFtJbmRlbnRp bmdOZXdMaW5lXVwoKHlbXChbaGldXCldIC0geVtcKFtsb3ddXCldKVwpL2ggKyANCiAgICAg ICAgICAgICAgaCpcKChcKCgzKmJeMiAtIDEpXCkqZDJ5W1woW2hpXVwpXSAtIFwoKDMqYV4y IC0gMSlcKSoNCiAgICAgICAgICAgICAgICAgICAgICAgIGQyeVtcKFtsb3ddXCldKVwpLw0K ICAgICAgICAgICAgICAgICAgNlxbSW5kZW50aW5nTmV3TGluZV1dXTtcKVwpXSwgIklucHV0 Il0sDQoNCkNlbGxbQm94RGF0YVsNCiAgICBSb3dCb3hbe1woR2VuZXJhbDo6InNwZWxsMSJc KSwgXChcKDpcKVwoXCBcKVwpLCAiXDxcIlBvc3NpYmxlIHNwZWxsaW5nIFwNCmVycm9yOiBu ZXcgc3ltYm9sIG5hbWUgXFxcIlxcIVxcKGRzcGxpbmVcXClcXFwiIGlzIHNpbWlsYXIgdG8g ZXhpc3Rpbmcgc3ltYm9sIFwNClxcXCJcXCFcXChzcGxpbmVcXClcXFwiLiBcXCFcXChcXCpC dXR0b25Cb3hbXFxcIk1laHJcW0VsbGlwc2lzXVxcXCIsIFwNCkJ1dHRvblN0eWxlLT5cXFwi UmVmR3VpZGVMaW5rVGV4dFxcXCIsIEJ1dHRvbkZyYW1lLT5Ob25lLCBcDQpCdXR0b25EYXRh Oj5cXFwiR2VuZXJhbDo6c3BlbGwxXFxcIl1cXClcIlw+In1dXSwgIk1lc3NhZ2UiXQ0KfSwg T3BlbiAgXV0sDQoNCkNlbGxbQ2VsbEdyb3VwRGF0YVt7DQoNCkNlbGxbQm94RGF0YVsNCiAg ICBcKFwoZGRzcGxpbmUgPSANCiAgICAgICAgQ29tcGlsZVt7e3gsIF9SZWFsLCAxfSwge3ks IF9SZWFsLCAxfSwge2QyeSwgX1JlYWwsIA0KICAgICAgICAgICAgICAxfSwge3QsIF9SZWFs fX0sIFxbSW5kZW50aW5nTmV3TGluZV1Nb2R1bGVbe2EsIGIsIGgsIGxvdyA9IDEsIA0KICAg ICAgICAgICAgICBoaSA9IExlbmd0aFt4XSwgan0sIFxbSW5kZW50aW5nTmV3TGluZV1XaGls ZVsNCiAgICAgICAgICAgICAgaGkgLSBsb3cgPiAxLCBcW0luZGVudGluZ05ld0xpbmVdaiA9 IA0KICAgICAgICAgICAgICAgIFF1b3RpZW50W2hpICsgbG93LCAyXTsgXFtJbmRlbnRpbmdO ZXdMaW5lXUlmW3hbXChbal1cKV0gPiB0LCANCiAgICAgICAgICAgICAgICBoaSA9IGosIGxv dyA9IGpdXFtJbmRlbnRpbmdOZXdMaW5lXV07IFxbSW5kZW50aW5nTmV3TGluZV1oID0gDQog ICAgICAgICAgICAgIHhbXChbaGldXCldIC0gDQogICAgICAgICAgICAgICAgeFtcKFtsb3dd XCldOyBcW0luZGVudGluZ05ld0xpbmVdYSA9IFwoKHhbXChbaGldXCldIC0gdClcKS8NCiAg ICAgICAgICAgICAgICBoOyBcW0luZGVudGluZ05ld0xpbmVdYiA9IA0KICAgICAgICAgICAg ICAxIC0gYTsgXFtJbmRlbnRpbmdOZXdMaW5lXWIqZDJ5W1woW2hpXVwpXSArIA0KICAgICAg ICAgICAgICBhKmQyeVtcKFtsb3ddXCldXFtJbmRlbnRpbmdOZXdMaW5lXV1dO1wpXCldLCAi SW5wdXQiXSwNCg0KQ2VsbFtCb3hEYXRhWw0KICAgIFJvd0JveFt7XChHZW5lcmFsOjoic3Bl bGwxIlwpLCBcKFwoOlwpXChcIFwpXCksICJcPFwiUG9zc2libGUgc3BlbGxpbmcgXA0KZXJy b3I6IG5ldyBzeW1ib2wgbmFtZSBcXFwiXFwhXFwoZGRzcGxpbmVcXClcXFwiIGlzIHNpbWls YXIgdG8gZXhpc3RpbmcgXA0Kc3ltYm9sIFxcXCJcXCFcXChkc3BsaW5lXFwpXFxcIi4gXFwh XFwoXFwqQnV0dG9uQm94W1xcXCJNZWhyXFtFbGxpcHNpc11cXFwiLCBcDQpCdXR0b25TdHls ZS0+XFxcIlJlZkd1aWRlTGlua1RleHRcXFwiLCBCdXR0b25GcmFtZS0+Tm9uZSwgXA0KQnV0 dG9uRGF0YTo+XFxcIkdlbmVyYWw6OnNwZWxsMVxcXCJdXFwpXCJcPiJ9XV0sICJNZXNzYWdl Il0NCn0sIE9wZW4gIF1dLA0KDQpDZWxsW0JveERhdGFbew0KICAgIFwoQ2xlYXJbQ3ViaWNT cGxpbmVdXCksICJcW0luZGVudGluZ05ld0xpbmVdIiwgDQogICAgXChcKEN1YmljU3BsaW5l W3t4XywgeV8sIGQyeV99XVwpW3RfP051bWVyaWNRXSA6PSANCiAgICAgIHNwbGluZVt4LCB5 LCBkMnksIHRdXCksICJcW0luZGVudGluZ05ld0xpbmVdIiwgDQogICAgXChcKEN1YmljU3Bs aW5lW3t4XywgeV8sIGQyeV99XSdcKVt0Xz9OdW1lcmljUV0gOj0gDQogICAgICBkc3BsaW5l W3gsIHksIGQyeSwgdF1cKSwgIlxbSW5kZW50aW5nTmV3TGluZV0iLCANCiAgICBcKFwoQ3Vi aWNTcGxpbmVbe3hfLCB5XywgZDJ5X31dJydcKVt0Xz9OdW1lcmljUV0gOj0gDQogICAgICBk ZHNwbGluZVt4LCB5LCBkMnksIHRdXCksICJcW0luZGVudGluZ05ld0xpbmVdIiwgDQogICAg XChGb3JtYXRbQ3ViaWNTcGxpbmVbe3hfLCBfLCBffV1dIDo9IA0KICAgICAgQ3ViaWNTcGxp bmVbe0ZpcnN0W3hdLCBMYXN0W3hdfSwgIlw8PD5cPiJdXCksICJcW0luZGVudGluZ05ld0xp bmVdIiwgDQogICAgXChcKX1dLCAiSW5wdXQiXSwNCg0KQ2VsbFtCb3hEYXRhWw0KICAgIFwo XChkYXRhID0gVGFibGVbe3gsIFNpblt4XX0sIHt4LCAwLCAyICBQaSwgMC4xfV07XClcKV0s ICJJbnB1dCJdLA0KDQpDZWxsW0NlbGxHcm91cERhdGFbew0KDQpDZWxsW0JveERhdGFbDQog ICAgXChpcCA9IA0KICAgICAgQ3ViaWNTcGxpbmVJbnRlcnBvbGF0aW9uW1NlcXVlbmNlIEBA IFwgVHJhbnNwb3NlW2RhdGFdLCBBdXRvbWF0aWMsIA0KICAgICAgICBBdXRvbWF0aWNdXCld LCAiSW5wdXQiXSwNCg0KQ2VsbFtCb3hEYXRhWw0KICAgIFwoQ3ViaWNTcGxpbmVbezAsIDYu MmB9LCAiPD4iXVwpXSwgIk91dHB1dCJdDQp9LCBPcGVuICBdXSwNCg0KQ2VsbFtDZWxsR3Jv dXBEYXRhW3sNCg0KQ2VsbFtCb3hEYXRhWw0KICAgIFwoUGxvdFtFdmFsdWF0ZVt7aXBbdF0s IERbaXBbdF0sIHRdLCBEW2lwW3RdLCB7dCwgMn1dfV0sIHt0LCAwLCAyICBQaX0sIA0KICAg ICAgUGxvdFBvaW50cyBcW1J1bGVdIDE1MCwgUGxvdFJhbmdlIFxbUnVsZV0gQWxsXVwpXSwg IklucHV0Il0sDQoNCkNlbGxbQm94RGF0YVsNCiAgICBUYWdCb3hbXChcW1NrZWxldG9uSW5k aWNhdG9yXSAgR3JhcGhpY3MgIFxbU2tlbGV0b25JbmRpY2F0b3JdXCksDQogICAgICBGYWxz ZSwNCiAgICAgIEVkaXRhYmxlLT5GYWxzZV1dLCAiT3V0cHV0Il0NCn0sIE9wZW4gIF1dDQp9 LA0KRnJvbnRFbmRWZXJzaW9uLT4iNS4yIGZvciBNaWNyb3NvZnQgV2luZG93cyIsDQpTY3Jl ZW5SZWN0YW5nbGUtPnt7MCwgMTI4MH0sIHswLCA5NzB9fSwNCldpbmRvd1NpemUtPns2OTIs IDYyNX0sDQpXaW5kb3dNYXJnaW5zLT57ezI3MSwgQXV0b21hdGljfSwge0F1dG9tYXRpYywg ODF9fQ0KXQ0KDQooKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKg0KQ2FjaGVkIGRhdGEgZm9sbG93cy4gIElmIHlv dSBlZGl0IHRoaXMgTm90ZWJvb2sgZmlsZSBkaXJlY3RseSwgbm90DQp1c2luZyBNYXRoZW1h dGljYSwgeW91IG11c3QgcmVtb3ZlIHRoZSBsaW5lIGNvbnRhaW5pbmcgQ2FjaGVJRCBhdA0K dGhlIHRvcCBvZiAgdGhlIGZpbGUuICBUaGUgY2FjaGUgZGF0YSB3aWxsIHRoZW4gYmUgcmVj cmVhdGVkIHdoZW4NCnlvdSBzYXZlIHRoaXMgZmlsZSBmcm9tIHdpdGhpbiBNYXRoZW1hdGlj YS4NCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiopDQoNCigqQ2VsbFRhZ3NPdXRsaW5lDQpDZWxsVGFnc0luZGV4 LT57fQ0KKikNCg0KKCpDZWxsVGFnc0luZGV4DQpDZWxsVGFnc0luZGV4LT57fQ0KKikNCg0K KCpOb3RlYm9va0ZpbGVPdXRsaW5lDQpOb3RlYm9va1t7DQpDZWxsWzE3NTQsIDUxLCAyMjI0 LCAzNSwgNjMwLCAiSW5wdXQiXSwNCkNlbGxbMzk4MSwgODgsIDgyMiwgMTQsIDIzMCwgIklu cHV0Il0sDQoNCkNlbGxbQ2VsbEdyb3VwRGF0YVt7DQpDZWxsWzQ4MjgsIDEwNiwgODMyLCAx NCwgMjMwLCAiSW5wdXQiXSwNCkNlbGxbNTY2MywgMTIyLCAzNjEsIDUsIDM3LCAiTWVzc2Fn ZSJdDQp9LCBPcGVuICBdXSwNCg0KQ2VsbFtDZWxsR3JvdXBEYXRhW3sNCkNlbGxbNjA2MSwg MTMyLCA3MTQsIDEyLCAyMzAsICJJbnB1dCJdLA0KQ2VsbFs2Nzc4LCAxNDYsIDM2MywgNSwg MzcsICJNZXNzYWdlIl0NCn0sIE9wZW4gIF1dLA0KQ2VsbFs3MTU2LCAxNTQsIDUzOCwgMTAs IDEzMCwgIklucHV0Il0sDQpDZWxsWzc2OTcsIDE2NiwgODMsIDEsIDMwLCAiSW5wdXQiXSwN Cg0KQ2VsbFtDZWxsR3JvdXBEYXRhW3sNCkNlbGxbNzgwNSwgMTcxLCAxMzEsIDMsIDMwLCAi SW5wdXQiXSwNCkNlbGxbNzkzOSwgMTc2LCA2MiwgMSwgMjksICJPdXRwdXQiXQ0KfSwgT3Bl biAgXV0sDQoNCkNlbGxbQ2VsbEdyb3VwRGF0YVt7DQpDZWxsWzgwMzgsIDE4MiwgMTU2LCAy LCA1MCwgIklucHV0Il0sDQpDZWxsWzgxOTcsIDE4NiwgMTMwLCAzLCAyOSwgIk91dHB1dCJd DQp9LCBPcGVuICBdXQ0KfQ0KXQ0KKikNCg0KDQoNCigqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpFbmQgb2Yg TWF0aGVtYXRpY2EgTm90ZWJvb2sgZmlsZS4NCioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopDQoNCg== --------------040704020005010306080304--