{"id":832,"date":"2012-08-24T14:25:50","date_gmt":"2012-08-24T12:25:50","guid":{"rendered":"http:\/\/hasselba.ch\/blog\/?p=832"},"modified":"2012-08-24T14:26:15","modified_gmt":"2012-08-24T12:26:15","slug":"ssjs-execute-remote-ssjs-code","status":"publish","type":"post","link":"https:\/\/hasselba.ch\/blog\/?p=832","title":{"rendered":"SSJS: Execute remote SSJS Code"},"content":{"rendered":"<p>I have created a small helper class to run SSJS code from a remote server. The basic idea behind this class is a question on stackoverflow: <a title=\"Include jss file from notes document as resource\" href=\"http:\/\/stackoverflow.com\/questions\/12054733\/include-jss-file-from-notes-document-as-resource\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/12054733\/include-jss-file-from-notes-document-as-resource<\/a><\/p>\n<p>As far as I know there is no way to add a SSJS resource via the <em>src<\/em> attribute, this won&#8217;t work:<\/p>\n<pre>&lt;xp:this.resources&gt;\r\n   &lt;xp:script src=\"http:\/\/localhost:8080\/test.jss\"\r\n      clientSide=\"false\" \/&gt;\r\n&lt;\/xp:this.resources&gt;<\/pre>\n<p>It will always fail, even if the file is available, has the correct file extension etc.<\/p>\n<p><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAh4AAAImCAIAAACTiBTdAAAgAElEQVR4nOydeXhb1Z3+b0Jn2pkp0wXoStuZ6UwLBaa\/TKGQAgUyAykUhqQQwp5QdkjCThJnUxbbcXZCWEIWx3GceIn3Pba8y7sly5Z3y5IteZMsW16SkMW5vz9UNOIuR0fSlXRlv5\/nffLce+453\/M95957Xl0tDpOceCI\/L9ds7jt7dgKCZqTM5r78vNzkxBPJiSdijh6qq6nobNP6qLqaipijh5ITT+gaqyEI4og5sH+PbcQyMT46brdB0IzUxPiobcRyYP+eA\/v3aDW16jpVbVWJj1LXqbSa2gP79wT9HoYgGYrZu2fHxMSYfWwEgmawJibG9u7ZsXfPjiZ1dY2qSBI1qav37tkR9HsYgmQoZu+eHRPjo\/ZRKwTNYE2MjzqspbGhqrpCKYkaG6pgLRAkKGbv7qhxu23MZuHL2tfVU5zYeHRT3f63avatqPn0w5bMwwMdWsHKECRnjdtte3dH7d0d1aiuqlYpJVGjumrv7qig38MQJEMxe3ZtH7ePjNqGOepVZTYdWj1Qc\/jiaM6V88or55UXR3MG6g6rDqxszjnGrw9Bcta4fWTPru17dm1X11dWlhdKInV95Z5d24N+D0OQDMXs3hlpHxuxjQy7Sl9wsitr7wVrxqW+g5fr\/vNSzU2Xam66XPefF\/UfX7Lnt2Tuajj9iXVogNMKgmQr+9jI7p2Ru3dGqutUlWUFBNVXlzlFrqmuU+3eGRn0exiCZChm184I+6jVZh1yqqf4tD5n\/\/R48oWWjReq\/8fhK5dqbrpc+9ML1f9zse7+y\/1ftOXurT39iWsrCJKz7KPWXTsjdu2MoLGW62+47fobbqOxll07I4J+D0OQDMXs3BExZrOOWAYdGjYZmo+svTiac776aXbVHHbVnEs1N3E2zhb86fLkmcKPXjO21jsbQpCcNWaz7twRsXNHRENtRUXpGYJqq0pvX7Do9gWLaqtKyTUbait27oC1QJCAmB1R4aMjFuvwgEM9Zen9lYenuzacV957Xnkv31rOl\/7PucI7Luo+0Jd\/Vh63y9mQccFZSCPX+p62Fezd6yDQDNboiGVHVPiOqPD6mvLyknyCaipLFix6bsGi52oqS8g162vKd0SFB\/0ehiAZitmxfdvoyLB1uN+hlsS944asy3X3Xqr5j+m6Gy\/X3XxF88PL9f91ueHW6cY7LqpumK678YLq9xdUvz9rLU7ZsszZkGEYwW238qiyX4NAM1ijI8M7tm\/bsX1bXU15WXEeR9WVxa5auOSFhUte4BTyW9XVlO\/Yvi3o9zAEyVBMVOQ2m3XIMmR2qDFacdZaPPLZ7SOf3e54WLnc+EfHxoW6JxwbI5\/dPpF0K3upIe6Dh50NGYbhb\/MLXZ8tnOXOXU4d57ZrEE4JvyNOd5x\/+UE4R6EZKZt1KCpyW1Tktrrq8rKiPI6qVcW\/uHn+r2+979e33nfbgkeXvLBqyQurblvwqKPkFzfPr1YV81vVVZdHRcJaIEhATGTkVldraTi88ZKtcurMYnvSYoeRTDfd+zdr0SxzbEzmPH6u9An2su7Eh484G9JbC30JYfXnOIGYYwlu87uDr8x42axDkZFbIyO31laXlRblclSlKrp1waIHl7704NKXFi1bsXzVuuWr1i1atsJRcuuCRVWqIn6r2uqyyMitzZoqCII4YiLCN7taizZ+90Sfcrpr7fnqV7+ylv92bFxs+utXHvPWpY4VF2yV8RufdjbkL+4WP1iLYC8WoWcOchpiCUAzVTbrUET45ojwzTWVJcWF2RxVliu1mlqnnn1jzbNvrHEtqSxX8lvVVJZEhG9uUldCEMQRE75N4WotneXp3YWHpvuPOq3FxVGWOa3l8vDhlpIjJSd2OhsSHgtct6V6auEI1gKRZbMOhW9ThG9TVKuKiwqyCFKVFS5e\/tbi5W+pygrJNatVxeHbFEG\/hyFIhmK2bdnkai3DA70VH62csminBxNGTy5lV825bFb87UMXs4JdNWfizIrL\/V9cOtuVtOW5ntYGZ8OgvyHGWUpgLZCrbNahbVs2bduyqbqiuOhMFkGq0sJFy1YtWrZKVVpIrlldUbxtyyZtgwqCII6YLZs3uFqLZcjcVpTUnLJ7+nz7efVGe9Li6aHTZ0vDzpaGTQ8mnK1cfaFp6\/T59rrTO0vidru2ElvrOW9hiTmQ61Exa3GNxlk4+O+VkX3INQisZTbIZh3asnnDls0bqiqKlGcyCaooLXhg6csPLH25orSAXLOqomjL5g2N9RUQBHHEKDat51jL8KBJk35Ym7x7cqTr8mTV9GDCdP\/R6b6D0\/1Hp23K6QuDtYlRRTGRw4OmoK8XEEQpm3VIsWm9YtP6ynJlYX4GQeUlZzQN1ZqG6vKSM+SaleVKxab16tpyCII4YjZtXMexFsuQeXjQ1HTmZO72l5pzDg91VU9aOyetnbbeuoqTUae3PF+WsB++AoWWbNahTRvXbdq4rqJMeSY3XRJVlCk3bVzXUFMGQRBHzMYNYXxrsQyZhwdNw\/3GJuVp5aGNOR+9nbHrzZz979dkHu3v7YSvQCEnm3Vo44awjRvCyksK8rNTJVF5ScHGDWENNaUQBHHEbFi\/VtBaIGgmyWYd2rB+7Yb1a0uVeTkZpyVRqTJvw\/q19dUlEARxxKwLWwNrgWa8bNahdWFr1oWtUZ7JzkiJl0TKM9nrwtbUVRVDEMQRExa2GtYCzXjZrENhYavDwlYX5GWkJsVJooK8jLCw1bWVxRAEccQseeJxWAs042WzDi154vElTzwesW3zO2+9KYkitm1e8sTjUZFbIAjiiBkeNEEQBEGQhIK1QBAEQRKLGRroo1S\/2djW3lqnVldUVReVVShLy5Wl5UVlFRVV1XXqhrb21gGzkT4aBEEQNFPFDPX3upWxp6uuvr6wpKy+Qa3Xdw30m6zDA47\/F9Y6PDDQb9Lru+obGgpLyuoaGoyGbpqYEARB0EwVM9hvJKjf1NOgUStLy9o72izD\/TbrIEGW4f62jlZlaVmDRt1vNpAjQxAEQTNVzIDZICZDT2dJeYVa2zg0aBqxDFBqaNCkbtSUVVb2GbsJwSEIgqCZKmbAZBBUT3dHUWm5vrtrZHjAC+m7u4pKy9dv2KgAAAAwy2D6TT18GfSdypJSg6HbOtzvtQyG7qZ2\/cVLl1gAAACzCaa\/T8+RydhVVFrW0dHm++\/UTKa+1i7D9PR0sIcJAAAgcDDm3m6Oautq6xvqhwf7CN9Ztgx+5R9uvt3c16k3mActwR4mAACAwMGYertd1d3Vll9UbDYZhwZNYhoeNHe0tx45FpOcmjbY3zcsXnNo0DQwYGps7cbbYgAAMHtgTMYuV1VVVzc3awk\/hBkeMHW2t0bHxB6LjTt6LDYtPX14wET+7UyP0djbPySWwblz51paWoqKijIzMzMzM4uKilpaWs6dOxfIWQAAACAhTJ+h0ymDvj23oNDU2yP2VeWh\/t7OjtbomNjYk\/GJp1NOJiSdTEgc6u8lf8G532xU6zouC33iYjabs7KyKisr1Wp1a2urWq3W6\/Xp6emZmZkmkynw0wEAAMB3mF5Dh1PaJrWqqnKg3yCowX5jR0dL9PHY2FPxiSmpSSlpCadTOjtbB\/uNYk2cau3Uj9onOH2bTKbc3FyLxTI5OanRaDIzMzMyMlQqVWpqamZmZlpaGtwFAABCEaa3p90pVZVKq1UPmHr4GjQbOjt00cdjY0\/GJ6WkJqWkJSandnW2DpqNgvU56tbrOe+JnT17Nj093WazXb58+dKlSxMTE+Xl5clfkZubq9Vq09LSzp49K5w3w3g5YIbxpbkrCoXC9yAhgeOL6q67QUwGACB\/GKO+3SllcUlnR2t\/Xw9HAyZDZ0eL432wpJS002kZyekZne2tgr+17DcZ+BEMBn1bt9G1Y61WW1xcfPHixYsXL9pstuTk5KSv09TUlJycrNVqhfMOuLXwmzhXWNcfCrktEazAr+8jEq7+\/FD8nGm6gyEBMHtgjPo2p3ILCow9nZyfuQyYejo7dMdiY2NPxZ9OTUtJz0xJz0hITjkWe+Lzw0c+PXjo04NfOPTJ5wcTk5IGTD3838r0GvWNrV2uHefk5DQ0NJhMJq1Wm56ensAjPz\/fYDDk5OQI5y0baxFbeQWhaSLJEhwAa\/G0I1gLALMHxtDd6lRWXl6fsYvzdWRznz427mTsyfjTqWkpGZkOnU5LTzidcirx9KnEJKfi4hOPxsSa+\/ScCKbe7r7erobmDteO4+Pjs7Oz09LSTgmRkZGh1+tHRkbi4+OF8\/5qoWe+wvWQawl\/17WQ0JBTwjnq+vzByU1CayE8+vDfpKJ5SBJMiX9U8IlKcHSEHMhxyGMXbAhzAiBUYHq6WpzKzM3rNXT2GbtcZertjotPSEhOdfqKmJLTMmJPxZt6uzkR+oxdvYZOvrXEuZCQkBAXF5eWlpaenh4XF6fT6aampgYHB0+dOiWcN+\/hw+3jiGsFckPBUJxd+iVVsBVhvSYU8g9xygkl\/G23vQg2Edv1NA7\/EKV7iQUBAMiHr1lLTn5+d1cr31ra25qTUtKS0zNTM7MdSknPTExNT0hOddWppOSMrCxBa+nRd3DeEMvIyIiNjY2Nja2oqGhubjYYDHl5edXV1adPn46NjW1razObzRqNJiMjQzhvamvhPKB4ZC38QidiTwDkErEK5EcH19fvnDiU1kJ44S\/YlrCaE6yFny29K\/ATJmQIAJA5jL5T51SBUtmkVff2dHBkMna1tzYnpaSlpGemZWanZmalZWZ1dbTw\/0iMqbe7z9DJj9De0drW3evacX19fUxMTEFBwejoqN1ut9vtAwMD+fn5MTExMTExsbGxju26ujrhvD1\/1PDUWpzbgpEltxZ+BfJDj2BzQokYhEXco4cYsV7E4hDSIDSEtQAQEjD6zmanyspLy1Xlrl9HdqrP2NnW2pSUkpaakZWWlZ2YknriVHx7q7bP2CFYnyNNUzPny8dTU1OxsbHR0dFNTU2jX6HRaBISEqKjo0+cOJGYmBgbGzs1NSWcd6CsRSyyn6yFJdqM79YiFoGQrRfW4mkcMe+BtQAQojDdHU1ONdRXZ+TkuH5nzFW9hva2Fm1SalpKZlZKRuaJhMSjMTEtzerennaxJk5VNmj5P5nU6\/VHjhyJj48fGRmx2Ww2m81iscTFxeXk5OTl5cXExOj1etG8Pf8Yn2wthIacyKz4201uSwgVXEdHaEjYcK3pLCEc5XftXMrFciN7J3nU\/JToE+CHAgDIGaarXetUR2tjckZGe6vW9WtjrjL2tLXqGpNS01Id7hKfEHPihFHfJlbfoc7OlhpNy\/T0FX733d3d0dHRqamp1dXVKpUqOTk5NTU1LS0tOjq6u7s78NNByaxd44Iy8Fk72wCELl+zlq52bUlpce6ZM4buFjEZ9W2tusaktPTUzOzElLT0zAyjvo1Q39DdUlnbYDANimUwOTlZU1OTlJR05MiRI0eOJCUl1dTUTE5OBnIWPGXWLnawFgAADUxnW6OrdNr6U6eTm5sa9F06MRm6W3XN6sSU1KzcXH1XS09XC6FyW1tzaY3mywsXgz1SAAAAAYLpbNVwVFpWlJKR2d3R5PoJP0eGrhajvs3Y3drTqSNU6+5oKq2sNeG\/AgMAgNkE09Gq5qi9RZ2amZGTn+f6Cb93qqipU+s6rlwR+JQFAADATIXpaFHz1dpcfyopuby8pLu9yWuVlZdU1DVdunw52GMEAAAQUJh2XYOgGtXVMScTMrKzO1s1nM9j3KtVk5GdHXMyYf2GjQoAAACzDKZNVy8mnbY2MSUlISWlUV3T0aqhlEZdc+p0clJqqq6plhAcgiAImqli2prrCGptrsvNyz50\/ER6VmZzY43gu2dONTfWpGdmHIo5kZOb3UoMC0EQBM1gMa1NdW7V2FB1Oi3t8+jjx08l5OTmVKpKGxuqW5sbWpsbGhuqK1Wl2bk5x08lfB59\/HRamqa+iiYmBEEQNFPFtDbVUqpZU61UnklMTo4+cfJg9PFPjxz79Mixg9HHo0+cTExOVirPNGuq6aNBEARBM1VMi7YGgiAIgiQUo2ushiAIgiAJxQT7K2oAAABmGoz7n74AAAAAngBrAQAAIDGwFgAAABIDawEAACAxsBYAAAASA2sBAAAgMbAWAAAAEgNrAQAAIDGwFgAAABIDawEAACAxsBYAAAASA2sBAAAgMZJZix4AAADQ6\/V6PawFAACAxMBaAAAASAysBQAAgMTAWgAAAEgMrAUAAIDEwFoAAABIDKwFAACAxMBaAAAASAysBQAAgMTAWgAAAEgMrCU0uO0m1qFgJ0IiJJIEAAQAia1FbHGZbYuO5OOV1QTiLAMAyMBa\/MLstBYAAHAAa\/ELsBYAwGwmmNbiWujcFluzxCqIteKXi3UnOC9u8+HX4XdEkxt9cLerueAA+YcE65OnSGzC3fZCnnNJzoKnrShniWbg9JEBmG3IwlrIayh9BXKPNH3RdOe2jqeHvJsWPjT9ej1FHo2OMqCPZ4FyBmgi++\/EkRMGYKYiC2shF3pR4sVK6mMCjkJyBR+Du12qCHW8nmr6al6PzsdOfU\/Ai0NenyMAZglytxYvGvqSg9d1\/DpeXzr1KB+ZWIt3C7fvFuXj1QtrAcBJyFiLoMR68Xp5penOd2vxIvjstBaak+5pK09nyfdpAWAWAmuBtcBaPB6XR9MCwCwkZKzF7UjojcfH7ny3Fi+Cz05rIQyWcoweVYO1ACAV\/rIWwVvOC2sRq+YoF6sj7UrqtjvKCjTBPZoryuD0I5WJtZC7EBk9bSsvrIV\/yOtzBMAsQfq\/Iea6OHLE6dvThUwsoFRx6Kt5UcH34G6XLZqVkbJrT2fSbU2PSignyqNhejRL9JEpmwMw2\/DXn6ekWQ48uj9pFmux+mIRaHLzaLmhnAG3wflHPVpYaUYkWJ\/+jJDPBaGtd2u9R6u21wbg4yUBawHAySz6y8e48wEAIDDAWgAAAEgMrAUAAIDEwFoAAABIzCyyFgAAAIEB1gIAAEBiYC0AAAAkBtYCAABAYmAtAAAAJAbWAgAAQGJgLQAAACRGMmsBAAAAHMBaAAAASAysBQAAgMTAWgAAAEgMrAUAAIDEwFoAAABIDKwFAACAxMBaAAAASAysBQAAgMTAWgAAAEgMrAUAAIDEwFoAAABIDKwFAACAxMBaAAAASIzfrYVh5OJe0mYin3GFFpg3GjBLINSR7ApmhGCDepP4tesZfPNj3iTEu\/HOtlkCMw\/pr2DOXQFrCTkwbxICawGzkwBZi+tzjOshwXLBtmKRxbogPD\/xy33MjbItTUx+BZqOaCJ4PW80idEPXKqxezc6ylnyOginMv1kSjVL\/F3KVgBISyCshXDTirUit+WH8qgLygXFl9zcxiTU5Dd0m6TrmuK2a6\/njbK5R9EEoezCu\/Q8uip8D0I\/mYRqbtty+vXirgFAWgJhLYK7vtxLlKH8bS1u6xBi0gekLPc9ghfW4ns1QaRacD2NyTcD\/50U+qx8bEufKgASEkxr4eBLKK\/LCa9Vvc5NrC0hGqFTOVgLZWIe5c9P3ru2XoyOcHIpdykHKxjBl5F60ZZyfgCQFrk8tUgYyqNywW1fcvNiNSR3Sj+B\/pgfLxLzopqEk+np6Ph1xC4PmiD0J8WLat61hbWAoCAXa\/Fo1WC\/egXnXReeWou\/V0OpRkFZ00dr8aWaa+++d0GOL8lV4b+TQm4o4Sx5ehcAIAlBsxb2q1tI7Ebit3VtwtLdWm7rE7Y9yk2srWun5IBidShHR+7Fl3mjTMzT3gltaTKUZHRiwxEcuNigCIMVLJFqlsSmhfK8ECIA4Du4pAAQBWsuAN6BOwcAUWAtAHgH7hwAAAASA2sBAAAgMbAWAAAAEgNrAQAAIDGwFgAAABIDawEAACAxsBYAAAASA2sBAAAgMbAWAAAAEgNrAQAAIDGwFgAAABIDawEAACAxsBYAAAASA2sBAAAgMbAWAAAAEgNrAQAAIDFSWsttNwkLAADArEJ6awEAADDLCZy1OI+6Ps0IFrrW58ckNOFXE6zgNrJgidepwnEBALONQFsLZ7UVe\/dMbJvQhJAJvzkhslgcT1MldAQAADObwH3WQniAcFvo6TJNaTluI3uXP78c1gIAmFUE4Q0xLwq9sxaxd67oI\/toLW6frgAAYEYyM62FFXGXYD21AADArGLGWgtlW1gLAABIjhythSWu6ZRviInVp4\/s9omHHNAXOwQAgJBGjh\/j86NRNqFp7tEhSnsgpwpfAQDMNvCHXgAAAEgMrAUAAIDEwFoAAABIDKwFAACAxMBaAAAASAysBQAAgMTAWgAAAEgMrAUAAIDEwFoAAABIDKwFAACAxMBaAAAASAysBQAAgMTAWgAAAEgMrAUAAIDEwFoAAABIDKwFAACAxMBaAAAASAysRUYwDE4HAGAmIMe1jOERgO74hX7tlJCJj8OHPwEAgo4clyHOeupvdxFcwQO\/QEuVAKwFABB05LgMka1F7OW82Ct9ty\/\/HeX8VuQIzl3XcnJWYiPi9yi463bUhEkQHBQhOCcaCwAAniDHVYNmIWbF13SabU4cwU5peuQvwV5nQrAWsUOE4QgiGNPtSMkxAQCAjxyXDLK1CL4w991a+JWl7VGsd353ggmIJUwTin\/UrW0QfA4AANwixyWD4cE55Om2YCjXmPz4klgITe\/8HMSyIkyIW6tw2xc5CKwFAOARclwyCKuwLws9oTt+fAmthWLEnj21kCOQK3NGRxkE1gIA8Ag5Lhn+sxbBsPxlVCo7Eevd06xoFnqCtQge8igIrAUA4BFyXDLIL\/aZr+NRuVhAcgKCkentRCwlQgL8Qo+Gxk+VH5OTMOVkAgAADTNw1Qi51VCG2cowJQBACDFzVpAQfZUtz2zlmRUAIFTACgIAAEBiYC0AAAAkBtYijHdvrFG2clvH067x\/hUAQFbId0mS5LMTr5uLNSRnJR9rgdkAAIKITBcgmq\/nehFHkobeHeJU87ECoX4ofpcBADDDkOMCRF4Z6X+HwS\/kb5ADUqZH6F0sgtvhsCImQagv1gUAAAQYOS5AlMu6p9ss0WzIDQnpeReBXC7mHHybEQsIawEABBE5LkD+thZPA5LTo2zFiUAup7QQWAsAQJ7IcQGaVdbCfB1+BfbrFkJTX7AEAAAChhwXoNljLQQLoSnnVyCUAABAwJDpAsRfvvnlMrcWcgTOhrTlgiUAABAw5LsAMS64LXdrJwzvQ3v6gJSVOeU01kJu69HwyQEBACCQYOkBAAAgMbAWAAAAEgNrAQAAIDGwFgAAABIDawEAACAxsBYAAAASA2sBAAAgMbAWAAAAEgNrAQAAIDGwFgAAABIDawEAACAxsBYAAAASA2sBAAAgMbAWAAAAEgNrAQAAIDGwFgAAABIDawEAACAxsBYAAAASA2sBAAAgMbAWAAAAEgNrAQAAIDGwFgAAABIDawEAACAxsBYAAAASA2sBAAAgMbAWAAAAEgNrAQAAIDGwFgAAABIDawEAACAxsBYAAAASA2sBAAAgMbPFWm67ib3tpmAnAQAAswMprcWxfPMVePj9wloAACBgSG8tckA+mQAAwCwkcNbCOSr2YEFZ7twVO8Rp5Wl3hAoAAADIyMVaXHfptwUPCWZC2R0\/sttxAQAA4BDQz1rEniHE1m56PwjYUQAAAG4J9Gct5PegxCrzjQrWAgAAsiUErIWyL1gLAADIhIBai49viJEPwVoAAEAmhPbH+JTB6bujaQsAAIBM4D7Gp1zBKcvFehFr5Wl35BIAAAAEQvUPvWC5BwAA2QJrAQAAIDGwFgAAABITqtYCAABAtsBaAAAASIz\/rYVhIAiCoP\/TLADWAkEQFFjNAmAtEARBgdUsANYCQRAUWM0CYC0QBEGB1Swg4NYCAACzjdm3DMJaAADAz8y+ZRDWAgAAfmb2LYOwFgAA8DOzbxmEtQAAgJ+ZfcsgrAUAAPzM7FsGYS0AAOBnZt8yCGshwYgk7CwXqyBDQihVSmbeiAiE0GBDKNXAEcrLoHfI0VoYHv7OkZCJjxWCiD9y89MZ8dO5lufZ8S4reY4F0AJr8UMP3liLv5OiBNYSgMicaBIGl+fZgbXMRmAtfuhBMmtxlDtf23J2WZEXv\/xqgh0Jbru2JVQg9M7vkRCNMiCnUHBp5j\/2uR2UYCuxUUg4Iprp4mfudkRuxyKYidtCsfzdjosROS9i\/dIMgZAzf5smf\/p8CIXko4RMZjKwFj\/0IKW18K9asVac+8RtR2J3I+EuFdwgDIGQIbmQXJmmpkeDIgyBfIg8IprKYr3wlz\/W8xG5De7RWLyeT\/I8+\/WK8qicnA9NoadX4EwG1uKHHiT7rIXynuTski9c12WFv8S4jSnJQuBd157W9HHJoznkdr0mVOaca8G2Po6IPARfrMWXrPxhLazQ\/EubD02h71fazAHW4oceJH5DzNPdgFmLoB1ymhPq8HcFK8vNWsRGxJ9MQmWafHwfESEUZRDBbd\/nmeZES3JF+ZKP6yHB+r7MAH9oMw1Yix96mC3WQujFbR23XRPKfV\/ayOWEHAhN6CeTMrgXmYeKtdBkKGYtgm1ZT+bfi4WenAysRQBYix96kLW1sHS3n1hMj+4WjxYv+sr815X0EQiRfbQW+l3vRuppBLEheBTclzPl6aTRnA7Jryi3uzSFsBYBYC1+6CFAn7VwGhKq8VuJVaa3FrHePc2QJqBgBGeJ23LCGMXiiPXL8k6WWGRyZcqREk4H\/VwRDonlRt6m7F1snimHLzgEj3IWy5MfWayadzPmtkexoc0oYC1+6GHWzenMIIRu+OCmGioTFSp5zkxm3zIIawH\/h9jLZ5kDa6EhVPKcmcy+ZRDWAgAAfmb2LYOwFgAA8DOzbxmEtbjBl7cRXD9B9T2aLwkEshfyx86+xJ9Jb+n4eyw+xg\/dqaa\/WgjfjJA4Jzbkl0EvkKO1+OntfqUtgk4AACAASURBVD99kECIJvjdGwm7dgvlzSPtMiRza6FZcQSvE6nKXdOQ5IVLaBGwtGEtwUWO1vJVOz8agD8WPppDM89axEKFqLVQDsfrcnI1j4C1+NgRrMWvhIa1CL4AJGyTK\/M7cq3sfDnJeV3pWu5aSHhxyl9BBIPwOyWPgp+b2ABpcuYPQSxJwV7EKrg9I2LzIDZqt4nRlPMHS55GwTq+lAsOhJOM1wPhVCZPDqE5f07c1qTJ2W3ahFTpE2NETqtYTbfdEbL1AFiLH3qQ+KlF7NKhryzWi+ulJhjB7RXstnfK4IQ4NLecayFNzoIrAmUvYqHc9kWTPH\/Do+GQwwqWUIbyulySaoRCSdq6bc6p6ftJoc+B\/k6nqUnOnHx2PAPW4oce\/GUtzm2aRZmleEEkWOLLreLdOksTh3OIZq5o0qDZpazp+xLj9ez5vqq6vU48va7EDs0Ma6Fp6Iu1OLd9ude8yBDW4guhYS3M1+HU4V8BgpUFg8vWWgRHIZat22FSpkGzS1nT63WfMGovhuN20acckVTlhG2WN3ypBiJ4L1DeIB7VZL097\/y+BAdLni5CR+SaYg0Jp8NjYC1+6MFXa3F7l5LvVY+CEyJ4cauQL3eacspspbrtaXYpa3oxbzS3Ok0owYTplzaPuvAiJS8uV5ouxKoFuFCS+4W\/S3+n+37ZUM6wZ8Ba\/NCDH62FfpemXHCZlrm1UCbgXXf8Xfpl0R8z7ydr8WjB8lO5vwcSsEI\/WQv9rv+sxSengbX4oQfP5pT5CsFCwUNiETiVCRFcCwkXHGUEwbZuc6MZBf0NTx6L4Kidu5SzTT4RXsy821F72gVlv2JH\/VHOiJ9oaQfiXUDK5oI1BXOgSVvwkGArmspisyFYU2xy3A7BY2Atfuhhhsypr9eW35A8McqAbu98wCdgs4TTIS9myjJID6yFFnneq\/7IiiYmfMULAjNLErzEBpIzU5ZBemAtAADgZ2bfMghrAQAAPzP7lkFYCwAA+JnZtwzCWgAAwM\/MvmUQ1gIAAH5m9i2DsBYAAPAzs28ZhLUAAICfmX3LYMCtBYIgaJZrFgBrgSAICqxmAbAWCIKgwGoWAGuBIAgKrGYBsBYIgqDAahYwKwYJAAAgkMBaAAAASAysRRT8cXIAAPCOGbJ0Ev7DOK\/twW1bRgTvugMAgBmDTNdBjxZowv916ldr8aImAADMBmS6IHr0BCBWU\/BhQuzxQqwmuQuxo84S77omVAYAAPkj02XLo7eYCNUIzQnOwXEFtzmQ3YLflr5rmt4BAEBuyHTNYoSgr88pd1uTYAD03kYu8aJrQgUAAJAzMl2zPLUWfkPXXc5R8rZgDjSd0pd41DWsBQAQcsh0zfJlYZXWWsSOivVIU0LfNQAAhCIyXb88MhXKRZxwiF+NXEEwW\/oSj7rmDxAAAGSOTNcs755UBA2JUyhWk19IsCXB3sklHnUtVggAACEBli0AAAASA2sBAAAgMbAWAAAAEgNrAQAAIDGwFgAAABIDawEAACAxsBYAAAASA2sBAAAgMbAWAAAAEgNrAQAAIDGwFgAAABIDawEAACAxsBYAAAASA2sBAAAgMbAWAAAAEgNrAQAAIDGwFgAAABIDawEAACAxsBYAAAASA2sBAAAgMbAWAAAAEgNrAQAAIDGwFgAAABIDawEAACAxsBYAAAASEzhr0TVWQxAEQTNJ9957b\/CtJWB9AQAA8DcKhUIu1hJ0j4UgCIIkEawFgiAIkliysxaFpGwWYguPrUJs4xEuRASPSCG284gSYocQO3nsEmI3jz1C7OWxT4iPeOwX4mMeB4T4RIhPeXwmxOc8DgrxBY9DQhzmcUSIozyihTgmRAyP40LE8jghRByPk0Kc4hEvRAKPRCGShDjNI1mIFB6pQqTxSBcig0emEFk8soXIESKXR54Q+TzOCFHAo1AIJY8iIYp5lMgeuVuL8o3bP1r7hkKheDss\/K\/Pvf3mU8vvePWzO1797I+v7Hvg1Z3L3wmHtcBaYC2wFliL3JC7tXQuu7Zz2bWvPb\/qkSdWdy67Nul33zxqmDpqmIqoG3gwqvA\/Xox58S\/P73r\/RVgLrAXWAmuZbdbi0QIrtsQT6nvXSwhYy5bH\/9K57Frr5u87DMa6+ftxt3wjSmff0Ty2qc7y+PGmm5\/b33zs\/tQnf\/zph8\/AWmAtsBZYy2yzFk8\/8\/Covne9hIC17Pjjbd2rfmjd\/P2xfb8c2Poj6+bvH\/nV3CO\/mnv7VXM\/qLUuSe28+YXPNCUv9abcl\/X8TyM2fghrgbXAWmAtsBZYixtr+fR31xvDfjy275fWHf9qWvuTobC\/Pb68\/v25zysHF2UYfvVSdOTH751tfbJ69c9PvH2vn6zFkZJzIwDW4jxVsBZYC6wF1iKttTDikK2FU4dfEjLWcmL+94Yifzi275fWzdf0vfPjvndvHD21+siv5i7KG3k01Xz3563\/\/tqJ595aOVD1uClxXvqynzm9xDWI01ochfTWwnEUemvhnNTIyEjnBo218E0F1gJrgbXAWmRiLc5q5Faytpbke781FHXt2L5f9odd23\/49v7Dt0+cfuT4LXPvPNT5h721\/\/lB2r++cuo3D7w1VrN4vGB+1qPf5FiLM47TVzyyFq+fWpxG4t1TC6wF1gJrgbX41VoE67i1FkFb4vcSAtaSuXDOUOS1E3u+n33Xt2J+cZXjg5bvLdj8k2cO\/3xZ9C+W7v\/x45\/c98TLbNs9YyX\/L+NPc\/jW4gjluuv6BOOQw1c4s+z2qcW1sltr4Ty+bN++3fGvY8MpwXfDXCs4HMW5vWvXLsc2rAXWAmuBtQTAWjjuIthLKFjLQ99sW\/EdW+Q1vWu+l3PznMTfzf3OXWHXPLQj8dFfxr3x3z\/6c+R1f96heHchW3nLcMyPsxZ97amF7yicDVdHcX1qobQWJ45CyjfEXMudvuLqKJynFv42rAXWAmuBtcBafLKWk4\/dUPynf7BFXmOLvKb2oW82\/Plb6iXf7Xju23XPXHfkV3OvWxjxk\/lvDh7\/+ZcpP2p99+8Tl1zPsRanu3A+ayFYi9NXPHpqEbQW8lML\/5GF3lqc7sL3FVgLrAXWAmvxn7XMkDfE9r\/+WMof\/l73wtW2yGuGNlzb8ddryh\/6Vurv\/+7Ir+ZeNz\/sw\/vmlUf8+mLcDy1R38x99FuHX3uIby2CH+OLWYurr5Cthe8xvlgL4bMWWAusBdYCa5GJtcycj\/E3b1gX\/+CPCu\/7lnnNdy2Ka0yrf9D91k9P3fHtU4t+nL74nzWv\/sNY5HcHIq9teOmbWc\/8IGLjal+sheMrcrYW5wbeEIO1wFpgLYIPE4LPE5JYC6dJSFqLQqHY\/u5Lx+75p8IF3+x88zuDYd8bXPO9vrBrBtZ9r\/e97+jf\/Oe+t69uf\/ef8p\/8+\/DX\/+LqJWRrkfxjfK+thf+eGP8bYq5H8TE+rAXWAmvx3VrEIFuLW4WStSgUiveeX7zvjn\/KvOeqsvu\/2fzYP+qW\/FPz099uef7qpme+VfSXbyY+9I8rly5UEMGv8WEtsBZYywy2FspF3zuTmLHW8uyzzz5y153rf\/XtL373jbR752Q8wGQ+wGTcPzfxf\/5u+83ffvC2W595hvQHxGAtsBZYC6xlploLeelzxbHEe1Tfu15Cxlo++OCD119\/fenSpYv+ePeS3\/z6uV\/+\/Plf\/vzxm2545K47lyxZ8vrrr3\/wwQfk0cJaYC2wFljLzLOWe\/2Md72EjLX4DqwF1gJrgbXMPGuRM7AWWAusBdYCa4G1SIxMrQWCIAgKdcFaIAiCIIkFa4EgCIIkFqwFgiAIkliwFgiCIEhiwVogCIIgiQVrCdAsBz2HUByUVF2E6PyHaNr+ng3H7wqCng9EVshYi+uvVcjVvD7qY9c+9qsQ+n\/M\/HfWPepIsDK\/0PfkOVMtSUDf4wTLRAN5MZCv8IAt5ZyOXE9fIG8QyHeFkrUIbhOqSThHPsanbyVPa6FMVfIVXCZPLcFazgJ2McgkE35H\/FsP1hIqCklrcd3lvNpyu+vdHLntV6wv57\/09WmG48sNxp8Nt+kJ5sNv5Utugq0Eu6A5+4T6kuRGczbdJsbP0+0M++OSEBwdZ5uTFeEUSHsZ8HskTyMkHylC3Vo4Jfy7QuyoR3MkthCQMyHUFyuhz9\/3pYQyPXKh79NLGI7YGufdrEq1+FJOF6Etzdn3aICEOaQZnaA9uAbkO4fYLPm4yit4EKZIktsB8pNC3loEr0L+IV+ue7EFjnNDkjNxG8HT\/L2+l\/jrhVh6\/EK30+LLhUg58x4dFRyOj7kJnhfyieNPuNuzTzgv0l4SYq3IUy04WH9MteC\/5HmG5CBFSFsL\/dIjVkI5R4ReaOrQR6DP3+ux0C9PXix8XqREGI4vs0pelXzJjbAWEzqiObNezHBwrcXtlSPJVBOsxbsTCgVAIWktzm3fF3TKOXLbi7SLoKej824sNGEDZi2CzSWfVQknzaP5pJw6j2bYT5eEYHBPrUXaqaa\/QSD5KJSsxQm5nL\/t+8rC75pQIngPuI3gaf6S37qcEkJuhJucf4J8mWrBxATri80PIVVfLgDyLqGC2zNLOcPSXhJup931zIqdAudRzlR4mgx\/V+xU+t4d5D8pQsVaIAiCoFBRyFiLQoiAzVFQ+g3MWGQyHNkmxs8t6PkE\/lwEsevZMOEzUiFjLRAEQVCoCNYCQRAESSxYCwRBECSxYC0QBEGQxJKFtbAMA0G+q766NCSkri3XNqia1JVN6kptg0pdWy5hzKCvKRCkg7VAM0n79u4MCR06eCAzLVFdW66uLc9MSzx08ICEMYO+pkCQDtYCzSSdPTsREjKb+\/LzcpMTTyQnnog5eqiupqKzTeuj6moqYo4eSk48EfQ1BYJ0sBZoJmncbgsJTYyP2kYsB\/bvObB\/j1ZTq65T1VaV+Ch1nUqrqT2wf0\/Q1xQI0sFaoJkk+9hIqGhiYmzvnh179+xoUlfXqIokUZO6eu+eHUFfUyBIJ09rmRgftY9aIcituNYS7HzoNTE+6rCWxoaq6gqlJGpsqIK1QDKRHK1l3G4bs1kgyK04V07Q86HXuN22d3fU3t1RjeqqapVSEjWqq\/bujgr6mgJBOrlay8iobdgprbZh3\/6P14StHxu1rAlbvyZsfX19bX19rWPbUbhv\/8dabYNrK2g2iHPlBD0feo3bR\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\/OFBkxdtZWotpt5uV3V1tuacUU5Ojo\/bR+1jNkFNjI\/V1jX87o8PPvfSqhGrhVBz3D46NTlZp23B22LAT2RnZ585cybYWXwNhULBua1MQtZy6TJb39X3L8tOfuPhmIjT2mn28oXxsfJ7\/tAyh7k4d+40w0wzc8\/NYUaZAH7BJ6gYe605+doDBws3haceOFiYk6819lo5dQTnllLmPv2A2ThgNpr79F4H8ZOc1uJFW7lai7HLVeWqyp4ew+S43T46IqgJ+2hDg\/qOBf9718LHf3\/f\/7745rsT9lGxyvbRkclxe\/\/AULfRLJbMuXPnWlpaioqKMjMzMzMzi4qKWlpazp07F7DZAKHL4OCgUqksKCiwWCzBzuX\/UCgUnNvKZOziWMvlS+wVll20NY9Zmj\/3xfp\/\/mth98AEe+XyOV3L4Lf\/cZphrsy5anoOc24OM8J8wzh35rtLY1PfR58XfF7cGdc5lmy9FNc59nlx50efFzQ29blWE5xbGvX36QdMhrdXr3979foBk6G\/T+9dHD9peKCvuDBveKDPi7YytZY+Q6dTPfr29Ow8u91uH7WO2Sx8jY+NaDSaO+9fdP+i55YsX\/HIUy8\/vPSF8bERwcoO2UetE+P2qgbdpcuX+ZmYzeasrKzKykq1Wt3a2qpWq\/V6fXp6emZmpslkCtiEgBBFqVQajUaDwVBSUhKUBKrULfxChULhels5JPDUcunSv6\/IYV6sZl7RME+Vbk1tYq+wVy6zxgceuMDMuXwVc2HOHDtzlXUOY5jpDy7GvpH9Bwu11rNnp1nd5JWY9isxOjZGxx4ss+0\/WGjsG3HWFJxbtzL36vVdbc+\/svKW+Q\/cMv+B519Zqe9qM\/fqvQhFr7aWRmVBrkHfVXAmv7SkuLpK1d7a1NPVJlh5qL+3qCB3qL\/Xi45kai29hg6nNJr6uoaGifFRx38oyZF9zKrWqO9a+Nj9f3n+yZfefurldx9fvqqxuWlszCpY36mJ8dH2boPVNsZJw2Qy5ebmWiyWyclJjUaTmZmZkZGhUqlSU1MzMzPT0tLgLoDA4OBgVVXVxMTE+Ph4ZWWlXx9czp3\/sqhSfTg+65PjqXFpBcVVmrPnzlc26D45nsqvrFAoXG8rhzjWcmWaZS+zd64vmvtc5dxXquc+XbF0j5plL7Esq39s0RTzDXYOM81cNTmH6WeYzrlX+W9ociBXqTtY2t127srweTZGx55oZRO62CQ9m9DFHsjS5yp1zpqCc0uWua+7Rdf45yXP\/u7eR47Gnjwae\/J39z7y5yXPtugazX3dnkajlLGnvbioICsrS6fTtbS0qFSqzz\/\/XKFQ1NVWG3va+fUH+3uVBbmD\/b1e9CVXa+lpd6qsvFzf02MftdqsQxyN2SyNWs1dCx974LFlT7\/y7jOvvrf0pXeamnVjQpU5so9azf2DnPfEzp49m56ebrPZLl++fOnSpYmJifLy8uSvyM3N1Wq1aWlpZ8+eFRwC4+3rOEdDr5v7G3zYS8P09PTQ0JBKperr6\/vyyy+\/\/PLLvr6+ioqKoaGhaT98HbG3f+jQqcyPjyW76pPjKY4Nfn2FQuF6WznEO7PTLDu9JaGJeSz\/Gy\/Vzn1S+dS+6mn2CvslW3XjDWU\/\/vv0X30v51++V\/\/dv+udy7TMCeblGoBr8vNjpSe77LrJKzE69lQHm2FmC2xssZ0tsLEJuvHPj5W6JsOfW4LMvd1VleV3\/+kv9zz8ZGZ2zqbwnZvCd2Zm59zz8JN3\/+kvVZXl5t5ujwKKqaerxbHRptMYe7oa6usiIiIOHTqkVCq7urpycnIUCkV8fHx+fp5RqPlgv1FZkDPYb\/Sia5lai1Hf7lRuQeHg4KBtZHjEMuiq0ZHhpibt3QsfW\/j48mdee3\/ZijUvrFrbqG0atVlGR4Y5slm5zW0jwxaLRdva7ZqDVqstLi6+ePHixYsXbTZbcnJy0tdpampKTk7WarWCQwi8tRCaOH\/S5WMJ+9Vt7NHNTKg8w4yqsbExPz8\/Ozs7KytLpVJ1d3dPTExcuHDhwoULExMT3d3dKpUqKysrJycnLy+vubmZH8EyYotPyc4rUhWUVbsqV1kRn5I9ah\/nNzl7\/ssv4tI\/OpqUW1I9Nj7JsuzE5NljSTkfHU1yiN9EoVC43lYOcc5FV6\/tCssOjZ+7YUU283jBPz+Xn68xX2HZg+mHfvb2vzCf3H7Vp3czH9\/5D1G\/\/8PLt+y46TvezZjr7w29i8AG5Crati832Xoppv3KiVY2w8yWTbHqabaZZdXTbMnE9LZ9ua7J8OdWTCZjd15e7u\/ve\/jRp14uLin564oP7nvk6fseeXr5G+8Xl5Q++tTLv7\/v4by8XJOxmz6moAzdbUcPH0xLTig8kxN\/8sT27dsrKirq6upee+21\/Pz8zMzMJ554YvHixYmJiYWFBYbuDn6EAbOx8EzOgNno3B3s7+XLWcFVsrWWNqfSs3NtNovNOjhiGXBqdGSoqanxnj8v+dOSvz73xocvvr3+r2+te+Klt+\/585O3\/OGBX\/\/u3l\/\/7h6H\/v3\/3f3k8tdGR4Zdm49YBmzWwVHbSG1jq2sOOTk5DQ0NJpNJq9Wmp6cn8MjPzzcYDDk5OYJDkI+1cNzC6xKxo26ZYf5B4OTJkxqNxmw2W61Wu91+9uzZL7\/80mEtX3755dmzZ+12u8Vi6evrU6vVp06dEgzS3NrZ0NzZ3mPuMPQ71N5jrmvqaO3UC9YvKK\/dezg+p6jSWVJe27j3cLxT\/CYKhcL1tnKIc5p+\/Xz06aJWdvrK2MSFY8U9nX22afZKeN5BZsvNV31x51Wf\/4H59Hbm0\/lzPvoD8\/E9cyIXeDFdUl0YAbjAvjhRcbLbHqNjE7rYAhurnmZ7WdbKsr0sWzI88cWJCtdk+HMrKJOx69jx2N\/e9eCLKz\/MyT\/z6DOvPLT0pSdffPvJF9\/+89KXH3nq5ZzcvBdXfvjbux48djzWZOyiDCumjtbG2upynbZh\/0d7Fy9evGnTpra2tm3btu3bty86Onrr1q0nT57Myspqb2sx6tv5zQfMhsIz2QNmg2N3eKDv6quvvvrqq3\/wFVdfffWPfvjD4YE+fluZWouhu9WplMzsMZvVMtTvqhHL0IOPPffgkr8uW7Hm5Xc3OrR85donX37nseUrHlv2plP\/+8xrdz\/4xIhliBPBMtQ\/ZrNVNnztVWR8fHx2dnZaWtopITIyMvR6\/cjISHy8wK3Luiz0zFe4HnIt4e+6FhIacko4R533m4TW4rrh+kqT\/MQj9rKUEMH3V7JBYWRkpLa21mazOR2Fz5dffumsJhhkenq6qqGpvcds6Lc61KY316p101euCNY\/GJu6++DJ8ckpx25ZjWb3wZOu4jdRKBSut5VDnNm+7on47z56eMFbJ7cdL2Kv3zyhDwAAGZ1JREFUXGbZS8WdNXNX\/4I5dBtz8Hbmi9vnHLhrzoG7mL13zNl595zIPzob2my2Z555ZsWKFW+99daKFSueeeYZwZGKnVyPnqc516r\/LpuCsvbDKkOMjk3Ss8V2tpllrSx7hWWtLJumMRaUtbvmxp9bvvoMnbs\/OnDj7fdv3r7n+KmEBx5\/YdFzbz7\/5pqX3tn40jsbl61Yu\/j5Nxc+\/teYE\/Gbt++58fb7d390oM\/QSROZrENffL5s2bJ\/+7d\/u\/vuu5cvXx4fH7958+ZPP\/00NTU1JyensVFj7BHupd\/UU5Cf1W\/q+Vv+xk7LkPnWW29duHDhgw8+eP\/9999xxx2WIXOfUaC5TK2lp6vFqeSMLNuIhfP\/zFiHBxY98+rTr37w6vubyXrx7Q0PPfmSdXiA\/5\/VjNqsfGuJcyEhISEuLi4tLS09PT0uLk6n001NTQ0ODoq99uQ\/fLh9HHGtQG4oGIqzS7g5xWyDpg7hKCtkS\/xd\/iH6+vJnZGSksbHRbreL+crY2FhDQ4OYrziwj09Wq1u6+4YM\/dbuvqFqTevklPBHeizL7j4Yt+vzEx4lqVAoXG8rh7hPLU8dv37JiW89dPR7f\/rcMDR+5cqV3hHzr75YzBy4Ze5n8+d+didz4I65+++cs\/fuuTvvZqLu+Fr+dvvHH3+ckJDw8ccf2+12sRzIhZ6+DBK7JiVhz7GsJ97dfajSznlqaRi0H4xT9Q383zeABOdWUOZe\/WB\/b39fz72PPLP0pXdefHvDax9sceqldzYuffnde\/\/32f6+nsH+XnOvnjKsoNJTEpsb67o7W1599ZX\/+q\/\/uv766x977LFHHnnk0KFD8fHxSqWyvLy8ob62q6OlrkZVVlzAj9Dfpy\/Iy+zv+780eg0dliHzww8\/\/PLLLz\/yyCOWIXOvoUOw9xCwlrTMnOGhAcuQmWMtmkbt82+seek9xeurtzn08nuK51aEPfXah656\/MV33lq7lW8tliGzxTLEeUMsIyMjNjY2Nja2oqKiubnZYDDk5eVVV1efPn06Nja2ra3NbDZrNJqMjAzBIdBbC+cBxSNr4Rfy8eV25UQQsxb+q0jK+1ysfki7i8ViaW1tnZqa4lvL1NSUTqcbGRlxG6Sj29DYqu\/uG9a0dOmNpC8ifhpzevsnMYIfw4hBYy3\/9uCeO54\/8sTGjFX7SjSdo9PslSvstHXC+kD8m3N238J8ehfz8Z3Mx3cye+9mdtzNbLub08XExMSBAwcmJiYIOTg3+M8frFfWwrkOpWHSzHbEb1z17srI6MUrIz8\/05fYOlk6MV1qmczQ9n1xqkrX8bW\/5UFvLc4FeuGSF1\/7YMuba8JffX\/z8yvCnl8R9ur7m99cE\/7aB1sWLnlRbL32SOr6yvLSAl1Tw8KFDzAMc\/311z\/44IOxsbFKpbKiolytrk9LTclISy5W5mVlJJ88cYzGWpzusmTJEoKvyNda9J06p3Ly8vUGvWXQxPmvZqxD\/Y1a7fKVYa++v2XF2og314SvWBPe3t4m9Bn+0DCvuWXQZOzr5XyMX19fHxMTU1BQMDo6arfb7Xb7wMBAfn5+TExMTExMbGysY7uurk5wCF48anhqLc5t8vNQAKxFrF\/BhxJCbjPGYBz+wbcWq9Xa0iLwQxM+01eu1DQ0q3WddRoduWZ+SVXE\/qPJ2UpO+cVLon9gQqFQuN5WDnFm+2RBo3V0+grLXrS3DOnTejSfnp+0sCx78fKlB0+unLP7N8zHdzD77py7cz6z\/S4m\/C5+L+PjJLcTfFSV6qlFMibNbEc8m\/pw1do\/bVj57v4TOcrKzqNJNTsPFR9NqlFWdpoGub9YEJxbgow97X9++rWV66NWro969s21g2bjoNn47JtrHSV\/fvo1Y0+7RwHJalTXxBw7kpmRWnAmd\/v2iJNxsSmnE1JTEk8cj1aVFxEamnv1Z3Izzb16fv7DgyZykrK1lmanikqK6xrU1uF+\/v82Yxkya7SNy1eue311+IqwyOdXrH30mVcbG9XDQya3\/1ONdbhf29LO+fLx1NRUbGxsdHR0U1PT6FdoNJqEhITo6OgTJ04kJibGxsZOTU0JDiFg1iIWmWAD\/rMWt+sFTX2x3RDC8SsWvrUMDw9XVla6b8+yLMtOTp3NL1adO3eeXG1icmrXpzHh+w4nZRYMW20syw4MWRPTz3x85FSH3ijYRKFQuN5WDnFne5qdHG5Up91hSPtHUzbTlzK3NeE34yMd7JXLbUPGqyPuYfbNv2rXXXOj7mbC\/8hs\/qNgR2SkujIJV6xPfOUrhvC7Pl71YtiK92gaCc4tQcaetkeefePtTbve3rRr8fK3jD1txp62xcvfcpQ88uwbxp42jwKS1dxY29xY26ZTV1YUF57J1mlru9q1+s7mlqb6ygoloaG5t\/tMboa5t1twCOROZWot3R1NTtXWVCZn5oxYBgZMPXwND\/ZpGjUvvL3hjbURr63etnj5yvseebKutmaov1ewvlMjloHCslr+Tyb1ev2RI0fi4+NHRkZsNpvNZrNYLHFxcY4vj8bExOj1wl\/aYb36GJ9sLYSGnMiObf4TgI8l\/HXf9RBhl1\/ZtZymechRVlY2Pj5+4cKF8+fPT01NTU1NnT9\/\/sKFC2NjY2VlZfRxLly8SFOtp8+8\/cDRrXu\/cNWOT6J7zcJ\/d1WhULjeVg5xJvzLS1P1J28fy2KuqOZeKv\/Hc0X\/YElkutIeunLlypXL7H98tISJupXZfScTcfffbf7vORu8sRb26+9icUr4dcRa+eXKcfGVtFWPv\/HGuuKmfsoR8eeWIKO+7dHnV763Zd97W\/Y9+vxKx1eqOCUeBSSrvqY8NfnUti0bTyec8KihqbcrPzfd1NvlRacytZaudq1T7a2NMScT+829\/SaDuU\/P1+BAr1qjefGdTSvXRb25NvIvy1b9ecnywX6jYGWH+k2GgQHzmbLay5cFfsvW3d0dHR2dmppaXV2tUqmSk5NTU1PT0tKio6O7u7v59Wcw\/ljrQ9o\/xLhw4UJVVdXU1JTdbu\/p6dHpdI7P6ux2++TkpEqluiz0J4V8xD4+mVes+iQ6PuKjw7Gns4pVdc7vjPFRKBSut5VDnHMxMdLTfvyn5\/O\/O57\/7Yns79gzvjOV+dPBpN+yFybPXbrys\/CHmIj5c8PvYyLumqu4l1nH\/awlMPjx+nHxldVvvndaJfoikp8Sf24JMnS3Ll6+6sPwjz8M\/3jx8lWOr1RxSjwKSFZnW2P8yZhTJ6I9bdhn7MzLSeszdnrRaQhYS1e7tlBZmKcstoj\/befB\/l61RvPS+5tXrt\/5wtub3lm3ddBsJPzBZ8ugqbSqobOnTyyZycnJmpqapKSkI0eOHDlyJCkpqaamZnJyMmCzIRMkv41npK+wLGu1WsvLy\/V6fX19fW9vr6Owp6enoaGhp6entLR0dHQ0uBnSWMuly1cMuctGTn3bnv6D8YzrpjJ\/Op7489GK9VdYNqE296oP583ZeudVW+5hNvyRCfsjs\/a\/A5y\/v59r3165IWvjY47nlcRyD15EemEtC5e++sqHEa98GLFw6asOa+GUSGgtXe3a04knVGWFsJbqzrZGVzVp6z45ctxo0Jv79H3GLkENmI21DfV\/fWfjusiPentJNc19Pb19vck5Jee\/vBCw0YGZzeTkZElJSU9PD6d8enpar9cXFxcH\/c9mKxQKzm3V2dbIX6kvTY1YVevHch4dT79\/LOeRc+qPL1w6p+3tuX7Ng0zYrXPX38Osv5dZdxcTdl9QRuFXctWmDavWrHxzfbKKex7JCM4tQT1dLa5vovzte8lfL\/EooJ\/Ua+jIzU7tNXR40Vau1tKq4UipLExIybAMmkzGzj5Dh6AGTD2WQdPQQK+5t0usjsnYaRky5RSW9\/QOBGxoAAQdhULBv61m6kNkgBGc2xmg3p6O3KzU3p4OL9rK1Fo6WtUctenqj59KzC9UDg4YHV+o8E6DA8bSqrriSvUVkd85AzAjUSgU\/NsK1iIJgnM7A+T8W5NetJWrtbSo+WppqjvwxbG6+vpBs7FX327sbvNIvfr2QbOxrr4+JbeU8PV\/AGYeHe1tO6K28++pqKjtHe1twc4utGlvb90RFSW4ZM1mydRa2nUNgtLUV0bt\/yIzN7\/f1GPUt9H\/MNWob+839WTm5kft\/2Ld+g0KAGYTUdu3FxXk8m+oooKcqO3bg51daBO1fXtRQY7YkjVrJVNradPVi6lZW\/PFsdjoU6d79B3m3u6e7hbyL3cM3S3m3m69vuNoXOKhYyd0TbWE4BAEQZDvkqu1NNcR1KKtOZ2Wujnqo\/SsXGNPR3+fvtfQYehu7enSOX6t09OlM3S39ho6+vv0xp6O9KxcRdRHp1NTW5tqyZEhCIIg3yVTa2ltqnMrdUPV0eOnwrbu\/eTw8bzCQk2jurur3fHVve6udk2jOq9A+cnh42Fb9x49fqqhrpImJgRBEOS7ZGsttZRq0lTl5OR8Hn08Yt+n6yP2vr955\/ubd66P2Bu597PPo4\/n5OQ0aaroo0EQBEG+S6bW0qKtgSAIgkJUMrUWCIIgKNQlO2sJ4lcJAQAA+IhMrSVgnQIAAJAcWAsAAACJgbUAAACQGFgLAAAAiYG1AAAAkBhYCwAAAImBtQAAAJAYWAsAAACJgbUAAACQGFgLAAAAiYG1AAAAkBhYCwAAAIkJYWthvsLPeQn0G+AeJYczBPKIZsB4AQABJlStxa\/rXbAWU6n6dRuH3lrgKwAALwg9a2F4uJYTtvmPOK4ROPUFH4nEnpME6xP6pRmX2\/hiTQhxnBUoCwnlAABAIPSsxYHb9VFwlWe\/biGCFcSCix0l7Ar2Sx+ZHJ\/cr4+9UIYCAABBZou18LcJi6aE1kIZk1CH4SF4yOv8PS0EAAC3wFpog4sdDYC1uG3oUV94agEA+JuZaS2EN7g8fUOJ31FgrMWtBUqVv0e9AAAADaFnLYQ3iFgXU+Fs8Lc5ocR6IXQtWC4YQawXwujc9kuYBHKP9IWEcgAAIBB61gJ8h29d9JUBAMAtsJbZiEfWAgAAngJrAQAAIDGwFgAAABIDawEAACAxsBYAAAASA2sBAAAgMbAWAAAAEgNrAaLwf3\/qWk7\/O9CZDWEGZDU\/Yr+rZWWWJ5gZwFpCgGDd9uSlJ3QXo0BmTvknGALQF6wFBBJYS6Ah\/PUXwUcBsUcE\/h99Icf3Yh1xbUs4SjlksWToo3n6qCQ4dT7Op2B8sX5pxiWWD2G8Ho3LtZVYidgQyJkDQADWEgTE1iOxXbGbXKwOYXEhrCaE+JRLldskOTE5SzY5IGF+PK3vy3x6euI8mmeasF6MS+worAX4D1hLECCs+4IvPL1YCj2q7x30EcReZYtteBSHsj5N5jTz6ZG1EPpyW4d8PXg0LvpMAJAKWEsQoHmVSnMoJKzF7atvSmvxYskWqx8q1uK2odvcAAgWsJYg4Iu1CG77+JTjHd6tfZJYC81TC2GJ92U+PbIW+qcrwRzcVibk5uP5pcwcADFgLYFG7F0OykOC0fgb\/PquJWLRfB8Cub5gW9cNT+N4nST9fHJC0XThUZ6EfATjezcu1vM3MCkrAyAIrAUAN8y2dXa2jRf4A1gLACQIzwEAADFgLQAAACQG1gIAAEBiYC0AAAAkBtYCAABAYmAtAAAAJAbWAgAAQGJC0lrwTVAAAJAzIWktLNwFAABkDKwFAACAxMBaAAAASEyoWgsLdwEAALkSqtYCXwEAANkCawEAACAxsBYAAAASE5LWAl8BAAA5E5LWAgAAQM7AWgAAAEgMrAUAAIDEwFoAAABIDKwFAACAxMBaAAAASAysBQAAgMTAWgAAAEgMrAUAAIDEwFoAAABIDKwFAACAxMBaAAAASAysBQAAgMTAWgAAAEgMrAUAAIDEwFoAAABIDKwFAACAxMBaAAAASAysBQAAgMTAWgAAAEgMrAUAAIDEwFoAAABIjEytJSs9EYIgCApRydRaOtsaIQiCoBCVTK0FgiAICnWFgLU0a6p1zU06Ps1NzRrJJqJFWyOooJ8hCIJCS2p1+dP5S3aWbaVvcuOCdRxlZyuzs5VBH4vXkru1NKmramuq61c+33jTNU03X9sy7zrdb69ruuVa7W+vqV+5rLamukld5eMUfN1Lal0Eg4EgyAMV1Wctzn34GwnfYBKY94tW0Tes\/DpxcXGuHhP0cXkhWVuLtqGytKS45vWnm2+8rvU3PzAs+En3\/\/tR97wfG\/\/np203\/UB3w7W1bzxVWlKsbaj0evyuptLaVNvaVOciGAwEQbS6Oe03TALj0JyEOb9Nv4Wnm18teEGw7fz5u+bN2zZ\/\/i6WZefP3zVv3jqOx4ScwcjXWhrrVbk52aXLn2q5+Qdd835suO0npjt\/1v\/Hn\/ff9XPT3T8zzv9p17wft9zyg7K\/PpWbk91Yr\/Ju\/A7PcJhKW3NdW3N9m66+TVff1lzf1uw0GFgLBEFu5LSWOQlz5ibMvTVjHr21zJu3bt68dfPmvcey7I03vjh\/\/i6HwbAsGxcXV1lZGXLuIl9rSUk+rXz2seZfXVd+0w8yb7iu7rc\/abrrZ4W\/+6nydz\/V3nV9\/X\/9JOOG69JuuLb0368pePbxlOTTXgze5Xmlrq25vl3X0N7S0N6ibm9Rt7c0tOsa2prrW5vqnM8uQT9bEATJWcq6jIdyH3AYzNri9+gbOh5ZHNYyb957N9744o03vhgXF8ey7L\/+60N\/c5cbQ8ld5GstR48e1fzL93X\/8YPC915hWbZ87VvFd1\/Psuz0pYvGisL9\/34dy7LTly\/VxxzO\/tl3jxw5ou9o7unS8aXvaBYbvPN9sLbmuo3r19x44w2bN63rbNV0tmo2b1p34403bFy\/pq3Z+c5YbdDPFgRB8ldRfdZjef+bXBNL38TxhpjjMWXevPdunPfmjTe+yLL\/v52zjWnijuP4JSRYpdgDtP551Jtz86ZZ7EDljJuueyB0mbozm6NuGkdimvDGcPBmTQMEFCUVN1qfxnAvRt10i0t82AsVB+IDTizqrjy0ghAUO2cOMCSEYXZ7cVqLChgt43DfTz5p7gWXtPeCT37\/\/93JPC8wjCm4LuP+60ZWVu0jkwEdDscVJrpx3oyLFbv7u6XLrn2nUhJlWT6YYbo3MFCRlirLcmXGqn\/u3at8\/eWysrL21iatVjdp+kxt\/Bxt\/Bxt3JzwaQl6PWlvbRruKgSPLK1esWTbFo5bvLkwb3NhHsctLtm2pdUrBg0uSAuEcExUVsA4zi4IdtYg9FMUzwuyLDMsr6SFMCaXy6XywUWW5fz8fOVYvWnZunVrw8zoWmZa++\/n6sp33rh08eCiuMHBwbbqE7c8V8peSxwcHPw5a\/3fAwPfz2OKi4ubPe7Odt\/81OVL0le\/9WEG9z7\/xtJ3Ott9zR73cBfiYVrE+haPu83nKS0tMaWnmdLTSktL2nyeFo+7SURaIIRja2BzxWCwWompn6IIMTEsr6hkRpZll8ul0ZBx\/7ZPVOnKBEiLzWarnxl9aLa+586dXcsW9kpS2dzYvr6+mtLi7tu3nUvm9\/X13e3pOVu+80i8zmaziZfrlLq8u\/KTtZZNaSvXjNwV8bG0eBsbvtph3\/DFhnXr15Vu3+ZtbEBaIIT\/gQaD3WAoYlmrgcnqp6j7aWHMDGMORIUQTkmLCgeXR7oiqjkt2dnZ5+N0lctSJUnyd3RIkvSN6U1Jkhwp7J83Ove8t1SSpJ1Juqokui6ezs7OVs5S6rJizeejdkUcuiDW7Lm0pbBg5arVFRXl35bvTUtPLyywNXsuYUEMQjjWGgxFSlqcNNdPUYRRusIzLE+IkRAjYThCjOpMS3BXZPXvtVgslprp2h82bhBrfnOty2g8c\/qnTRv9fv+trq6Lhw4Ux9N+v3\/\/LF1dAl2r11oslsCJSl1G7Yo4dBu\/sMD2tvGdPXt3t\/k8bT6Pw\/l1aipXkPcltvEhhM9s14oPfHsdonuUZ+8ejCxC8MhCGJ4QEyFGQjhCOMJwDMurbU3ska5MgAWx3BzBwSWXx0z5Tq+tTaL3J+r2J0X9OCvqwKyoEy\/FHJ8dXRk79UhcZG1C5K4lKbk5Q+7ze5quiENvPr7WcrXjekurV1RuPm71ih3XW661XMXNxxDCZ7Zr9apeivpr7ivefXtG+LPgrjxMCzEF0kLTLCGqS8vjXZkAaTlfezI3RyhblFyToD09Q3uGRNa\/GnUhkb6QSNfPjTobO7WWRJ5O1DoWJ+fmCOdrTz7bpcEjkxDCkOhz7uhcv\/YRb376cU9YWC9F3aWobo2m6ddfnnhupt0d6IqT5njhGGd2skYrw\/KCYA\/+b6metMjDd0VUc1rEQF0WGo7HaKqmTT6ln1IdG1FNIqr1U07pJx+P0ZQtMjxPV0S86AVCGCKHS0tvWFgvRfVSVPekSSOnhSackpZMu9tsd5uK3EbrOdbsIoZMmmY1GqKeqWW4rsjq32tRVOqyPXnB4YiwY1HhR3XhR6eGH4sOPxwRVpqy4Dm7oojXU0IIx8ibH624S1F3EuNHXhALnlqyOHOm3R3QaD3HClWM2ckZeSUtNM2O748aoSsTYEEsoFKXjY8Rkq4ExEv1IYQh98ZnGdeL8v5oGOUF7axQxQpVTppz0pxyfN+sB5\/KgdE67lPLyF2ZSGmBEEKoBp+yKyLSAiGEMOQiLRBCCEOsWtKSDwAA4AVi\/NOyHAAAwAvHOKcFAADA\/wSkBQAAQIhBWgAAAIQYpAUAAECIQVoAAACEGKQFAABAiEFaAAAAhBikBQAAQIj5F0Pv5RnwjRU0AAAAAElFTkSuQmCC\" alt=\"\" \/><\/p>\n<p>That&#8217;s why I wrote the code, it&#8217;s only a proof of concept. There are no security features to protect against manipulations, no caching for better performance and whatever.<\/p>\n<p>Here is a demo XPage to demonstrate how to use it:<\/p>\n<pre>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;xp:view xmlns:xp=\"http:\/\/www.ibm.com\/xsp\/core\"&gt;\r\n\u00a0\u00a0 &lt;xp:label id=\"label1\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xp:this.value&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;![CDATA[#{javascript:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 importPackage( ch.hasselba.xpages.util.ssjs );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 SSJSUtil.executeSSJSFromURL(\"http:\/\/localhost:8080\/test.jss\");\r\n            <strong><span style=\"color: #ff0000;\">test();<\/span><\/strong>\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }]]&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/xp:this.value&gt;\r\n\u00a0\u00a0 &lt;\/xp:label&gt;\r\n&lt;\/xp:view&gt;<\/pre>\n<p>The method <em>executeSSJSFromURL<\/em> loads a text file from the given URL, creates a method binding with the content and invokes it. Then, the SSJS code is executed directly &#8211; all functions, objects and variables defined in the remote code are ready to use from now on. As you can see above, the method <em>test()<\/em> is called which is defined in the remote SSJS file.<\/p>\n<p>And here is the Java code:<\/p>\n<pre>package ch.hasselba.xpages.util.ssjs;\r\n\r\nimport java.io.BufferedReader;\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\nimport java.io.InputStreamReader;\r\nimport com.ibm.xsp.util.StreamUtil;\r\nimport com.ibm.xsp.page.compiled.ExpressionEvaluatorImpl;\r\nimport javax.faces.context.FacesContext;\r\nimport javax.faces.el.ValueBinding;\r\n\r\n\/**\r\n\u00a0* SSJSUtil\r\n\u00a0* \r\n\u00a0* helper class for SSJS operations\r\n\u00a0* \r\n\u00a0* @author Sven Hasselbach\r\n\u00a0* @version 1.0.2\r\n\u00a0* @category SSJS\r\n\u00a0* @category Utility\r\n\u00a0*\/\r\n\r\npublic class SSJSUtil {\r\n\r\n\u00a0\u00a0 \u00a0private static final String NEWLINE = \"\\n\";\r\n\u00a0\u00a0 \u00a0private static final String SSJS_EXPRESSION_BEGIN = \"#{javascript:\";\r\n\u00a0\u00a0 \u00a0private static final String SSJS_EXPRESSION_END = \"}\";\r\n\r\n\u00a0\u00a0 \u00a0\/**\r\n\u00a0\u00a0 \u00a0 * Loads SSJS code from a given URL and executes it\r\n\u00a0\u00a0 \u00a0 * Declared methods and objects are reachable for other SSJS code\r\n\u00a0\u00a0 \u00a0 * \r\n\u00a0\u00a0 \u00a0 * @param url of the SSJS code\r\n\u00a0\u00a0 \u00a0 * @return Object resulting object from SSJS execution\r\n\u00a0\u00a0 \u00a0 * @author Sven Hasselbach\r\n\u00a0\u00a0\u00a0\u00a0 * @version 1.0.1\r\n\u00a0\u00a0\u00a0\u00a0 * @category Utility\r\n\u00a0\u00a0 \u00a0 *\/\r\n\u00a0\u00a0 \u00a0public static Object executeSSJSFromURL( final String url ){\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return execute( loadFromURL( url ) );\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0\/**\r\n\u00a0\u00a0 \u00a0 * loads a URL stream and converts it to a string\r\n\u00a0\u00a0 \u00a0 * @param url of the resource\r\n\u00a0\u00a0 \u00a0 * @return String containing the data loaded from given url\r\n\u00a0\u00a0 \u00a0 * @author Sven Hasselbach\r\n\u00a0\u00a0\u00a0\u00a0 * @version 1.0.1\r\n\u00a0\u00a0\u00a0\u00a0 * @category Utility\r\n\u00a0\u00a0 \u00a0 *\/\r\n\u00a0\u00a0 \u00a0public static String loadFromURL( final String url ){\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0String ret = null;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0try{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0FacesContext fc = FacesContext.getCurrentInstance();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0InputStream in = StreamUtil.getInputStream(fc, url);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ret = inputStreamToString( in );\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}catch(Exception e){\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0e.printStackTrace();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return ret;\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0\/**\r\n\u00a0\u00a0 \u00a0 * executes given SSJS code and returns the result (if any)\r\n\u00a0\u00a0 \u00a0 * functions \/ libraries are added to runtime \r\n\u00a0\u00a0 \u00a0 * \r\n\u00a0\u00a0 \u00a0 * @param ssjsCode code to execute\r\n\u00a0\u00a0 \u00a0 * @return resulting object\r\n\u00a0\u00a0 \u00a0 * @author Sven Hasselbach\r\n\u00a0\u00a0\u00a0\u00a0 * @version 1.0.2\r\n\u00a0\u00a0\u00a0\u00a0 * @category SSJS\r\n\u00a0\u00a0 \u00a0 *\/\r\n\u00a0\u00a0 \u00a0public static Object execute( final String ssjsCode ){\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0Object ret = null;\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0try{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0String valueExpr = SSJS_EXPRESSION_BEGIN + ssjsCode + SSJS_EXPRESSION_END;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0FacesContext fc = FacesContext.getCurrentInstance();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ExpressionEvaluatorImpl evaluator = new ExpressionEvaluatorImpl( fc );\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ValueBinding vb = evaluator.createValueBinding( fc.getViewRoot(), valueExpr, null, null);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ret = vb.getValue(fc);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}catch(Exception e){\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0e.printStackTrace();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return ret;\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0\u00a0 \/**\r\n\u00a0\u00a0\u00a0\u00a0 * converts the data from a given inputstream to a string\r\n\u00a0\u00a0\u00a0\u00a0 * \r\n\u00a0\u00a0\u00a0\u00a0 * @param in InputStream to convert\r\n\u00a0\u00a0\u00a0\u00a0 * @return String containing data from input stream\r\n\u00a0\u00a0\u00a0\u00a0 * @throws IOException\r\n\u00a0\u00a0\u00a0\u00a0 * @author Sven Hasselbach\r\n\u00a0\u00a0\u00a0\u00a0 * @version 1.0.1\r\n\u00a0\u00a0\u00a0\u00a0 * @category Utility\r\n\u00a0\u00a0\u00a0\u00a0 *\/\r\n\u00a0\u00a0\u00a0 public static String inputStreamToString(final InputStream inStream) throws IOException {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 BufferedReader bufReader = new BufferedReader( new InputStreamReader(inStream) );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 StringBuilder strBuilder = new StringBuilder();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 String line = null;\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 while ((line = bufReader.readLine()) != null) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0strBuilder.append(line);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0strBuilder.append( NEWLINE );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 bufReader.close();\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return strBuilder.toString();\r\n\u00a0\u00a0\u00a0\u00a0 }\r\n}<\/pre>\n<p>By the way: You cannot use the <em>import<\/em> method in the remote code.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I have created a small helper class to run SSJS code from a remote server. The basic idea behind this class is a question on stackoverflow: http:\/\/stackoverflow.com\/questions\/12054733\/include-jss-file-from-notes-document-as-resource As far as I know there is no way to add a SSJS &hellip; <a href=\"https:\/\/hasselba.ch\/blog\/?p=832\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[89,9,76,74],"tags":[7,31,4,5,3],"class_list":["post-832","post","type-post","status-publish","format-standard","hentry","category-java","category-javascript","category-ssjs","category-xpages","tag-domino","tag-java","tag-js","tag-ssjs","tag-xpages"],"_links":{"self":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=832"}],"version-history":[{"count":10,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/832\/revisions"}],"predecessor-version":[{"id":842,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/832\/revisions\/842"}],"wp:attachment":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=832"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=832"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}