[".windows~.;Windows ","","YkqQjImplementation of ShowDialog: C#jqqj/kc<k,>q/kcThis mkC is part of the dialog.q/kc</k,>qjk-k*DialogResult ShowDialog(k? title,qYk? largeHeading,qYk? smallExplanation,qYk? leftButton,qYk? rightButton,qYImage iconSet)q{jqYkcCall the k0 constructor so the users only need to call thisqYkcfunction, which is similar to MessageBox.Show.qYkcReturns a standard DialogResult.qYjk8(BetterDialog dialogk_kXBetterDialog(title, largeHeading,qYYsmallExplanation, leftButton, rightButton, iconSet))qY{qYYDialogResult k:k_dialog.ShowDialog();qYYk@ k:;qY}q}jqq/kc<k,>q/kcThis is the calling convention of the above mkC.q/kcUse this to show a custom dialogkSyour source code.q/kc</k,>qjk0 kREk4Call()q{qYDialogResult k:k_BetterDialog.ShowDialog(QReset Journal SettingsQ,qYYQSettings will be erased permanentlyQ,qYYQThis will not affect any of the text contentkSthe database.Q,qYYQResetQ, QCancelQ, Properties.Resources.DialogWarningXP)kIYjk[k:k^DialogResult.OK)jqY{qYYk%QUser accepted the dialogQ);qY}q}jImplementation of BetterDialog constructor: C#jqqj/kc<k,>q/kcUse this with the above k-mkC.q/kc</k,>qjk0 BetterDialog(k? title,qYk? largeHeading,qYk? smallExplanation,qYk? leftButton,qYk? rightButton,qYImage iconSet)q{jqYkcSet up some properties.qYjthis.Fontk_k7Fonts.MessageBoxFont;qYthis.ForeColork_k7Colors.WindowText;qYInitializeComponent();qYthis.Widthk_350;qYthis.Heightk_150;jqqYkcDo some measurements with Graphics.qYjk8(Graphics graphicsk_this.CkMGraphics())jqY{qYYSizeF smallSize;qYYSizeF bigSizekIYYk[k?.IsNullOrEmpty(smallExplanation)k^false)qYY{jqYYYkcNote: at this pokb, we could detect that the OS is VistaqYYYkcand do some customizations. That logic iskSthe download.qYYYkcThe code here does some measurements.qYYYjlabel1.Fontk_kXFont(k7Fonts.MessageBoxFont.FontFamily.Name, 8.0f,qYYYYFontStyle.Bold, GraphicsUnit.Pokb);qYYYsmallSizek_graphics.Measurek=(smallExplanation, this.Font,qYYYYthis.label2.Width);qYYYbigSizek_graphics.Measurek=(largeHeading, label1.Font,qYYYYthis.label1.Width);qYYYthis.Heightk_(kb)smallSize.Heightk`166;qYYYdouble biggerk_(smallSize.Width > bigSize.Width) ?qYYYYsmallSize.Width : bigSize.Width;qYYYthis.Widthk_(kb)biggerk`100;qYY}qYYelseqYY{jqYYYkcWe have a null QsmallExplanationQ, so we have a single messageqYYYkcdialog. Do some different changes. Code omitted kVbrevity (youqYYYkccan find the logickSthe download if you want to see it).qYYj}qY}jqqYkcEstablish a minimum width.qYjk[this.Width < 260)qY{qYYthis.Widthk_260;qY}jqqYkcSet the title, and some Text properties.qYjthis.Textk_title;qYlabel1.Textk_largeHeading;qYlabel2.Textk_k?.IsNullOrEmpty(smallExplanation) ?qYYk?.Empty : smallExplanation;jqqYkcSet the left button, which is optional.qYjk[k?.IsNullOrEmpty(leftButton)k^false)qY{qYYthis.buttonLeft.Textk_leftButton;qY}qYelseqY{qYYthis.AcceptButtonk_buttonRight;qYYthis.buttonLeft.Visiblek_false;qY}qYthis.buttonRight.Textk_rightButton;jqqYkcSet the PictureBox and the icon.qYjpictureBox1.Imagek_iconSet;q}j","K(ErAB*L(|F669((B(CE(P66G7666666+(CEE(Z(((L.C","Customized Dialog Box."," MessageBox doesn't adhere to some UI guidelines. Here we have sample code for a customized dialog box. And you can use the new dialog in your programs just as easily as you can use MessageBox.Show.","450px","240px","ShowDialog."," Here we can use a special static method. It has a private constructor. We call its public method called ShowDialog. The following code sample is part of the code of the custom dialog. Here we implement ShowDialog, and then call it. ","The above code"," uses several arguments. The first arguments are for the title, heading, text and buttons. If you want a button not to appear, pass in null instead of a string, and it won't be shown.","Button usage."," It has a default button. In my implementation, the first button is always the default and it is also the confirm button. This matches Microsoft's guidelines. You can find more information on Button controls here. ","Button ","button","Custom image usage."," It shows a custom Image. The last argument is an Image resource called DialogWarningXP. You can use an Image from your program's resources, and BetterDialog will use that as its icon. ","Finally: ","It returns a standard DialogResult, which you can test as normally by using DialogResult.OK or other enums on DialogResult.","DialogResult ","dialogresult","Logic."," The following code sample implements the basic logic, but lacks many of the details in my implementation. If you are writing your own dialog, you can see some of the logic and method calls used and the general technique. ","The above dialog code"," uses the CreateGraphics method. It uses this.CreateGraphics to get a Graphics object on the form. It uses a bit of logic with MeasureString and attempts to lay out the dialog.","Layout issues."," It has const values. I had to painstakingly find several const values that would lay out and position the dialog's elements properly. It also has a table layout, which simplifies the design. ","The layout is done with two TableLayout panels, with a white background so that it can better match Windows' themes.","Const ","const","TableLayoutPanel ","tablelayoutpanel","Hiding and showing cells."," It can hide or show parts. It can hide or show various parts of the itself. It will hide buttons you specify as null, and it will collapse and hide the text if you don't supply it.","Properties."," This dialog has some special attributes. The custom dialog has the following properties, many of which are not in the default MessageBox in Windows Forms. It is simpler to use: you can just pass in different arguments.","It uses the proper fonts."," It uses Segoe UI font on Vista, and Tahoma on XP. Header text and layout is precisely equal to the Vista standard, which says you should have larger header text on the dialog.","It allows custom button text."," Supports action verbs as its confirm button, and also 1 or 2 buttons. It allows custom icons. Can use custom icons\u2014pass in an Image resource and it will displayed as the alert message.","Designer."," Here is a picture of the form in the Visual Studio 2008 Designer. You can see the basic layout, with two TableLayoutPanel controls and the PictureBox. This is the basic skeleton of the custom dialog.","360px","180px","Summary."," Here we saw an example of a custom dialog in the C# language. Unfortunately, there are some weaknesses here. It can look odd in edge cases, such as when displaying the text of a long book. ","Rigorously test your code to make sure it doesn't embarrass you down the line."]

