teacup. [ 掲示板 ] [ 掲示板作成 ] [ 有料掲示板 ] [ ブログ ]

 投稿者
  題名
  内容 入力補助画像・ファイル<IMG>タグが利用可能です。(詳細)
    
 URL
[ ケータイで使う ] [ BBSティッカー ] [ 書込み通知 ] [ 検索 ]

スレッド一覧

  1. スレッドが使えます(2)
  2. Paract BASIC(20)
  3. Amusement_Program(10)
  4. 改修予定のJIS非互換(3)
  5. 複数ページ長編プログラム(新規投稿)(16)
  6. 「十進BASIC第2掲示板」投稿記事リスト(17)
  7. Full BASIC互換ライブラリ(8)
  8. 「十進BASIC掲示板過去ログ」インデックス(トピック)(17)
  9. 人の色覚の数理(14)
  10. 「十進BASIC掲示板過去ログ」インデックス(ツリー)(91)
スレッド一覧(全10)  他のスレッドを探す  スレッド作成

*掲示板をお持ちでない方へ、まずは掲示板を作成しましょう。無料掲示板作成


shell.runで上手にrunasを使いこなす技を天寿していただけますか。

 投稿者:ひろみつ  投稿日:2017年11月23日(木)09時35分34秒
返信・引用
  set shell=wscript.createobject("wscript.shell")
