Received: from mail.tpchd.org ([192.103.155.40]) by postgresql.org (8.11.3/8.11.4) with SMTP id f86K0d708729 for ; Thu, 6 Sep 2001 16:00:39 -0400 (EDT) (envelope-from ianh@tpchd.org) Received: from TPC-Message_Server by mail.tpchd.org with Novell_GroupWise; Thu, 06 Sep 2001 12:58:27 -0700 Message-Id: X-Mailer: Novell GroupWise 5.5.4 Date: Thu, 06 Sep 2001 12:56:58 -0700 From: "Ian Harding" To: Subject: SQL Server to PostgreSQL HOWTO Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=_6238C373.85E489FF" X-Archive-Number: 200109/185 X-Sequence-Number: 14814 This is a MIME message. If you are reading this text, you may want to consider changing to a mail reader or gateway that understands how to properly handle MIME multipart messages. --=_6238C373.85E489FF Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Someone asked me to do this, and I have a draft now. While it is clearly = lacking in some areas, it might be of help generally.=20=20 Ian Ian A. Harding Programmer/Analyst II Tacoma-Pierce County Health Department (253) 798-3549 mailto: ianh@tpchd.org --=_6238C373.85E489FF Content-Type: text/plain Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ms-pg-migration.txt" VGhlIE1pY3Jvc29mdCBTUUwgU2VydmVyIHRvIFBvc3RncmVTUUwgTWlncmF0 aW9uIEhPV1RPDQpJYW4gQS4gSGFyZGluZyA8aWFuaEB0cGNoZC5vcmc+DQp2 MS4wMCwgMjMgSnVseSAyMDAwDQoNCkhvdyB0byBtb3ZlIGEgZGF0YWJhc2Ug ZnJvbSBhIHBvcHVsYXIgcHJvcHJpZXRhcnkgZGF0YWJhc2UgdG8gdGhlIHdv cmxkJ3MgbW9zdCBwb3dlcmZ1bCBvcGVuIHNvdXJjZSBkYXRhYmFzZS4NCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18NCg0KVGFibGUgb2YgQ29udGVudHMN Cg0KDQoxLiBEaXNjbGFpbWVyDQoNCjIuIEludHJvZHVjdGlvbg0KDQozLiBD b25zaWRlcmF0aW9ucw0KDQo0LiBUYWJsZXMNCg0KNS4gRGF0YQ0KDQo2LiBW aWV3cw0KDQo3LiBTdW1tYXJ5DQoNCg0KIF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18NCg0KMS5EaXNjbGFpbWVyDQoNClRoZSBmb2xsb3dpbmcgZG9jdW1l bnQgaXMgb2ZmZXJlZCBpbiBnb29kIGZhaXRoIGFzIGNvbXByaXNpbmcgb25s eSBzYWZlIHByb2dyYW1taW5nIGFuZCBwcm9jZWR1cmVzLiBObyByZXNwb25z aWJpbGl0eSBpcyBhY2NlcHRlZCBieSB0aGUgYXV0aG9yIGZvciBhbnkgbG9z cyBvciBkYW1hZ2UgY2F1c2VkIGluIGFueSB3YXkgdG8gYW55IHBlcnNvbiBv ciBlcXVpcG1lbnQsIGFzIGEgZGlyZWN0IG9yIGluZGlyZWN0IGNvbnNlcXVl bmNlIG9mIGZvbGxvd2luZyB0aGVzZSBpbnN0cnVjdGlvbnMuDQoNCg0KMi5J bnRyb2R1Y3Rpb24NCg0KVGhlIG1vc3QgcmVjZW50IHZlcnNpb24gb2YgdGhp cyBkb2N1bWVudCBjYW4gYWx3YXlzIGJlIGZvdW5kIGF0IGh0dHA6Ly93d3cu dHBjaGQub3JnLz8/Pz8uaHRtbA0KDQpNaWNyb3NvZnQgU1FMIFNlcnZlciBp cyB2ZXJ5IHBvcHVsYXIgcmVsYXRpb25hbCBkYXRhYmFzZSBtYW5hZ2VtZW50 IHN5c3RlbXMgKFJEQk1TKSB3aXRoIGhpZ2hseSByZXN0cmljdGl2ZSBsaWNl bnNpbmcgYW5kIGhpZ2ggY29zdCBvZiBvd25lcnNoaXAgaWYgdGhlIGRhdGFi YXNlIGlzIG9mIHNpZ25pZmljYW50IHNpemUsIG9yIGlzIHVzZWQgYnkgYSBz aWduaWZpY2FudCBudW1iZXIgb2YgY2xpZW50cy4gIEl0IGRvZXMsIGhvd2V2 ZXIsIHByb3ZpZGUgYSB2ZXJ5IHVzZXItZnJpZW5kbHkgaW50ZXJmYWNlLCBp cyBlYXN5IHRvIGxlYXJuIGFuZCB1c2UsIGFuZCBoYXMgbG93IGNvc3QgZW50 cnkgbGV2ZWwgY29uZmlndXJhdGlvbnMuICBUaGlzIGhhcyByZXN1bHRlZCBp biBhIHZlcnkgbGFyZ2UgaW5zdGFsbGVkIHVzZXIgYmFzZS4NCg0KUG9zdGdy ZVNRTCBub3cgY2hhbGxlbmdlcyBNUyBTUUwgU2VydmVyIGluIGJhc2ljIGZl YXR1cmUgc2V0LCByZWxpYWJpbGl0eSBhbmQgcGVyZm9ybWFuY2UsIGhhcyBh IG11Y2ggbGVzcyByZXN0cmljdGl2ZSBsaWNlbnNlLCBhbmQgaXMgb3BlbiBz b3VyY2UuICBBcyBhIG1hdHRlciBvZiBjb3Vyc2UsIHVzZXJzIGFyZSBtaWdy YXRpbmcgdG8gUG9zdGdyZVNRTCBmcm9tIE1TIFNRTCBTZXJ2ZXIgYXMgdGhl IGNvc3Qgb2Ygb3duZXJzaGlwIGJlY29tZXMgYW4gaXNzdWUsIGFuZCBhcyB0 aGVpciBrbm93bGVkZ2Ugb2YgcmVsYXRpb25hbCBkYXRhYmFzZSBzeXN0ZW1z IGluY3JlYXNlcy4NCg0KVGhpcyBIT1ctVE8gaXMgaW50ZW5kZWQgZm9yIHRo ZSBNUyBTUUwgU2VydmVyIHVzZXIgd2hvIGlzIG5vdyByZWFkeSB0byBtaWdy YXRlIGRhdGFiYXNlcyB0byBQb3N0Z3JlU1FMLg0KDQozLkNvbnNpZGVyYXRp b25zDQoNClJEQk1TIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZCBkaWZmZXJl bnRseSBhbmQgdG8gZGlmZmVyZW50IGRlZ3JlZXMgYnkgcHJvZ3JhbW1lcnMu ICBTb21lIGFwcGxpY2F0aW9ucyByZWx5IGhlYXZpbHkgb24gc28tY2FsbGVk IG1pZGRsZXdhcmUsIG9yIG9uIHRoZSBjbGllbnQgYXBwbGljYXRpb24gdG8g aGFuZGxlIGJ1c2luZXNzIGxvZ2ljLiAgT3RoZXJzIGF0dGVtcHQgdG8gcHV0 IGFzIG11Y2ggbG9naWMgYXMgcG9zc2libGUgaW4gdGhlIGRhdGFiYXNlLiAg WW91ciBtaWdyYXRpb24gd2lsbCBiZSBmYXIgbW9yZSBkaWZmaWN1bHQgaWYg eW91ciBhcHBsaWNhdGlvbiBpcyBpbiB0aGUgbGF0dGVyIGdyb3VwLiAgV2hp bGUgaXQgaXMgYSBzb3VuZCBkZXNpZ24gY2hvaWNlIHRvIHB1dCBsb2dpYyBp biB0aGUgZGF0YWJhc2Ugc2VydmVyLCBpdCB3aWxsIHJlcXVpcmUgcHJvZ3Jh bW1pbmcgaW4gYSB2ZW5kb3Igc3BlY2lmaWMgU3RydWN0dXJlZCBRdWVyeSBM YW5ndWFnZSAoU1FMKSBleHRlbnNpb24gc3VjaCBhcyBNaWNyb3NvZnQncyBU cmFuc2FjdCBTUUwgKFQtU1FMKS4gIFRoaXMgaXMgYWxzbyB0aGUgY2FzZSB3 aXRoIFBvc3RncmVTUUwuICBUaGVyZSBpcyBubyBlYXN5IHdheSB0byBtaWdy YXRlIHN0b3JlZCBwcm9jZWR1cmVzLCB0cmlnZ2Vycywgb3IgcnVsZXMuICBP biB0aGUgYnJpZ2h0IHNpZGUsIFBvc3RncmVTUUwgcHJvdmlkZXMgc2V2ZXJh bCBsYW5ndWFnZSBvcHRpb25zLCBhbGwgb2Ygd2hpY2ggYXJlIG1vcmUgZ3Jh Y2VmdWwgdGhhbiBULVNRTC4gDQoNClJEQk1TIGFsbCBwcm92aWRlIGJ1aWx0 LWluIGZ1bmN0aW9ucy4gIEhvd2V2ZXIsIGxpa2UgcHJvY2VkdXJhbCBleHRl bnNpb25zIHRvIFNRTCwgdGhleSBhcmUgbm90IHBvcnRhYmxlLiAgRm9ydHVu YXRlbHksIHRoZXJlIGlzIHNvbWUgb3ZlcmxhcCwgYW5kIHRoZSBzaW1wbGUg c3ludGF4IG1ha2VzIG1pZ3JhdGlvbiByZWxhdGl2ZWx5IGVhc3kuDQoNCkZp bmFsbHksIHRoZSBwcm9ncmFtbWVyJ3MgY2hvaWNlIG9mIFNRTCBzeW50YXgg Y2FuIGFmZmVjdCB0aGlzIHByb2Nlc3MuICBNb3N0IFJEQk1TIGFyZSBhcHBy b2FjaGluZyB0aGUgZXZvbHZpbmcgU1FMIHN0YW5kYXJkcy4gIFRoYXQgaXMs IHRoZXkgYXJlIGxlYW5pbmcgYXdheSBmcm9tIHZlbmRvciBzcGVjaWZpYyBz eW50YXggc3VjaCBhcyB0aGUgJyo9JyBzeW50YXggZm9yIGEgbGVmdCBvdXRl ciBqb2luLiAgVGhpcyBzeW50YXggaXMgc3RpbGwgc3VwcG9ydGVkIGluIE1T IFNRTCBTZXJ2ZXIgYXMgb2YgdmVyc2lvbiA3LjAsIGJ1dCB3YXMgbmV2ZXIg c3VwcG9ydGVkIGluIFBvc3RncmVTUUwuDQoNClRoaXMgcHJvY2VzcyB3aWxs IHJlcXVpcmUgZWl0aGVyIGEgbWluZC1udW1iaW5nIGFtb3VudCBvZiBoYW5k IGVkaXRpbmcgb2Ygc2NyaXB0IGFuZCBkYXRhIGZpbGVzLCBvciB1c2Ugb2Yg YSBzY3JpcHRpbmcgbGFuZ3VhZ2UgdG8gcHJvZ3JhbW1hdGljYWxseSBtb2Rp ZnkgdGhlc2UgZmlsZXMsIGZvbGxvd2VkIGJ5IGEgc29tZXdoYXQgbGVzcyBl bm9ybW91cyBhbW91bnQgb2YgZWRpdGluZy4gIEkgYW0gbm90IHNtYXJ0IGVu b3VnaCB0byBpZGVudGlmeSBldmVyeSBwb3NzaWJsZSBvcHRpb24gZm9yIHRo ZSBtaWdyYXRpb24sIG9yIHRvIGFjY29tb2RhdGUgdGhlbSBpbiBhIHNjcmlw dC4gIEkgaGF2ZSBkb25lIHRoaXMgbWlncmF0aW9uIG9uIGEgcmVsYXRpdmVs eSBjb21wbGV4IGRhdGFiYXNlIGFwcGxpY2F0aW9uIGluIGEgcmVhc29uYWJs ZSBhbW91bnQgb2YgdGltZS4gIFRoaXMsIHJhdGhlciB0aGFuIGEgdGVjaG5p Y2FsbHkgZmxhd2xlc3Mgc2NyaXB0LCBzaG91bGQgYmUgeW91ciBnb2FsLg0K DQpJIHVzZSBUb29sIENvbW1hbmQgTGFuZ3VhZ2UgKFRDTCkgZm9yIGFsbW9z dCBldmVyeXRoaW5nLCBzbyBJIHVzZSBpdCBoZXJlLllvdSBjYW4gdXNlIHdo YXRldmVyIGxhbmd1YWdlIHlvdSBsaWtlLg0KDQo0LiAgVGFibGVzDQoNCkR1 bXAgdGhlIHRhYmxlIGRlZmluaW5pdGlvbnMgd2l0aCB0aGUgTVMgU1FMIFNl cnZlciBzY3JpcHRpbmcgdG9vbC4gIEZyb20gdGhlIEVudGVycHJpc2UgTWFu YWdlciwgcmlnaHQgY2xpY2sgb24geW91ciBkYXRhYmFzZSBhbmQgc2VsZWN0 ICdBbGwgVGFza3MnLCB0aGVuICdHZW5lcmF0ZSBTUUwgU2NyaXB0cycgZnJv bSB0aGUgY29udGV4dCBtZW51LiAgVW5jaGVjayAnU2NyaXB0IEFsbCBPYmpl Y3RzJywgYW5kIHNlbGVjdCAnQWxsIFRhYmxlcycuICBPbiB0aGUgJ0Zvcm1h dHRpbmcnIHRhYiwgZGUtc2VsZWN0ICdHZW5lcmF0ZSBEUk9QLi4uJy4gIE9u IHRoZSAnT3B0aW9ucycgdGFiLCBzZWxlY3QgJ1NjcmlwdCBpbmRleGVzJyBh bmQgU2NyaXB0IFBSSU1BUlkgS0VZUy4uLicuICBTZWxlY3QgdGhlICdNUy1E T1MnIGZpbGUgZm9ybWF0LCBhbmQgbWFrZSBzdXJlICdDcmVhdGUgb25lIGZp bGUnIGlzIGNoZWNrZWQuICBDbGljayBPSywgZ2l2ZSBpdCBhIG5hbWUsIGFu ZCBwdXQgaXQgc29tZXdoZXJlIHlvdSBjYW4gZmluZCBpdC4NCg0KQSBicmll ZiBsb29rIGF0IHRoaXMgZmlsZSB3aWxsIHNob3cgeW91IHdoYXQgd2UgYXJl IHVwIGFnYWluc3QuICBNUyB1c2VzIHNxdWFyZSBicmFja2V0cyBhcm91bmQg YWxsIGlkZW50aWZpZXJzLCB0byBwcm90ZWN0IHlvdSBmcm9tIHBvb3IgZGVz aWduIGNob2ljZXMgc3VjaCBhcyB1c2luZyByZXNlcnZlZCBrZXl3b3JkcyBz byBjcmF6eSB0aGluZ3MgbGlrZToNCg0KQ1JFQVRFIFRBQkxFIFtkYm9dLltT ZWxlY3RdIChbVW5pb25dIFtpbnRdKQ0KDQphcmUgcG9zc2libGUuICBQb3N0 Z3JlU1FMIHVzZXMgZG91YmxlIHF1b3RlcyBpbnN0ZWFkLiAgTVMgdXNlcyB0 aGUgb2JqZWN0IG93bmVyIHF1YWxpZmljYXRpb24gZm9yIGFsbCBvYmplY3Rz LCAnZGJvJyBpbiB0aGlzIGNhc2UuICBQb3N0Z3JlU1FMIGhhcyBubyBzdWNo IHF1YWxpZmljYXRpb25zIGluIG9iamVjdCBuYW1lcy4NCg0KQW5vdGhlciB0 aGluZyB0byBub3RlIGlzIHRoYXQgTVMgU1FMIGlkZW50aWZpZXJzIGFyZSBj YXNlIHByZXNlcnZlZCwgYnV0IGluIHByYWN0aWNlIG1vc3QgaW5zdGFsbGF0 aW9ucyBhcmUgaW5zdGFsbGVkIGFzIGNhc2UgaW5zZW5zaXRpdmUuUG9zdGdy ZVNRTCBpcyBjYXNlIGFnbm9zdGljIGluIHRoZSBjYXNlIG9mIFNRTCBrZXl3 b3JkcyBhbmQgdW5xdW90ZWQgaWRlbnRpZmllcnMsIGZvcmNpbmcgYWxsIHF1 ZXJpZXMgdG8gbG93ZXIgY2FzZS4gIEl0IGlzIG5vdCB0aGUgc2FtZSBhcyBi ZWluZyBjYXNlIGluc2Vuc2l0aXZlLCBpbiB0aGF0IHlvdSBjYW4gY3JlYXRl IHRhYmxlcyB1c2luZyB0aGUgZG91YmxlIHF1b3RlIHByb3RlY3Rpb24gbWVu dGlvbmVkIGFib3ZlLCBzdWNoIHRoYXQgdGhleSBjYW4gb25seSBiZSBhY2Nl c3NlZCB1c2luZyB0aGUgc2FtZSBkb3VibGUgcXVvdGluZyBtZXRob2QuSSBm aW5kIGl0IGlzIGJlc3QgdG8gYWJhbmRvbiBjYXNlIGluIG9iamVjdCBpZGVu dGlmaWVycyB3aGVuIG1pZ3JhdGluZyB0byBQb3N0Z3JlU1FMLiAgQWxzbywg aXQgaXMgc2FmZXN0IHRvIGF2b2lkIGFueSBpZGVudGlmaWVycyB0aGF0IHJl cXVpcmUgcXVvdGluZyB0byBhdm9pZCBwcm9ibGVtcyBkb3duIHRoZSByb2Fk Lg0KDQpJdCBpcyB3b3J0aCBub3RpbmcgdGhhdCBmb3IgZGF0YSBjb21wYXJp c29ucywgUG9zdGdyZVNRTCBpcyBjYXNlIHNlbnNpdGl2ZSBhbmQgdGhlcmUg aXMgbm8gb3B0aW9uIHRvIGNoYW5nZSB0aGlzIGJlaGF2aW91ci5Zb3Ugd2ls bCBoYXZlIHRvIGZvcmNlIGRhdGEgdG8gdXBwZXIgb3IgbG93ZXIgb24gYm90 aCBzaWRlcyBvZiB0ZXh0IGNvbXBhcmlzb25zIGlmIGNhc2UgaXMgbm90IGlt cG9ydGFudCB0byB0aGUgb3BlcmF0aW9uIGFuZCB0aGVyZSBpcyBhIGNoYW5j ZSBvZiBpdCBiZWluZyBkaWZmZXJlbnQuICBUaGlzIGNvbnZlcnNpb24gbWln aHQgYmUgYSBnb29kIHRpbWUgdG8gZm9yY2UgZGF0YSB1c2VkIGluIGpvaW5z IGFuZCBjb21wYXJpc29ucyB0byBhbGwgdXBwZXIgb3IgbG93ZXIgY2FzZS4g IFlvdSB3aWxsIGFsc28gbmVlZCB0byBsb29rIGF0IHRoZSBhcHBsaWNhdGlv biBmb3IgY29kZSB0aGF0IGRvZXMgY29tcGFyaXNvbnMgb2YgdXNlci1lbnRl cmVkIGluZm9ybWF0aW9uIHRha2luZyBhZHZhbnRhZ2Ugb2YgTVMgU1FMIFNl cnZlcidzIHR5cGljYWwgY2FzZSBpbnNlbnNpdGl2aXR5Lg0KDQpBbm90aGVy IGlzc3VlIHRoYXQgaXMgbm90IGltbWVkaWF0ZWx5IGV2aWRlbnQgaXMgdGhh dCBNUyBTUUwgU2VydmVyIHN1cHBvcnRzIEFMVEVSIFRBQkxFIHN0YXRlbWVu dHMgdGhhdCBjb250YWluIGNvbW1hIHNlcGFyYXRlZCBsaXN0cyBvZiBhbHRl cmF0aW9ucy4gIFBvc3RncmVTUUwgY3VycmVudGx5IGRvZXMgbm90LiAgVGhp cyBpcyBpbXBvcnRhbnQgc2luY2UgdGhlIE1TIFNRTCBTZXJ2ZXIgc2NyaXB0 aW5nIHByb2dyYW0gY3JlYXRlcyBhbGwgY29uc3RyYWludHMgaW4gQUxURVIg VEFCTEUgc3RhdGVtZW50cy4gIElmIGFueSB0YWJsZXMgaGF2ZSBtb3JlIHRo YW4gb25lIGNvbnN0cmFpbnQsIHlvdSB3aWxsIGhhdmUgdG8gc3VyZ2ljYWxs eSBzZXBhcmF0ZSB0aGVtIGludG8gdGhlaXIgb3duIEFMVEVSIFRBQkxFIHN0 YXRlbWVudHMsIG9yIG1vdmUgdGhlbSBpbiB0aGUgQ1JFQVRFIFRBQkxFIHN0 YXRlbWVudC4gIA0KDQpJbmRleGVzIGFyZSBhIGJyaWdodCBzcG90LCBtb3N0 bHkuICBUaGUgQ0xVU1RFUiBrZXl3b3JkIGluIFBvc3RncmVTUUwgaXMgbm90 IHRoZSBzYW1lIGFzIHRoZSBDTFVTVEVSRUQga2V5d29yZCBpbiBhIE1TIFNR TCBTZXJ2ZXIgaW5kZXggY3JlYXRpb24uICBQb3N0Z3JlU1FMIHdpbGwgYWxs b3cgeW91IHRvICdjbHVzdGVyJyBhIHRhYmxlLCB0aGF0IGlzLCByZWFycmFu Z2luZyB0aGUgdHVwbGVzIGluIGEgdGFibGUgaW4gb3JkZXIgZm9yIHRoYXQg ZmllbGQuICBUaGlzIHNvdW5kcyBnb29kLCBleGNlcHQgdGhhdCB0aGUgY2x1 c3RlciBpcyBub3QgbWFpbnRhaW5lZCBmb3IgdXBkYXRlcyBhbmQgaW5zZXJ0 cywgYW5kIHRoZSBmYWN0IHRoYXQgaXQgd2lsbCBicmVhayBhbGwgeW91ciBv dGhlciBpbmRleGVzIHdoZW5ldmVyIHlvdSBnZW5lcmF0ZSB0aGUgY2x1c3Rl cmluZy4NCg0KSGF2aW5nIHNhaWQgYWxsIHRoYXQsIGhlcmUgaXMgYSBwYXJ0 aWFsIGxpc3Qgb2YgdGhpbmdzIHRvIGNvcnJlY3Q6DQoNCiAgMS4gIEZvcmNl IHRvIGxvd2VyIGNhc2UuDQoNCiAgMi4gIFJlbW92ZSBhbGwgc3F1YXJlIGJy YWNrZXRzLg0KDQogIDMuICBSZW1vdmUgYWxsIG9iamVjdCBvd25lciBwcmVm aXhlcyAoaS5lLiAiZGJvLiIpDQoNCiAgNC4gIFJlbW92ZSBhbGwgcmVmZXJl bmNlIHRvIGZpbGVncm91cCAoaS5lLiAiT04gUFJJTUFSWSIpIA0KDQogIDUu ICBSZW1vdmUgYWxsIG5vbi1zdXBwb3J0ZWQgb3B0aW9uYWwga2V5d29yZHMg KGkuZS4gIldJVEggTk9DSEVDSyIsICJDTFVTVEVSRUQiKQ0KDQogIDYuICBV cGRhdGUgYWxsIG5vbi1zdXBwb3J0ZWQgZGF0YSB0eXBlcyAoaS5lLiAiREFU RVRJTUUiIGJlY29tZXMgIlRJTUVTVEFNUCIpIEFsc28sIHRoaXMgaXMgYSBn b29kIHRpbWUgdG8gZ2V0IGF3YXkgZnJvbSBNT05FWS5JdCBpcyBzdXBwb3J0 ZWQgaW4gUG9zdGdyZVNRTCwgYnV0IGlzIG9uIGl0cyB3YXkgb3V0LlVzZSBO VU1FUklDKDE5LDQpLg0KDQo3LiAgUmVwbGFjZSB0aGUgVC1TUUwgYmF0Y2gg dGVybWluYXRvciAiR08iIHdpdGggdGhlIFBvc3RncmVTUUwgYmF0Y2ggdGVy bWluYXRvciAiOyINCg0KUHV0IHRoaXMgZmlsZSBzb21ld2hlcmUgc2FmZSwg YW5kIG5vdyBsZXQncyBnZXQgdGhlIGRhdGEuIA0KDQo1LkRhdGENCg0KRGF0 YSBpcyBkYXRhLiAgSXQgaXMgYnJvdWdodCBvdmVyIGluIHRleHQgZm9ybSBh bmQgY2FzdCBpbnRvIGl0J3MgcHJvcGVyIGZvcm0gYnkgdGhlIGRhdGFiYXNl IGFjY29yZGluZyB0byB0aGUgZGF0YXR5cGVzIHlvdSB1c2VkIGluIGNyZWF0 aW5nIHlvdXIgdGFibGVzLiAgSWYgeW91IGhhdmUgYmluYXJ5IGRhdGEsIEkg YW0gdGhlIHdyb25nIGd1eSB0byBhc2suDQoNClRoZXJlIGFyZSBhIGNvdXBs ZSBnb3RjaGFzIGhlcmUgdG9vLCBvZiBjb3Vyc2UuICBTaW5jZSB3ZSB1c2Ug dGhlIENPUFkgY29tbWFuZCwgYW5kIGl0IGludGVycHJldHMgYSBuZXdsaW5l IGFzIHRoZSBlbmQgb2YgYSB0dXBsZSwgeW91IG5lZWQgdG8gY2xlYW4gb3V0 IGFsbCB0aG9zZSBuZXdsaW5lcyBsdXJraW5nIGluIHlvdXIgdGV4dCBmaWVs ZHMgaW4gTVMgU1FMIFNlcnZlci4gIFRoaXMgaXMgZWFzeSBlbm91Z2ggdG8g ZG8uICBBbHNvLCB0aGUgZGF0YSBkdW1wIGZyb20gTVMgU1FMIFNlcnZlciB3 aWxsIHVzZSB0aGUgc3RhbmRhcmQgY3IvbGYgbGluZSB0ZXJtaW5hdG9yLCB3 aGljaCBuZWVkcyB0byBiZSBjaGFuZ2VkIHRvIGxmIG9yIGl0IHdpbGwgY2F1 c2UgaGF2b2MgaW4gY29tcGFyaXNvbnMgb2Ygc3RyaW5ncywgYW1vbmcgb3Ro ZXIgcHJvYmxlbXMuICBJIGRpZCB0aGlzIHRoZSBlYXN5IHdheSwgZG93bmxv YWRpbmcgdGhlIGR1bXBzIHRvIG15IG1hY2hpbmUgcnVubmluZyBteSBmYXZv cml0ZSBVbml4LWxpa2Ugb3BlcmF0aW5nIHN5c3RlbSB2aWEgZnRwLCB3aGlj aCBkb2VzIHRoaXMgdHJhbnNsYXRpb24gZm9yIHlvdS4gIA0KDQpUaGUgZmly c3Qgc3RlcCBpbiBkdW1waW5nIHRoZSBkYXRhIG91dCBvZiBNUyBTUUwgU2Vy dmVyIGlzIHRvIHR5cGUgYWxsIHRoZSBuYW1lcyBvZiB5b3VyIGZpZWxkcyBp bnRvIGEgdGV4dCBmaWxlIG9uIHRoZSBXaW4zMiBtYWNoaW5lLiAgWW91IGNh biBjaGVhdCBhbmQgaXNzdWU6DQoNCiJzZWxlY3QgbmFtZSBmcm9tIHN5c29i amVjdHMgd2hlcmUgdHlwZSA9ICdVJyIgDQoNCmluIFF1ZXJ5IEFuYWx5emVy IChJU1FMLVcpIHRvIGdldCB0aGUgbGlzdCwgdGhlbiBzYXZlIHRoZSByZXN1 bHRzIHRvIGEgZmlsZS4gIFRoZW4sIHdyaXRlIGEgaGFuZHkgbGl0dGxlIHNj cmlwdCB0byBjYWxsIGJjcCwgdGhlIEJ1bGsgQ29weSBQcm9ncmFtLiAgTWlu ZSBsb29rcyBsaWtlIHRoaXM6DQoNCnNldCBmaWxlIFtvcGVuICJDOlxcaW5l dHB1YlxcZnRwcm9vdFxcdGFibGVsaXN0LnR4dCIgcl0NCndoaWxlIHshW2Vv ZiAkZmlsZV19IHsNCiAgICBzZXQgdGFibGUgW2dldHMgJGZpbGVdDQogICAg ZXhlYyBiY3AgPGRhdGFiYXNlPi4uJHRhYmxlIG91dCAkdGFibGUgLWMgLWsg LVMxOTIuMTY4LjEwMC4xIC1Vc2EgLVBwYXNzd29yZCAtciB+DQp9DQpjbG9z ZSAkZmlsZQ0KDQpUaGlzIHdpbGwgZHVtcCBhbGwgdGhlIGxpc3RlZCB0YWJs ZXMgaW50byBmaWxlcyBvZiB0aGUgc2FtZSBuYW1lIGluIHRoZSBjdXJyZW50 IGRpcmVjdG9yeS4gIFRoZSAtYyBmbGFnIG1lYW5zIHRvIHVzZSBwbGFpbiBj aGFyYWN0ZXIgZm9ybWF0LiAgVGhlIC1rIGZsYWcgdGVsbHMgYmNwIHRvICJr ZWVwIG51bGxzIi4gIFRoaXMgaXMgaW1wb3J0YW50IGxhdGVyIHdoZW4gd2Ug aW1wb3J0IHRoZSBkYXRhLiAgVGhlIC1yIGlzIHRoZSAicm93IHRlcm1pbmF0 b3IiLiAgVG8gbWFrZSBjbGVhbmluZyB1cCB0aGUgY2FycmlhZ2UgcmV0dXJu cyBlYXNpZXIsIEkgdXNlIHRoaXMgdG8gc2lnbmFsIHRoZSBlbmQgb2YgYSBy b3cuICBJIHB1dCB0aGlzIHNjcmlwdCBpbiB0aGUgQzpcSW5ldFB1YlxmdHBy b290IGRpcmVjdG9yeSwgc28gSSBjYW4gZ28gcmlnaHQgdG8gdGhlIG5leHQg c3RlcC4NCg0KRnJvbSB0aGUgVW5peC1saWtlIG1hY2hpbmUsIHN0YXJ0IGZ0 cCBhbmQgZ2V0IHRoZSBmaWxlIGxpc3RpbmcgeW91IGNyZWF0ZWQgZWFybGll ci4gIFB1dCBpdCBpbiBhIHdvcmsgZGlyZWN0b3J5LiAgQ2hhbmdlIHRvIHRo ZSBuZXcgd29yayBkaXJlY3RvcnkgYW5kIGdldCB0aGUgZmlsZXM6DQoNCmZ0 cD4gbGNkIC9ob21lL2hvbWVyL3dvcmtkaXINCkxvY2FsIGRpcmVjdG9yeSBu b3cgL2hvbWUvaG9tZXIvd29ya2Rpcg0KZnRwPiBmZ2V0IHRhYmxlbGlzdC50 eHQNCg0KVGhpcyBzaG91bGQgZG93bmxvYWQgYWxsIG9mIHRoZSBkYXRhIGZp bGVzIHRvIHRoZSB3b3JrIGRpcmVjdG9yeSwgbWFnaWNhbGx5IGNvbnZlcnRp bmcgbGluZSB0ZXJtaW5hdG9ycyB0byBVbml4IGNvbXBhdGlibGUgZm9ybWF0 LiAgSWYgeW91IGNhbid0IHVzZSBGVFAsIHRoZXJlIGFyZSBvdGhlciB3YXlz IHRvIGdldCBmaWxlcyBmcm9tIGhlcmUgdG8gdGhlcmUuICBKdXN0IGJlIGFk dmlzZWQgdGhhdCB5b3UgbWF5IG5lZWQgYSBsaXR0bGUgc2VkIHNjcmlwdCB0 byBmaXggdGhlIGNyL2xmIHByb2JsZW0uDQoNCk5vdywgbGV0J3MgZml4IHRo ZSBlbWJlZGRlZCBsaW5lIGZlZWQgaXNzdWUuDQoNCiMhL3Vzci9wa2cvYmlu L3RjbHNoDQpzZXQgZmlsZSBbb3BlbiB0YmxuYW1lcyByXQ0Kc2V0IGZsaXN0 IFtyZWFkIC1ub25ld2xpbmUgJGZpbGVdDQpjbG9zZSAkZmlsZQ0Kc2V0IGZs aXN0IFtzcGxpdCAkZmxpc3QgXG5dDQpmb3JlYWNoIGYgJGZsaXN0IHsNCiAg ICBzZXQgZmlsZSBbb3BlbiAkZiByXQ0KICAgIHNldCBkYXRhIFtyZWFkIC1u b25ld2xpbmUgJGZpbGVdDQogICAgY2xvc2UgJGZpbGUNCiAgICByZWdzdWIg LWFsbCB7XDAwMH0gJGRhdGEge30gZGF0YQ0KICAgIHJlZ3N1YiAtYWxsIHtc bn0gJGRhdGEgXFxcbiBkYXRhDQogICAgcmVnc3ViIC1hbGwge359ICRkYXRh IFxuIGRhdGENCiAgICBzZXQgZmlsZSBbb3BlbiAkZiB3XQ0KICAgIHB1dHMg LW5vbmV3bGluZSAkZmlsZSAkZGF0YQ0KICAgIGNsb3NlICRmaWxlDQp9DQoN ClRoZSByZWdzdWIgbGluZXMgYXJlIHdoZXJlIHRoZSB3b3JrIGdldHMgZG9u ZS4gIFRoZXkgcmVwbGFjZSBhbGwgbnVsbHMgKFwwMDApIHdpdGggYW4gZW1w dHkgc3RyaW5nLCB0aGVuIGFsbCBsaW5lZmVlZHMgd2l0aCBhIGxpdGVyYWwg IlxuIiB3aGljaCB3aWxsIHRlbGwgQ09QWSB3aGF0IHRvIGRvIHdoZW4gd2Ug aW1wb3J0IHRoZSBmaWxlLCB0aGVuIG15IGxpbmUgdGVybWluYXRvcnMgZ2V0 IHJlcGxhY2VkIHdpdGggYSBsaW5lZmVlZCwgd2hpY2ggaXMgd2hhdCBDT1BZ IGlzIGV4cGVjdGluZy4gIFRoZXJlIGFyZSBjbGVhbmVyIGFuZCBlYXNpZXIg d2F5cyB0byBkbyB0aGlzLCBidXQgeW91IGdldCB0aGUgcG9pbnQuDQoNCk5v dywgZ28gYmFjayB0byB0aGUgc3FsIGZpbGUgeW91IGVkaXRlZCB0byBjcmVh dGUgeW91ciBkYXRhYmFzZSBvYmplY3RzLiAgSSBhc3N1bWUgaXQgaXMgb24g dGhlIFVuaXgtbGlrZSBib3ggYXQgdGhpcyBwb2ludC4gIEl0IHNob3VsZCBo YXZlIGEgc2VyaWVzIG9mIENSRUFURSBUQUJMRSBzdGF0ZW1lbnRzLCBmb2xs b3dlZCBieSBBTFRFUiBUQUJMRSBhbmQgQ1JFQVRFIElOREVYLCBldGMgc3Rh dGVtZW50cy4gIFdoYXQgd2UgbmVlZCB0byBkbyBub3cgaXMgdGVsbCBpdCB3 ZSB3YW50IHRvIGxvYWQgZGF0YSBhZnRlciB0aGUgdGFibGVzIGFyZSBjcmVh dGVkLCBidXQgYmVmb3JlIGFueXRoaW5nIGVsc2UuDQoNCkZvciBlYWNoIENS RUFURSBUQUJMRSBzdGF0ZW1lbnQsIGZvbGxvdyBpdCB3aXRoIGEgQ09QWSBz dGF0bWVudC4gIFNvbWV0aGluZyBsaWtlDQoNCkNPUFkgdGFibGVuYW1lIEZS T00gJy9ob21lL2hvbWVyL3dvcmtkaXIvdGFibGVuYW1lJyB3aXRoIG51bGwg YXMgJyc7DQoNCk9uY2UgeW91IGhhdmUgdGhpcyBkb25lLCBleGVjdXRlIGl0 IGFnYWluc3QgeW91ciBQb3N0Z3JlU1FMIGRhdGFiYXNlLCBzb21ldGhpbmcg bGlrZQ0KDQokIHBzcWwgbmV3ZGIgPCBtb2RpZmllZHNjcmlwdC5zcWwgJj4g b3V0ZmlsZQ0KDQpzaG91bGQgd29yay5UaGUgb3V0cHV0IGZpbGUgaXMgZ29v ZCB0byBoYXZlIGZvciBsb29raW5nIGZvciBwcm9ibGVtcy4gIEl0IGdldHMg bWVzc3kgc28NCg0KJCBjYXQgb3V0ZmlsZSB8IGdyZXAgRVJST1IgDQoNCmNh biBnaXZlIHlvdSBhbiBpZGVhIGhvdyB0aGluZ3Mgd2VudC4gIEkgZ3VhcmFu dGVlIHlvdSBoYXZlIHNvbWUgdHJvdWJsZXNob290aW5nIHRvIGRvLiAgDQoN CjYuICBWaWV3cw0KDQpWaWV3cyBhcmUgcHJldHR5IGVhc3ksIGFzIGxvbmcg YXMgeW91IGRpZG4ndCB1c2UgdG9vIG1hbnkgZnVuY3Rpb25zIGluIHRoZW0u ICBBIGZhdm9yaXRlIG9mIG1pbmUgaXMgaXNudWxsKCkuICBMaWtlIG1vc3Qg ZnVuY3Rpb25zLCBpdCBoYXMgYSBQb3N0Z3JlU1FMIGNvdW50ZXJwYXJ0LCBj b2FsZXNjZSgpLiAgQSBzdXJwcmlzaW5nIG51bWJlciBvZiBmdW5jdGlvbnMg d2lsbCB3b3JrIGp1c3QgZmluZS4gIEZvciBleGFtcGxlLCByb3VuZCgpIGlz IGV4YWN0bHkgdGhlIHNhbWUuICBkYXRlcGFydCgpIGJlY29tZXMgZGF0ZV9w YXJ0KCksIGJ1dCB0aGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSwgYWx0aG91 Z2h0IFBvc3RncmVTUUwgbWF5IGJlIG1vcmUgcGFydGljdWxhciBhYm91dCBm b3JtYXQgc3RyaW5ncy4gIEZvciBleGFtcGxlLCBTUUwgU2VydmVyIHdpbGwg YWNjZXB0IGRhdGVwYXJ0KHl5eXksIG15ZGF0ZWZpZWxkKSBhcyB3ZWxsIGFz IGRhdGVwYXJ0KHllYXIsIG15ZGF0ZWZpZWxkKSAgLiAgUG9zdGdyZVNRTCB3 YW50cyB0byBzZWUgZGF0ZV9wYXJ0KCd5ZWFyJywgbXlkYXRlZmllbGQpIChu b3RlIHNpbmdsZSBxdW90ZXMpLg0KDQpHZW5lcmF0aW5nIHNxbCBmb3Igdmll d3MgaXMgcHJldHR5IG11Y2ggdGhlIHNhbWUgYXMgZm9yIHRhYmxlcy4gIEZy b20gdGhlIEVudGVycHJpc2UgTWFuYWdlciwgcmlnaHQgY2xpY2sgb24geW91 ciBkYXRhYmFzZSBhbmQgc2VsZWN0ICdBbGwgVGFza3MnLCB0aGVuICdHZW5l cmF0ZSBTUUwgU2NyaXB0cycgZnJvbSB0aGUgY29udGV4dCBtZW51LiAgVW5j aGVjayAnU2NyaXB0IEFsbCBPYmplY3RzJywgYW5kIHNlbGVjdCAnQWxsIFZp ZXdzJy4gIE9uIHRoZSAnRm9ybWF0dGluZycgdGFiLCBkZS1zZWxlY3QgJ0dl bmVyYXRlIERST1AuLi4nLiAgT24gdGhlICdPcHRpb25zJyB0YWIsIFNlbGVj dCB0aGUgJ01TLURPUycgZmlsZSBmb3JtYXQsIGFuZCBtYWtlIHN1cmUgJ0Ny ZWF0ZSBvbmUgZmlsZScgaXMgY2hlY2tlZC4gIENsaWNrIE9LLCBnaXZlIGl0 IGEgbmFtZSwgYW5kIHB1dCBpdCBzb21ld2hlcmUgeW91IGNhbiBmaW5kIGl0 LiAgDQoNClJ1biB0aGlzIGZpbGUgdGhyb3VnaCB0aGUgc2FtZSBzY3JpcHQg eW91IGNyZWF0ZWQgdG8gY2xlYW4gdGhlIHNxbCBmb3IgeW91ciB0YWJsZXMs IGFuZCBzZWUgaWYgaXQgd2lsbCB3b3JrIG9uIFBvc3RncmVTUUwuICBJZiBu b3QsIHlvdSB3aWxsIGhhdmUgdG8gZG8gc29tZSBmaXhpbmcgb2YgZnVuY3Rp b25zLg0KDQo3LiAgU3VtbWFyeQ0KDQpDb252ZXJ0aW5nIGEgZGF0YWJhc2Ug ZnJvbSBNUyBTUUwgU2VydmVyIGlzIG5vdCBhbHdheXMgZWFzeS4gIEl0IGlz LCBob3dldmVyLCBhbHdheXMgd29ydGggaXQuICBZb3Ugd2lsbCBmaW5kIFBv c3RncmVTUUwgdG8gYmUgYW4gZXh0cmVtZWx5IHBvd2VyZnVsIGFuZCBmbGV4 aWJsZSBwcm9kdWN0LCB3aXRoIHRoZSBiZXN0IHRlY2ggc3VwcG9ydCBpbiB0 aGUgd29ybGQsIHRoZSBhY3R1YWwgZGV2ZWxvcGVycyBhbmQgdXNlcnMgb2Yg dGhlIHByb2R1Y3QuICBJZiB5b3Ugc3BlbnQgZGF5cyB0cnlpbmcgdG8gZ2V0 IHhwX3NlbmRtYWlsIHRvIHdvcmsgb24gU1FMIFNlcnZlciB2ZXJzaW9uIDcu MCwgb3Igd29uZGVyZWQgd2hhdCB3YXMgaW4gdGhvc2UgZW5vcm1vdXMgIlNl cnZpY2UgUGFja3MiIHRoZW4geW91IHdpbGwgYXBwcmVjaWF0ZSB0aGlzLg0K --=_6238C373.85E489FF--