%iVBORw0KG;)NSUhEUg?AK)AxCAM?ABqK1L5)MFBMVEX:/+zzvd8rvO/1fj1+P4xiu5tpfFbnfDg6/xIk++ZvvWLtvSmxvbV5Pvr8v3K3PnaFXRJ)1ElEQVR4Xu3W7QbEMBBG4Xcm3/3a+7/bVZRlqEI5Vs7vhIcwE+3lQbrP4/kHN2LNfbW06zcAMDTWlFnA2LDMAsbGBwaMJTqwJDqw7HRgpQNLogOdDiwHHZjowEXqflXj7r56H2hmW43AevttMIVeA+qsRyILqE4HKrxyhwG3sO1gQPt34AQ6HJgHfMxsBQ081uBrGKC7txJbAcDbjA7scOAQHGhw4DjgQBMbWMUGtswG1iw0cMsiA5dDwgLbkrJEA/rZYpb2gGMAdRMZOIETOIETOIFfGWpGTAdlDEM)ASUVORK5CYII=%iVBORw0KG;)NSUhEUg?AbI?ADpCAM?AB2k0Ku)wFBMVEX:/+Q2/8)6oN5stvX32ZnW1tbn8Pve3t6EhIS1tbWZmZmkpKSMjIxBSVIAM5k8f7He7v0AXL1LU1zt9v7dnURjBwq2ZgD2rHd+Ng8?Fa9vb2tra3boKv39/dzc3PW5vbH3vV1SUi2::/957e3u50erb:8Af97U6P7MzMzv7+9mZmbuvbI5BApC0fUqLzXFxcX:7Y6AGY6M5m2f5nm5ubYnJOtRTplb3u9WkvJeGdmADos0/7usaiQWpkHY+tW?ANzElEQVR4Xu3ch3LjuBIFUEbFnHNwznFy2v3/v3qNBtWGaUqWVtKA9Lu3diQSAGGvTzVIC1PjWAiCILPUBMmiF7Kp1431IBuopVALWYtmeH1NRRBDbZ0YAxRSEIQpxGw1GHvlUhBEqwnaKjHNdZ2CIBFbspkWUxXGXk+pCMJqqtS0WYIYlxh5jcelFAQZj7WamCWKEVipNJlU7AeZTFgtwUzIuMTGk0q5Wq0WLQepVstlpUZm12wWI+MiU2KlcvG2bSG1eJD27byo0MZjNuMyM8lIrKDEqvPbknOwIMebDzwq1+ZnVWX2RGSvzWRZfBqX59XZLN/cJIt4mmby+bx5zKf7z9V+s9hHmuvSOc79c6fyzzvJHXcWi/PafE51VmIzTRYvsvHk7Mes09wySWBbJB1gksOadWo5UVlPViMyMrutKrOozOJkVGSlym2JxHZNfrtYELNjxmR306lJU6T7eDF6lUyn0ztNVm0Xycwos1frIj973DobVMneu.fo8Yk68m+qSx12gTQLvIrn3+LosmOgtqZLjN5aHxNNp5U2w552Yh9MMmByVhEwlrajc9NMsrD4zwqs1xOnvONdXFcIbJ9iXU2i5hZF5Mcssw6j0xm5Kw9U2mfvW6+e4zIbrnMeGUUMmUWrYuVYs1583M/EFec7aBi9utMyP75FctZmzZP2vNY69QkK09KcjNbSXbT9zyv1eysS7dlVKQa77n5fHfk6t7wEx3EE9Kg+snOZlfZJbv/9v37959mjpns2Gj5Tvl2L2RqZYyRya3sFZnfeS9dk7R/qUD4onVk9ZMbGrmTGYOlHm0tmc6LmJhJn0EW3cyM5w+TrKzJSGAzsguTTIsYZOeJZHJZEln2xSSbVBmL0YYY/5E625zs6S1ZODrv9Fu5Hq2RF+GnM89zQ4+bqMVVZGr9bDWF7LTnEkoYjT/qdD3P83k5HA19qTKfZqeWI1VvYc8VM9tiZg5IxiySNm2ItY/59VX7G7IntW9mkvED44TJOirKwvMJRxdOSBa91kWfbkRk01deo3MioxONK2QynsjC0ZG+0tVrJuORJplfdLrK1iU/IdsrmH20FWTTyOSXzrzdbs/59ZbPV5BN+CnfJPsaI2MINiAd5uMfvPJgKNbpt;9j3IpZLQYEpkeT8fUpjqINoLVE9QLZEi85E5+W5FZ5trdrPM4/bVB5InxD5GdGWQ3cbL4wqi0XFUTBEQECWSueS9TlUMoMj6ZjDqWZGGMLPU1tjvZcXX6bROx6vG7ZIXrBDLS6tYXdBh6BlmzPzpXOuqo1TTIup4qxCMZT6+8MCp2T8jIta/fwl7Q22JhFLEs386+PhbHd++n+FhoxsiuC4WVZPJ7Wb07cm/6vPwpAlfIHnveyFVHtHDSEZN56iifJ5RTGa8fP9RbfajJeJR+/HBPe5fKlsEoFrhsLI35n8Ph8JEzjIfbuef4hrxiZKurTLLyg4r+5fafgnA5JSdvQcze0tjsbJTmFmTNdxiEbCu2cOQmUUksLInWtzvX7xlvQ9Zsbk22fhvmKy+Uu+y9XFnKXzZr/jey2dJ8P7ta+9h0ubKXTJFtnx2+VwtiNsvMPtliVTIsJmQW6uygZIt3Yx3MPlqayBabJJNOZrJC1tkl8nD/EXPY/Xkz25F1Jj8sB6l0tiP74VgO8gNkIENAhoAMZAjIEJCBDAFZugIyBGQgUxIgAxkCMgRkIENAhoAMZAjIEJA5IMtT3iM7fycA2AeZkgDZAQMykM1SRYagylBlM5BtH5CBrLMpWUclDWQ;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)BJRU5Er@ggg==%iVBORw0KG;)NSUhEUg?AG4?ACCAgM?ADasxWR)DFBMVEX/6Nn:/+VlZX29va5ksB5)SElEQVR4AWPACZj/f0DmjkqOSjKtQgcLyJccZiEE9SOmP8mXHEaBMBoIo4EwGggryJccvvVKKAogTnJUclRyVHLklgmjkqOS?LWyrsxEHLD)AElFTkSuQmCC!CCCC%iVBORw0KG;)NSUhEUg?AIw?AB4BAM?ADS7QcC)GFBMVEX:/95cvSaspm/zr6ppPiuqvilofiMhfa6xS0c)fUlEQVR42u3XsQmAMBgF4V9x?OCfVxAdAEdQtwg1il0fsHS8IpIsLob4OvPnKy1V7WXWR9ER8oMs8hbZ6ImZUYTTTAwMDAwMDAwMDAwMDAfmX4T7Tl3V+o1iYieKifLYs5NFLOYxUQrDAwMDAwMDAwMDAwMzA/MFUSx0GveDtlxrtujxRk)ASUVORK5CYII=!CC%iVBORw0KG;)NSUhEUg?ANw?ACLC)?vuqgS?AFVUlEQVR4AdyVsZEkIQxFL1olQAa4JE?7REAtlx8TJm4uJh/W6eG2aXmrs6avplvICS+uvoVFPzCu2lwwT/q7eCGI0ofCFd1KHTq0+AkOdLYich/GlycGybH0f4TuC6nRmeuM+vg2ACMysx991gTzyVdQTsyJBCRiFUMrjFzGbOh6GdeDMd0Kujgm2UhEQlQHany2D1AJpUrAHTCjiLIZJUIYERaHfaBTHQHnMmNlQnKrIbdo2ymisn0BC7Mjo6m0RO9HE4inTqyjoyeLrjhNBcdy+Zp+sdVPJEHZMI9jqWm1xmQeo4JYn3u5XBgu93CY5N8B4pVs0JtHtaaSLKNMODvF4rBacqiyNF2LtXKfAdctkAWGBajMYbNk2ipQVEcnsB5c9hysgmPO+DSDziZcBbC5tHRx99aKM93LkRVBlAPUoWbjmWcGAZX7fJIegQ3TzFSQPAXOO0sAEYDSox1VD3UcgPcuiyK1/9vALxWWauyebpTOmZPzZBcnnA1r0olDZydH2Cdyl1wpjCuRAC920xp96DMxA+QKj4eP6xKmq4DCnc9JDfABacUA9/grlfBl90DoHrD7gtF/e4nHNjNW4SJatRqww1wjCYDuyDS/+BpIoJNQ5Z/9csDp+viHY94LF/tmr1rvEwUhf/bU003rdW0V@Y0m1jZ7fNZcBmCxurbSwtLbaxsBFB9n0J/BIZNq4zGMzccJ8uIGwe/Jj7cXZf483x5dd7+DWhiBwC2W55nFdj6pr6WlpbXuumm9xruMm5TG1FDlU7uVewlRsbS0/YZjxWzpw8MQFyj9bSt9j2caTciTw5+cuNFa1SDbzl7iW9wN45y3WWXmI7vnIdbdJxlbtb2sTeecoNljywA0e5R0VeVA+Gci150vKTGy15Ykd2cg1503CTmyx5Yydmci0F0DKTqyiAipfcREGMrOQ6CqJjJddQEA0ruZqCqFnJXSmIKyu5koIoWclRIH9ZzspjKR8UOQpiOcSl/JLCWVoeaVb3jxlkQCSjPRnKyjh9YSzJg3KQFZYsH6NfG8vCX6IaB4Rs5vWQzSzxKAm2/aLcSiTxODn+iFw4IidyIidyIidyIidyIidyIidyIidyIidyIidyx05Bh7rIEq2UTrKiHp7lfH5hbOvSlnU7RiU3lAYOphyC5ebGfg3252jk+kLhCZX3YXJTRQvVFIfcbP+pqSTNTqcsTT7/trMrZ15tpebKXV3MMcjdDT7QWUFfFJnGB6Zz5E6v9okNuTQRyN0UA.5uVCeAIC6+cqN1j/nc5TcFQD0mb7hrAHg6inX7gv6IBBvN3Ohb7mYxW5TrvYPRR4kdwOAjFbJAODmJVf6x+OPkevUeiRhUVCdj5ylJ35Vbjar9825d2ZmeOcsAEMbGACW3zvXK0BfaIOLBlTP7muZAzjTJmcAObdzblBAQh4kgBqYVSglgJw8yAGUzGpLA2jyQgOGV1cwAMjIiwxAz6qfqwEU5EUBoGbViReAIk8UULCaoWRAQp4kQMZKLgFS8iQFElZyCsjIkwxQrORCI8p/WU795cdSywdFjgKGh7jHP9DbVCud2j6+8muv3FTgk2KKrXDeKTcYLJghspZnn9ycAoBOs1QDQDrH1azukysA6Jw+yDWAIq4xwy65HoC+LDMnoI9qQLRL7gIgd56FS1SjvV1yKZC4D0Ma1VB2l5wGUrfk0VGN03fJKeCNFt4A7Jbb4K4AvG8uQu7/MbxzYSssZu9cwPKR3dcyaG3M7ZwLWvgzq1DCoho/VVu+HVJbLsy0FrKhebmKV1cQGo/i1M8FB9t+oBOnVEOn1P9WJBFYiST+DybMnFdEr5+5)AElFTkSuQmCC!CCC%iVBORw0KG;)NSUhEUg?AWU?ACdCAM?ABb7ZlJ?ABFFBMVEX:/8B?Li:9dOCj8/+E+DgfasIA2f8c4M2gRLHAZOX6+0MgOKG3tzZBWVVWby/LU0MhAQEDTpmTl0r6TtuCZxu/Jq3a2ubL3zqBwlMSAgIAlQIEgPX5IZ6H21ZI2R4+CpNIsSIcyTY3arW6Fqtfu++R4mshfQjU3VJRLgL5ZKRs8fcEpLG3:+yBfYDs0rTxzqyWueIVMHRCYJsvTIpXdqwiBAKRtN9mhrmgy/JUVFQZNHiMr9o7WJaAos+GqNRceqmKrNh9n81FZJ5tjr8/XZhigrZObKSdwekoRYRukcJLaqOPst2YvOSbvuekx+tqirw1T5J6nMtVdKukye9zlsZegLV9foNtf5VBPz9/;Ffc5iRajlg?AFlUlEQVR4Xu2chW4jOxiF7cEwc5lpkeEiMzO8/3vc378dq44Cq8aOdtrztWs3k1EUfTo9M3KdFe3AXxg3AGjroRUOYKPcEqEAk7bNcrA0A7JsIMu165Q1TyzvWSqVyrZly/CN4YB5pjlkfiHODR9M+ULzlPlMs8N8p/jK8pvlueZj5s8pX2peaX42fK75VjFW/MGcMr8Sn2o+ZPaZj5jj40+Y95nvFS+JHvGY+UHxo+Jrw0+G3+fTslkOZxmW/WcZloVLO0iWYXmmkm+Y5VyM5lrOxaMFlmHZzXIuiGye5QuROZb5zO7W9r7IZi3DspQtHudnmQS+bZbJ6fZVlDyYk2VYZsFSLshyrnN8HtGhh6VyztMTNXUvxOhKHc6uWVZBplkfZ8vH6qeDg74gBne5MSSxoJdNYZDlhyUSfh5lZZpyZfoxWVYXvub9B9YyDzSrJNNx/YAMD2h61rzLllnzol4mVCxH2vKInYsRaaPCyMnyBT2cZ3nfHH9Ehg/0tNAyssyQ4qdTy5nqZWtZXQD7bNltDBq3+m9rGb3M5DrL/IuflMivbYy+yNzGuIq6Wyw1cxvjWGSLLeMeo296mXujXOY5s1e/SiTuR2TTuZNTjTE9bq9+r5dc/XC/bFBZXncd43XyFyzPZtmv5UhdDe/q/fLEAesYQSy3Z7ita3JYX8b6chiAm+VGQzT8/8PsZrkh1mTuCwA3yyKIZTCb5bAgy+EaA6CX0cvIMkAvo5ffXdDLyDJAL6OX0cuwjF5GLwP0MnoZWV75lxcPoJcbG8gysrwq6R4so5fDW0aW0RboZfQyQC+jl4sDehm9jF6GZfQyenk3lVL27MHdvUj4Br3MWpO4R1M4y+hl1spDOMvoZdaalIZ7Uayqgx5Sh9QibpJKRNpLsbyKZc4HmqIjZa4HPt2cpp9bDHqZLZ+RZX5Q3zuJe6KzQyViYp421ffeyVmTDnRL0W6pqgY+nU/m55ZXDXrZZpljWSfPEduObJnwdz2VxEuV6kQNOsV8Gj+3KszoZbba5UAutkzpZeJapIaqOT0S+rlVoJepHrgMxFHFbQxr2XRDaZg2kzMeqny6bgweV5nG/TIb7UhdAXSkYq9+1nKUzFz9+HRdM+a55AaisY5xtMPTeqehl5eQpPZ6tsZp6GWA9WWsL7+jYH0ZvQzQy+hl9PLyrbVLLMOyVNgshwC0JE9yI58rgWWxKcvIstiIZWQZoJdxjwHL+Lyff/A5bHwOG1n28V+HEsB10nCybC1j9ju7WcbVzwW9jHuMDu96.qy3KlEIkmvaTa7iZBlj72cnDXFDL4VI8tWqd4iXopl7SSe7parUabjNesEvewGl/chN0Vnx27xpB/TnrdoI8vX93zzhvGZXcw+QC/zZNUGsox7jFd6iziNbmN4tYz7Zb1F/J+Ut3zXhmavuH/LWJNbRyh6GZaxjoG/lSDLPlZTBXCdEG6WwwDcLIcB3DzLAFlGlpFlgCwjywBZRpaRZYAsS3+0GOGN9u3JsvTmZGrZX3hvUZaFLyfhLWtgGVlGlkOCLMMysnx0r2ofxHK8nuWjF5IYO6+NLLsm6m+q9GgNy6yVhgFN5qEdkWXryIvl+hsaZi0jy+ZX/e9UylSWq16yrF6wPLgXS/n80rwmshyfajn0aP1eplcZXo6V7Rc8Ists2dj5109jXI612esjgSzT4K+XO4fzLaOX9S+4r6vfQDcGsuxW6WE9lfKUHNG89tWvdfmfufppy0N6zVBZxjpG5xDrGGEtq98NeVrMdQysY8Ay1uQmXkCWlyHbnrCWJ55YkmX8Dbvtj9VZBtiPgb1FAFlGlpFlgCwjywBZRpaRZYAsI8vI8qRASEXR3i97LhBSKGTR3i9luUgYy8V7v+0ifRnLBXu/PCLLeL+wvHmkonDv939VtiqT8KWSlw)BJRU5Er@ggg==%iVBORw0KG;)NSUhEUg?AL4?ABBCAM?ABYbu5j)MFBMVEX:/+1wv+jqv9siv/p6:W3f8zZv9gb:19v9NK/8zAP999:S:8z:8zzP+z6P/0gInF?ABg0lEQVR4XtXXy1ICURAD0H7c96D+/9/KQqkhlEKD0iTrWZzKYtJXbou2s+jvn1Q55f2mfAMOb6Ec5D6+c/ObcvOdm98qN9+5+a1w842b3wo33/6Dv2H22g3zCL+PKF/uSKDsGL8pN9+5+U25+c7Nb5Wb74R8h+ki41eYLja+Qf1k/AL1k/HF4XIg4ytMFxl/X7/z8aF+Ov6A6bqR:FTnswXa2B96LmyPZtfoH4yvsDlwMaHy4GLj/Xz8RXqJ+PD5UDGh+ni448O08XEh+lSrtUVnC6qm+ey/krGx+li4+N0sfHh7Cfj43Sx8bF+Mj5OFxkf67c8frF+jJUovzRIBr/4+kovMb5YPr/OdcrUGL9k8FG/Tw3xxbP55/o1R4hfk/m6IBbii+fyJ/JnjK+5/HWRGuJLfzG+xvh6lX89f8m3GH90ar7Ya/FrkF8y+XNhRpAvlsi3+H8fUxP5A+svYb54Hl8Uy4/zNZEvCvo4XzyRLzrhXg7zNZMvw/o6ptsQpvDnE+wJyVGQ5SG7)AElFTkSuQmCC!