として
shell.run("dism.exe /capture-image ...",,true
を管理者権限で動作させるために、runasを使いたいのですが、どうすれば正常動作してくれるのか分からず投稿させていただきました。
shell.runの第3引数の終了待ちを有効にして使いたいので、shell.executeの記事は見つけましたが、希望に沿う物が見つかりません。
どうかよろしくお願いします。

実行環境はWindows 10で作成したWindows PEです。
 
 

Eメール送信

 投稿者:しばっち  投稿日:2017年11月21日(火)19時11分1秒
返信・引用
  十進BASICから電子メールを送信します(※送信のみ、ファイル添付もできません)
POCOライブラリーを使用し、ネット上のサンプルを基に作成しました(※サンプルを流用しただけです)

https://pocoproject.org/download/index.html

送信元、送信先のメールアドレス、SMTPサーバー名を設定してください(下記画像の赤丸を参考)

VC++2012(x86)にてライブラリーをビルド、コンパイルしました。
(VC++2015ではBASIC側で「dllがロードできない」等のエラーが出たため)

ASSIGN文でdllファイルを指定してください。

LET SUBJECT$= "送信テスト" !'タイトル
LET BODY$= "メールテスト"&CHR$(13)&CHR$(10)&"メールを送信します" !'本文
LET SFROM$= "admin@example.com" !'送信元メールアドレス
LET STO$= "admin@example.com"   !'送信先メールアドレス
LET SMTP$= "smtpserver.example.com"  !'SMTPサーバー名
LET K=SENDMAIL(SMTP$,SFROM$,STO$,SUBJECT$,BODY$)
IF K=0 THEN
   PRINT "送信終了"
ELSE
   PRINT "送信 ERROR!!"
END IF
END

EXTERNAL FUNCTION SENDMAIL(SMTP$,SFROM$,STO$,SUBJECT$,BODY$)
ASSIGN "sendmail.dll","sendmail"
END FUNCTION

-------------------------------------------------------------------------------------
                                       sendmail.cpp

#include <iostream>
#include "Poco/Net/MailMessage.h"
#include "Poco/Net/MailRecipient.h"
#include "Poco/Net/SMTPClientSession.h"
#include "Poco/Net/StringPartSource.h"
#include "Poco/Exception.h"

using namespace std;
using Poco::Net::MailMessage;
using Poco::Net::MailRecipient;
using Poco::Net::SMTPClientSession;
using Poco::Net::StringPartSource;
using Poco::Exception;

extern "C" __declspec(dllexport) int sendmail(char *smtp,char *from,char *to,char *title,char *body)
{
    string smtphost = smtp;  // SMTPサーバの名前
    string _from = from;     // 送信元のメールアドレス
    string _to = to;         // 送信先のユーザのメールアドレス
    string _title=title;     // タイトル
    string content=body;     // 本文

    try
    {
        MailMessage message;
        message.setSender(_from);
        message.addRecipient(MailRecipient(MailRecipient::PRIMARY_RECIPIENT, _to));
        message.setSubject(_title);
        message.addContent(new StringPartSource(content));
        SMTPClientSession session(smtphost);
        session.login();
        session.sendMessage(message);
        session.close();
    }
    catch(Exception& exc)
    {
        return 1;
    }
    return 0;
}

なお、実行には別途「PocoFoundation.dll」「PocoNet.dll」が必要です。(BASIC.EXEと同じフォルダに入れてください)
これらを同梱してアップしましたので下記URLからダウンロードしてください。(sendmail.zip)
有効期限は本日より1ヶ月です

ダウンロードパス:shibacchi

http://fast-uploader.com/file/7066814112561/



※備考
こちらは以前、SECONDさんが作成したものです。

http://www.geocities.jp/thinking_math_education/log/100/zfuoyj/index.html
 

Re: fileread.dll

 投稿者:しばっち  投稿日:2017年11月14日(火)00時27分55秒
返信・引用
  > No.4414[元記事へ]

続き

DATA "98ACB664D986739B03030FB0812D6C9713CBECB5CF96930F0F4987D30E2CB99FF475F152726881EE0760EF9BDDAEE1AE06034E100456205E30B1D96C3666406E5076607E706C766714A14F"
DATA "267F577F5FE066B3D97F677F6F7F777F7F70DB75832E35BE2AC180117590FE2C60CBB67223F220206648B33D5BC7732027E0DD07FC1A86822B821A20275D3D733421291475EB4B0F04AF10"
DATA "6D18010FCA1E40B003EDE5CF412EEAA2D00F4F41E0EF70471AE17FC1EA077466009EE7D91EDFDF66666666F99EE7E9CB66666666F266E7F99EE7666666DF6666A4220E9F668DB633FC74B5"
DATA "A17B4A75A39B5FDAEA053E21B1B248457FE8AAB6ADA9DD20202DE59B1F2BE0E6D87BC109D18B16F64607B39BEEC604D11A03ED055B027F46474975F7BFEB35360493CFBA822BD06828F267"
DATA "5B11C235098A1688173499CED633590D65634818083C6C80598FB97F4680E2333301725F64D0706B441482DFDB6EDADA55376E5370DBDA16DB0BB90F0D5AC58A981891D6DC6EDD2BD1CE0A"
DATA "21EFD20374D1CB0707458BCDEBD7CA0F680BF8B780A1EBDC0FBCC103C27FE0568562DA44A845C13A57A2EBBD8A5F53A2605208F8ED13022F158A0A2F013ACB7459BA30DBA00D5114E30BD8"
DATA "21E0ED979CC3C1E31056088B0ABF1E54FBEF607E18F733CB03F003F983F161AEB6024B8BCFDF380430C4EDF9FD0101817521250674D3018481E6D01A000F42C4457656FCA5B82A42FFCE42"
DATA "FC3AC374362DE94AD4FFEA3AE3742784E474E28E1215EEB59BA6D706CFEB91322E338373D2B9FE3C06FDFCAF04258700C33324830A39C2E875099257C3743624D034DDFB3D849004038C98"
DATA "ACB7394560AFC420C430035518344D38485CAFBC08485EC570C5690A0617426F57B3A8F8815A43FD1B08777742062F509D8BC2C1E2BB3B70700CB723CF94B7F933182CA483D2B90FB5800D"
DATA "2EDD1807C90FBDB3C7EEF2C1AD3B45D0C5C7D053207AD897FFD923D8D1E133C02BC14923CB5B2444C2B5265E0B0B76EA391EBBF636086115110F3BCA1C21742094EB06A14767EB92C24FB1"
DATA "6BFDDF216347F0408D4C0FF00F42C10840B8F01BACE976D323C793C000AFBA1430D8779BB1E27CF823FA75141D40D8A8B7551F1013EEEC45CD5D965FD7EBBDFC7B43B7880B74F2AE4BF7D9"
DATA "1718E2967B8A450CFD0D6E3807CC00D67504FFFC680000E5D847140A3901079034CBA669BAA603C0D6EA063524344DD3343652667A9C59364DD3ACC2DA02360EA6699AA61C2A3442549AA6"
DATA "699A6672829AB2CA34CBA669D8EE04371A26D7344DD332404C5E7A834DD3745D82079203A0B0C2CCB94DD334D8E4FE183877D3344DD3033C4E6070844DD3344D90A0AEBAC8D82A5DD334E8"
DATA "F86E6760B71772103E190E36CE138F4B2EDD4B2E9D336F7C0F1C3796A0C9038473726243409D2905038027C3FEFF301B4D61696E20496E766F6B65642E0FD2749FFD52657475726E1000D1"
DATA "9C03B0EC22DBB7FFD22861006400760005700069008032EBBAEECF0D2D006D007305770B6E076395AC6BBA5B79006511666209721FADB2997B6C003105033B9AC936B71579110F68393230"
DATA "25EBC6C6776B536E056C8B0EEC6FFF004576656E74C367697374657213537DD9FFD6D7EA666F726D6174696F6E17556E72FDEDB1812D135772690F5472616E7366DBFEE6E1168D03466C73"
DATA "416C6C6F900013EDC0B6094640650F4769C82113F656616C75135302EDBE6D2D8B626911697A65436C6963EE60BFAD0A2263994578B5D498039AA6699AA4ACB8C4D0DC749BAD69ECF827D5"
DATA "D508071469BAE6D220D1642C03343CA6699AA64044484C509AA6699A545864686C70699AA66974787C8084A6699AA6888C9094989AA6699A9CA0A4A8ACB0699AA669B4B8BCC0C4A6699AA6"
DATA "C8CCD0D4D8CDA5699ADCE0ECF8D6000C344DD3342430446484692E4DD3A4C4E4D70824A6699AA6486890ACBCCDA5699AC0C8D8FCD80410344DD334203C5C84AC699AE6D2D4D9001C4064DD"
DATA "D799A690BC3FD10FE803FC4BBF692EDA182C4C5F5F62617315285BA1703B0B6364AC3613706E636628B91342640B6CB3C6916C7468510C2366D6301CB6740B76E3820D959EE46F33636C72"
DATA "656162001A65B7F553749F343772651AACA9E3D72F13756E2A67950015ED95DA3788201034078DD9361B8D6C5F5B3D3E3EF13CEB824C81326F21033EB7D1B55B5D2570C9617B2F2DE7BA06"
DATA "EA232AC62B0B2D030BE99AC7BA03261B2A002F25033CCBA67BDD3F3E57072C28297E74BBD3355E337C347C7C4F3DF36D9ACE032D2F253D8B3DF6A6335B3D233D035E60766674E887807CB7"
DATA "AE27000B6208A6F66E6F09607479A96F66120B6BB3BFA96D1420F0B263206775617264170C87B30F026E670B769701614277E813755C1560661634B73037281D1F0FDAB0D22F94756C7420"
DATA "636E180B5973D6DA6C73F88B73613FAE84CD025F3E30C096BD085F207F1E05364B961FBA4536BA02B723697288FD644970FEB6BADE8C63656D9720BC70DF656820816C16CA822386DCDC2A"
DATA "7B1F8647177079186C0F212860756492722F4BFE0B878EBB4548006052545449812D2C09ED0F50DB4BF263CF5B5D0A376FE1953EB66D5C201B7300730C952D9B2D253E1BA9F096B5411D4B"
DATA "3E47B251426967443C274328E1304063256C25ACB04F6B2DE8586E237B64796DEE69D8735B32201E6622DF1B64CBDA6D2A65781D9721815D658F5B90608C16D94A180B575D289090AF0376"
DATA "6164583FAC21B67F20222220B3B0A56DD354E72044C163CA706C17B0ED7720428F436C057319EDCC6D276C20281B41724A79300E905DC01D48695A4768794EDD636CB81F3C70234F626ABE"
DATA "20EB0A82B94C9F1CB50B24208334DD0B1D0496033248338D088E8F200332209091392003329293B4029A6E402EB50C030309DA103A640F0501ED818B858864E323CE586B6DC37245F75072"
DATA "C6E822002ECF063B2E2F07660F5C995D4673B93C6B630357E1583966382E5D3758492BA3179B03C752081BF6AC6B5E1B532F62B4590F4EF3E4370B2EAC2E5B417B41BA2FDB160302BB07A4"
DATA "69BAE60418D3050D0690EF051B07E3EF07097B01196C0A1B0B573B37D860DF070F57101311036C902F48121721350FB041061941435033C1061B6C52175307575FA61B6CB0597B6C176DAB"
DATA "20EF05699A701C72C72F061B6CB080B38107821F839A66B041848F91299E196C9041A1A46FA761B0C106B79FCE1FD70BF085270718076363E85554462D41F87FCCBC0731364C45554E4943"
DATA "4F4445A3F7A41A8ADD8EC8A7DE0803DD93FA4C500BFCB7DF38037899E6D234B4F0E0409854779ADA0BE138DB9C0B883ABA6F85CF1570136F8B65DA5CF36619720075741F15655B259592D9"
DATA "DB4794A5B06E613D65413F8D355D776C0963256C7A4B694B954CD6116E473205CA6AAC796200736CA56583FBDC04D8E7700761651F0298B1AE734768FF610FEC5B2513323F721500391060"
DATA "674B3046821BBB7315661325B26DB6CA3F110B747984D855963B78B9EFD94B25DFB732673FCC00EE6367751FF1235E0AAC3B641D778B3B4B4277D84F753D4B790F914DC218DB2966CB63FB"
DATA "73485937805765C57457D73D840C85EF61496B0560EFCD5E67BB75C7C5571FE6C252F164A16F2144D675536205784739D94A7A03FB354F2B48306C355BA3A34BBCC4776546694F41709252"
DATA "D87B7D414E5349AF17078596E0F500E3104383BA58A8A17297509F6B4D49E8C106DB83072303074C434DEC0491DADB53D70117ED2D7E9152654EF665546F236D9AEED9494455E23403404C"
DATA "586A2F1881CDC9B74AEB7A2DF878C102FD4E23E94B3B026711FB1754F75375F16009B6604D03548F5716AD6D17535468ED4679171CBEF71ABF1B64611A1F07237360DF59F708276E09002F"
DATA "720A066BEFBD37093B14134A422B6C85321765A9D13F34D76D852C034D164A73035F80E56F254175670053654FD84E6F7600BE86DE16B2632F24793372732F0EF1089BD1073FE75EF7A069"
DATA "9B3F6517431FB8C56BBF477573424BDF6D6261EE752FBD536F0957126FB693BD5F0B414D03504D4D2F64BDE66EEC642F794764002C204D2008D359FCAE141648483A6D6D3A61531BFBDC7B"
DATA "BC8F27FB0F8857059D0E5BAC640FA575075B7620D9E32F5537E566EC2C612F3F0F477311CE1276964F6E135B72D9B264CB11670F6FEE3397BD25134AAB464D1681D7BD627B0F72FF8D0F7B"
DATA "5FB06F294ADB076C1F07F73A74AF675337704F13BB93BD0E4D4E764B455F756CD96463557967721173BDC31C91BB776963364B76987341772F7B59C3DE697571839F924D768A3F8F6F0FD8"
DATA "B081CD9721A3136E90CF5D418D07504D01DF9BB9E62F00642F7D7F0D012C4BF63D17FD1F0120112506CDDDD92948013A006D3AD124F7352B7B4155B39BA6699A6E6403686C70749AA6699A"
DATA "787C80889098699AA669A4B0B8C4C8A6699AA6CCD0D4D8DC9AA6699AE0E4E8ECF0F4EE597369FCE308102FE318039AA6699A2028303C44506A9AA6695C60647084699ADD046503E39098A0"
DATA "A6699AA6A8B0B8C0C84D73699AD8E8F8E40C2030344DD334444C545C64D3354DD36C747C842F8C4DD3344D949CA4B4C8D4B934DD20E003ECF8E508A6699AA61C2C40545C24A0699A6478A0"
DATA "B45B85B8010020018E5532C92820C5194026B21001841002199009810119900119108202601C16023B20027FA24806808182838485FFFFFFFF868788898A8B8C8D8E8F9091929394959697"
DATA "98999A9B9C9D9E9FA0A1A2A3A4A5FFFFFFFFA6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5FFFFFFFFC6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DA"
DATA "DBDCDDDEDFE0E1E2E3E4E544FFFFFFE6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFFFFFF4BA20102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFF1A1B"
DATA "1C1D1E1F202122232425262728292A2B2C2D2E2F30313233343536373839FFDFA0FF3A3B3C3D3E3F40616244666768696A6B6C6D6E6F7071A27F8B165241767778797A5B5CB2BFC216EB60"
DATA "1F7B7C7D7E7FFF5315C2A87F416E10FCFF42434445464748494A4B4C4D4E4FCF535436E1A588CE58595A7F1F240084157F3C79F619BBF44802075003580493274F9E60057006780779F2E4"
DATA "C980088809900A980B274F9E3CA00CA80DB00EB8F2E4C9930FC010C811D0124F9E3C79D813E014E815F016F2E49127F818F50019081A4F9E3C79101B181C201D281EE4C99327301F382040"
DATA "219E3C79F24822502358246025C993274F6826702778293C79F2E4802A882B902C982D93274F9EA02FA836B03779F2E4C9B838C039C83ED03F274F9E3CD840E041E843F079F2C89344F846"
DATA "F600470849274F9E3C104A184B204E28F2E4C9934F305038564057479E3C79485A5065587FD168F2ECC9CF0104F660026C030F780467CF9E3CE2580584060790070F9C7BF2C89308A809E5"
DATA "B40BB40C0727CF9E3CC00DCC0E5FD80FE4F6ECC99310F0113412074C1317274F1E7BFC1407F70815141620F2E4C993182C19381A441B4F9E3C79501C5C1D681E741FE4C9932780208C2198"
DATA "229E3C79F2A423B024BC25C826C993274FD427E029EC2A9E3C79E4F82BF8042C102D282FC993274F343240344C353C79F2E45836643770387C3993274F9E883A943BA03E79F2E4C9AC3FB8"
DATA "40C441D04393479E3CDC44F445F9004679F2E4C90C471849244A304B274F9E3C3C4C484E544F60F2E4C993506C52785684574F9E3C79905AA065B06BC06C73E49327D081DC0108E8048F3D"
DATA "5B8283070FF40907FA000AE4C993270C0C181024139E3C79F230143C16481A541DC993274F6C2C783B903E8E7CF2E49C43A86BC0010CD004C893274FDC07E809F40A9E3C79F2FB000C0C1A"
DATA "183B306BE4C9914F3C01104C0458079E3C79F26409700A7C0C881AE4C8274F943BA00114B0049E3C79F2BC07C809D40AE00CF291274FEC1AF83BFC1001184F9E3C3920092C0A380C441A72"
DATA "E49327503B68011C78094F9E3C79840A901A9C3BB401F2E4C99120C409D00ADC3B93478E7CE80124F809FD040A3C39F2C9103B1C01282C09380AC993239F44012C50095C0A9F3C39F26801"
DATA "307409800A8C0134F2C993239809A40AB0013827473E39BC0AC8013CD40AE0E5FBE4C80140EC0AF80A44A7FE1E79E4B14807100A4C1C0A5028047CCF802747341A4461FB620046BC039967"
DATA "E3001F1E106C0B465317C329CED90B3D0765D104B3C9D9076E276076367BCF075F682FBD62F2BDA9276967F23D62F2576A8B576E0926830D6E0F70EBD90B26DF17724D57839CB9B3677341"
DATA "07717623670F3A51077275B3D92126230F37769664B062D7736F6C47D820830D6CAF6676E72C5877BE7F79157A3797CD66DDEC6D571766DF37574CBE075D3F688FEB6667B31F2F6B4F1577"
DATA "9F26839D0557747F702126DF210B0F74099684D9D93F6E57171F77980D766D1767DF6F7167A077A0E72943E9DD8C868F172DFB411B0B42C3758F13931F0B4519131B2FF631235A37177C4B"
DATA "8A1923630B65451F91B7C7D95B47130B4600498CEE7D917217682F154C1F7DC1E8182D7555231753E9668C8C0B74541B2F4E8C7423DD0B624F1770506EC6F78827B3522B23B191B1915272"
DATA "5F526883CDF81E914837EF4B3BF445BAD347411776CB74887CCF8C13540B3B54C6C8D8F74B774BA76444531B19A4614355655953D2CD18196C495F5F45F2C5BA376C6B75560BEF4C461EDE"
DATA "236B5343765605E39BE1F173A74D7787748AF70B5A35EB8F753BDB2309AF8BA74D1FCF6223DD9B5A78D70B7A00C7B0479275B30BB764648487C745BB6F4F3A63235F8F496DB34D46BE0927"
DATA "159717735991B1E7836B6B5A0B79C6BE178C47E70B5F75CB553B84474AFBBB62BFA764A7D9770B0B0F926EC96117740B6506ECB2531BB36C0B72191B90C93B736D2F4D8449DD1B63B3B142"
DATA "435B210D9B9447314FF49274B6F5535745C1EA6667A171E5474FE75D779884736B6D53475A93611C48D22051579306E1B0096F87655F582C495B92571545332F204F6FD23317336E7016E4"
DATA "21B350B1508CD3A4907703B767797AC52E43E347276521E13B24EF6B4ECBACDAB2652FFF2F016B32F8DEE70D477B484BEC7BB101419FF30B55F364DF9B907BF35D41C3379BAD2C9FC37BF5"
DATA "5BB26ED9457BF1597B3F474B36D8647B4C6F6E637B266B403E470054484F42CB2634CC87056A656303F2645D155A634D004F49C0D98424F763436667CC82379FF7736313769612A36F53D3"
DATA "4D9BEC8C60AFEF455750176113BE17572343375712B6944D61C7F94E1358F606645A44254BDBC85E4A834BA3314D8B4DF2644B4A004D56253378971DDE0DB933591BDD64B24993427F4333"
DATA "6E9C30292589634262933D9605234A3FE34CC2F723E3548741270163C02642FB578B1B1B6CB243234B176E5F489F0161B2014C23418F05E47BB1559B179B48926E0997175167234FC9B664"
DATA "5BD7560B394E0B124293BD4EFD4752D3822F9BF0D9A700D16842EFE4874ECB2C41010570F48E9327CF7E0F7CD80788DA94B179F2E4C9A0A0AC8FB8CFC4D5274F9E3CD0D2DCA9E8B9F479F2"
DATA "E491C40600DC0C4318CC3B0B9E3C24BF30C87B2917274F9E3C3C9B546B58216C67CF4E8863E3010F784407846727C4937D90B7FB020FA8F1ECC993457004B44707C087F2E4D9190B050FCC"
DATA "4880064F9E3C7BD8A207E491F049FCB3CF4EDE056B010708AB410F148B4F9E9D114B070F244A9008E4C9B32730A3073CCD48AC9E3C79F254C960926CBA78C5C993274F84B490D69CD03C79"
DATA "F6E4A84BB4C06FC0D398099327CF9ECCD107D8DDE4D73C79E4C9F0CAFCB50808C114D493274F9E20A42CAD38DF79F2E4C9449350E05CBB68CE274F9E3C74E180DB8CDE986767C493D9A4C6"
DATA "8B230FB0F2E4C99365A02ABC6C8026F2ECA478C868830A1FD44C4F9E3C79C02EE073A80BEC94F2E4916707F8A50904AE104D76463C791CB628BC3B3E0F299E3C7934880837407FEB76463C"
DATA "3B0C0F4C4EE32F0FCF9E3C795874101864AF37705A27C59327B80D7C4F5328E2C993670F886A481F9461E4C9B3B3430E0FA050C80FECAC78F6AC9507B8515B1047523C79F2C452B82DD072"
DATA "739E3C797631CFDC78203AE8829E3C3B2B931117483FF4899E9DBC29AB010A0453320F1079C993274F78251C6770243C79F2EC286617348EA82B406D3C3B299E4C83A33D0F58863C797652"
DATA "C33B376484D0309327CF9E709D077C778875B36727D0945543120FA09607B313E8C9AC54B8975B136709F4E4C9C48D0036D07E737BF2E4D9140FDC56F815E8570793278F3CF4980B008C10"
DATA "9F936727D020A8A3160F3058B3B3E2C908173C59933C0F7AF2E4D948850754A760766C9C79F2EC04D3190F785B6022274F9E3D84640790BEA0C3B0F4E4C993B0C0B8D0CBE0C779E4D9191B"
DATA "1A0FF05CFE44E393278F3DFCC2070C14BD2CA6936767D044994B1B175C9A09F4E4C9685DE833747A4B7AF2E4D9400F808A1038908079F2EC04A3393F9C81301C3B839E3DA85E07B46EAB1D"
DATA "0F274F9E3CC05FF835CC7C50F2E4C99320D862401EE46079073D79F034F09EB3010D087B4F9E3D3B270F2069072C6F3803E4C9932748E2589064A19E3C79F270B27CAA88469470C2410C01"
DATA "0BF9DB926D438F05650BA1680B645B922764007A21670B644BC9B68D710BF16F0B409E6C83C5770B6C0062D62D9B64796D77396D174BD8804C71730B3B90B3092DC9B3794BE8EC51FD0563"
DATA "9F80653461176C03BC59F0CEBB62530B057C076202832B1773F182908D613B2FA73B2C78852F637700752F8874EF673B056B82612F490F3F0B22D99B3D1B0B050B25C0652E890B7563F405"
DATA "23DC6D059B6372F6BDD8248B61270BAB7A0B4C72D94BA50B62679227EB965B65476A006D449207646E700068B047303BA90BAF6B9250B7E47A0B77A3E620861DA10BBD0B4BD8B26F8F6C0B"
DATA "172F7B044B2E64D70B96E4492E73670074A55BB22DD96E0BC9780B15694CF688640B610B65920CC8807279587216296917752323DF29799B746575F1C68224DB69536F16BC191F05630518"
DATA "F64856A7850BF6925C76AF0B68050BC09DCD18130B6D25C60B929DAF7727BB780533627F77B2B3652FCF1777610B8837235E05A3056F42B843836161FB0549F08611BB058759F166B3A70B"
DATA "05F31443888F4B705F62DD84300B23037A0B257BC19263630D6264EC9B0F27720B79670523DE303B05538864BCE00557AF7B4388F70B05035517B16464E46E6E7208D12D9B970B0579F304"
DATA "9A146F058BB14B7678C16FB30B05923420DF236E730FDE29863D6D6BC7056FF60E0B9F62E30B0565939604C3290F3163D98CFD0FB99B152F5803050305BC2020DD77732397ECCD667F0BA7"
DATA "0B05464646BE0B6B6B6C692D9B2D03DB310F9221399B351F6A6A849C251B6E7D0F73908C37C671676C0B9795C06C21BF1783BD04F6BD1769702F17652FD9912F76790BFB96C120DD770B6B"
DATA "79696566401A4774740BB4ACF7CC68050BFF6152BC083F05D78FC8D8093433752375947CF0DC70110BB375045AD8B217C3278259646C768378774CD8E974038B990F74923CD9846E0B6800"
DATA "6B641B6682D90B3F67B321D0963B773B67CF4B06F46C6F6731FD07F03956F0903F33047E3304C1017202FF07805B828670E18B55C3242FB1646303000F07000DFB3DECC0DB3F0710F8178F"
DATA "4207FF7FB2EE4B087F07789F501344D33F58B3121F31EF1F085BB6B03D5700CFBCB017D8C5304307F0FFFF1F92837F01F9CE97C6148935403D812964FFFFFFFF099308C05584356A80C925"
DATA "C0D23596DC026AFC3FF799187E9FAB164035B177DCA08DECFFF27AF2BF08412EBF6C7A5A77CBC3FE9F1DA4D5DCA7D7B9856671B10D40CBFB83FD6F09F736430C9819F695FD39E03F036578"
DATA "703FCCED5725A69FF103A2FAFFDB84EDADA1215FC04335C26821A2DA0FC9FFFD21E1B03F09FE05084008040808D84998FC0300040C2F7F023501264F783E4051EF7FC5365890DD0798C0B5"
DATA "F0D1FC92F1185357B4706F8FF1186F75617369F061636FD0737172CCBCA584749FDC8010440B1BD5CA180098C5E4F0FFE6FF0AA8037C3F1BF7512D3805DEB69D578B3F0530FBFE096BBFFB"
DATA "FF0BB28096DEAE70943F1DE1910C78FC391F3E8E2EDA9A3F250258FE1A706E9ED11B35C0B5FF776FEAADA03F4B09512A1B1F63C6F7FAA33F3FF581F162EF6EFFCD3608EF591E17A73FDB54"
DATA "CF33BD163FC702903EE6FF97FFAA3F86D3D0C857D22140C32D3332AD3F1F44D9F8DB7AFFBFFBFFA0D6701128B03F7650AF288BF34F60F1EC1F9CB13FD455531E3FE03EFFDDFF3765FD1B15"
DATA "B33F95678C0480E2371FC5802793B43FF3A562DFFD7FF7CDACC42FAFE95E7305B63F9F7DA123CFC3174F4A8D776BB7BBFF77FF3F7A6EA012E8031C3FE44E0BD6B83F824C4ECCE500CF4024"
DATA "FFBBBFF022B433BAD357673470F1363FA754B695BB3FC74E76245FFEFFED5E0E294FE0E90226EABC3FCBCB2E8229D1EB3C6CC1B442E5FFBBFFBE3FE94D8DF30FE5257F6AB1058DBF3FA777"
DATA "B7A2A58E2AFF3FFCFF203CC59B6DC03F45FAE1EE8D81324FAC3E0DC13FAEF083CB458A6FFEE5B71E0FD074153FB8D4FF93F1190B014F05FE51F2FFB7FFC23FC077284009ACFE5FE0F41C30"
DATA "F7C23F41631A0DC7F530EFB6BFF050790F7EC33F64721A79741FCFB4537429FDDB9BFFC43F344BBCC509CE3EFEFA24CA0F5168E64243202EDB9BFFBF7F3009127562C53F2D17AAB3ECDF30"
DATA "F61A1AF20F136FFFDFFC613E2D1BEF3F9016A28DC63FD09996FC2C94ED6F00286CFEF6E6FF5820C73FCD544062A8203D1CFF95B40FC53391682C01DFFEC2EFDFA0CE66A23FC84F238786C1"
DATA "C6200FF0560C0EFEBFFB97CCDFA0CFA1B4E336BFE7EFDF59C93FE5E0FF7A022024777C6BEF8FD2471FE90F0AF26C0E331F40038BFF777FE3A46ECAFF5B2BB9ACEB333F52C5B700CB3F73AA"
DATA "644C69EFFEEDBBF46F70F97CE6880F72A0782223FF322F2EBAE306FCCB77FFCC3F7CBD55CD15CB0F006CD49D9172ACE69446B60EE597FFBF901361FB11CD3F0B96AE91DB341A10FDAB599F"
DATA "BBFFDFFD736CD7BC237B9F607E523D16CE3FE4932EF2699D31BF02DCADF1CDFF2C9ACE3F87F18190F5EB909476581F8B07DDBFBDFB17EAEBAF077FDB1F80990F6896F2F77D7322CF0997DF"
DATA "FEF6455B0AD0AF2553235B6B1F0FE8FB378048C612E55F7EFBB9B9936A1B1FA821563187AEF3BF7DDA6132CB9B7FF9B86A1D71C632C1308D4AE935D2CDD9FF8035FEEFF89DF1F60E35EF78"
DATA "C2BE2F40D13F8BBA22421AFCF26FDF8F906919977A0F995C2D2179F22158AC307AB5FEEDDDBF7E84FF623ECF3D4F3A15DBF00FDF0E0C232E5827EDCDFFDF4F48424F0E26D23FF91FA42810"
DATA "7E1511A662620FF9975FFE12190C2E1AB012D843C0719879379EAC69392BDB2F507E800B76C1D5280FBEDEEA3A9F3008987EF9BBA7B30CD3D8B6199992CFEF72B60C062F0751424EC817F0"
DATA "E8DAE0804EC817F2C01FA0BED9805DC817F242500320A9D809F9424EE05528FFD7F2425EC860AF985FD00F424EC81780C3D6A87A4EC817F2D03170ECD510A79017F24228654023177242BE"
DATA "D0E4D460A668F285BC906BF82C78F5D385BC901380BA00837C212FE4F84E781770E3D2212FE484E0B2D87E5FC80B79484EB81DA0F0D1C80B392188C3709617F2425E5869B83FA07242BE90"
DATA "1200E9D0D8C285BC90173899107379212FE47049C02698002127E40BE0B4CF806F27E40B79202AC0E4CE609FC80B7921005A901B0B39215F30D6CDC097F9425EC85059E01A60E3CC425EC8"
DATA "09F0A4706D4EC817F2002F80F7CB00C011C850481D2379E4D9169B1D07041A0FF41B93278F3CF81F19501358217BF6ECD9600E2F080D07100F17681007674F9E3D700517181E7812077CF2"
DATA "E4C99320800C840B8C154F9E3C79941C9C19A411AC18E4C99327B416BC17C4229E3C79F2CC23D024D425D826E845864EE04656983B3B66460774610F6108076EEF39733227231F0765692F"
DATA "5868AC8466946F77469F9BE86162730A6D6F646C645AB9853E7B5F63185F6879B27427A63BC8CF201F667279300331AD7D0D956EE062136E1B6360942482669C0BF2052DA333BC80285032"
DATA "045CE4D85B298D031A90031BD10CB9DC9E2D0690200F4028D02A08FF0F3F45545730EB860E04882B058ABB05F0424159BE02202F4EADBEA120495669614352CC2F0C84822265B602466912"
DATA "D66251CF613B321340A1E4DC39219B50908F3AEB1616FE022B004D696372B06F4A2E2C500AFFBF6B787669645413D073504FCF898247B3E0DCE8C9047667E876B3BAC9B45F0266747F0F26"
DATA "3DC865601267C5246D6E16991DCDDC130C0149162435DC6F80B20FE1CA2E303063666746F65577C30F742458430A1413E7843C175A18494142BE4B9A1C0C432728F39C90EF5A132C504130"
DATA "5AC877490858273836B6B0AF973C134F4013E7429E135441445AE4ED749B503C49FF72AF902A019A2DF6D80F2473781617A010D27D8F4B7A133FB017770B593E1731272B2C9E0B699E3253"
DATA "013954EEDE966CD40200646267C7282E011336F24F7274632449412C135A76726063C730275434136B65CE12273865673DCB6FA4787827D03248650DC3D19EEC18330FFE13F35CD28DB740"
DATA "13143354E4F299640C01346034CC047BE6F299360040E008120FBD5AE6B2E0480809494A9D6D9FCD345B886766357393881A205DD2131C79CACBCE67224007D00FA7E440761F03FED40479"
DATA "03EB5E21055B037A1F45D69D90D8084403577F17C98BEC1CD09F1D8420853C2FB2311F21BBE40AEB063B26E307CB03DB672BE445F22A6B2ABCC85E64DD2FD103D53F35561F4EC981BC385D"
DATA "C43B27941CF612ED3AFA47CC17D98BE444B44FB28752487E2B8452EF1F53C26543C9963FCE2F1F2279910D7A9F62A0037991F05DB3C767DA5C24A78CB48F6B0F68B94838946F0E7F73483A"
DATA "8530BF71C62F227B91BC755075E25F22E145F27CD481457F88EE15F28DFFB5A903BC481E2AA4538E350101C808F91E3901A84AAA123958144458FFF85721218BD5B119BF44EC6526220314"
DATA "1B285F25FFFF23AB90EC5E22C0B244A5DDFD716A222A15C07E24E7190E200593190FA9492BE202A73BDD05C92901200237015052432402AE900C6543010002845032C80300EFB295B58F80"
DATA "000A00170046A6908110002090503042C4292C8244AF29248209064FD0480018E160D8778C11D1A4516082798221957D463C39A6DFA1A51D9FE0FCF0CBF707C67E80FC2FA800C1A3DAA306"
DATA "397B84CC81FE0740B5BB4186C02F41B65FCFA263AF90FFE4A21A00E5A2E8A25B7EA10951AFE4B7BB0503DA5EDA5F5FDA6ADA32D3D8C96CC8EDDEE0F939317E0016404893179311AA901004"
DATA "E860190C8328BBC36B1411C8CF590F2597250217708C90CBEDEAA886EC28E5C0068A0C45F98792EECAA843272E572E6047C9ED640341B87F00DE086BBA2F68BC035F44C801296F75988020"
DATA "4B14035936CBA3D239B7633E41C9419AAE5B0763ACB4725936CBED5376035E6208C7679BB9ED9AAEA31749380339682BE16735CBED3703466D0B996C662FCBE572D903E764CE4696474B9F"
DATA "7CA0592E977F937B1CAD33369665591630494C0A0D6423020A5951051010521810944BD4619608D07E5030193454484964FF0210C7135379AA6D54696D65417388F60C140E0918E7B62701"
DATA "4D534C6920482F14BFB9ED7F7344656275676765725040734812556E68616E3300F1B764356445786365706E432BAC6C9B4F725A531C88850A7E7774618F700205AF0342575A84256BAD7D"
DATA "6F72466B175F62031BDBDE2B4D6F647546484C57C9DBDEB660341254556D696E3865116B6DDB25244C61B9452752442F081401F173F77EDBBA6E8B6C2E6BA0466C757368E96FED08030848"
DATA "417E0610DFDB537064436F759654BB5B06106F09A10C18400CA453CB5F6CBBBD055D6272F2798BA54110AC70EC646472A94C6F5C1CB672E1AE289752746C397769C4532E646F4245B0943E"
DATA "2A98B20B2F766515448382941DAF16EE6D2C252C597C4D0EA15DD86E2942793A5496696440C1256BC35C7809131E20BCD9B2774870DD090B70B860DB4305734EC835B5429B706FB17EDC0B"
DATA "026116CC701910CF70C31E469A74644A0DB22030C79C7970DA779B21C63A6DA043585061670BF6D8672B414350074F454D09060A0AB147690A46EECC6DAD0A7C6D6F4473456F42027BC918"
DATA "AD95A975077BE6CA6D6D974C21336F361B5910313EAD5F8C84750F53C96ACB42210843E1756666CE861C66FA46C227B643A61985209F70576E53697A407709B309703C4A53DEC7878FF764"
DATA "4F66340463156F69382C49E5859C5261698B2C636BC15E271F181151B58720DA46845003D606D57BB46E28EB3A078C76D62B452E461650FF7F2C7A303336A5288D39F0F4000F759A2F1017"
DATA "1111FFFFFFFF0519050D4D1D0A0E12153ED9339FB0314F13130C101126150706120A610D2708FFFFFFFF193A1B0C0F090D2F081106060C062331AB1F0A110C09052605250F1D420E1B0BF2"
DATA "FDDFFE8F0908470F0736210B090F0A16090B0720060007DFDABB72082C060A0A10001F16171B23DBFFFFF710182B2604220E708108125128A65313789E13140C3C8C08B22CDBFF2A1C0F0C"
DATA "0E22100505360239303FFFCDC9ED270903240C2730080B0D16120C290CF7B6FDFFF0170132151A1A0E06151C120B15C11B971C200EB7FEFFFF7F120512650C781A099880F0CF02F09501CC"
DATA "F08D0134271A4CF03401163730FF7FFBD68586070C13054A116A0712094812080A0911121B2CFFFFB7FF073305F02601182D1B7F0A050B0B1451A4130F21590B4F184A96177EF6B6FDDB44"
DATA "12920D0C19133D0C0B7E06010E381041FF85BFFD2005211D316E3E06876D063806BDEE0A0D3312301DFF7FA1F00B5207136C45339E165A3D0A1B461A0F0E0C0C0EFFFFFFFF101517231B0D"
DATA "0E0E0B161409A008F0A9011F05D0F06A012B1F1F8FF054019114FFFFBFFC1D5149BD1E235A653F0F3E13360C188918331D4AAA24F009012450C2BFFDFF152F172F1D14220A3E1C48F05601"
DATA "3D1D013023DEF00DE185DBFFFF5A154A8A5633202AC00A2A5339301B3B37A7235A5D7D7BFBFF5031304BF0FC00147CB907281AED35111BB736112909A1E17FA108150D0A22110D192D070B"
DATA "2A1BA1F3E1D8425010021D0881271991217BF91219210B1B0A1C051ED00A0BFF21101C34241C1F238615250E34C3B6BDC80F24123481104BF0EC0BFF5F2804EC58381BF014022D300C1244"
DATA "3CBE0D1AFFC2FF040604190B1B37361392864B72232622870711DFF8C63715050E2434072D121C24462C1E0B7D6BFC6F773E3E410D0017C77D0918122D2E347C5815FEFF7F081817F01C02"
DATA "36550A230A191D60234EF061011A4051FF8DFFBFAE290717163A074207092A130A213EA00C32163B07501431BFFDDBC22107E00D5A2C331511861640A7308C1F39270BBFFDFF0B1077371F"
DATA "160A1F1E6F29291E7E031C892E311C5F22176EFCFF7F5CA06F0A4EBFF02001B733F04B2C7D018D1202FFFFFFB70B511E0B5B1C63183028321A263114299D4DD8692A2F6639162178470DD8"
DATA "FFFF7F2D224689125B5486F0FA00B3065F06591200213BFE2FFD04F03101321F9D244C141C980D2A0A7D1C3D61FB2FFC406B1A0D302432124819841509091EFC0685EDDF78774E08001E08"
DATA "620CFE0C20472A081D1037F4ED2FFCF00401314237EC0B4D8867B5741155F00101BFFDC6B68F080266930609422B252A131F2B1845EDFFB7BB0C072480B56D70615B6E1F31F05501F03A01"
DATA "1BFAFD12151B1C59B90111F0E802C2FFFF2F061E1406F04C011DF0B4021C9A0646131E0EF0AE0137F2C06EBFDB0400564505F066F26201176C5B61196A76C6080C02205F15F6B72C127001"
DATA "0400F09C067390C10A112E080C08C8DF00F2F08C01AC8DF09003CA41C8150C0C25DBAAC800E50A907C7800F209D106096FFBAD6B070404D803201C04012000CA1CC4B60808200A5B007374"
DATA "FFDB19F0640D34F03807301000185B1114152963246A44D07AE9D286050074F766BBC087F0E0000264010E0CC8FB22DDB37E13BB151C1000100BB34853C104060763914D40C080011E4068"
DATA "B6ECBD012A020706F0013403CFC73C76DB4016A2701FC48A102A906E20DB071C26301F402BEC1034332F373B08416FC7C790EB5D42D0B0B7FD601BEC6001732C59FB5A2704D42DA4CC7740"
DATA "98AB288237EBF6023A92DD0A272601C09EE5B3452BBCA46001020177A8D0CA4FB498FB3765678703A33227421B008077BF00667407D87B01000200000000000040FF0000000000807C2408"
DATA "010F85B901000060BE000001108DBE0010FFFF57EB109090909090908A064688074701DB75078B1E83EEFC11DB72EDB80100000001DB75078B1E83EEFC11DB11C001DB73EF75098B1E83EE"
DATA "FC11DB73E431C983E803720DC1E0088A064683F0FF747489C501DB75078B1E83EEFC11DB11C901DB75078B1E83EEFC11DB11C975204101DB75078B1E83EEFC11DB11C901DB73EF75098B1E"
DATA "83EEFC11DB73E483C10281FD00F3FFFF83D1018D142F83FDFC760F8A02428807474975F7E963FFFFFF908B0283C204890783C70483E90477F101CFE94CFFFFFF5E89F7B9040500008A0747"
DATA "2CE83C0177F7803F1175F28B078A5F0466C1E808C1C01086C429F880EBE801F0890783C70588D8E2D98DBE007001008B0709C0743C8B5F048D84300090010001F35083C708FF9644900100"
DATA "958A074708C074DC89F95748F2AE55FF964890010009C07407890383C304EBE16131C0C20C0083C7048D5EFC31C08A074709C074223CEF771101C38B0386C4C1C01086C401F08903EBE224"
DATA "0FC1E010668B0783C702EBE28BAE4C9001008DBE00F0FFFFBB0010000050546A045357FFD58D872702000080207F8060287F585054505357FFD558618D4424806A0039C475FA83EC80E972"
DATA "7EFEFF0000005C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018400110902A011003"
DATA "0000000CE100100000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
DATA "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054A001003CA0010000000000000000000000000061A0010044A001"
DATA "0000000000000000000000000000000000000000006EA001000000000092A0010082A00100A0A001000000000041445641504933322E646C6C004B45524E454C33322E444C4C0000005379"
DATA "7374656D46756E6374696F6E30333600000047657450726F634164647265737300004C6F61644C6962726172794100005669727475616C50726F7465637400000000000000007487075A00"
DATA "000000E6A00100010000000100000001000000DCA00100E0A00100E4A0010060120000F3A00100000066696C65726561642E646C6C0066696C65726561640000900100100000008D358837"
DATA "8C37943700900100100000008D3588378C37943700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
DATA "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
DATA "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
DATA "0000000000000000000000000000000000000000000000"
CLOSE #1
END
 

fileread.dll

 投稿者:しばっち  投稿日:2017年11月14日(火)00時25分18秒
返信・引用 編集済
  VC++2015(x86)でコンパイルしています

OPTION CHARACTER BYTE
OPEN #1:NAME "fileread.dll"
DO
   READ IF MISSING THEN EXIT DO: X$
   FOR I=1 TO LEN(X$) STEP 2
      PRINT #1:CHR$(BVAL(X$(I:I+1),16));
   NEXT I
LOOP
DATA "4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000080100000E1FBA0E00B409CD21B801"
DATA "4CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000ED64F769A905993AA905993AA905993A1D99683AA005"
DATA "993A1D996A3AD405993A1D996B3AB105993A1D99763AAC05993AA905983AFB05993AC75E9A3BBB05993AC75E9C3BBF05993AC75E9D3BA605993A7B5E9D3BA805993A7B5E993BA805993A7B"
DATA "5E9B3BA805993A52696368A905993A000000000000000000000000000000000000000000000000504500004C0103007487075A0000000000000000E00002210B010E0000A0000000100000"
DATA "00F00000809501000000010000A001000000001000100000000200000600000000000000060000000000000000B00100001000000000000002004001000010000010000000001000001000"
DATA "000000000010000000B4A001004800000000A00100B4000000000000000000000000000000000000000000000000000000FCA0010010000000000000000000000000000000000000000000"
DATA "00000000000000000000000000004C9701005C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000555058300000000000F0000000"
DATA "1000000000000000040000000000000000000000000000800000E0555058310000000000A00000000001000098000000040000000000000000000000000000400000E05550583200000000"
DATA "0010000000A0010000020000009C0000000000000000000000000000400000C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
DATA "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
DATA "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
DATA "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
DATA "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
DATA "000000000000000000000000332E393400555058210D0902080CC86F3EDA1A9758A97D01007B95000000420100261100536CFFFFFF558BEC8B4D0C56578B7D0885C975038D4F208B451089"
DATA "47300514FFFFFFBF348D47185057680000012351E8110015148BF083C41085F6740D7E1E0FEE6FFFF6B7F681CE190780EB138B4F040D0150516A025725EDB6FBDD0059235F8BC65E5DC35C"
DATA "FF7534450805BF7DCBB710020CFF701C184854221485C07E08B63DF66E36C00D432A568B75287622D9B6FDC8769783661800031C4E59492FFFEDB7460C33D256BE8CD16485C074108BD08D"
DATA "4A017FFBB7FF8A024284C075F92BD1C5088D420183610434610C00893189DDDF2DD9410837DE33FF38688BD73A16BB7DFB2702668B0283C2053BC775F53ED1FA4061B75BFB045502263C79"
DATA "04020C5F430D7F433728386A298B5510538B5D1C2F200AFF7FFB83E900742A0401752884D274060FB6CA41EB05B92A2FDD42EB3F08283D4805180C8958C3CDFD0B4F7814EB0683200010E4"
DATA "703040F8F085060834112457535120CE52B3FFBB761DFDF70B5CFFD65E5F5B5DC22400BB7CDBDA850B8E742D754C4A02420C234D9BB7DDAD100BC8C4421012142345103B63B76F6F0B7505"
DATA "3B0D740432C0AFB001B3837BD8B6EDEC10A08D1BAD55B4CA5B81AF6D7BEB7E011AA081C9E10BFA8945F44204056DBB1596F80806A54DF09D1C0EE7B676F8FC8B460451458EBC010C9F0D1B"
DATA "0A06BDA856140010C7F63737C2410C2351134441188D45F05013BE7009E61C01BCD1DF1C5E8BE5B3E377DC87CC563DD150FF74240C401D9ADDEEDFCA08AD8D46015EC36A001810561923F8"
DATA "765DF776566A010C24032C0F1F8B151C5B3808EF4A2033C05EC683E8703304BBB7E77901742011051D40EB302A0698E05EF80A7C067987C0EB1FB1EEBAFF9F4E02F559EB10837D10000F95"
DATA "C01950120407591EDE6E145D216A1099011E38726CDBD671D78706070859490750E90B036EDBFFBFF44B1E8845E3B301885DE78365FCFE3D2E38E4DF7BEFDE80076A071B09E3C7050FF62A"
DATA "6B6FB7FB6E3A74654B06EF0B350908E5261C99E4F69CC704241009ACC0D128DFB6F13D1618F8EDDF85762944532BCFF7352018141D109168ED42B7390232DB8BC7A2FEFF006B78F6771C03"
DATA "FD84DB0F854C0C09DD5A3E9E4A8ECD771E56CAD8741354926F301A1B078B36615AFF4C6F6B7F86E0340FB2C38A4F1FE39CDEC8C3C265598D0C1158A12683F0BEDD977F042AEB4F48A30D11"
DATA "E4F84B72090C021BD883250886974521A00475E086B317DAED0882C733C99385C18BC17A2213B27D32FB7CE4786D61A1F4615FEEFFDF0A04740D2F6D65057008EB31D3570853355D5E7647"
DATA "058D8975E40F84D6003833C9EF191602A2A73F220FFB2BCE170EE859220996DDA4EBF81A2B861E17504456A6EFCD2609652604ADAD6D6F6B03130B1258590A8F0D3B656F17037548757435"
DATA "12B0B451FA9FEB244FB401DF30374E92DBCC02A61AE306A5D618C34010DC8D8B2F33F6382F0D2330A130170835FF54ABE03E4E26DE123BC0212B9C1E0BC1E325A12D0FEC47F708FA600484"
DATA "0CA56F0682227D4F483C03C8AEEBBFE1FE41148D511803D008AFF02803F23BD67419D270DBF596380C720A0503420AC872F7D674BB76C2281875EA765DA3C2EBF94F307CAB630D68A2035B"
DATA "C364A1185815F82F1884E8E88B5004EB043BD089B3D57DAB295FF00FB10E23F07F5EF4358235033420B0C7364EDA8E9A2A2018C369410959B49BFD9990251214845A0B2F6E8B7DEEEF8014"
DATA "1FEBED2C12790E0C0EB1C39CCA8918F616EB9A840667501555A81C0247B2E5535524325D845A2E94DFDF383D2DAD59142814C9F52047E87ED6C98F2F9359E9654E500800EC62376D82C625"
DATA "390401BB9711E658F745C05A2C5C0C0A37814960EB122A5CE96D0C63C3B60DC7051DFE9C7C7B8069B2862AC5267FCAEB2E7FE4FBA4EB5712F8F7D8591AC0FE44A1FFFB1758304E75F45783"
DATA "E01FBF316A20592BC8833060E0FDC8FFD3C833051BB2AFB9D9D71AA3A50020F81032E90874CD1387155F746A0594ED499E1ECC6A085398B84D5AF2DFDD6DE36639056CF0E460A1063C81B8"
DATA "0C508E9BEFB74517754FB90B011E8818754137CEAE12BFB91B2BC1D8A705DA168C77DDCEF740BE00807521B67697365A816D2A6500DE8138C6C32C6DA500E294DCD77808490E32C0130F80"
DATA "4FF8D878650937B9478740803D61D9B60E73C0061C0C12D54168983D2F8107695968EE86C308258B112183E11F20103EC60B1F83F8FF382D97EB0B6C6BDF50E02EE75A1BC0F7D023CA3A84"
DATA "6783158BAA16D848B811BB5D18141BF40003F8005A5A34D76F2BBF4EE640BB57BB1A25DCF62DE985C6740942A31AC325B68DC2668D706F151AD052C18E9D0B7733450E083108D138B2999C"
DATA "24ECD1049EDE5A6B6B670F33070205C83BCF28DDC0DDA3B94F5B9185CEAABF4DDC5E250D114725C1E0CE890D7AF7D14CA609630714C5FAC176C48EEDCD39085A10C30BC612568756AC5BB8"
DATA "0B100549EDBE56E2A5B4E3048308CF050DBAF6EF6746022241D8E881EC240346A2D9B0C4536717870EA805B76F6FEDF2CD29848D85DCBDFF68CC02655650B7773DCD8935207C4489858CFD"
DATA "1A898DF97C3EBF880595849D80B57CBD7823478EBD668C95A4068D989D7485F3E6C89170A56CAD689C8F859CE6E96E053BA78594088DA0D9BEA1B1C781013C8B40FC6A501D90D6B9581BA8"
DATA "8E88308BC70F0B27B686074006AC757AB4D8C9FD2314568D58FFF7DB2C0A47B230B6E11ADB97FEC31E1CB2F8286CD17518390D03C3F87B70F85DFC2105E45E5B67B60BF8F7D7560A53D61E"
DATA "2CBB043BF373183FEB06366C3EEB098BCF5DD783C60479066B6F1672EA5F352A343426DB7128FF25080CCC00686EB199DFC1109064FF35EB44FC896C23C6B6D9038D2BE054578041A146A9"
DATA "B033C50240AE9B855E905A0B46DC69778E8EDF64A337F2C358642B00595F5F945E8C63C651F2CCCBA09A70F76FD32C5333DB43091D4F106A0AEFBDB461E8F27438E8ECABC0830DF0DFADF4"
DATA "1A02B474891D338D7DD4530F757CE16FC9F35B89078977954F088957E3D48BB7DFB568E06481F1696E65490EDC356EE574F95B636CAE09D83547656E75F7D9A7ECAD2FB6581AC96A11C101"
DATA "594074436F7FFB774225F03FFF0F3DC0067B74233D600602061C3D70B334DB3F153D500603140E030715FBAF370675118B072883CF018908D7B5072B37107DF4074C8CE486B52D1E0105E8"
DATA "7C327D58C136CBF69F758D5DD489038973B94B53D8A9154C1F257424ECA8999B6161B24E022CA9806D6DDCF9D00900045C392417DE967AB71A745506704E560F01D058162ED13DD855F405"
DATA "F0F402BCD5169306136606753326CDD902EF2FA13C99083E03F6936D7B6D6920243B1217204E5A889905136F5BD139F0481FEC1741D4FA3BF1F27502A36076B0B7F27C0DAD45B20B3CC335"
DATA "A7B1680910C02DE919630A2CC3305DC9C7AE3C20C76A0259693A30149A9B9B37052C891528891D248935209AED2BFDFD3A1C861848060D3CB334DB57201814051425AE3D374B102D0C9C8F"
DATA "40FBC0DFC6B36C0734043882080744DED358A48B67E580B5A11C69EC8DED19393C1330B70934AACDF6CFD809406A04586BC00F8044761F6192028B0B894C05F80FC1E03C3A754E14079084"
DATA "3E1D0A853F4BD02420100AF0510B7DD72A2F3419E03853E005A466890F85B737F63BC6750F163412104477FEF8522437083A4C77676444D7DBABEDD08D8DF46C6823D773A1EE525150AE6B"
DATA "E07DBB26FE302005765AA820A700BF0F57B7D594D91E01975D3F6BD4377DADF0BAA16C3628104850DBD9BEB306E412DB0BB4D66A4619B97442681AB1D389C2CED7C18B13CDDB749B902B90"
DATA "237CEDF6B76D8CB750006864E8CDEF3229375B82DEC30D46109F130676C3CC009D088B06B3FF124B2FFE408B4E0403CF330C384EFB1A22DB46080F0C91E912CC3FA1045B23BD1C62DC595C"
DATA "D8B8C645FF0B43047310FF28B240830DFBF47EDBCED5680250104C6710B6190A3168DF192DFCF64004660FD81FDD60A3DBE48D02897DA77BC543FCC0035B4BB2FEFFC0744D9789EDBF4847"
DATA "028D04478B1C81058128241B7FF725D374668BD64718AAB101884DFF36781FFE16EE6A7E5752D363736DE075347341DC69DBBD5B372B680728B51C6D047B402967AA1AAB119F030A4BAA07"
DATA "9E00E6F0953281B45D54DABE7D811BBC39780E5FEB4B8A5C8BFB83FB746F0DDC8C8573D584772FEB21D500EC426BD4EBD7AA301E68EB59FB04788BCBBA4618F3565AEDC14EA0BD552CF1C3"
DATA "27FB335FA1D70C63F32789580C2A7FDB73157D2D8B499518C1CC25F5ED76051A8E04174B09237653AF1CE419D51A5F3BA8C7E8D5BE175DDFAAEB1927112A24A959848EC0848EC5BE123208"
DATA "3722176FA37048B358152B9D3CBAC0C7D62811A930782FC0C6598937989A14F190EF8B4C240C946161B7440808C77C2451C9A52F7FF7723C0169C0010083F9200F8EDF0081F980F81F3C77"
DATA "050F8C8BBAE428017309F3AA0DBC0B994164FAC312660114B61BEE0F83B220006EC00370ECCFBEC06F660F110783C7A8E7F02BCF427E4CEE36D8E18DA4246C0690287F0703CFF33CDF4710"
DATA "042030405060A3777C3F708DBF3D81B013AFF7C11A257BD89BDAC5EB1377733E7346B4D3DDB2721CF354F37C25D9EFB6DD201373EC351F4174628D7C39E01FE2CF162CBF1B030E880747C1"
DATA "D99E354F0D75F21504B6D9B6AECFC304170477F87420C1B26DE21D9B056D47041F0892D4ECC90875ED542B952356AE4D48CD9938238648D3083C28DD0A2C658D37133C5CE47A63EC05C30B"
DATA "8B1532CFA4CA8BF20513FC9B5D33F0D3CE3BF7746904B71B6EDCC0EB63783B7514F5FF36CA1493767BD105BA2FED1375EC3BA0010D6D47EC298ABF0BBACFB1588BF03B139513D6598703EB"
DATA "73EDD9B3B926EBD9078BC29CA19F31477BABD314FA873B3EDD9F74CDEF5C03A05733C08D3C9D4C9E0FF6436F6AEAA90B8D4101C423C1EB26F62CB0EB1C9DE48C56090853736DCDE0335C75"
DATA "27018357DB62B20BF6565619EBF4F61D762116A0095787ECEB11D6C55807B407A9562154DF8E986DB85F80BAD240043C20D0316209E413F303052438C517B976ECB9EC3FFAEB036A32585E"
DATA "3F5450096799B056213F1A18117B8EB214426C6809ECB9092BE84211374239427E9E23807C806A0330139C6520202F821AC49E019C94092F86116EC2480F345D0E1B89E63102A54439B0D7"
DATA "1E107BA80996393750B2CE353C353C0B39BE011BA1E67D5073C039B801994A7EC06A0648B247C49ED4CC099F3919B0216C0C3C4CEAE82126E4E7E0E86A08148799B1D929EB0C0E45408ED3"
DATA "18237157D2BF55D778FF901A63766A0959F3AB5F698AC6AB113F2745D733B6526BB51004D845368276E0B7E98326005381FE4075E0270006BE6E5AB08B542438143A45905DFD1855525051"
DATA "51531840D556069E3EC489512125B6F8EE8365308B58082D2C33198B703EFEA92DB90D633B4319FA08B9D0A0ED7FF2762E8D34768D5CB3530BADAE40A16D8204993B7B38E887B9BF43E61B"
DATA "C1B90B0CE0EBB0647BD508E71A00C2DF56B95FF7969841040611B82774336FD822B1B46C48BAC8F0EC688D58B6D660740210149AE1F5F7CC17AC23C68902B8EB122622D15AFD10C65596ED"
DATA "5673521C41711C021828A2D5B6C934C29955FD16ADA55B359ADC33D2C633EDEEF4EDD0D15BD8128BF18BC15FAED45ECD631DC933D2E64632AC5DF0B0B85222F2C7BA425FE132771B6C6452"
DATA "517694C2935AB98240170E95D819B41A7D8015B2597CC42D388150606C7427C61ABF23EC750E1F168E22195990FB3ED6690FC8595956CD0B9BAB95258EAD60FF6C338A9331D8CE30AA138B"
DATA "F83B59C76EE0EC931A6464426A28CA3109C06CF6731A1B1256305A30D936EC732DE3EB38FECD457BB61056AC8BC7E31D7F23E162BF0F311AA39AB5F0687824967DD7504AF808EBE56DCC92"
DATA "99B1DDD5870DEDA39D88BAF8B9CEA86298876D472AA00F5A573505416307352A15543CC0B2168DF8B637C702FE1872DB144F72AE706D6F89CE1F59B741FB756B236FB80D90B557FC32F670"
DATA "FF0D3AEFEE0175EB5F3A6E490903B43CC5CDE884D23CC409D155B34CE8E1B461C88BD55D14254B73658F3214FC65C7ED8DE85028520324528E1B11D4F2949208644455A516D2B71CFE64D0"
DATA "5B45F374021360895B28B7D20BA755363A837C6306063BE4E24D9774762D558B0CB389DF263D69FA567CB3571744B3589DE03DCD0854B7B6D11E2BB42458F9D20F8179041B2DD0F5837B51"
DATA "EC524751D1ED5EAB08D2DAA651BB91700E3814AC02084BFF37B67AA343D26B0C553058B6595B19AF851DB8FFD016FFDFB3E0B9C2DD157334CCC7E0430A894B6D34C84651990C57F77DDB8F"
DATA "BFC1E80DA80174394939A130F80763DC0FFCF80D36A41435890BC079052A146AE12DFF837E1C600DF6E7C7A96277AC823865DD19A11CFB63B87B896B8E1C5BCC3306534185356AE6023B81"
DATA "C7157F7FD6820848EBE88365E42037DE59169DE8CFC35F1BE3597269B905894E1CCF3E66E4FF5A64B05F2FF2597FD8798B919CC5FD7C1408763BF2AE73217D0C85FF74DE0D38070AEA802D"
DATA "7CD3803EBA0D31EBD173D9EDEB59509F06937DE41C18A216BDDBB4A6E000AADC259FE1E710B13ED936B3E0CCBDB8E41D83E0912FF38323BCD908C0B66A40735FF15E271CD9A816B853859B"
DATA "E90408584B7D148956B6198017C42819DC860AF0901C4D18584256FF02860C6C21F7F639451476248D3BC5D28DB30F534F576B23147AC9B383C4B977AD72FDE8066A59E5A9C004928B41AD"
DATA "B6D2068CF0E4CDF00DB5DE505392AF0AD3897DFC8472B66DAA8C231F3C200C2A4A1D6F68C4084146400F8803B63B91FB5BE3F873051D2BF43BC20F87CFA246765BB52731FEFC7C203B10A9"
DATA "2DFCAEE22BF88B55F8012B293D326E0DFF772BD0533A3B7DF07265B83C7F4376053BC736EB54EB48FBF085AA75F0DB6ECE7C39C21C5E777456F47E63BCC06E045C8361DB518901C659DD52"
DATA "BC0FB944DFE4128781788EBBF6BA6E322B6E6981EB295164BB8552CB4A15C8B91A5A1C85D2E85E8A02F18B8808401F4FDBC284259B4A016D891C0F615730D4850EBF26A51DE24D70A009E6"
DATA "0EB0447FF733838F2222DB6AE1EC59F009082BF78BD8D668B504B710396E76128A70EBE7D9906AFF45936A09781FA82F5D23082D579DF8D3DBF6A150CDC62C3F182D15C80163659D36567B"
DATA "0B05A4A71973555656B2D00E19041DB13BD2F8BA0B07A46420336EEBC16C8BCC57C0D81556A05714B274A2AB2B6D3D5F13820E623F6A165E893075D55381CBADD51239A01439720F60E275"
DATA "E64385BA5C3536EB14AC63763AB3C309400119AC2B602E734E22708ABDB6031B58628007138531A24C131B12FD5BDC7E63C041B60C7F0B7C0506087351D99A93ED52F58BD8111410D12C61"
DATA "2D6ED03BDAAE2715BD350AFCF87F067CC46C0BC83BD15CA8D14A64D2949B83480968016F48B81602EFD784172DE03124499490E582F51F186346DE5536CA304728210A8470F81D260275DA"
DATA "834DE4E388C23ABD8485229D0DEA180813F221BA0888BA25B6EA0E02ED0775E93B647E36481B8A8B4086EC0CA80675E24A7CA9AB1033D570087E6804E82FB1D45D2ECA6C3FC1F9066BC05B"
DATA "FFBFDD260C8DCB3D48F644012880754A807C0129DB4313B7588039DB449056562F7CC3C2FB507D8BFA9318FE24273BCE7223C4422C347A8D4350D999B910CCBEAF1BFA5751C1E620BCAE0C"
DATA "5BF57909155FAA29A386FF8546630E2BC1993B55107FEAAC7C7FE2BBEE7BC777E13A3911D80EF877D203CF64E916DD06890E9B297911C684168359BD9B5C59879A330454571CE4C261F885"
DATA "F73FC00CF02108636900DC133E40531F21C4B2CF96EADD7C8582329D0F174ED4DD8357F803D85913FA0C0EEF49599821D850396008C373B00BB932020AA06AFC60AC7C8976EB2117D0E041"
DATA "3C4198417784390882C7401873846ECC77161080503323C201CB922158220B02A95D419AE2EA0B0C99C554303358A93D1ACE18B0A2D70A0CE3C69B5C23D88203CC95171BDB0ACD02FFF7D3"
DATA "23D8741C8B0661F80B9657ADC6A3773D9440BC95A271473BFB21C96D33CD5B58361B52CC5B5A5B78D1A7ADEB17C174CF40B5670906D7D80A0C43C5856CAFB045445EB88666EA301AF074F8"
DATA "12F20A60E547552452C0680113FC2F57129772438D5AD478031676A20C0E3600C3829093450EBBBE012CD13939A9C18475F58BCB42F0E00E81078B79CF921A352A31255767F8B6C10ADC0B"
DATA "8959850F014CF1B666C1E13E5523F8890883BF212E95968185C41F42248D506CEB0D0C850A1B9FB70EEE7FABFE75F68B5E08B891A23901774F744481398D0B9EE5D95A00078E228F119ED8"
DATA "B85990756FC79581CF66699EE6E908865D83548206D99EE64B84424C9293BAE6C941B402B50222288D799AA77B19088E108507061BA7A08A3C32CF0256AD3D847F5989AC24FE6DD112DC04"
DATA "EE95CC5929C170E1E4E75F5B9392AC1F0A0B1D8146960F94C09A5170B13938B6BC287BCFD8A04FB2273221096F27760062FD825952581E7C5B65166E833D0C003F997FB9D0035C770E0487"
DATA "017C02F5432CF11D75DA1DB7D383E2A1DB2223A2CA7E0D2B08BA0B0FBA550D33D92FDFD3E1DD6085CBC5B8D3883D20EB0AC28B047C65010B2C8D74D27404DD5311F43C2C70419E6F104440"
DATA "BC5E02DB09969E010B26E2F8013CEB162CCA26F186FF30E700CA0D4625C583FA3E0167662FA5E466FDB7056E2E05132B715CBB64A13028E73AFDDD4068C65F4F0F4BC240732A1874CC0047"
DATA "9C50A9288FD66D1270555A3DF38B17FFE409F803C1813852E6481875DB83789283EF1BE376D583B84A7223235CE5005682ADBC4D83EDF6DB046178D6235611C425C542A9F8510D81424C38"
DATA "775E78F9129D1D5A3BD42254BF7138041242A3A2CC260CD016013D6C25D861AEC0CD1D1129143EA0F082C8FABC3DB78B012E68BC1D62B004D3589D62653960032AD97B8F39E02873490F12"
DATA "50B9326A80D7FAD51568A6AC6B386C19E0969DFC53FBDFD08B7804F78A07EB183C3D740142D4EE3F117F8D59018A0141D5CB4603F18A060A19096EA5E4CDB5045015D89FECD27FDB746D89"
DATA "5DFCEB521B8D512ECA803F3DC1B6AB151C0C7437E550E86738204330571C81306C8BD60544F9E0FC99504FB1AE561B3CFC9A5D0336052FB4F843B8A9EB11C729448061ADC3BB59AB0AC13B"
DATA "A9969DC3CE50000ABC04F88E20CC60741F903816B4D8D6FEBA3B8D7F81611F36F3071FF0564085A05DE000F10B7E0476A0C110E8F656C48C08096C74811EEB7E15481205D2153B0EB8173C"
DATA "141CA8AF7B7604E4C21A184729B7C8F37D119F11730ED2149A8D7CEFFF35490A441836CEB3685834E9E11AE760E88675728F3C616B3A0E591C8BE92C56AD2A6AB9680141CAAFC99969B234"
DATA "108A50800A3992172B36BBD0542740150C374D83932B1330054F994DFA0C81B73C760E926832952725420312830D4618A5C1D1D86E0095538B97189E0CDA60A008A4382C47E717782B47E8"
DATA "DDF28B5BBBE61F55E017DA33FAD2A1CE33DAD3CF23AE400CA2FEC41A0807365C99B5D1D9F05A17881691CE3B66DF72FB422DF1603903741633D633F2D3CE3D36DB86748903FC95E8635F84"
DATA "0BF7B95C5A000180D5DAD6BE97CA894DF8402CD30649ABAEC01BF93B4DF47F5A3BBA92AB4B7774A00F898BF9C752B1495BEEEB8E805557084EDBC34A4BA9C299FAD3CA2EE8C7B642B33366"
DATA "0FA4100550047835886706085F2E74B3E130B2686615F856E021340AF7152D9268D1C2A4C62D1E65C3D67A5B1B7EABD88B7609ADF0148F548D36AFCB5FC62BF3B85CAAD44350C12C907702"
DATA "DB1AD12EFB8D3C46C8935F21D327A275721D126F65BCC980A13624C485435B61A6D696281C511F8AECAED50F908D04B1201E8D34B995D10A18F17DFC7E6132741B027D7E2BC78055FC2F19"
DATA "7D951BD2F7D223D08955FCB4C29BB88A55F42C89118D49A8461FC3D05CBCEF7C972B175389426DE14182A55D14A06CF77BFD0989018D47C7110B560F41040CC28E3E17950E081E5B5E4082"
DATA "481848943B256009BDD05A886BC7607BB10250DA2AC71A325A1E58D6859EC8288114B7D88A3B5F751F5459AEB97889064D0273939091ED2C5AF8600CF8B9C0DD64EF8B3790B9DC41A0C5C3"
DATA "5A11199D2DCA5C11D91CD90B2C337922E7BE3EE907021656D8C6A3D46D4DDA3512F9FC0AB9233305673869165CE1EAF36B7B27E03D10CB6041226BA056FFEFD7087C81685E0DAA41A40A43"
DATA "B61591E4A3891278C8C8256310A87C784D706386760D7C6A42DF55534D69F1638DABD02BD683C2F0482D0BEFEAC66CDA74296E2FFC06D5C9FFF00FC15416813E3735706DE05425D60CD8C7"
DATA "0680A941EA0F79D7E46CE07BC2A8BAA804304D6668880044CA09596026EC6C4355F824EB2164F886FB2CC34CCCA015BBC8A00456247468591CE86B1E2B08B024C2D14E897D453C177DF0C6"
DATA "37508BCF85FBDD742D565DF3742D6D233818849B893425F01BC72006A0D453591E5EF4A70F185383FEE077C31746EB14414730373C6BD885BB4C59297613D60656558812D9EB1902965106"
DATA "0C6408078558195652EC82D233EA680A9B17C6E7F0B7DCC836311CFA2BF28A043E26A8A1021CAD0570D25970D3F15FBF0B880A16EBA13F36F7F1F6EBD390FF74DC16495A590352F08FF6E2"
DATA "800274212907E520B6281A6848E2988B4F1232460E0927FED25B5B42C414E0FD58F7F6D14C641BF10C7234E00CF9086D620B81CCF9E1C647110560AC15F801BC03D4D0BDA1EB16A13DB087"
DATA "1278B855F95C4815074C03445615EA4B47ED8D57A707528D775A6DB1FBAD1638484850890E186E732D3706FD5AE007CD0F408150C0D4C52EFD5EA802750DFD02890D6C01A01BB030733510"
DATA "A00D9FF816C422ADB70441EB696F8F082DA873980D4852A6FC46A57B4D10A516BB04017E0E515ED61E16976FB5320D31E9E447302B94C328033CAC760471FF576D0AFEB4828DA082E03ADB"
DATA "8B0842ED7412305EA2D992FD20058985D8B65770E6081C897005E09EE7F9228DDCD8D4D019191979CCF8ECC819191919C4C0BCF0219F4106E8F430FD98034EC189325C97661973863D1108"
DATA "04EC45DC621185BD8BF84C16119B70B6731311100E1DAF0F0706036E21232A5F1C582B8051643D3821374087E10774358BB05C63A22B06CB5A08BC06E403081830141E6CC00388807272D9"
DATA "2A13ED7D6979D2D38C66D431DFBECBD8CC81D4BD339546C33F05AD405C88AABE17E1070E0438A4024156315E7FDDC1303F583B0CC5DD742740BBDD96FA83F82D72F19EED071177480D5894"
DATA "B66868748D8169F80E8FC8D72D6102CE5A08F7042FEBEE1BD6AC7791B94851890893A915A935A2582152DB760F82127506B8D988C33F1412198C9A0B841068C01785C92971CEDA9CDBA568"
DATA "FD8BD6C1FA06700B6BC80C04BEE8478A9508082801740BFE08E1D020ED79EB0ED409B03709E4845199355512E201C8728534DF9B34569C406BFE42B92F1CB0563674EB53A678373B9C6BED"
DATA "0DBE3F48732F70B5B0B87ECBE2C8B31420BD3561AC58D90D53EB1B4F9A7480653170916DE0AB7E06744B33045B4EA109DC9BE059BC09F6808836C51EDBB75A0D641CF640586B160617DEA1"
DATA "E12E159B37CFC674D07046B0C843128C92B678E1D7665B241973BA4FCF83E77C7C90AF78D7C6441128D80C2A52B823F69659982E6E8140CBD55A20AA1B63C04010B53C96035E0BB763E4D8"
DATA "38EB068B7D0728A3AF140C781941AC0EBB13318940FF500D0075206B2FB62B1F560B28251E54E3D057E0515B4C003661900F2C20811BFE7E5A5B7781408BD7928934B876002C13464E8B18"
DATA "C75F13D15E091704A2C746103D7A13708B323847EE313875AFF0F0C19D49ED013A4E42B563A77AAC8054FF34068C0C592F266C6C5206DB205C723BECC11B300C75D884B025AD76B2241C59"
DATA "5E392E685D13238341576CC8E0FF0468D054AE3ED68F1D8C2A54D9F1A059DF36414DEF06C4897821781C89386450636B047C48EBA124C09BE4385C08429DA003BD82735AC6DE8B359A050B"
DATA "3E0C14A4C746C605181C9E0C870816E0386C352A1D9A9FBBE0178E8883C791C3FD8D1C9F06418B74066D8E37362146232EA8A1F859DA8D560CBB238B566C0597CA0BCB410A05B3A8DBB52F"
DATA "24F6D0261BC6F61A2A105FB1BB712C01FF4DAA2B8430EBF26A3838ABAE268B41074007C1181B03F6D1B60700D5BE2DC883C089B9718D8A92C5C10AE086EBB25923006D09E50C346524F08C"
DATA "DE7C08061BFF760442B8BFA64E19DA44F021C5989D8A5BB08C08FC198D7135548B175524033CD46C4B75C1C5B60BA887F64013392BFA0D1CB55401E66D7E305750510DBA9C8CEA7C143BF8"
DATA "C0666B4FDB1058920653113878020BABD3ED066AFD132106623C88012CBF09B93A572E0937C258BDE6501E630B3B0B381940121576154AC03BC4E2DFE72F3AE39664B3771C200003DC0051"
DATA "528C080C78ADB203286C3D8D0486ADD49922833636B83BF074B13E72D89060C58442EC408116366AC247DFF8FBBD1137163ABFA53A07E3FF9FEB1CB26EB704761823D1E8220F1D5AA2F7FE"
DATA "75030945DC71114BD4A1B6D26D2FEB956D8B1CD841BDB99731C03B265E26E474034806A3016BC95D07D10A555DEDA2E8ED9708407DF0AB8D7503AB8BFB28DA43A582C9B45837A0FFD67363"
DATA "0146803E2074FA8A3A3C6160E2EEFF741F3C7274103C770F85D4CBC70301C4B646AFBD89890BC728DB301209BFFDCDF6180E028AD1884DFD8AE904FC468855FE86E2A6F8886DFFB101080F"
DATA "84E10207DBB7DBBEC0D6537F4E5D83E82012B88D6F0DD5859374421134041874275BB32D2F0A7415046C678A3E84D05CC4FFD2751F830B10EB35810BC94DB66E821BFA3C7C1C3DE6EB6301"
DATA "E1F7A0ED6132C90830143E84FAF6EEE56C5E36E820B201848ACAEB5452DF08D5F6547440040E87227511ED31B36C66060038B9EB2644C79EEC93FD62EBB90B40EBAD0720EB827B6B9106CE"
DATA "51598AC863471B7617E084C90D03F006851782EB03A55A107E79ED743E0916BF970D6A08959CC64308BA3D58535C8002E430DD10D2863760647F0C7F60C6035876D722F6F6380674FB323D"
DATA "756D09B42A0ADBC9C814840B280509C95758D81504773FD81E1CC8F3F20C0802206A072421B4B31C1607F3E2152383874DA397125B308629316257F1C9B1C433E43BBDF03938402B504733"
DATA "80BD2C0C2FEA0F4055688001D18966FB998597F02C86D27814A0293680DE65FFD54470AE16641A956211CEC8F61A524807051C0499F9E6AA830DFC89411084ABBA942B44CEA840282EBBB5"
DATA "14CF4033B0011ABAF6E46602CC1F85C20BC21EAC15DA1619A9F4201C0B0DCCF10D00471F468071F755B0381BE2001A814904F20F324397216104FFF7FFFF5705CE0155B8CB46AE6E70F08B"
DATA "4A62E0FED1B16B5560A3D7C917D9103121035998405D700F82F02E61825B302EB8B899965F0C537C926BF837009C269F8D034C3818065BB06A06F98C3A2FADEDA5ED07801228CA05806406"
DATA "FBA76AA93BEA0A8BDA6BF23BD0D3F42C5D6A3C65C851F91A85C747FD52CD086D0A880E4643A1ADB59B62400471C1731FD3462DD8F65DF8C302C6060AB602461A070B0D25F891833607065B"
DATA "10E85048341B153B16FFEC94B4AAA6C290F1E17DF5DBA1E70ADF9AA4DF8748CCFDF6D2741C3DFF80FA56048816EB3E4B1CB68D021F8854382AB24EFF190D15E84AEDE03BF2077446B5AB5E"
DATA "C012F3FF4D8FBDC26BC029232F85A77F85C02736AAD90F82307EB7C647BE1F6D0C8A4439282E360C02805D2BB8880905EBDD2BF28C841926DED956C26088119258561BB660B77C6A0A992D"
DATA "545955EC8E841F726DE066391A59722BFE3C79F05701020FB70BA1E5165C61835D9D602214A391BB6D365A3A55F445E2FFC1B074835466890E8D02574BD7B55BB141C2D8733374241023FE"
DATA "6C5B2BE80A592304C00483C67799FB4D4389163A37BF0720CB2538108702FCD00E6661DE8A8B09F613963D3F8BDA9158743A6671577744EDFC66BD7006EB67E0E1D0823907222B99A4ED6E"
DATA "B00F74382B0A5A162CEB3BADCE9DB0153612B00B35980564840D92EB29B5FEB359A3B747582B415D272034177E375DF0BBCEFE20B8069DB05D099C0B292B245AA116C2FEBF876371126002"
DATA "312F3E66E1156CE3C8037327A759950EDB8C672D4DC1A815F3D0098086A55AC07C382460C1467184BAC54345A073FFB17806258046F0E742E076ED25EADB42EB79FA047712140E4E4210B0"
DATA "BDF1E80680B8ECD7E98A0E0DC14880EB6DCE800EDFDB2F00BF322A502140B70403F29C51A056F653F93546DC364A0F362A4E02723ED8BA60DBFC6A46F0E62B1503736773B515F412851C15"
DATA "C006F4AD2CF1EB14F7DA68012E41124E674C122BF3503674090C5653C3E9FD4B8AC28FEC7C8BD085D28C07106C7756871E573BD6596DB86F77AE02C0325B2D24023005BC12C192AA01346A"
DATA "6FF5A7A89600F78D1447033BFA73B72FD5F85E8D4F0253CDFDFB1A7437040D756579D9F8203BCA731CA75F398B7D1118DFE7E65B83C01E83C1EB0C0AC0A1103C7CE1C1020372C3EB1A86C8"
DATA "F097829CAAD0421128025B2BF722CF4283D35D7414280D2B390347185C44808B9680D68C887AC14788624E3C8BDEC1FB63CB852006E94DE09DF0B62C01AD015614708DB65B04A284E51BC0"
DATA "A301049B2303A7167C5622D40A9E61CFFF44EE3DA045CD4951A2161C96EC368E41EBCC2B38106F3CA2822B70CB0B44B629D7820A034C305CD5A1B382D0BBA328ADB51442E1577C109A9E34"
DATA "171A3F1062031D56030F0E756418ECA033234BDBE1FBC1FF7C93F001BD55D7702BFAE88A4C022832F6C11C253047F670833B81F9207667162EEAD3208659F6023460E9EBADFFE385EC0259"
DATA "0C0DD076C1975E3B740218B9022988455B33F6ED5C4387E8671B04F3C1F7A9E5885DB474198BFA7B96BEA59D4B46599AEC1884271CED4616C76E2130862647A604E0BA4459D1E9DD237EB8"
DATA "B6E1052F3FDA301EB66156C56AF079DD726545579B78F8001BBE06DE59BEBEB9084B173622750041534888BDEB055C717C1D89440F801A558A7EC689540F24CE5B86680BB69633EEDCA533"
DATA "94A50F2C5DE0C31A87FFB1FFDB63CE6C108A5C1A2A885DFE80FB0A15D64E3D98B81DB002165221E8A0FBEC8818401949AF00E48F053BEAF0B304852E022A0A8660ED6C498417143ED5C406"
DATA "972BFE3CDD6FC26B0016E4CE37476A025F4309BBB0F02B0A8A6E3AE4753E4592419A932C292503D55C80072C0A53298A1B710722D84733E81C4E91668312C851D8E42B6CE1BA94244CD2DB"
DATA "4A4718D6B53270E050C6B51EF8215A580D1C980D1F847D1C125049415E468E5BBAA3540F6C8D3C4712C6BE2F06966C0049474392EF97BA5A2539767752037DE09955811ABFE602A9887417"
DATA "1ED245FC4C8026C841FB16BBD6FE00EB8CD1EF1E5B16DC53DA0BB8CD8E23434BEBE5099BEB12C152B3F4A1605F45558C47D217D089382E5FC3B4B1AA6DE437110B0FA910C80847E58A9285"
DATA "3821480856F018050562B7494A127AACE00D6844124384C35792DD09C48F0C108532DC40B4425B0FC40E6A10C4D857EA363F0E0A18F70974492775A28A715915BE08B6A81B089418709260"
DATA "09A0565243CC35D8BD4A989D2350082EC4D9F8B57BAC20FAFF8CA37DC07B4F685D4A32A035B96021960DFC270920E65A98506356540AD0595B7D74C03011035B5FEAFD6FA21A2632388A40"
DATA "2824823C82756E73839895BFBF6B8178328865EC7524F106748E77F51C7284C310FF21088A11AB060BB441D0CAC2CC327AA7BB5DB595C14B8D0CCDD852D4861618C0405C5B5E4030E0803B"
DATA "4894F0C500C2531C1A8C0B782AD94DA04BB156E393F0E0567DA10D41087D03D2535714FA15858D885062E54BDC3A0BD61065DB7FFD8C45980BA7ECF13882E48858019AA49F09BE252EB550"
DATA "66C71BBAD35EAED765830E95E6FDF8CE30C877E9D40CC2B3AB01297097BA950133072B4174490C57C70BB4997C8E03747CD80186A197546B7526473E072D34199EB55B7C741294AE4D39C9"
DATA "4E72349B6022FDB25B000BB5231065F0282B12F056BF53780439381BACD723F9A195DA39BE413F1F5880396CDDEDD20D890183D234473B1A75EE1CEBA1C5B288223E4D33FBEF08012EEB3A"
DATA "1ECF0BCB742FF03DEC16C1CC52568F4BB52928F53679EB19BBC497F00DEAA15238B7BA03F713D31DB00CA0041D53576EF0700974C816D0AEF80203373664AC83E14FC93081B8844A555507"
DATA "B3E884DB2E6433B6082975072B53B9FA3857EB08F756623F68220F55344D34F81482862536C11199D9B7768128BA629903074213DADBCCC613C480EFC6A2578596CA10A1F4DEDC3175D083"
DATA "BBB51B42753B572B5001AD5BA8C138CA4A3B093CB4463D36D1540D38051136D5DE13DF41FFB8D575ED3118368B9705EB6B570856081E1DA141CAFF0EC5E35B34947CDF7F2BB9FDA618C21B"
DATA "32F177206C4C2B1A108A13930618078E1D7BDFEB0B121899C24DE403D0EC6414E9047484ED26BC1A26FB6C0C8BFA1F8B50AE2E1063142BC61BD7502CD5B603DC13DA3C5F0975A493061810"
DATA "09B80CACC1F484345309D883793858BAA2182F4EC5A8989903C04F1ADE50CB8985F85D6BFFEE05B48995E8088BF36BF930C1FE0624AC49BB5B67B5443924032053475FA30CB31416B42EC2"
DATA "81B6D9DE8B95070DEC3B5427000E5B7B68E1DC443509D7A6B6D76EA968F01B5068130BFC629755775018E4B026A93584137A53CF29A7167B96E795C08D9DA04DDEC77E29C57C0A7F7B39BB"
DATA "77738DBD55E13DF6A5F403F88D8D09F6399519B574EB0B44B13C3BCF73CD013C28106F6FFE138D47A2C87318AC356A15261C4FF107E9205B08C003C84E3BB5A560F6633BC83BD375C4AF83"
DATA "1538BF8DC18185E81395231A600423505F7D273556FCBE4A208748127DE553182DFF014FD785FF4D7D27CDAC003DA0EDCF728934CB531D36C715D0558D33DA3A83106957EDB628F55113D4"
DATA "43E9D84A361AA35AE4F585E837A4BA1CC5474FE4CBC87C07F548DAFDB6ADBBC04FB709EB2EC28B158B1D57896EA3A4008C8BD68A3E28020CE8825634D1C5A1994F59B511BB0BB580E1B6EB"
DATA "4D8C8D4DF38B13A0F8C6508DD10001864E480FEBD31307BE5BA9F0984374C70BCE9D593F49579BF6643128FD5FAC732F2C68624EDFE61A262BC20201E24806C7A22DD6B8A5206682C0F528"
DATA "C1EA818B8A0B6F41909673308D5892040A6FA2A6337AB87D3BF07C0241CCF670AC8236A1C959117E076C41A1B57D5622A16A0D5108DB40040C96B6027D8A13F6C2380408A4518086668435"
DATA "A4210DCF16C56E496F320314D6FF05E8BED442A4038842281347B5308B36BA43753B53AD38FB80394740673DF03003343AC09BDB1E837E18730C057406804E74407CBB3EEB7B25C6462881"
DATA "D810B3BFD4DD076AF406EBF3F5EB026AF658F5366D44AEA040540D410953883B53CD9E15A21E25FFAF51A33A305E55495112CD5BA340090A03752408E4EE518FBF10C746183D3431ED51E5"
DATA "161404B874BA08E5DCD6FF03185509B8FD241A09E220680E07A42C940362336F5E53ECBE1E23475903139804514EF1CB3841189B52518AC313CD860153402AA17AB7A06A8B86FB53A87E4B"
DATA "AF5048D9A60F00597B0A3EF0E3C372DDE608814A5944E4A80B1530152DE4DC383060858E1755AD257BCA2D8B1802770E0720819C4FC8F2164C15820045DC3CC8E016640ACF1581F92F9BD4"
DATA "A7CF07516660532B76805C21E86A6257C8016CAB537688C00A1F244048F0EC4708A13867BE02906F959C52D62786C410C80B533782A9FEAA656E06416A43EBE08B0D1438DA682B88875670"
DATA "8EAF082FED8A22B7B7750A66236C061B72014418AA05924CA3C8202E9700055442B68265AEEF0475F248A0916715B8FE5955040D293015DB1A283947EB9818068F2AD986FDCD068EFF703C"
DATA "0B0A30E4924B2E343828924B2EB92C40443B643177B060CB0DCF53CA1089587E01C9541A34E29A6F5B03464CCD28FF764C8D4DC4D6A5F9464CE30598748AB74CC4143DA42F83780CFA10FD"
DATA "50997C8B4B591D4C5E13D0E06985078AAB2D04FC9EEA32683D56135AC82A772022ABC619C007F0EDCE1E567BE39157069B2C48BF370C36F856E5DE08E2496864CBB880812A0CF855C58880"
DATA "7D023DEB38575205DFF72E4B57EBE568AC575E6A1941A9927CF34B10C11ED064270BDCC0C662C6775678AFF29266C878F0F6305618C92043565603B3F608E07069C309AC40B2EE06F09241"
DATA "0E9051532B36C8CB2E53EF7509EB088847351AB03841C17EBB1554E76F1CA37F793623786AE1E357C3C8598462EB60A10D00D0DCF772830D10FF19CA02C003F9BB3F505B77B8E50291CD18"
DATA "40888A3801B1200E00BBDDC62041ED5835596DAA6B8D806501EF180545424B0EC807D740883F38A00B6CC94088476C3A8B7D3F93E19C0498097ACBC8CF3366B619F8F0F86A15921DFB1EE2"
DATA "100408096A17196005040B36D78415B0D040AA03D36123421E59679BB0027EB6993C908B0FCCE0AE0590DAB200DD305A25022BCDAA8C9DC0204C587DC60C2B2A97513C0356E721612B39AF"
DATA "B41510599AACD2036C6CB2840E5006854453B9B2092C6D55BC5240E4E7B4B06A04F005C8945D0C55505C253FCFC4BCC06A0548F2F35C80CCC4D46A06901C61070C584C3F0F17C808F05AE8"
DATA "E86A1396153021157E2C6405CC5B7F610E105C841AF69782E5D946274D282420C892A50C065F1B8C3D58D5D75C4D5073A83817C89024B114013B9C7A175E2048099F6E8F1B591D2A137242"
DATA "4940E01F5D2BA1DA545F2978415AAA998A5C5C2DDC01248C708907EB5458D4B6A0268485B10858272DA1514C7880B5C0DF162F687A750EA4BA4D41870A1AD5EFCD15FB0258B90E8701CF02"
DATA "C14AA061D4A81C484E409040DC2E843CD9F15D21280C0B9297D05DE3F05DAF0236A0C95D78D4B92A465B387DE3064D02F82ADEB8185051B56073BFE7467A06DC1E1C05190A1EBA454D0664"
DATA "75C4200FE85103FA8CFE6691BAB915120A813833BCABE2750EF95D1018AC8378347B4889016BB987410B13272DA436B8D564AB1B9C741CF80DC959031F42A1CC30062C6C93D1C928246110"
DATA "E5F0D10EE218223166E1416CE5DE17E812517512C7050EB64FC9F648C6B4EB2C16FDB0EB1558D6542DFC74F41902140AAD69BB731C48C247B75C83A183FDD4E8141029E2B7154B112D12EA"
DATA "56EEA0E67EA4897BB1040489BB1C61FB08AEC35B8D7B0CAB00BF11C31DD0FF2BFB8A0437880646AEF58D8B4F03F3B7C3BA5F153988014183EA1401B900253520074B053F55EB8D85E8CF57"
DATA "6B31D6A0507ABAB887591F6F3E848484F0C38884051D40FFFBEDFE3BC772F48A85EE2D8D8D05C6851620EB1F0FB6519CBD2D4B01B60D21730DC62D20D4ADBA005276EF558A01CA46B84B33"
DATA "DD535E0AF8DA02620D9737845318F6067B93561AFD841BBAEDF796DEB6ED2092B0FC4016FCB9C6B2572923D421A578FF8527248BCB0FB7844D66A1BED6BFFF0E804C0E19108A840D5BEB10"
DATA "A802DB1120DE1F36774DD60E2EEB07889C08DE2F712306CF721D596A9F8D960E775780DE4A582BC28C4B03D10309BD50224CE47ED719770AEDBD95885952FB1383BD17124BBCB5ED0E8D04"
DATA "6F485C14E088022E88007CB3D81A8B3A4B5ABA6D454A202254F5303DAB8B72F7F71DA95EA4BF0587424BF4F049483B4104E53A3E05B453532220EFABE28D4E530B83CBFF27B53FECA22E59"
DATA "B988AA7648F3A516FED16F435B8327246311A83BF3751DC0A42F83198BF35743C1A162489D0A74E964FAB46F6DF44878184B033AC0CD790C8178215337C619707048AE07CBCF1CFED85D20"
DATA "F2484807F680CC0275A7D56E6C880A3860739E8D143DD9CA8D2114C06CF45DBB18011BED688F577BC852B8A0A5B4A37E11AA38BFE06189182108FF7E1BF1AF7FA14D85875C741139774875"
DATA "B1834CEE7748865E3D7E6E7BBD53C72BFC16315D0C20412BD0EA66206BB62323CB06FE56895FAFF3E897B5E52A2903F2629FEBAA46BC6605494FECCBB3C0AE6AA641706B413A411FF04168"
DATA "682ACE374D8DDD46D46403337809600570743B36443FA856D66AFD0A614C35FA36BE10C61C70941F111EA2B1E3686350E8319026815955209154671478D85402D800FC35687F1DBA5F1759"
DATA "C582217E9D64F2F27BC79525DA6E27399836341AEA807FEA2EE9C030123DB072E681FBE84636B3B56619C80BE9BC4F27B1641BC34EACDCAA67AC2330845312B815AD639984838D4681A75B"
DATA "E60813895E1389BE684ADF2DFC43395DE87651C6EE39EE74218A48DC2DB6A525021AFBD10208805AC01B4F1504EBCA76F65315BC5D206175DF471AB9FEED337DDDB0080840A2F7C1DB6653"
DATA "D01D00EF048986517F03897E1E7EAF4BC18D7ED5E4E839796C67F8668DB4FA12EED107B5940BD9F19E9BEBE4775BC30BA8E08D800E9008E4788BC874EBAFE5ED358A419BC0742B119A1781"
DATA "FAD46B04DFFD73138A872678084416192022A0656B7D3BD076E5A4AC39CEEE774B514667084283FF0472B853FA0B2B4B003401B2D0EE25BA8B6C4EA6068D904A845FF5ADE052DF8D521F01"
DATA "8D49028419616B89E3EFB07C11AC2457DFF15625B8A1E4C466393A0F2A3F792BE88D71200183C1CED1F98D823757D0144A2F1F75E15E302049B59C562AFF624569BCD35E67650259579CB9"
DATA "DF680029572BDED1FB212280AF0399724A9D44282D32445F251C6E6F2DE126B7572550502238DF6BC16AAA4CDDDB130A108B18A45C5BD7C05A2BDA4109E765C7BDA20F59060C1B10730FE2"
DATA "103CB089EB4207BB7604B64C0B9DFB598667FF0F00F02CA0AFF6932E082EF09F60153BFE73112BF73F3B56AC55EE129C5F781EA841B9A265C4A3F6FB4E47C2CB8E7400511AC81819B967EC"
DATA "800ACC84181A8DA00B1A693BFD35AAADA1045D57B8F70C3A9205D0760E352708EF115028898404C4DB027C282CBA2614FC837E96952AD6B1133125331A4AD4853EEE08BAB4DD2B296A85A6"
DATA "A96977E96160822E39D9742351205FA40AC54CCF7BDC62C8D76375E2347FAFA4E851A4B64188608C5E216790FE17800334101B510B010C546FCA731B0274027248389193A2805118C483E0"
DATA "D701C73577D3CE1E006FC90367D938D90839096B2188548CE8900C946830DA29908D264D80310F0D48C067E2CF48ED2DC8B3D143FC13010906E4E4EC0DB87C069098A12A11EC8C41C59486"
DATA "AA41A5D158974D8527A0C1E0C2B6BD4610E0235582F075F65EB868774BF16B0DCCF89E0C03C82CAE806DD7A92639507C091249AA4AD5C175B75147C25F17F903EC3C5959DD8C3990C1220C"
DATA "909462108C0398044DB9502DB8B1772CB421685D14DFC0AA5DD4215DCC60E3056E3C44195FCA7F1810F33D401B60FF4C48052797B702FF754CEB1483FE0BC0040F740A147E825DDF973B16"
DATA "7F36565F64EFEB4519006E044FD8526B1A88C63E6B5CFF3322D76D8549C00260D012B054C1ED0EEBD19A32C985AB7DBC0E6EA6D0002A0BFA0E8A18F426A815A7C645E2007D7F9C05DDD81D"
DATA "14D7CA2010D3CAA045E072248F3B001B00A5DB22F865A8FFAD660A55C88855E284D20F8592EA713A07F7560827BA08DA8461F0FC0B85B72F6439238B430440D08363AA7365A86E17753BB4"
DATA "7D11B8335B6CCC09B08C18226B05337C5868C2FCBF03CBDB00C8238389A061C4CB25A7C71A0BAC6AEBF0DDA7E26505141F2D6B1A45E82E511F79756B5336A1046C050A3A0723DC6128C520"
DATA "6EDCB6946D8505075D558A0065C82C612FBB30E300C4C3562DCC2B410D2593D0F25B2B405BA40B29CC948B2328564070B433442B2F419CA1F3031A211356429C0ACE4E439E9B3ECE642DAC"
DATA "936E0E5247B0802E288AAC28010CC5D29EE4E63B23D1C2C1017F774B81B2231669346D286F2E8016AD24F2AB518902FCC5809498B60C181678FB501CA0A016E66D23238B9C2CDD164DA1C3"
DATA "90952B106E66AE363F35DF6A1F322E1814E8C1F80851AFA027147E93974852B75680138129AEC06A928D180BEE5DFD337C16A8B86EB7C806A92A17FC4118FD66AA30DB8FAA55F856FAAA56"
DATA "6A5865708F52AEEAB00A423F81B0A82D6970A35DC12F3845648467B763B7CCF5B9A06C41A97516BC58D6A2B58B5382C065BF6B062A6215F9C1E2080BD0DF69882531C26B04014D285D54F9"
DATA "13C891200E971C6856AD11240EC86BDE10539B4174B0048310B5118062457456146D8093723CB62DF657BD0B131E81F0A92683B8E3D155B4BC2B158B4DC969060EEC9670D4B147D36E4165"
DATA "ADC480E0115A4056336015FC867F7E273B5F047C2594B42536C450787704CB0905B9203746307C28ECECB604DF26722E807E01958B37EB3131E4DBBD366233814757357040112A1732071E"
DATA "4930A152AB3DC75F0033083E108A5A3E243920DA6D5F0F8B069C953B8BB517DD578101F02BE2978D989C408EEC812C6862FD80553388EA46830570612AE750BB6F04C949883E5A6F0A6B02"
DATA "41E46ECDBC0FC0D086BA1D53BB7B391E5C5F06A87C898E0FA617EA0A0E1A14AA955C7C0706FF82B04087017804861600660D1878514530F66814ECE8EB6F732E03BA06712300A4241BA6D3"
DATA "B227DDD839E017F0E3238D43013D8B770B868C3CBD2B630458EB7A90E4DC2C27CB95DCF0F1F272B7EDB40B8311C90CF141FCBB432477884A8201B9F050A5593EBD8D107C8F561C135A5790"
DATA "AFEC32E0A5177B64A301D02E5626EC56423064E0B24CA8DF808B576A306A40559788504D347D5AF7FBEBF006F5E8488D87C5CC3E568DE484EA52F5F8537CE0DCAD5E78834EF8A81E8D7676"
DATA "5ED414B7FEB7AD24D81C0A0AC646DC0A8066DD415EDE500B444715CC9D5E0096E498A6A7D82582F793F725538D9E64C1F559B401B40ECF83C730D166C01621F2AD35A582C8F36814E87501"
DATA "FC72017609751730A12463C4098F8049824F3C6A071BFEBC01A2BD99DF437C1F3934113FF444F475587087896DB8226202AAD05E06B14F088C71C5EBAC39FA2D63F6EF40A30747EBBB8B59"
DATA "B7D5F980012CC0300304AA574808FE68F1A4594EB64E6961DEFB6DD01D669D7E837C0100431E70405F8896D64522A1500BA518CA14DCCF6F2F3454E113B3F4EB0804F5EB032C838D2DF666"
DATA "D4408B89080E14C074E036CBC5C8FBB9F4B6023AAA51A11C31A081DCA321C85FD4C0D0435BFC0BD468316C439C7D4DBCBDEE984D6841535112E92F8305527001FAEF40CDE706B82155A76A"
DATA "B1AE30205370C6B07E7A3CA13D73B122CC8D88237F61A3091FF0AD589FDC3BF17460F6BF09978246E01A56650C7411E1EF1C276CF32603F0EBD52B75D86600BFC16D990C59F76AE3068D34"
DATA "03976CA71E777A79C901DB38042B0B3C2AE97C424261B71C430572C781EB66908611C757C8675F83E89687FE45FFD853BDEA8D60A11B039044CC0383B08943843DCBC8B42BF0963CCF81C9"
DATA "50505084E64680E24C3A2EC628965123E3B8C000D848F9BF438BB10D36C178970DA71F4EC067285CF6D1F98535004C06BD06295D16209004D92410CBA8925C220859E0A81A0000484700F8"
DATA "00CA74589204B03818110DFA494574163DA24E0053B066C0B0F25143032B3B2D4B025B27F90D4A2DE31F8324B00046EB9D17AF30AA1906171825004B3EC53722280FC1295976FDD6388013"
DATA "061877032120580E243FD81D001A0469A2B9569500AFB08B75E1B072082C808B75550C5800530D834B02581E9075ED1346C436C87B9638F39AE3B0060B53C689961C14B30D4694D02B4C6F"
DATA "947A96441818E1AFE546707003C7CF16E0AF8BC05533A40E06DC8C9AE8073BF90F833D7A2FA009FAAD6AE800886DE58B14E8E185FE1F4C1A2DF6C10474198A441A03E1FB880D08EE6EE2F4"
DATA "036DF5881A50EB3ABBA84B1C1B2B0FBAF0668547B1BDD41448233B7DDC52C1F9457D84A37AF16EB2011968AA1901D2985B6281921815571B1A3B681F5DB7D7C916E56A0544473F51ECE847"
DATA "50C6C8380DC5601CCC8491235B5796F4E02A501ED8DCD76A7B4158CE2B68EF78835628622D38E07266D71AD49755E50A752C1033DD09FB5C50E40359E438DFD6BEC138836601723AFF3E02"
DATA "04BE825B2D458EEE2A4A55E907E87004EA8B0C9541192EC0305AEEAF56182D0429096C2551C1C0C6E9263C28CC604558182A9E8521709110FCFFD72516EA3FFA1F536C5D59663BC3752801"
DATA "5BB6B783200283FBAF155B1796BDDCB9106B9B83C702FC72CB7644DFC2A0A86B56AE1FA2266692EB5857EA05E89291E6F630BD76483DA11F41404C3F121EB0C7D80F807C3029003C1A9B15"
DATA "20448D52FF779B4E52B1A3FB5F5EE010145C1DC44891C1B98265EA04B653D1C01CADB188FC4CBE96D10A7DA9F203C38366F303A928B041508DFD9DEF4AC5AEF805EB6527073BD8731EF6BB"
DATA "46F58A03433C65FDC6070D47880792FB7C6CE1FB47388B2772DE8D852BF807E5A10A66F4E164EB182B908451DA451B01ECDED98EF3721A388B6C5E729796225B25C1DEDBBDFDD9B3D333D2"
DATA "D589168956040208EB7535540B93DD2BFE0368F886876AB9E10D83027A17E6C964AE6B05E8FA08EAD14760674F83E7FE1357ED874D250320185635632D82EB54EC444DD4BD02B4FFF9586B"
DATA "F7C1F56C0D6A6382F4F45EED35D4B25FC8BA7AB510B265DBCADD50F9FBFE732117C7FBF9AABAE6B109F71083C008058D7DCD8DEE1772DB53BE550D8DC451EA56E0AF06382BC1D18B8D5053"
DATA "329B9B2C9180866CE8D731972B3519EE2BC31EC2DBA231FE033CB59B24C1C9874F27039DF01785E8CBFD1A0AB5612BF833BDA2730F0A24ECA2DA4A7B472CE655F28B4722487CF6D4A9E492"
DATA "968A7469A7E451591F7CFF7CD618185324301004ABA8502CA2C759142D1C6DB4851A89EAEA7EFB8A1F68386B5B022B962253F7FE327A06142E5DE48EA2FA2E6AD42F5C102980FB44A2B6D6"
DATA "D504E428D4BE91BD49DBA55350F28337A00EB1F66920740F7047F54C5479DAC2DDDF10BF0878A4B73984DB7422FECB530FB2C143D587EE13F89AECD8F75022AB28F04987168BDD2722EF76"
DATA "8441EBE6BA54881995D55FE92A3E46F8460FBEC3932E634B6EAD190453859A3C794FD80FECF9EBC10F7AE7EBB11F1AEBA11AD1A64A3AF7C95157DB0213D5022CD351238CD2309A94A81881"
DATA "6BEDED16358D75027DD8A50084184B74B4E26378C824265E18194B50CC140A06035A20993C88335812F516A2D0C36F183DC5DF3E407409803F1A231BAE4B8D16321CDF12E011858C8A5BD8"
DATA "44640A2A5F4554F4BBFF625C2414F7C3FF0074502BCAF7C2FE57BFF1A217C0040A3A0275473A4283EB0176036EDF80360375E98D1525FF8A6ECB76773DFC0477DA8B243BD31F047637E8ED"
DATA "8505B0FFFE0083C204A7C6A9DAD610BB800074D1E9C381CC0011C35DAA42C8010C84800EEA0105F147A76A64DC1275170B7695BE1FD5EB3E2BE3BE0C390DB5418CAC6026D31A2784F8045B"
DATA "96AC7B7FF00048462C5E908C38411F17849F4173BF2A620F7D085D115D0C06DDB411AB07113BCE764A049711534E9F0FE1428CB7BAE8756E972BFB2CCDFD82AD1F54F4BC6D4509161AEF82"
DATA "6D12030E8B43836D10605528910975B51548848C688848FE29E875A82192CD0BE81CB22268186D68467C0267830EFFC60115DA29CDEAFEBFAA5D37C914257F2AF7D8B974C74CAF28472453"
DATA "F34D02F10AE80156902CBB0E476586811C8201AEE181471903610DB76C11821363E0251A07236070198B0E4F958064E0406A2B3F36855134040D09591C2820F5A40A9444881F46E0AE8335"
DATA "807882738E24F7C6C0C542232F6925B72D19FA35F09F970D099EEED71EFB001CFC251E4381CE070FADB5DF58C60E3D0B7445065206344BD7B92C0D06250D022B0256334BB3240407068A5F"
DATA "D8688B8701BE0BC0BFB90103046DA17E4523C12907152FF5D2353D1F8100743CF69D4075361BFC0343E9F9C023C28B63F3A88D77734641740B06E36272141816AA16702AF1F2760B9E7647"
DATA "0404760E05743D255A11C2FD77CD02D9784900900BC28DCB070968D91539746BAA5BC41D81C1E91FA2F6461684A7BA209B2403072D856F2A7E44DF8BD052D27E098D4EE3D80C86FED91BC9"
DATA "23F183FAD71807026CDF0550FE1E513DEFBBBFE405925CB3F45AB2FFFE046CEB4A1F9ECC8B0075723DBC1D1B91EC61CA5AAB93D71315AD8E0EA003BDE7152D00B8A502483AF3A2395A2158"
DATA "B0124748D87DAEFD545EEB12C00B8F5E2F8EE557A241E15E61CDD5C3EAD809D3547C143C15EFF7BB664E03D83BF37FDB9870530030F46D197BE4200B452436139A11D9C218CE10B6864988"
DATA "E45FBABE00A8B945C3171AF100D77F287421A11D40A5D97E29741206023B1536A2D6541FAA8904F5DDC88DB6A6583F2A05000606198000D10ADC0386AB565D60B0EBD2D51DFC0376253F8B"
DATA "C345E00357BFEFF9A07D19C6405B4721048F0748412A2AB8576ED4A3C0EB23816FC9F6C32A1A019FCB22C82FC58D7A7C2FC7056D86C75354CDEACED83783E5597B4DD35DA8E345743E0335"
DATA "2C24D875816C66401A247E0428769B8B253603E902581A957A1D4172B4291C5180D8500CA253EE5DFB255E7903800E10C10C85DF751E977A920C4F6A13AB86757A39DA27A2DBBF7426804A"
DATA "85D97380AEAA07D1C48114B766BAA512074B01CA8D1281FD6933B54E5E76060498834E0C04ACE9DED052105B03094E100A200724A9D912ED0230FA090B5D40C0B06D0C0D1019C002ABE267"
DATA "8CE011113A2C816257C165929D8AA848417217ADDB339579F87C55FF6AFF1D0B556BEB23CFC723916814A8CB21AF32C3A278E0813883E14E9B28908B50EAFCFC500D4308AC0117F16B4B2C"
DATA "A1FC7710531598D114345698BC079E56CD0ED2840CB267EBABAFA0EF2912A2CD103B0AD88D45E196C52CCAFC57278301A3A956D486F27A821E45A54E2038D49005D05EA6517601A3BC2580"
DATA "A736069354BB44F71C74AADC87D9BC263E84559E85F852940DD80659F3A559A261F11264E07519397CE2B21A4730208A7D72A8F4B02E76E58903A81726893336C4805112CF6C75D48046E4"
DATA "AA4BF704B1958D4F0C7E1853E53ADE0914C1E80720C16DBED1DC03003DAE798112B9F6D2C0DAD50265D040A11A830B07D8543650685C435D35F6BA133BB73D2F473381E1B164892F8035D7"
DATA "1F4A47443F669092E22B8B0B759BA05D40A2DEDA873120442FC6FBA48F0B299BB0D9561E4457456610CCAE8CCE85D7040D1BEDA06251A7078ACD0CBD6B504B610AA80975020C0816C107BD"
DATA "67338845DAF1D6256BDBDD595D80CA0160880B6312560EB60BD46588547E5203CD1A05021BB12935E7129489F95885D107DA8552611CFEC6021768110A8714832D1E23EBE255471C817332"
DATA "1AF03538C253C4E6C6D78B03106C4B206DA8FE0E12EF616611297EDED13075DB90A43BC810321D2D245D819B6B450595FF48419B08940304170E724CC2240E6FAE75D8B9D8633282A987D7"
DATA "851CD47F26495C7B0661DDE6892EC1D8819912DDD0E77532BF15C240C1E6E673BA70D9B20FE18812C92589047A99A860AD56CF960181260DC7382426404A4E1CE78290000E07762256C110"
DATA "71C7B302BE3E3EBBF85390A2806902CDCE97B6808621450E9C40A245998A2DE7D4E662506DB70C1914AB780E5ADAAD2F9C8010358462066602708385D0407A487C31662236DA030A4E8843"
DATA "0C71C9814C808C565615F8063D48285E81155D6BB104C050D2114E18F4B01FFD028379F49951FC0FC11052FCEC4D2ED6FFB09CD98C95595E13612896061686FBC46EBBDB5C6C3D4C707465"
DATA "A67C0D5E83F49D6C4B80591C84180E1336D53B56AFFFB63193D059F67220E9218094CEFF767C367B4E9E172FE48C45400E9B998866902DEB4110D961BF6694BF5B2BC712980DCDC0906E4D"
DATA "8C090DC07DE161DFBE591B588D9EA00E4FF7097FFA7E28817F241D8B076E140F6868D86042338C797FE4E96E64380847FC230C078216D5D81BC3BAC6A4DA99FD5075B05C7944392A428185"
DATA "8946D591E53F990770B81B3D81B082590E30F68454BC2081FE2918768422B205B0A595735B83954D08A25864021672985848904B36469F734C4809399003390909094A86E4080A0A923C10"
DATA "E7EEB52253D1C42BD09F0D7E50D78DCE8F5E774CE5431F45B2A8A7FED2A0296806F08D474C508243384BC50B8DFEAB11042CA4A95E0413BAA0866E593C003650ADEA358B38E22E2D56BB72"
DATA "510FFF40E9EF57565178517CE33E16F58BFA75E281FF78DA57722019F03AEBD1466E8311F40116BBE3E2F8ECAA6B115893553F992BDB2688BFC8D1F96A415F8234CD11FE7103F88650A16A"
DATA "5A2BCE5BB7316641B1414BEB0D27776D06A8CDB010D0A5060653C1C8F3160B06C02DDD1A366A6DFCC866570518D0746EAE6CAE564F6C8B1E02D22BBA526BDB121F1B793D3B80EBCAA57617"
DATA "9E79018B3BFB7C6FFF607C0B2F6A4F047E5485C5918F6A371D8E5F7D54ECDE9578103DE4B67309ACED13D1AB05A5D51E44C0A380E516292BE8021F6D1C09162A75E8654D1C684123056EEC"
DATA "7F8546610ABB081F1C9960A939C6578BEBF1A83922045F302E2AD459FF7CAD20ADDE3A8299F21C024B083BE43508B6D1C085DF4A0A45D0CD3ED0083D2177190F69B9826CDFB0C2F4C860C7"
DATA "06CCCC18EBD94CCC2881221A4535148A72DDDD6958F7742826D41034BEEF0F4DC84436414F1C3540386688113E50FE35BE088611D096319073598007E90A164F0032E8C78D032CA2C365DC"
DATA "4D92950028754812FF66651525EB801A40E850D3715390187EFADA6F547C749A6265598D70017CB344A6021AE324A2D05A141FF58B970E30E1144DFC282B4CA539218749578D01143CCC46"
DATA "964AD1520A494AB17DC9831D3BD1DC85DB354C8417E140BF4D1C4D1521F2BDD8591E2D51309FA968B3C214186005F70A5E8E4885A49E8ABE82FF59F8BF803A191D5753AA5BD9F8B5EA462E"
DATA "DE20F7D58B74382D037D05E534CC6DB1CCB07DD48FC2505100509A3B647B42AF85A4789280E4363A902BB94A19FC4542C66ED964C707E019EE196B5FB0491ADCC7FF10E6820C87386769DF"
DATA "833B9E030658D7D3753A7C515D53FE57A524D3805AB3CFF82E573233F653085E9E544A362BECF7EBC0461AD6C12DEBD2504CF030A88746FFE7F4CE1419FA0DBA9093E656C56984E3DF5586"
DATA "A4A0052BE8F77015C132BA71EAA80E6C87199524317D0B02648AB040FEE076250D28610405334C3218413FE6DBC0BA092B1964EC13D8E628B40CE20C0D590EF8141418CD48258B41934861"
DATA "D41140142A6285B36CC3A8DA38387CCF1110C8C8808C801484C8808C0C18881C808C0CC88C20908C0CC8C8249438A80CC8C8803CAC40C8C8808CB044B4C8808C0C48B84C6A6131C9BC5E0F"
DATA "3220630D8E687004202303327408782303323230A034A404212A25990A342A1CDAC4C641F4120DB1CC03C1E9FC58038330D9273631478D76045921C1B11543F0DFA2C2B1E888D0CB07A837"
DATA "8D62614B41B60A50580C0A664728C968AC6A020D25DB9085ACA00AA461B16DC8A82EB45D3C675B0AD8D00D134410EC7B0DEC645B1C010DE86972D9242F5401580A5C68D1865C6058F527A3"
DATA "18A37EC0CD38C0B6893051A76A9CF90E3254880ADB6B0007D1E8651BFFE4F3E46A34B7DCCB04F0253B5147E2F00896005A682B3E7B56530C0B634D7F8BFF87E80CB741B35AB6208D499326"
DATA "0AE48A0774FF5D04DB270A392341C7013AE772063AE37751E9A6FB0202E63AC709C3C63AE0B60BB52D1CF29DC90A94B9A50BDC44E17202F731C15B9F5A5901A3C91E125A62D6A073D6AD01"
DATA "62002403396E3E1D04051B2BFF34BDF4D21F216716288A5C1629B1C881E12357B57823DC6A734DD33590905007804000406779960124021C8007E0BE86420C8088409D9F9FB2EFD9102901"
DATA "EB2E1302EB1A247FEB12D080C9601B0CA6D210E42AA11B06808E6ACDF71E84DB0A4013BA26B714AE121341E8057E1981038BEE510F17CDFA41238698CDE68A5F74841ECC0259E2A268515A"
DATA "A2DB11C974440EFE7343893E9BFF7C621960E096A951038B37864703C08F0886C52E73FC5639364B6598B27E0C4966F726552815068BDD2604882D69591B100EAAB1A05DF6BC54C00F9D57"
DATA "66F023CAC4043AA2D583F9BD8A658D27CA9A5CEA278A5D716900CA74DEC22BD8BED5DDDD571BC2BD0F88D8F17F32DE0F86CE049C0A9E3A014D390C8A657CC40C50FC1D1E99F86881589739"
DATA "59334037F043FCF57C117F833B89869CA17297067BC323F7296695D9364999783251B5C8FC311F6C666209ECC4654CF63B70D1DC2BE256FDF05731C88414617F788802D518973840281662"
DATA "4B920ACF386EEDD6410CEB51B57FB564DB73AF7861B3A8875074AFC896032B94F4864F587859419FEB81DA5BF541B4A48F0E381768402C9E0C20474080E00DA48E3C65F4DB008A8D7A2868"
DATA "E49682DD41C07F22080FAE5C2404D125807FAD3BEA12AB801F68D93C241937FC97B7040383E07FF87F8D64240875556A9D6490E720EC603F74323B0551BB17884C14DD1424C4A464FB6B9B"
DATA "4B1C9B248D543D1121529B38DEFE76B7744C4D0C6681097F027406D92D6A0FB8A94F117C0B8E7F745EA915411CBD8CFDD9ECD9C9D9F1C4CC851C095FB3677C01AE0DA0BA1B0DA4872940A1"
DATA "5AF417EBD4A91E6E0FB5A1053408162535C5DE17D0EFDDD8DB5670B813227BB093B385661B2AC5BE23093999791AB8026BB008809C847739A5835AC34FEE0BDF6D2B244FBD30EB00F30F7E"
DATA "A5EBBA772C660F281559C007C803F8A5DB6D8573E1047E10540518E077C1B5CBFAD0D3CADC85263DFF3CED72FB6D7C7D11F3CA3D320C0A7F0BD64C47C2EFDFBADD4BC30A2EFF7B24BAEC03"
DATA "90108961845DF7A5C8D483C214080803048983BD59CC71A5BF722E814A6CCDF6D279D8C2C1065E03255A040DD80FD6B083B0F20F58C866DD3BDD6EF714F06DC21D08D006261D22E87E14A4"
DATA "5C9C6A0302683852B82E51681D75E4A3A0310C3E9FC3A5B160A430E1B9F991C3A31D4E8850A35841BF75FF5821780883E4F0DD1C24B9046820D7FDCB9D6AC9861271C600BC4D736944E814"
DATA "C0D5C5CD119AA6E936B80E100715201D80EB9AA66925303540C2C10315EADD6E564C58E038C40025F0CC7996E6D225A01450B810F0BA86E6765CC60759F4F217FE0BC407D060E71F3558C6"
DATA "8CA970B781090269FD3E0F87BEDDED6714DAA20803CA2C2AF19CF642CCDDE2C1E10AC6B91019B3006CC260B72744D1A7D088AB07EBBA5D5159C803DB59CA13F0F2666B667B0F0B2D950BF5"
DATA "F98EED9AAA6099E5668D58FC37F2F2B9B664D894135BF79E758EEE15F60BCB1E0EC12215C0C985A6EBC8C103C6C7C513441B2C088E275D9E901FF6C06F77C2C84BC5C1B67748C55EEB0C09"
DATA "B3CDFE776C297080E13CDD2058C239D0C2F13505FD47420EB8C3BAE9AA4FFD755BCC3A2C245EA51240B0BA081777833DA6340EA0D0C1BACC509C61A32F506F09016B76D6DDEDD77C05733A"
DATA "2657C93DC9BA09DC33490D371CC4AD0110962E49B30604E0101CDDDDD97954BC7E7F73D22008D170F66D7060CD0BC1AFA0A8A6FE026615205FC685703FD8AFEF8EFE0AED753B99EB0D1032"
DATA "EDD9EADE12E5FEBBC963A12AD9E8DEC1F685611585C7B6FDBB0CF1F6C2407502D9FD337405E017A2568ADFD4276D0BE436BBEFEE56C216F6D54CE1EBAF1CF404A38FFD6CB05A9395106002"
DATA "C3D9ED6D9F75DF23E49BDDBD600E9B604175D283C32DF4B08221C6C30A6A5373DD2BB12EEC00320CAE23762AEE5EE4F459140ED9EE371B36EBAF0695437218D8D72ECDEDE9EBE52D3BE206"
DATA "0DDB46F6A3915882290FA91BB2D9844A0435C6039CC7DA36ECAF13A4C0F50A2EDEBCAC3BB2D9D9951CFC6D8A95AD2DD9EDCFD8E1133BD98FEB6EBF7D25D83CDFE09E751A0BDC0D4C421323"
DATA "1070E4DE740DDAB81B8FC008C0F8E1EBF1562B74B1CD5CDD8BF4050855055276DA76D9412CA9A6DD66110607ACCF1535E449F5A294778125BE807A0EF411DD9D5C807DFFC67F80CF0280E7"
DATA "FEB33FEB43BB3F1366899D5E95AD61F67EF705BB879ED9E589956CBCAF02E2FF673B00CA8DD0E1D0F9D0C18AC1240FD7DFC046AB9677047C8BDA03D88310006C8BC328236675C1DAAC2A67"
DATA "1D1710AD046CF38F78E5D0FDD0C58AC58AE085C395DD0AA6010AC48BE8011C8E2DB43CB4C309EBF6D4C7269C6D3DC30684F40CE8C36E16DEEEDBBD6261DBAD05C8694074086D77B0C190C3"
DATA "07DC05B48EC351B0831C602C09EB0708C026B0524B54203ED893612E01837080BD1C332E79C87F0AC984BD1CA56F6B12AFDDA096CDABF42361F012915ADCE1E8D2A9D189E07BE8D6DDD912"
DATA "4FDC558E4B81E20080CAF117DB16AE6FCB6C03C399C6C6D80AE8067BC3F5B0171B41CC0B2825E6DA788FC53DEB03DD0211870AEFDA4619F495443A0E8B0A0FA4D0B7DCADC887E10B0FBE0C"
DATA "24DB2C4301DDDB400AA93F1DC362101A1B30430110C34A8D458B7603D92CAA823DC74C77D10E1E882074150F080CB8168A2D8B08CF29A908B26711688BFC55EB14133E939DBD743D6B5F58"
DATA "2A7521950B9C4318E9FA1D2304F9825D646C55DC6A3E190C3931F7DC1DCC2B52037DA4B804FCC7BBB54686646CBF28D4C4031C168F6C769EE4EB961FC46D01A81572881805B20E0296F01C"
DATA "C8091680E8A078DD5DF86A45823E5438DAAAEC8DD52C016FA8E050515250AADD508F5C6842377D086D08C92946686509F4D090013C1F71741056E0F8ABB8102CE805826B939BCD6DB8BEF8"
DATA "1A0F8F216B480F050E82173C970EA7008E5E786B081A42789D6A04057456AEB9E28B039BD8A2CC5A018F8AF8BEDE9B09F8DA0EDCAFDD17BAE4B6AD6D6B07ADDC07EC8E5005F45DC1900045"
DATA "A1594F6AB02A2B210AA7C230FB826DDDDC4F0E8C0B0E834CB60DA217F4DC48BCC55AC41291128F0F7451878C75004043990110DF2A199004045FC2281DEC20EB7C61EBBB29F6F0F66D81DD"
DATA "181DC7601B745B094A740DF5CBF3157439280374172DAB80096C9D096280DE79DD44C60139DB9D083BA6330B10070619901804DCE5402A2164BE510037DE21C922E543DD1E09800152A463"
DATA "28C21BA2BE6356683F1B817143C0D6B82D08E20FB74D1DB45D6DDCF00523C8255266D1DD5200783720B3BC48211AF64D1002770E56532FBABFC11F6E6306EA1020538810D8C1DD5CDD1601"
DATA "9F246A0CB73F27ABDFD8E46EA655F8237EDDE1FCF6C4447A66B0D6D212561153AF44F84B7E37821ECA75E940D9C916B8D80431AC26E785016BFC03DD7DFCDBE20FBFCDCB1B6D07E89BD97D"
DATA "AD65F78C2368748B6AEF54660B7E48D852A9AC09F82BD5A8000D6CCFC6B4FD071A0D2E1028DB5DFC9B0E08B98699A91198114F9B0C8EE80DB2231034110C74ED5083092607B90D20B9CBDE"
DATA "02E8EB18869B9AED22B89098F743C8B41A080FCBBEE7A890754A121A4514FD7A28B41910182B121860EF3C99C11F3222F8DAE9205A6BBA82058909048506DB7A75C96947B9D465B8064351"
DATA "A8B5FF3924D7C6B4F6C36D7575B0D8D175057A0F6333DFDB543CA919F3AAC81776419D28375C72A9DA0007CE2587FD1ACB39453F350BCB2253F6203B9E5A0047BCB5CB0C810C752E30CEB6"
DATA "16895D36A1104841D65C14B44AE249555BFBC42E3F7B6272EB5C7432593D04F71163532C23A93C92BF5B8B3BFE3D8BC8C84175136BE802C4CA7520DD1C4E0ECF3E37E4110E1E1A0025F648"
DATA "519EB31897538BDC58A1105080852B35156CD0606B8FDE04099009306627E6B4FBD27F4310568B730C570808898D7CAB8B067410CFF7E729042017A30E22BEB1E9F17572A8EB0E6A12824F"
DATA "22961F1118085F51910BC40DF2505701ACF46F1B85E0478B4B2D52100416740B6FBF35285C5465C0FEEB129DC0DD467BDBC66F15E0E383C8034FB07FC03A03BC42546008DAD47E722BB844"
DATA "F88050A4AED439D2D3D88B9168BA5185833E05E8A3AA747F62F0FD415FDF0B56098F090862B1E85922603C64018BE35B9F48E570D0075B647EBA446C0CA8DD04B117A868F789581705B5A8"
DATA "041002EB5527A2094705F65881706B24B2020354086F406F51208D431805FF730817BACE3D0C2605501903101B0C2E3799DB062021F3F73701A8C3B66734ABF2CBF8E929E5EAA8DD6225DD"
DATA "38FF1833EA1C2DB239EE453847574468CB85DFB217EB740659B11A0087F07670A510B6375917860A017C80DF8BF338AA35DE22607416F681F97B77FBB5E93BCF5915F7E99AB18BC3231791"
DATA "4336431A1804FBCE04196A33881A378EB16789083A9008228BCAA996E88AB902234754632D15CDF6743706081A4D62E3C37473C4C6DC195CDEF8D13DFB92BD7B4CEB48150F2C1AEB320919"
DATA "E481157A1E1E6D1BECA40825EB07D95619A2B6936590FE02CB1009C1ED225A64AB430147E9AE57DB43DD014576740F8B91DF784826E2018395B2B950D80CAD7FC056FA53DAED5BCBDDAF5C"
DATA "EE3DCEFB0C7D074527DDEA8D7247EB59B833D2AF015836DAB7422CF6B903FC1CE50F10006E6E8B22F63EEF7D2B5239B6A63BF081F0563646866EB779D1E80CF40100BD26BAEB8A398009D1"
DATA "6DF496FDC4A3DBDADD0A85D2C70018EB0378D0B602E1325F2725ADA0FB4E7BFDBD11CF201AE888E0B02015EF5B5E829741A1CA436A003A1E2B8BE16B685D14C432A891D51D83CA2C9057BF"
DATA "8EC06C508B4196056410DDED001E1E58BF8F1809580426E25BA80F770C0F93917272B26D34021001910427CBC9C9048E0808902C808626DB08CEA5E21674C1E01533411C60A5E6DA103105"
DATA "16126A11430679C808D1E80473CF60ADC18C1202061412FA0177640523C3114E2A8BD0B69FE800D50708490C100B043964796945480C080804CE4139641002EC0B9C1C866BE59ABC3522EA"
DATA "FBD79C0C292E0803EB218B013F731D21988901E00EFD0BC3EBB28D7CBFF02220FC4503203E029441FE0C2220E3EB1AE72BCB600B4A0B4BEB0821BDD5CA91FE4B930881E1ADD8851ABCDC31"
DATA "08962006FE1AD07D20C3406020E1EEF61BFBA1D974D958101D60365D1C1AAF50B5EF60E1150317BD573C5D3BDB4120A4E30833DDDD37643B934D226045531FADC0DDA03B57907C91800E08"
DATA "3800B05D8216BAFC2DF65E10FC26FED33CCDD30808FB04F7023CBD3DCDEF01DFD2BAFFF30E03E844D055F235E6B7879B0E0A0D28810E63EB940625B74487A6FF510D6136100F206A77CFF7"
DATA "041DEE211645F67CCFD6464307193E091A189D35DBDBEB1A0623C22702090A03A57EE1E142265ED6D94150D91BF2D09288B7DD06DD1B5F19B42BF0A0DBD08D07771802522D604521A0A512"
DATA "C4C32E550C0822DE96BAF88BC13914C5B3688840371D7CF1E0EA5B0A290C106CAE9E2AD756EF55F05B14725592ADDBECE1C4A005B8DFB5C800BEA804A5FF24441170159D4CA0E0193C3867"
DATA "C92607566CD81DCCCAA85EEB1B352921B7BD53BC1B1A202B12A1875A03925C5738FE51D4E2093366B3855666E2476FD57CD4B7C6A9E2757C2A017188BB23AFADAE274904616AB8BFAB15A4"
DATA "8259BB8AB005B5BF550E10751F03C9D54879DBF7BBBB49C9010903D24F1774E8528945B9D15A1BB9EF967FF1E00EE7662A07D6620F0BF0EE21D0708E2E3EB38DA9B6642DDCEB23109F1293"
DATA "FE34FC8AEF15C1EF0481E71CEFFEB45ECD958C3E3F385F5079277A9B70BF454D250F5CBA8D89270389315A1404F0FEC943C1F0E8817D0C14DA3F4356C5CC4415C8125D56D01EB90F4C1170"
DATA "5458EAFB0EBAF87FB8CAEACA0381DFE106F0E8BA1C0D11F76DBAD8CE421A07D004DCCDC6EC0DABE0382704196D15B73BC2667A33DC1A72E56A2E2D2C18EB6216494A460247D22E1E5D78B8"
DATA "9F49B7C9CC78785D8428921E6E8906D286E8815C0FAD83E16E2703E7DC811F2B5E967A0CD0F6DC671CE08D41550B46082389CECD1A2B00017F280CC003D2D2911BC4160CF5035921180D51"
DATA "5BD103C1C91B9770F6B7DA5B87FE72091FC4CE3BF9720A421CC82655FC283BD372E8A74F504413F16AFE86A86841178CB9A1D0506C1165128AAEF80E041C429B897ABA82D8F109BBF00029"
DATA "DC3CECEB4654972D135019B4CCB2C02DB308A44024BF1F221805A5E3AE26404028E0146B81042864B930101C082B0FB9302182189EAA7E40708B18088139A40CBA8F04134751183B4ECC56"
DATA "2D6A53053E0BC0A82F38AA41A9FD5AF7F18B0B256788D8BD07E3906475FF967017DDC60703D1EB470B5CF6FFBFD2295423D1E9D1DBD1EAD1D80BC975F4F7F32FF776E9BA25142144F7E62D"
DATA "720E3B2762EBDE7D7708720F3B2B76094E2B181B1214D5174C578F0908FBDAF7D883E07B01A8B3BAD38BD9675E514845DCB000CC4F494514A8E352E2C84647E422F2F2E9A5F76686075FC4"
DATA "FA741D517251174E60F7EC9BD0BAE183530506D203095AC085FDE103D35B9ECCAC5CD427B48F437D144757735DE3D6CFD383D82813890E1B682E39A41C181C183309AF697718183F771085"
DATA "573E77D3EB410B19541378C84833C2D1D967DBF11CE06E33C91814073B2B76014E82D0EAA2764F2B5CB54AD602F7B5CF1344A1523FAD55178A5CB73FC42543A9F272946A6F402859948B99"
DATA "5B6DD0012C2A2DAE8572E7B007BB8CDF5533EDE1154745E2672490AB285A1824C8CE2018F28CD39C7C5A10181C645C42CAF84D79075D145D04FFDB9F80F9407315042073060FADD0D3EAC3"
DATA "D5024403138081E85619616B3C09C32F089E76C4ADD60F5E990BC151B80CEC3090C915075F4F20CFCB07A5C2D3E0D033C0E2AB5C6D8ABA39242C4861175E06F8F20F2C77C9C31B002C00DB"
DATA "1B1804B258144CA883AF74D3F1561460AC033620A4891ACCD2865EDF7C0EDF3418B41DDC756D3CDEE9D91ED956ABF8D44BC02481F17D81C1F1BB5474B883D0005B78EB2C1DB79C9C0517D8"
DATA "DA1408B1BDF6EFF7C21575B8D95C530398CCC2883D05F36005FDAE86EE471F8B747E4CB37C12C1BFC05BB6D103C67C76083BF80F8294416E22C217E282D204B30D89887353158E9744C406"
DATA "37BC83F1A4252E145E829936C733D8CCC425BB0F30750EE01F2B37B7EB160783A9D5F7C7120B859D04FF9E3CC6AC0125E702730D164081B8EEE904968BB605E0EE7F0412037311B20E1408"
DATA "B66D035808260F16083507B6466BAAF7651E5453B46DD17E00BE6F4EF420D4FF96DD6EDB095E102D30074620166E3030DDEDDBD7D00FD3033A0FD90C057F1F0DE09FA7FB3CC247100ECDEC"
DATA "6F20CBF76D6F62307DB7360CE8385AF8F80999CA0CC75B08EF03B990080808EB56B3C2064096FCFC0457E0402E64040404AE340BB7E67C13316F1025C9428B867F3110545DE18160805CE1"
DATA "D3C47FC29BF7C4FFE0A874138A068807495B50B308BB1213D12A11E51823AE0257FDC67E8191E203FF249536243DD490C1689AEE0403DCE8FC23C1FE81BD904C0B8A460188470111B66CCB"
DATA "0C63130502022B8C72EC1F8D34318D3C3975510160463043B439A9CE805EB6DDD7882BCA39FFFF4E4FB966C61AD1F3321EB3AAB62D54D81F83EE24E7FDB4FCB2354DB73BBD70ABBD800388"
 

バイナリー読み込み

 投稿者:しばっち  投稿日:2017年11月14日(火)00時16分0秒
返信・引用
  CHARACTER INPUT #によるバイナリー読み込みが少し遅いようなので
テストしてみました

USB3.0 外付けHDD上のmp3ファイルでテストしました
※但し、これらのテスト結果はドライブやファイルによりかなりバラつきがあります

OPTION ARITHMETIC NATIVE
OPTION CHARACTER BYTE
FILE GETNAME N$
IF N$="" THEN STOP
OPEN #1:NAME N$
ASK #1: FILESIZE L
PRINT "FILE SIZE=";L;"Byte"
LET S$=REPEAT$(CHR$(0),L)
LET T=TIME
FOR I=1 TO L
   CHARACTER INPUT #1: S$(I:I)
NEXT I
LET K=TIME-T
PRINT K;"second"
PRINT L/K/1024;"KByte/s"
CLOSE #1
END

実行結果

FILE SIZE= 4784092 Byte
59.9100000000035 second
77.9830553121303 KByte/s


OPTION ARITHMETIC NATIVE
OPTION CHARACTER BYTE
LET SEEK=0
FILE GETNAME F$
IF F$="" THEN STOP
OPEN #1:NAME F$
ASK #1: FILESIZE SIZE
CLOSE #1
PRINT "FILE SIZE=";SIZE;"Byte"
LET GETDATA$=REPEAT$(CHR$(0),SIZE+1)
LET T=TIME
LET K=GETBINARY(F$,SEEK,SIZE,GETDATA$)
LET L=TIME-T
PRINT L;"second"
IF K=0 THEN
   IF L>0 THEN PRINT SIZE/L/1024/1024;"MByte/s"
   !' FOR I=1 TO SIZE
   !'    PRINT RIGHT$("0"+BSTR$(ORD(GETDATA$(I:I)),16),2);" ";
   !'    IF MOD(I,16)=0 THEN PRINT
   !'    IF MOD(I,256)=0 THEN PRINT
   !' NEXT I
ELSE
   PRINT "READ ERROR!"
END IF
END

EXTERNAL FUNCTION GETBINARY(NAME$,SEEK,SIZE,DA$)
ASSIGN ".\DLL\fileread.dll","fileread"
END FUNCTION
-----------------------------------------------------------------------------------------
                                         fileread.c

#include <stdio.h>
__declspec(dllexport) int fileread(char *name,int offset,int size,char *data)
{
    FILE *fp;
    if ((fp = fopen(name, "rb")) == NULL) {
        return 1;
    }
    fseek(fp,offset,SEEK_SET);
    fread(data,size,1,fp);
    fclose(fp);
    return 0;
}


実行結果

FILE SIZE= 4784092 Byte
1.000000000931322575E-2 second
456.2465663475481961 MByte/s
 

Re: バイナリファイルの作成

 投稿者:島村1243  投稿日:2017年11月 5日(日)08時02分10秒
返信・引用
  > No.4411[元記事へ]

しばっち様へのお返事です。

> 下記のようなのものでよろしいのでしょうか?
> (編集でコンマを入れる必要があります)
> OPTION CHARACTER BYTE
> OPEN #1:NAME "edid_data.bin"
> ERASE #1
> DO
>    READ IF MISSING THEN EXIT DO: A$
>    PRINT #1:CHR$(BVAL(A$,16));
> LOOP
> DATA 00,FF,FF,FF,FF,FF,FF,00,4C,A3,58,42,00,00,00,00
--以下略--

早いご教示を賜り、有り難うございました。
感謝致します。
 

Re: バイナリファイルの作成

 投稿者:しばっち  投稿日:2017年11月 5日(日)07時30分30秒
返信・引用
  > No.4410[元記事へ]

島村1243さんへのお返事です。

> 下記hexa文字で表されるバイナリデータを、10進BASICのDATA文として書き、このバイナリデータを、新規バイナリファイル「edid_data.bin」に書き込むプログラムはどの様にすれば良いでしょうか?
> なお、一番左側の数字(8文字分)は、バイナリデータの書き込み先アドレスを明示しているだけなので、DATAとしては無視します。
>
> --アドレス---   ---------------バイナリデータ----------------------
> 00000000  00 FF FF FF FF FF FF 00 4C A3 58 42 00 00 00 00
> 00000010  00 0C 01 03 80 FF FF FF EA 00 00 A0 57 49 9B 26
> 00000020  10 48 4F 21 08 00 01 01 01 01 01 01 01 01 01 01
> 00000030  01 01 01 01 01 01 64 19 00 40 41 00 26 30 18 88

下記のようなのものでよろしいのでしょうか?
(編集でコンマを入れる必要があります)

OPTION CHARACTER BYTE
OPEN #1:NAME "edid_data.bin"
ERASE #1
DO
   READ IF MISSING THEN EXIT DO: A$
   PRINT #1:CHR$(BVAL(A$,16));
LOOP
DATA 00,FF,FF,FF,FF,FF,FF,00,4C,A3,58,42,00,00,00,00
DATA 00,0C,01,03,80,FF,FF,FF,EA,00,00,A0,57,49,9B,26
DATA 10,48,4F,21,08,00,01,01,01,01,01,01,01,01,01,01
DATA 01,01,01,01,01,01,64,19,00,40,41,00,26,30,18,88
END

また、下記URLもご参考ください

http://6317.teacup.com/basic/bbs/3986
 

バイナリファイルの作成

 投稿者:島村1243  投稿日:2017年11月 4日(土)19時12分37秒
返信・引用
  下記hexa文字で表されるバイナリデータを、10進BASICのDATA文として書き、このバイナリデータを、新規バイナリファイル「edid_data.bin」に書き込むプログラムはどの様にすれば良いでしょうか?
なお、一番左側の数字(8文字分)は、バイナリデータの書き込み先アドレスを明示しているだけなので、DATAとしては無視します。

--アドレス---   ---------------バイナリデータ----------------------
00000000  00 FF FF FF FF FF FF 00 4C A3 58 42 00 00 00 00
00000010  00 0C 01 03 80 FF FF FF EA 00 00 A0 57 49 9B 26
00000020  10 48 4F 21 08 00 01 01 01 01 01 01 01 01 01 01
00000030  01 01 01 01 01 01 64 19 00 40 41 00 26 30 18 88
00000040  36 00 1E D6 10 00 00 19 00 00 00 00 00 00 00 00
00000050  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000060  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000070  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 DE
00000080  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000090  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000A0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000B0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000C0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000D0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000E0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000F0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 

トロコイド

 投稿者:しばっち  投稿日:2017年10月29日(日)14時58分14秒
返信・引用
  OPTION ARITHMETIC NATIVE
RANDOMIZE
OPTION ANGLE DEGREES
LET ZTH=0          ! z軸のまわりの回転角
LET XTH=0          ! x軸のまわりの回転角初期値
LET YTH=0          ! y軸のまわりの回転角初期値
LET N=40
DIM M(4,4),POINT(4),ROTX(4,4),ROTY(4,4)
DIM XX(0 TO N,0 TO N),YY(0 TO N,0 TO N),ZZ(0 TO N,0 TO N)
MAT M=ROTATE(ZTH)
SET POINT STYLE 1
DEF HCYC(N,H,T)=((N-1)*COS(T)+H*COS(T*(N-1)))/N
DEF HCYS(N,H,T)=((N-1)*SIN(T)-H*SIN(T*(N-1)))/N
DEF HC3X(N,H,U,V)=HCYS(N,H,U)*HCYC(N,H,V)
DEF HC3Y(N,H,U,V)=HCYS(N,H,U)*HCYS(N,H,V)
DEF HC3Z(N,H,U)=HCYC(N,H,U)
LET NN=3
LET H=1
FOR I=0 TO N
   FOR J=0 TO N
      LET ALPHA=I*180/N
      LET BETA=J*360/N
      LET XX(I,J)=HC3X(NN,H,ALPHA,BETA)
      LET YY(I,J)=HC3Y(NN,H,ALPHA,BETA)
      LET ZZ(I,J)=HC3Z(NN,H,ALPHA)
      LET XMIN=MIN(XMIN,XX(I,J))
      LET XMAX=MAX(XMAX,XX(I,J))
      LET YMIN=MIN(YMIN,YY(I,J))
      LET YMAX=MAX(YMAX,YY(I,J))
      LET ZMIN=MIN(ZMIN,ZZ(I,J))
      LET ZMAX=MAX(ZMAX,ZZ(I,J))
   NEXT J
NEXT I
LET RANGE=MAX(XMAX-XMIN,MAX(YMAX-YMIN,ZMAX-ZMIN))
LET XDT=RND-.5
LET YDT=RND-.5
LET LMIN=1E+10
LET LMAX=-1E+10
LOCATE VALUE NOWAIT(1),RANGE 0 TO 2,AT 1:SCALE
LOCATE VALUE NOWAIT(2),RANGE 0 TO 10,AT 1:H
LOCATE VALUE NOWAIT(3),RANGE 3 TO 15,AT 3:NN
DO
   LOCATE VALUE NOWAIT(1):SCALE
   LOCATE VALUE NOWAIT(2):H
   LOCATE VALUE NOWAIT(3):NN
   LET NN=INT(NN)
   IF H<>H0 OR NN<>NN0 THEN
      FOR I=0 TO N
         FOR J=0 TO N
            LET ALPHA=I*180/N
            LET BETA=J*360/N
            LET XX(I,J)=HC3X(NN,H,ALPHA,BETA)
            LET YY(I,J)=HC3Y(NN,H,ALPHA,BETA)
            LET ZZ(I,J)=HC3Z(NN,H,ALPHA)
         NEXT J
      NEXT I
      LET H0=H
      LET NN0=NN
   END IF
   MAT ROTX=IDN ! x軸のまわりの回転
   LET ROTX(2,2)=COS(XTH)
   LET ROTX(2,3)=SIN(XTH)
   LET ROTX(3,2)=-SIN(XTH)
   LET ROTX(3,3)=COS(XTH)
   MAT ROTY=IDN ! y軸のまわりの回転
   LET ROTY(1,1)=COS(YTH)
   LET ROTY(1,3)=-SIN(YTH)
   LET ROTY(3,1)=SIN(YTH)
   LET ROTY(3,3)=COS(YTH)
   MAT M=M*ROTX*ROTY
   SET DRAW MODE HIDDEN
   CLEAR
   FOR I=0 TO N
      FOR J=0 TO N
         CALL PLOT(XX(I,J),YY(I,J),ZZ(I,J))
      NEXT J
      PLOT LINES
   NEXT I
   FOR J=0 TO N
      FOR I=0 TO N
         CALL PLOT(XX(I,J),YY(I,J),ZZ(I,J))
      NEXT I
      PLOT LINES
   NEXT J
   IF FL=0 THEN
      SET WINDOW LMIN*1.2,LMAX*1.2,LMIN*1.2,LMAX*1.2
      LET WW=(LAMX-LMIN)*1.2
   END IF
   LET FL=1
   SET DRAW MODE EXPLICIT
   MOUSE POLL X,Y,L,R
   IF R<>0 THEN STOP
   LET XTH=0
   LET YTH=0
   IF L<>0 THEN
      DO WHILE L<>0
         MOUSE POLL X,Y,L,R
      LOOP
      LET XDT=-(Y-Y0)/WW*5
      LET YDT=(X-X0)/WW*5
      LET XDT=MAX(-5,MIN(5,XDT))
      LET YDT=MAX(-5,MIN(5,YDT))
   ELSE
      LET XTH=XTH+XDT
      LET YTH=YTH+YDT
   END IF
   LET X0=X
   LET Y0=Y
LOOP

SUB PLOT(X,Y,Z)
   LET POINT(1)=X+XMOVE
   LET POINT(2)=Y+YMOVE
   LET POINT(3)=Z+ZMOVE
   MAT POINT=POINT*M
   IF FL=0 THEN
      LET LMIN=MIN(LMIN,POINT(1))
      LET LMAX=MAX(LMAX,POINT(1))
      LET LMIN=MIN(LMIN,POINT(2))
      LET LMAX=MAX(LMAX,POINT(2))
   ELSE
      PLOT LINES:POINT(1)*SCALE,POINT(2)*SCALE;
   END IF
END SUB
END
 

星型多角形

 投稿者:しばっち  投稿日:2017年10月29日(日)14時55分40秒
返信・引用
  OPTION ARITHMETIC NATIVE
RANDOMIZE
OPTION ANGLE DEGREES
LET ZTH=0          ! z軸のまわりの回転角
LET XTH=0          ! x軸のまわりの回転角初期値
LET YTH=0          ! y軸のまわりの回転角初期値
LET N=30
DIM M(4,4),POINT(4),ROTX(4,4),ROTY(4,4)
DIM XX(0 TO N,0 TO N),YY(0 TO N,0 TO N),ZZ(0 TO N,0 TO N)
MAT M=ROTATE(ZTH)
SET POINT STYLE 1
DEF FF(X)=.5*(IP(X)-IP(-X)-1)
DEF S2(X)=X+IP(-X)+1
DEF A(N)=360/N
DEF K(A,B,X)=FF((X+A)/(A+B))-FF(X/(A+B))
DEF KK(A,B,X)=2*(K(A,B,X)-.5)
DEF S(A,X)=2*ABS(S2(X/(A*2))-.5)*KK(A*2,A*2,X+A)
!'DEF ACC(X)=-.5*PI*(S(.5*PI,X)+1)
DEF ACC(X)=ACOS(COS(X))
DEF CNS(N,T)=COS(A(N))/COS(A(N)-ACC(N*T)/N)
DEF PC(N,T)=COS(T)*CNS(N,T)
DEF PS(N,T)=SIN(T)*CNS(N,T)
DEF P3X(N,U,V)=PS(N,U)*PC(N,V)
DEF P3Y(N,U,V)=PS(N,U)*PS(N,V)
DEF P3Z(N,U)=PC(N,U)
INPUT  PROMPT "何角形 =":NN !'NN>=5
FOR I=0 TO N
   FOR J=0 TO N
      LET ALPHA=I*180/N
      LET BETA=J*360/N
      LET XX(I,J)=P3X(NN,ALPHA,BETA)
      LET YY(I,J)=P3Y(NN,ALPHA,BETA)
      LET ZZ(I,J)=P3Z(NN,ALPHA)
      LET XMIN=MIN(XMIN,XX(I,J))
      LET XMAX=MAX(XMAX,XX(I,J))
      LET YMIN=MIN(YMIN,YY(I,J))
      LET YMAX=MAX(YMAX,YY(I,J))
      LET ZMIN=MIN(ZMIN,ZZ(I,J))
      LET ZMAX=MAX(ZMAX,ZZ(I,J))
   NEXT J
NEXT I
LET RANGE=MAX(XMAX-XMIN,MAX(YMAX-YMIN,ZMAX-ZMIN))
LET XDT=RND-.5
LET YDT=RND-.5
LET LMIN=1E+10
LET LMAX=-1E+10
LOCATE VALUE NOWAIT(1),RANGE 0 TO 2,AT 1:SCALE
LOCATE VALUE NOWAIT(2),RANGE-3 TO 5,AT 1:SPEED
LOCATE VALUE NOWAIT(3),RANGE-RANGE TO RANGE,AT 0:XMOVE
LOCATE VALUE NOWAIT(4),RANGE-RANGE TO RANGE,AT 0:YMOVE
LOCATE VALUE NOWAIT(5),RANGE-RANGE TO RANGE,AT 0:ZMOVE
DO
   LOCATE VALUE NOWAIT(1):SCALE
   LOCATE VALUE NOWAIT(2):SPEED
   LOCATE VALUE NOWAIT(3):XMOVE
   LOCATE VALUE NOWAIT(4):YMOVE
   LOCATE VALUE NOWAIT(5):ZMOVE
   MAT ROTX=IDN ! x軸のまわりの回転
   LET ROTX(2,2)=COS(XTH)
   LET ROTX(2,3)=SIN(XTH)
   LET ROTX(3,2)=-SIN(XTH)
   LET ROTX(3,3)=COS(XTH)
   MAT ROTY=IDN ! y軸のまわりの回転
   LET ROTY(1,1)=COS(YTH)
   LET ROTY(1,3)=-SIN(YTH)
   LET ROTY(3,1)=SIN(YTH)
   LET ROTY(3,3)=COS(YTH)
   MAT M=M*ROTX*ROTY
   SET DRAW MODE HIDDEN
   CLEAR
   FOR I=0 TO N
      FOR J=0 TO N
         CALL PLOT(XX(I,J),YY(I,J),ZZ(I,J))
      NEXT J
      PLOT LINES
   NEXT I
   FOR J=0 TO N
      FOR I=0 TO N
         CALL PLOT(XX(I,J),YY(I,J),ZZ(I,J))
      NEXT I
      PLOT LINES
   NEXT J
   IF FL=0 THEN
      SET WINDOW LMIN*1.2,LMAX*1.2,LMIN*1.2,LMAX*1.2
      LET WW=(LAMX-LMIN)*1.2
   END IF
   LET FL=1
   SET DRAW MODE EXPLICIT
   MOUSE POLL X,Y,L,R
   IF R<>0 THEN STOP
   LET XTH=0
   LET YTH=0
   IF L<>0 THEN
      DO WHILE L<>0
         MOUSE POLL X,Y,L,R
      LOOP
      LET XDT=-(Y-Y0)/WW*5
      LET YDT=(X-X0)/WW*5
      LET XDT=MAX(-5,MIN(5,XDT))
      LET YDT=MAX(-5,MIN(5,YDT))
   ELSE
      LET XTH=XTH+XDT*SPEED
      LET YTH=YTH+YDT*SPEED
   END IF
   LET X0=X
   LET Y0=Y
LOOP

SUB PLOT(X,Y,Z)
   LET POINT(1)=X+XMOVE
   LET POINT(2)=Y+YMOVE
   LET POINT(3)=Z+ZMOVE
   MAT POINT=POINT*M
   IF FL=0 THEN
      LET LMIN=MIN(LMIN,POINT(1))
      LET LMAX=MAX(LMAX,POINT(1))
      LET LMIN=MIN(LMIN,POINT(2))
      LET LMAX=MAX(LMAX,POINT(2))
   ELSE
      PLOT LINES:POINT(1)*SCALE,POINT(2)*SCALE;
   END IF
END SUB
END
 

多角形

 投稿者:しばっち  投稿日:2017年10月29日(日)14時54分21秒
返信・引用
  OPTION ARITHMETIC NATIVE
RANDOMIZE
OPTION ANGLE DEGREES
LET ZTH=0          ! z軸のまわりの回転角
LET XTH=0          ! x軸のまわりの回転角初期値
LET YTH=0          ! y軸のまわりの回転角初期値
LET N=30
DIM M(4,4),POINT(4),ROTX(4,4),ROTY(4,4)
DIM XX(0 TO N,0 TO N),YY(0 TO N,0 TO N),ZZ(0 TO N,0 TO N)
MAT M=ROTATE(ZTH)
SET POINT STYLE 1
DEF A(N)=360/N
DEF S1(X)=FP(X)
DEF CNP(N,T)=COS(A(N)*S1(T/A(N))-A(N)/2)
DEF PC(N,T)=COS(T)*COS(A(N)/2)/CNP(N,T)
DEF PS(N,T)=SIN(T)*COS(A(N)/2)/CNP(N,T)
DEF P3X(N,U,V)=PS(N,U)*PC(N,V)
DEF P3Y(N,U,V)=PS(N,U)*PS(N,V)
DEF P3Z(N,U)=PC(N,U)
INPUT  PROMPT "何角形 =":NN
FOR I=0 TO N
   FOR J=0 TO N
      LET ALPHA=I*180/N
      LET BETA=J*360/N
      LET XX(I,J)=P3X(NN,ALPHA,BETA)
      LET YY(I,J)=P3Y(NN,ALPHA,BETA)
      LET ZZ(I,J)=P3Z(NN,ALPHA)
      LET XMIN=MIN(XMIN,XX(I,J))
      LET XMAX=MAX(XMAX,XX(I,J))
      LET YMIN=MIN(YMIN,YY(I,J))
      LET YMAX=MAX(YMAX,YY(I,J))
      LET ZMIN=MIN(ZMIN,ZZ(I,J))
      LET ZMAX=MAX(ZMAX,ZZ(I,J))
   NEXT J
NEXT I
LET RANGE=MAX(XMAX-XMIN,MAX(YMAX-YMIN,ZMAX-ZMIN))
LET XDT=RND-.5
LET YDT=RND-.5
LET LMIN=1E+10
LET LMAX=-1E+10
LOCATE VALUE NOWAIT(1),RANGE 0 TO 2,AT 1:SCALE
LOCATE VALUE NOWAIT(2),RANGE-3 TO 5,AT 1:SPEED
LOCATE VALUE NOWAIT(3),RANGE-RANGE TO RANGE,AT 0:XMOVE
LOCATE VALUE NOWAIT(4),RANGE-RANGE TO RANGE,AT 0:YMOVE
LOCATE VALUE NOWAIT(5),RANGE-RANGE TO RANGE,AT 0:ZMOVE
DO
   LOCATE VALUE NOWAIT(1):SCALE
   LOCATE VALUE NOWAIT(2):SPEED
   LOCATE VALUE NOWAIT(3):XMOVE
   LOCATE VALUE NOWAIT(4):YMOVE
   LOCATE VALUE NOWAIT(5):ZMOVE
   MAT ROTX=IDN ! x軸のまわりの回転
   LET ROTX(2,2)=COS(XTH)
   LET ROTX(2,3)=SIN(XTH)
   LET ROTX(3,2)=-SIN(XTH)
   LET ROTX(3,3)=COS(XTH)
   MAT ROTY=IDN ! y軸のまわりの回転
   LET ROTY(1,1)=COS(YTH)
   LET ROTY(1,3)=-SIN(YTH)
   LET ROTY(3,1)=SIN(YTH)
   LET ROTY(3,3)=COS(YTH)
   MAT M=M*ROTX*ROTY
   SET DRAW MODE HIDDEN
   CLEAR
   FOR I=0 TO N
      FOR J=0 TO N
         CALL PLOT(XX(I,J),YY(I,J),ZZ(I,J))
      NEXT J
      PLOT LINES
   NEXT I
   FOR J=0 TO N
      FOR I=0 TO N
         CALL PLOT(XX(I,J),YY(I,J),ZZ(I,J))
      NEXT I
      PLOT LINES
   NEXT J
   IF FL=0 THEN
      SET WINDOW LMIN*1.2,LMAX*1.2,LMIN*1.2,LMAX*1.2
      LET WW=(LAMX-LMIN)*1.2
   END IF
   LET FL=1
   SET DRAW MODE EXPLICIT
   MOUSE POLL X,Y,L,R
   IF R<>0 THEN STOP
   LET XTH=0
   LET YTH=0
   IF L<>0 THEN
      DO WHILE L<>0 !'マウスでドラッグ
         MOUSE POLL X,Y,L,R
      LOOP
      LET XDT=-(Y-Y0)/WW*5
      LET YDT=(X-X0)/WW*5
      LET XDT=MAX(-5,MIN(5,XDT))
      LET YDT=MAX(-5,MIN(5,YDT))
   ELSE
      LET XTH=XTH+XDT*SPEED
      LET YTH=YTH+YDT*SPEED
   END IF
   LET X0=X
   LET Y0=Y
LOOP

SUB PLOT(X,Y,Z)
   LET POINT(1)=X+XMOVE
   LET POINT(2)=Y+YMOVE
   LET POINT(3)=Z+ZMOVE
   MAT POINT=POINT*M
   IF FL=0 THEN
      LET LMIN=MIN(LMIN,POINT(1))
      LET LMAX=MAX(LMAX,POINT(1))
      LET LMIN=MIN(LMIN,POINT(2))
      LET LMAX=MAX(LMAX,POINT(2))
   ELSE
      PLOT LINES:POINT(1)*SCALE,POINT(2)*SCALE;
   END IF
END SUB
END
 

多角形

 投稿者:しばっち  投稿日:2017年10月29日(日)14時50分54秒
返信・引用
  http://slpr.sakura.ne.jp/qp/polygon-spirograph/

正多角形

CALL GINIT(600,600)
OPTION ANGLE DEGREES
SET LINE COLOR 7
INPUT  PROMPT "何角形 =":N
LET A=360/N
FOR T=0 TO 360
   LET X=200*COS(T)*COS(A/2)/COS(A*(T/A-IP(T/A))-A/2)
   LET Y=200*SIN(T)*COS(A/2)/COS(A*(T/A-IP(T/A))-A/2)
   PLOT LINES:X+300,Y+300;
NEXT T
END

EXTERNAL SUB GINIT(XSIZE,YSIZE)
SET BITMAP SIZE XSIZE,YSIZE
SET WINDOW 0,XSIZE-1,YSIZE-1,0
SET POINT STYLE 1
SET COLOR MODE "REGULAR"
SET COLOR MIX(0) 0,0,0
SET COLOR MIX(1) 0,0,1
SET COLOR MIX(2) 1,0,0
SET COLOR MIX(3) 1,0,1
SET COLOR MIX(4) 0,1,0
SET COLOR MIX(5) 0,1,1
SET COLOR MIX(6) 1,1,0
SET COLOR MIX(7) 1,1,1
CLEAR
END SUB

------------------------------------------------------------------------------
星型多角形

CALL GINIT(600,600)
OPTION ANGLE DEGREES
SET LINE COLOR 7
INPUT N !'N>=5
LET A=360/N
FOR T=0 TO 360
   LET X=200*COS(T)*COS(A)/COS(A-1/N*ACOS(COS(N*T)))
   LET Y=200*SIN(T)*COS(A)/COS(A-1/N*ACOS(COS(N*T)))
   PLOT LINES:X+300,Y+300;
NEXT T
END

EXTERNAL SUB GINIT(XSIZE,YSIZE)
SET BITMAP SIZE XSIZE,YSIZE
SET WINDOW 0,XSIZE-1,YSIZE-1,0
SET POINT STYLE 1
SET COLOR MODE "REGULAR"
SET COLOR MIX(0) 0,0,0
SET COLOR MIX(1) 0,0,1
SET COLOR MIX(2) 1,0,0
SET COLOR MIX(3) 1,0,1
SET COLOR MIX(4) 0,1,0
SET COLOR MIX(5) 0,1,1
SET COLOR MIX(6) 1,1,0
SET COLOR MIX(7) 1,1,1
CLEAR
END SUB
 

スピログラフ

 投稿者:しばっち  投稿日:2017年10月29日(日)14時40分45秒
返信・引用
  CALL GINIT(800,800)
LOCATE VALUE NOWAIT(1),RANGE 0 TO 300,AT 150 : R0
LOCATE VALUE NOWAIT(2),RANGE 0 TO 300,AT 120 : R1
LOCATE VALUE NOWAIT(3),RANGE 0 TO 300,AT 50 : P
LOCATE VALUE NOWAIT(4),RANGE 1 TO 200,AT 50 : SP
LOCATE VALUE NOWAIT(5),RANGE 1 TO 20,AT 3 : N
DO
   LET T0=R0
   LET T1=R1
   LET RR=P
   LET SS=SP
   LET NN=N
   DO
      LOCATE VALUE NOWAIT(1): R0
      LOCATE VALUE NOWAIT(2): R1
      LOCATE VALUE NOWAIT(3): P
      LOCATE VALUE NOWAIT(4): SP
      LOCATE VALUE NOWAIT(5): N
      LET R0=INT(R0)
      LET R1=INT(R1)
      LET P=INT(P)
      LET SP=INT(SP)
      LET N=INT(N)
   LOOP WHILE R0=T0 AND R1=T1 AND P=RR AND SP=SS AND NN=N
   CLEAR
   LET R=R0-R1
   LET XX=400+R-P
   LET YY=400
   LET D=0
   FOR I=1 TO 360*N
      LET D=D+SP
      LET S1=D*PI/180
      LET S0=S1*R1/R0
      LET X=R*COS(S0)-P*COS(S1)
      LET Y=R*SIN(S0)+P*SIN(S1)
      CALL LINE(XX,YY,400+X,400+Y,7)
      LET XX=400+X
      LET YY=400+Y
   NEXT  I
LOOP
END

EXTERNAL SUB GINIT(XSIZE,YSIZE)
SET BITMAP SIZE XSIZE,YSIZE
SET WINDOW 0,XSIZE-1,YSIZE-1,0
SET POINT STYLE 1
SET COLOR MIX(0) 0,0,0
SET COLOR MIX(1) 0,0,1
SET COLOR MIX(2) 1,0,0
SET COLOR MIX(3) 1,0,1
SET COLOR MIX(4) 0,1,0
SET COLOR MIX(5) 0,1,1
SET COLOR MIX(6) 1,1,0
SET COLOR MIX(7) 1,1,1
CLEAR
END SUB

EXTERNAL SUB LINE(XS,YS,XE,YE,C)
SET COLOR C
PLOT LINES:XS,YS;XE,YE
END SUB
 

サイコロの目連続n回

 投稿者:しばっち  投稿日:2017年10月29日(日)14時38分59秒
返信・引用
  サイコロ連続n回、同じ目が出る確率


OPTION ARITHMETIC NATIVE
RANDOMIZE
DIM B(15)
LET L=100000000 !'試行回数
FOR I=1 TO L
   LET COUNT=0
   LET N=INT(RND*6+1) !'1投目
   DO
      LET A=INT(RND*6+1) !'2投目以降
      IF A=N THEN
         LET COUNT=COUNT+1
         LET B(COUNT)=B(COUNT)+1
      END IF
   LOOP WHILE A=N
NEXT I
FOR I=1 TO 15
   PRINT I;":";B(I),B(I)/L,1/6^I
NEXT I
END

-----------------------------------------------------
サイコロ連続 n回、同じ目出るまでの回数


OPTION ARITHMETIC NATIVE
RANDOMIZE
FOR N=1 TO 10 !'同じ目が連続 n回
   LET I=0
   DO
      LET I=I+1
      LET COUNT=0
      LET NN=INT(RND*6+1)
      DO
         LET A=INT(RND*6+1)
         IF A=NN THEN LET COUNT=COUNT+1
      LOOP WHILE A=NN
   LOOP UNTIL COUNT=N
   PRINT N;":";I
NEXT N
END
 

Re: 変更の仕方

 投稿者:GAI  投稿日:2017年 9月29日(金)23時31分12秒
返信・引用
  > No.4402[元記事へ]

しばっちさんへのお返事です。


>
> 総数 2627625となりましたが、個数はあっているでしょうか?
>

プログラムありがとうございます。
計算上
16C4*12C4*8C4/4!=2627625
ですので正しく動いています。
 

Re: 変更の仕方

 投稿者:しばっち  投稿日:2017年 9月29日(金)22時36分12秒
返信・引用
  > No.4401[元記事へ]

GAIさんへのお返事です。

> これを異なる16個を4つずつ4組作るものに改変しようと試みていましたがいまいちやり方がわからなくなりました。
> どなたか変更するとどの様に変えればいいのか教えて下さい。
>

総数 2627625となりましたが、個数はあっているでしょうか?

FOR I1=2 TO 14
   FOR J1=I1+1 TO 15
      FOR K1=J1+1 TO 16
         LET W$="123456789ABCDEFG"
         LET A$=W$(1:1)&W$(I1:I1)&W$(J1:J1)&W$(K1:K1)
         LET W$(1:1)="*"
         LET W$(I1:I1)="*"
         LET W$(J1:J1)="*"
         LET W$(K1:K1)="*"
         CALL ERASE(W$)
         FOR I2=2 TO 10
            FOR J2=I2+1 TO 11
               FOR K2=J2+1 TO 12
                  LET X$=W$
                  LET A$=A$(1:4)&X$(1:1)&X$(I2:I2)&X$(J2:J2)&X$(K2:K2)
                  LET X$(1:1)="*"
                  LET X$(I2:I2)="*"
                  LET X$(J2:J2)="*"
                  LET X$(K2:K2)="*"
                  CALL ERASE(X$)
                  FOR I3=2 TO 6
                     FOR J3=I3+1 TO 7
                        FOR K3=J3+1 TO 8
                           LET Y$=X$
                           LET A$=A$(1:8)&Y$(1:1)&Y$(I3:I3)&Y$(J3:J3)&Y$(K3:K3)
                           LET Y$(1:1)="*"
                           LET Y$(I3:I3)="*"
                           LET Y$(J3:J3)="*"
                           LET Y$(K3:K3)="*"
                           CALL ERASE(Y$)
                           LET A$=A$&Y$
                           LET C=C+1
                           PRINT C;":";A$(1:4);"  ";A$(5:8);"  ";A$(9:12);"  ";A$(13:16) !' 2627625 まで
                           LET A$=A$(1:12)
                        NEXT K3
                     NEXT J3
                  NEXT I3
               NEXT K2
            NEXT J2
         NEXT I2
      NEXT K1
   NEXT J1
NEXT I1
END

EXTERNAL  SUB ERASE(A$)
DO
   LET FL=0
   FOR I=1 TO LEN(A$)
      IF A$(I:I)="*" THEN
         LET A$(I:I)=""
         LET FL=1
      END IF
   NEXT I
LOOP UNTIL FL=0
END SUB
 

変更の仕方

 投稿者:GAI  投稿日:2017年 9月29日(金)16時12分43秒
返信・引用
  以前異なる8個のものを2つずつ4組構成するプログラムで

DIM A$(105) !全パターン 例. 12345678なら、(1,2)(3,4)(5,6)(7,8)と読む
LET C=1
FOR i=2 TO 8 !1組目(1,i) ※comb(8,2)/4=7通り
   LET w$="12345678" !restore it

   LET A$(C)=w$(1:1)&w$(i:i) !その2つを抜き取って、連番を再構成する
   LET w$(i:i)=""
   LET w$(1:1)=""

   FOR j=2 TO 6 !2組目(1,j) ※comb(6,2)/3=5通り
      LET x$=w$ !restore it

      LET A$(C)=A$(C)(1:2)&x$(1:1)&x$(j:j)
      LET x$(j:j)=""
      LET x$(1:1)=""

      FOR k=2 TO 4 !3組目(1,k) ※comb(4,2)/2=3通り
         LET y$=x$ !restore it

         LET A$(C)=A$(C)(1:4)&y$(1:1)&y$(k:k)
         LET y$(k:k)=""
         LET y$(1:1)=""

         LET A$(C)=A$(C)&y$ !4組目 ※comb(2,2)/1=1通り


         PRINT C;": ";A$(C) !結果を表示する

         LET C=C+1
         IF C<=105 THEN LET A$(C)=A$(C-1)(1:4) !copy it
      NEXT k
   NEXT j
NEXT i
END

が紹介されていました。

これを異なる16個を4つずつ4組作るものに改変しようと試みていましたがいまいちやり方がわからなくなりました。
どなたか変更するとどの様に変えればいいのか教えて下さい。

 

[024]-続き

 投稿者:mike  投稿日:2017年 9月 6日(水)12時22分45秒
返信・引用
  プログラムの後半部分です

---------------------

! ---------- 3D graphics

EXTERNAL SUB setRotateXYParameters(angleX,angleY,xCenter,yCenter,zCenter)
   LET cosAx = COS(angleX)
   LET sinAx = SIN(angleX)
   LET cosAy = COS(angleY)
   LET sinAy = SIN(angleY)
   LET cx0 = xCenter
   LET cy0 = yCenter
   LET cz0 = zCenter
END SUB

EXTERNAL SUB plotLines3D(x,y,z,xShift,yShift) !shift*xRotateAx*yRotateAy*(shift^-1)
   LET x1 = cosAy*(x-cx0)+sinAy*(sinAx*(y-cy0)+cosAx*(z-cz0))
   LET y1 = cosAx*(y-cy0)-sinAx*(z-cz0)
   LET z1 =-sinAy*(x-cx0)+cosAy*(sinAx*(y-cy0)+cosAx*(z-cz0))
   PLOT LINES: x1+cx0+xShift, y1+cy0+yShift; !z=z1+cz0
END SUB

! ---------- drawState

EXTERNAL SUB drawState(drawMode)
   DECLARE EXTERNAL SUB setRotateXYParameters,drawState3D,draw3DPsix6,drawPsix6,drawRho
   DECLARE EXTERNAL FUNCTION totalEnergy
   SET DRAW MODE HIDDEN
   CALL setRotateXYParameters(-PI/6,-PI/12,NNx/2,NNy/2,0)
   CLEAR
   SET TEXT HEIGHT 8
   SET TEXT COLOR 1 ! black
   IF drawMode=0 THEN
      CALL drawRho(4,1.0,100,150)  !(sc,zMag,xShift,yShift)
      PLOT TEXT, AT 100, 150 :"electron density rho(x,y) and Veff(x,y)"
   ELSEIF drawMode=1 THEN
      CALL draw3DPsix6
   ELSEIF drawMode=2 THEN
      CALL drawPsix6
   END IF
   !--- caption
   PLOT TEXT, AT 50,115 ,USING "iteration count =######        error =##.##########":iterCount,iterationError
   PLOT TEXT, AT 50,100 ,USING "total energy =###.##########   N of electron =##":totalEnergy,numberOfElectron
   PLOT TEXT, AT 50, 85 ,USING "E0 =###.########## Occ =#.#####":sdEnergy(0),occupation(0)
   PLOT TEXT, AT 50, 70 ,USING "E1 =###.########## Occ =#.#####":sdEnergy(1),occupation(1)
   PLOT TEXT, AT 50, 55 ,USING "E2 =###.########## Occ =#.#####":sdEnergy(2),occupation(2)
   PLOT TEXT, AT 50, 40 ,USING "E3 =###.########## Occ =#.#####":sdEnergy(3),occupation(3)
   PLOT TEXT, AT 50, 25 ,USING "E4 =###.########## Occ =#.#####":sdEnergy(4),occupation(4)
   PLOT TEXT, AT 50, 10 :"RS-DFT - Local Density Approximation 2D"
   SET TEXT HEIGHT 10
   PLOT TEXT, AT 50,470 :"[esc] exit            [D] chage dispMode"
   PLOT TEXT, AT 50,455 :"[1] ... [6] number of electron"
   PLOT TEXT, AT 50,440 :"[7] hermonics k*x^2   [8] quantum well"
   SET DRAW MODE EXPLICIT
END SUB

EXTERNAL SUB draw3DPsix6
   DECLARE EXTERNAL SUB drawState3D
   CALL drawState3D(0,2,0.5, 30,120) !(ist,sc,zMag,xShift,yShift)
   CALL drawState3D(1,2,0.5,180,120)
   CALL drawState3D(2,2,0.5,330,120)
   CALL drawState3D(3,2,0.5, 30,270)
   CALL drawState3D(4,2,0.5,180,270)
   CALL drawState3D(5,2,0.5,330,270)
   SET TEXT HEIGHT 10
   PLOT TEXT, AT  30,140:"|0>"
   PLOT TEXT, AT 180,140:"|1>"
   PLOT TEXT, AT 330,140:"|2>"
   PLOT TEXT, AT  30,290:"|3>"
   PLOT TEXT, AT 180,290:"|4>"
   PLOT TEXT, AT 330,290:"|5>"
END SUB

EXTERNAL SUB drawRho(sc,zMag,xShift,yShift)
   DECLARE EXTERNAL SUB plotLines3D
   FOR j=0 TO NNy-1 STEP 1
      FOR i=0 TO NNx-1
         LET psi = rho(i,j)*2000
         IF psi>1 THEN
            SET LINE COLOR 13
         ELSE
            SET LINE COLOR 3 ! potential:green
         END IF
         CALL plotLines3D(i*sc,j*sc,zMag*(psi + vv(i,j)),xShift,yShift) !(x,y,z)
      NEXT i
      PLOT LINES
   NEXT j
   FOR i=0 TO NNx-1 STEP 1
      FOR j=0 TO NNy-1
         LET psi = rho(i,j)*2000
         IF psi>1 THEN
            SET LINE COLOR 13
         ELSE
            SET LINE COLOR 3 ! potential:green
         END IF
         CALL plotLines3D(i*sc,j*sc,zMag*(psi + vv(i,j)),xShift,yShift) !(x,y,z)
      NEXT j
      PLOT LINES
   NEXT i
END SUB

EXTERNAL SUB drawState3D(ist,sc,zMag,xShift,yShift)
   DECLARE EXTERNAL SUB plotLines3D
   FOR j=0 TO NNy-1 STEP 1
      FOR i=0 TO NNx-1
         LET psi = sdState(ist,i,j)*200
         IF psi>1 THEN
            SET LINE COLOR 4 ! red
         ELSEIF psi<-1 THEN
            SET LINE COLOR 2 ! blue
         ELSE
            SET LINE COLOR 3 ! potential:green
         END IF
         CALL plotLines3D(i*sc,j*sc,zMag*(psi + vv(i,j)),xShift,yShift) !(x,y,z)
      NEXT i
      PLOT LINES
   NEXT j
   FOR i=0 TO NNx-1 STEP 1
      FOR j=0 TO NNy-1
         LET psi = sdState(ist,i,j)*200
         IF psi>1 THEN
            SET LINE COLOR 4 ! red
         ELSEIF psi<-1 THEN
            SET LINE COLOR 2 ! blue
         ELSE
            SET LINE COLOR 3 ! potential:green
         END IF
         CALL plotLines3D(i*sc,j*sc,zMag*(psi + vv(i,j)),xShift,yShift) !(x,y,z)
      NEXT j
      PLOT LINES
   NEXT i
END SUB

EXTERNAL SUB drawPsix6
   DECLARE EXTERNAL SUB drawPsi
   CALL drawPsi(0, 30,135) !(ist,xPos,yPos)
   CALL drawPsi(1,180,135)
   CALL drawPsi(2,330,135)
   CALL drawPsi(3, 30,285)
   CALL drawPsi(4,180,285)
   CALL drawPsi(5,330,285)
   SET TEXT HEIGHT 10
   PLOT TEXT, AT  30,140:"|0>"
   PLOT TEXT, AT 180,140:"|1>"
   PLOT TEXT, AT 330,140:"|2>"
   PLOT TEXT, AT  30,290:"|3>"
   PLOT TEXT, AT 180,290:"|4>"
   PLOT TEXT, AT 330,290:"|5>"
END SUB

EXTERNAL SUB drawPsi(ist,xPos,yPos)  !drawMode=0
   MAT psicol = vcol !--- psicol(,) <- Vcol(,) setted SUB initDraw
   FOR i=0 TO NNx-1 !--- set psicol(,) for MAT PLOT CELLS
      FOR j=0 TO NNy-1
         LET psi = sdState(ist,i,j)
         IF abs(psi)>0.002 THEN
            IF psi>=0 THEN
               LET col = psi*10
               IF col>1 THEN LET col = 1
               IF col<0 THEN LET col = 0
               LET psicol(i,j) = 40+INT(col*50)
            ELSE
               LET col = -psi*10
               IF col>1 THEN LET col = 1
               IF col<0 THEN LET col = 0
               LET psicol(i,j) = 100+INT(col*50)
            END IF
         END IF
      NEXT j
   NEXT i
   MAT PLOT CELLS,IN xPos,yPos; xPos+128,yPos+128 :psicol
END SUB

END MODULE
 

[024]多電子系の電子密度とエネルギー(2次元)

 投稿者:mike  投稿日:2017年 9月 6日(水)12時20分34秒
返信・引用
   定常状態の多電子系の電子密度とエネルギーを求める2次元のプログラム(024sampleLDA2D.bas)を公開します。
1次元定常状態の多電子系の電子密度とエネルギーを求める2次元のプログラム(022sampleLDA1D.bas)の2次元版です。

表示の説明:
オリーブ色は電子密度を表します。[D]を押すことで表示を変更できます。
[1] ~ [6] を押すと、系の中の電子の個数が変更できます。
表示のEnは電子軌道のエネルギー、Occは軌道の占有率です。

試験環境:
本プログラムは十進BASIC 6.6.3.3 / macOS 10.7.5 でテストしました。


プログラムが500行を超えたため、2つに分割して投稿します。


便宜のため、下記のURLでgoogle driveの一部を公開設定しました。
https://drive.google.com/drive/folders/0B6IBSbrPZRAVbFgxQU1LeE0yLUk
公開期限はありませんので、いつでもダウンロードできると思います。
本プログラムは024sampleLDA2Dv1.basです。
今までに投稿したプログラム([001]~[023])もあります。


---------------

!
! ========= RSDFT - local density approximation 2D ==========
!
! 024sampleLDA2D.bas
!   Copyright(C) 2017 Mitsuru Ikeuchi
!   Released under the MIT license ( https://opensource.org/licenses/MIT )
!
! ver 0.0.1   2017.09.06  created
!
OPTION ARITHMETIC NATIVE
DECLARE EXTERNAL SUB lda2d.setInitialCondition,lda2d.iterateLDA,lda2d.drawState,lda2d.setNumberOfElectron
DECLARE EXTERNAL FUNCTION INKEY$

LET stateMax = 10  !state 0,1,...,stateMax-1
LET vIndex = 0     !0:harmonic potential,  1:quantum well
LET nElectron = 4
LET iterMax = 5    !5 = iteration in iterateLDA
LET dispMode = 0   !0:Vext+rho, 1:Vext+rho+orbit, 2:rho+Vext+Veff+Vh+Vx+Vc
CALL setInitialCondition(stateMax,vIndex,nElectron)

DO
   CALL iterateLDA(stateMax, iterMax)
   CALL drawState(dispMode)
   LET S$=INKEY$
   IF S$="D" OR S$="d" THEN
      LET dispMode = mod(dispMode+1,3)
   ELSEIF S$="1" OR S$="2" OR S$="3" OR S$="4" OR S$="5" OR S$="6" THEN
      LET nElectron = VAL(s$)
      CALL setNumberOfElectron(nElectron)
   ELSEIF S$="7" THEN
      LET vIndex = 0
      CALL setInitialCondition(stateMax,vIndex,nElectron)
   ELSEIF S$="8" THEN
      LET vIndex = 1
      CALL setInitialCondition(stateMax,vIndex,nElectron)
   END IF
LOOP UNTIL S$=chr$(27)
END

EXTERNAL FUNCTION INKEY$
OPTION ARITHMETIC NATIVE
SET ECHO "OFF"
LET S$=""
CHARACTER INPUT NOWAIT: S$
LET INKEY$=S$
END FUNCTION

! ---------- RSDFT - local density approximation 2D ----------
!
! - real space density functional theory - local density approximation
! - solve Kohn-Sham equation - successive approximation
! - Vxc : LDA(local density approximation)
!         J. P. Perdew and A. Zunger; Phys. Rev., B23, 5048 (1981)
!
! procedure
! (1) given: trial |i>, occupation(i)
!
! (2) set electron density rho
!     rho <-- |i>, occupation[(i), mixing rho(iter-1)
!
! (3) set effective potential
!      Veff = Vext + Vh + Vx + Vc
!      Vh <-- rho (Poisson eq. ,SOR iteration)
!      Vx,Vc <-- rho (LDA:Perdew-Zunger)
!
! (4) solve Kohn-Sham equation (successive approximation)
!      |i> steepest descent method: |i(next)> = |i> - dump{H-E}|i>
!      E(i) <-- <i|H|i>
!      {|0>,..,|i>,..,|N>} orthogonallization : Gram-Schmidt
!
! (5) sort state
!      sort orbit by E(i)
!
! (6) set occupation
!      occupation(i) <-- E(i)
!
! (7) goto (2)
!
MODULE lda2d
MODULE OPTION ARITHMETIC NATIVE
OPTION BASE 0
PUBLIC SUB setInitialCondition, setNumberOfElectron, iterateLDA, drawState
SHARE NUMERIC NNx,NNy, dx,dy, lz, iterCount
SHARE NUMERIC numberOfElectron, numberOfElectronBounds, numberOfOrbit, errorDecisionOrbit
SHARE NUMERIC energyMem, iterationError, convergenceErrorMax, dampingFactor
SHARE NUMERIC mixing,broadening
SHARE NUMERIC cosAx,sinAx,cosAy,sinAy,cx0,cy0,cz0 !--- 3D graphics
SHARE NUMERIC sdEnergy(20)        ! electron state energy
SHARE NUMERIC sdState(20,200,200) ! electron states 0...20 0:ground state
SHARE NUMERIC occupation(20)      ! occupation of orbit
SHARE NUMERIC wrk(200,200)        ! state work space in steepestDescent
SHARE NUMERIC vv(200,200)         ! effective potential
SHARE NUMERIC vvext(200,200)      ! external potential
SHARE NUMERIC vvh(200,200)        ! Hartree potential
SHARE NUMERIC vvx(200,200)        ! exchange potential
SHARE NUMERIC vvc(200,200)        ! correlation potential
SHARE NUMERIC rho(200,200)        ! charge density
SHARE NUMERIC psicol(64,64)       ! MAT PLOT CELL matrix for psi(x,y)
SHARE NUMERIC vcol(64,64)         ! MAT PLOT CELL matrix  for potential V(x,y)
LET NNx = 64                  ! max number of sdState(,NNx,NNy)
LET NNy = 64                  !
LET dx = 0.25                 ! (au) x-division
LET dy = 0.25
LET lz = 12.0                 ! (au) v=dx*dy*lz
LET iterCount = 0             ! sd iteration count
LET numberOfElectron = 4      !
LET numberOfElectronBounds = 6! selection bounds OF numberOfElectron
LET numberOfOrbit = 10        !
LET energyMem = 0.0
LET iterationError = 1.0
LET convergenceErrorMax = 1.0e-5
LET dampingFactor = 0.01     ! steepest descent method
LET mixing = 0.5             ! charge mixing in setRho()
LET broadening = 0.01        ! (au) level broadening IN setOccupation

! ---------- set initial condition

EXTERNAL SUB setInitialCondition(stateMax,vIndex,nElectron)   !public
   DECLARE EXTERNAL SUB setInitialState,setExternalPotential,initDraw
   LET iterCount = 0
   LET numberOfElectron = nElectron
   CALL setInitialState(stateMax)
   CALL setExternalPotential(vIndex)
   CALL initDraw
   ! set window
   SET WINDOW 0,500, 0,500
END SUB

EXTERNAL SUB setNumberOfElectron(nElectron)   !public
   LET numberOfElectron = nElectron
END SUB

EXTERNAL SUB setInitialState(stateMax)
   DECLARE EXTERNAL SUB normalizeState
   RANDOMIZE
   FOR ist=0 TO stateMax-1
      FOR i=1 TO NNx-2
         FOR j=1 TO NNx-2
            LET sdState(ist,i,j) = RND-0.5
         NEXT j
      NEXT i
      CALL normalizeState(ist)
   NEXT ist
END SUB

EXTERNAL SUB setExternalPotential(vIndex)
   LET x0 = 0.5*NNx*dx
   LET y0 = 0.5*NNy*dy
   FOR i=0 TO NNx-1
      FOR j=0 TO NNy-1
         LET x = i*dx
         LET y = j*dy
         IF vIndex=0 THEN
            LET vvext(i,j) = 0.5*((x-x0)*(x-x0)+(y-y0)*(y-y0))
         ELSEIF vIndex=1 THEN
            LET r = SQR((x-x0)*(x-x0)+(y-y0)*(y-y0))
            IF r>5 THEN LET vvext(i,j)=20 ELSE LET vvext(i,j)=0
         ELSE
            LET vvext(i,j)=0
         END IF
      NEXT j
   NEXT i
END SUB

EXTERNAL SUB setInitialOccupation(nOrbit, nElectron)
   LET occ = 1.0*nElectron/nOrbit
   FOR iState=0 TO nOrbit
      LET occupation(iState) = occ
   NEXT iState
END SUB

EXTERNAL SUB initDraw !--- set set color pallet and MAT PLOT matrix vcol(,)
   FOR i = 0 TO 50 !--- set color pallet
      SET COLOR MIX( 40+i) 0.02*i,0.02*i,0     ! red for |psi> +
      SET COLOR MIX(100+i) 0,0.02*i,0.02*i     ! blue for |psi> -
      SET COLOR MIX(160+i) 0,0.02*i,0     ! green for V(x)
   NEXT i
   FOR i=0 TO NNx-1 !--- set vcol(,)
      FOR j=0 TO NNy-1
         LET col = 0.02*vvext(i,j)
         IF col>1 THEN LET col = 1
         IF col<0 THEN LET col = 0
         LET vcol(i,j) = 160+INT(col*50)
      NEXT j
   NEXT i
END SUB

! ---------- iterate LDA

EXTERNAL SUB iterateLDA(stateMax, iterMax) !public
   DECLARE EXTERNAL FUNCTION steepestDescent
   DECLARE EXTERNAL SUB setElectronDensity,setEffectivePotential,solveKohnSham,sortState,setOccupation
   LET errorDecisionOrbit = int((numberOfElectron-1)/2)
   CALL setElectronDensity
   CALL setEffectivePotential
   CALL solveKohnSham(numberOfOrbit,iterMax)
   CALL sortState(numberOfOrbit)
   CALL setOccupation(numberOfOrbit,numberOfElectron)
   LET iterationError = sdEnergy(errorDecisionOrbit) - energyMem
   LET energyMem = sdEnergy(errorDecisionOrbit)
END SUB

!--- (2) set electron density rho <-- sdState(), occupation()
EXTERNAL SUB setElectronDensity
   FOR i=0 TO NNx-1
      FOR j=0 TO NNy-1
         LET rho(i,j) = rho(i,j)*(1.0-mixing)
         FOR ie=0 TO numberOfOrbit-1
            IF occupation(ie)>0.0 THEN
               LET rho(i,j) = rho(i,j) + mixing*occupation(ie)*(sdState(ie,i,j)*sdState(ie,i,j))/lz
            END IF
         NEXT ie
      NEXT j
   NEXT i
END SUB

!--- (3) set effective potential <-- electron density
EXTERNAL SUB setEffectivePotential
   DECLARE EXTERNAL SUB poisson,setVxc

   CALL poisson(20) !setVh
   CALL setVxc
   FOR i=0 TO NNx-1
      FOR j=0 TO NNy-1
         LET vv(i,j) = vvext(i,j)+vvh(i,j)+vvx(i,j)+vvc(i,j)
      NEXT j
   NEXT i
END SUB

EXTERNAL SUB poisson(iterMax)
   LET h2 = 4.0*PI*dx*dx
   LET omegav4 = 1.8/4.0
   FOR iter=0 TO iterMax-1
      FOR i=1 TO NNx-2
         FOR j=1 TO NNy-2
            LET vvh(i,j) = vvh(i,j)+omegav4*(vvh(i+1,j)+vvh(i-1,j)+vvh(i,j+1)+vvh(i,j-1)-4.0*vvh(i,j) +h2*rho(i,j))
         NEXT j
      NEXT i
   NEXT iter
END SUB

EXTERNAL SUB setVxc  !set exchage and correlation potential (Perdew and Zunger)
   LET c1 = -0.984745022
   FOR i=0 TO NNx-1
      FOR j=1 TO NNy-2
         LET rh = rho(i,j)
         LET rh3 = rh^0.33333333
         LET vvx(i,j) = c1*rh3
         LET rs = 0.6204/(rh3+1.0e-20)
         IF rs>=1.0 THEN
            LET sqrtrs = SQR(rs)
            LET ec = -0.1423/(1.0+1.0529*sqrtrs+0.3334*rs)
            LET vvc(i,j) = ec*(1.0+1.22838*sqrtrs+0.4445*rs)/(1.0+1.0529*sqrtrs+0.3334*rs)
         ELSE
            LET vvc(i,j) = -0.05837-0.0084*rs +(0.0311+0.00133*rs)*LOG(rs)
         END IF
      NEXT j
   NEXT i
END SUB

EXTERNAL FUNCTION eeCorrelation(rh)
   LET r = 0.6204/(rh^0.33333333+1.0e-20)
   IF r>=1.0 THEN
      LET ec = -0.1423/(1.0+1.0529*SQR(r)+0.3334*r)
   ELSE
      LET ec = -0.0480-0.0116*r+(0.0311+0.0020*r)*LOG(r)
   END IF
   LET eeCorrelation = ec
END FUNCTION

!--- (4) solve Kohn-Sham equation
EXTERNAL SUB solveKohnSham(stateMax, iterMax)
   DECLARE EXTERNAL FUNCTION steepestDescent
   DECLARE EXTERNAL SUB GramSchmidt,sortState
   FOR i=0 TO iterMax-1
      FOR ist=0 TO stateMax-1
         LET sdEnergy(ist) = steepestDescent(ist,dampingFactor)
      NEXT ist
      CALL GramSchmidt(stateMax)
      LET iterCount = iterCount + 1
   NEXT i
END SUB

EXTERNAL FUNCTION steepestDescent(ist,damp)  !---  steepest descent method
   DECLARE EXTERNAL FUNCTION energyOfState
   DECLARE EXTERNAL SUB normalizeState
   LET h2 = 2*dx*dx
   LET ei = energyOfState(ist)               !---  E_ist = <ist|H|ist>
   FOR i=1 TO NNx-2                          !---  |wrk> = (H-E_ist)|ist>
      FOR j=1 TO NNy-2
         LET pij = sdState(ist,i,j)
         LET wrk(i,j) = (4*pij-sdState(ist,i+1,j)-sdState(ist,i-1,j)-sdState(ist,i,j-1)-sdState(ist,i,j+1))/h2+(vv(i,j)-ei)*pij
      NEXT j
   NEXT i
   FOR i=1 TO NNx-2                          !---  |ist(next)> = |ist> - damp*|wrk>  ( norm(|ist(next)>) <>1 )
      FOR j=1 TO NNy-2
         LET sdState(ist,i,j) = sdState(ist,i,j)-damp*wrk(i,j)
      NEXT j
   NEXT i
   CALL normalizeState(ist)
   LET steepestDescent = ei
END FUNCTION

EXTERNAL FUNCTION energyOfState(ist) !--- E_ist = <ist|H|ist>/<ist|ist>
   LET h2 = 2*dx*dx
   LET s = 0
   LET sn=0
   FOR i=1 TO NNx-2
      FOR j=1 TO NNy-2
         LET pij = sdState(ist,i,j)
         LET s = s+pij*((4.0*pij-sdState(ist,i+1,j)-sdState(ist,i-1,j)-sdState(ist,i,j-1)-sdState(ist,i,j+1))/h2+vv(i,j)*pij)
         LET sn = sn+pij*pij
      NEXT j
   next i
   LET energyOfState = s/sn
END FUNCTION

EXTERNAL SUB GramSchmidt(stateMax)  !--- Gram-Schmidt orthonormalization
   DECLARE EXTERNAL FUNCTION innerProduct
   DECLARE EXTERNAL SUB normalizeState
   CALL normalizeState(0)
   FOR istate=1 TO stateMax-1
      FOR ist=0 TO istate-1
         LET s = innerProduct(ist,istate)
         FOR i=1 TO NNx-2
            FOR j=1 TO NNy-2
               LET sdState(istate,i,j) = sdState(istate,i,j) - s*sdState(ist,i,j)
            NEXT j
         NEXT i
      NEXT ist
      CALL normalizeState(istate)
   NEXT iState
END SUB

!--- (5) sort state
EXTERNAL SUB sortState(stateMax)
   FOR ist=stateMax-2 TO 0 STEP -1
      IF sdEnergy(ist)>sdEnergy(ist+1)+0.00001 THEN
         FOR i=0 TO NNx-1
            FOR j=0 TO NNy-1
               LET w = sdState(ist,i,j)
               LET sdState(ist,i,j) = sdState(ist+1,i,j)
               LET sdState(ist+1,i,j) = w
            NEXT j
         NEXT i
         LET w = sdEnergy(ist)
         LET sdEnergy(ist) = sdEnergy(ist+1)
         LET sdEnergy(ist+1) = w
      END IF
   NEXT ist
END SUB

!--- (6) set occupation
EXTERNAL SUB setOccupation(stateMax, nElectron)
   DECLARE EXTERNAL FUNCTION trialOcc,FermiDirac
   LET eUpper = sdEnergy(stateMax-1)+1.0
   LET eLower = sdEnergy(0)-1.0
   FOR i=0 TO stateMax-1
      IF sdEnergy(i)>eUpper THEN LET eUpper = sdEnergy(i)
      IF sdEnergy(i)<eLower THEN LET eLower = sdEnergy(i)
   NEXT i

   DO WHILE (eUpper-eLower>1.0e-12)
      LET eFermi = (eUpper+eLower)/2.0
      LET ntrial = trialOcc(stateMax, eFermi)
      IF ntrial<nElectron THEN
         LET eLower = eFermi
      ELSE
         LET eUpper = eFermi
      END IF
   LOOP
   LET eFermi = (eUpper+eLower)/2.0
   FOR i=0 TO stateMax-1
      LET occupation(i) = 2.0*FermiDirac(sdEnergy(i), eFermi)
      IF (occupation(i)<0.0001) THEN LET occupation(i) = 0.0
      IF (2.0-occupation(i)<0.0001) THEN LET occupation(i) = 2.0
   NEXT i
END SUB

EXTERNAL FUNCTION trialOcc(stateMax, eFermi)
   DECLARE EXTERNAL FUNCTION FermiDirac
   LET s = 0.0
   FOR i=0 TO stateMax-1
      LET s = s + 2.0*FermiDirac(sdEnergy(i), eFermi)
   NEXT i
   LET trialOcc = s
END FUNCTION

EXTERNAL FUNCTION FermiDirac(ee, ef)
   LET et = broadening !level width
   LET a = (ee-ef)/et
   IF a>100 THEN LET ret = 0.0 ELSE LET ret = 1.0/(EXP(a)+1.0)
   LET FermiDirac = ret
END FUNCTION

! ---------- utility

EXTERNAL FUNCTION innerProduct(ist,jst)  !--- <ist|jst>
   LET s = 0
   FOR i=1 TO NNx-2
      FOR j=1 TO NNy-2
         LET s = s + sdState(ist,i,j)*sdState(jst,i,j)
      NEXT j
   NEXT i
   LET innerProduct = s*dx*dy
END FUNCTION

EXTERNAL SUB normalizeState(ist)
   LET s = 0
   FOR i=1 TO NNx-2
      FOR j=1 TO NNy-2
         LET s = s + sdState(ist,i,j)*sdState(ist,i,j)*dx*dy
      NEXT j
   NEXT i
   LET a = SQR(1/s)
   FOR i=1 TO NNx-2
      FOR j=1 TO NNy-2
         LET sdState(ist,i,j) = a*sdState(ist,i,j)
      NEXT j
   NEXT i
END SUB

EXTERNAL FUNCTION totalEnergy
   DECLARE EXTERNAL FUNCTION eeCorrelation
   LET sei = 0.0
   FOR i=0 TO numberOfOrbit-1
      LET sei = sei + occupation(i)*sdEnergy(i)
   NEXT i
   LET s = 0.0
   FOR i=1 TO NNx-2
      FOR j=1 TO NNy-2
         LET s = s + (-0.5*vvh(i,j)-0.25*vvx(i,j)+eeCorrelation(rho(i,j))-vvc(i,j))*rho(i,j)
      NEXT j
   NEXT i
   LET s = s*dx*dy
   LET totalEnergy = sei + s
END FUNCTION

! ---------- 3D graphics
 

Re: 関数実行するたびカウントアップ

 投稿者:Bsitumonn  投稿日:2017年 8月26日(土)20時34分42秒
返信・引用
  > No.4397[元記事へ]

SHIRAISHI Kazuoさんへのお返事です。

丁寧な説明ありがとうございます。
 

レンタル掲示板
/151