Download Jar. Libraryless. Click here for Pure Java version (18284L/135K).
1 | !7 |
2 | |
3 | set flag TripleAI. |
4 | set flag LispAI. |
5 | |
6 | static double aiCacheInterval = 10*60 /*30*/; // 10 minutes |
7 | static new ThreadLocal<Bool> white; |
8 | static new ThreadLocal<CookieToConcept> ctc; |
9 | static int nComments = 30; |
10 | static int nRelations = 5; |
11 | |
12 | sS searchQueriesUniverse = "crefwbbhvngkmicy"; |
13 | |
14 | static TimedCache<S> news = new TimedCache(60); |
15 | |
16 | concept Search {
|
17 | S q, ip; |
18 | } |
19 | |
20 | concept CookieToConcept {
|
21 | S cookie, concept; |
22 | |
23 | *() {
|
24 | if (!_loading()) concept = aGlobalID(); |
25 | } |
26 | } |
27 | |
28 | concept UserTruth {
|
29 | S user, text; |
30 | } |
31 | |
32 | concept Comment {
|
33 | S commentID, conceptID, user, text; |
34 | |
35 | *() {
|
36 | if (!_loading()) commentID = aGlobalID(); |
37 | } |
38 | } |
39 | |
40 | p {
|
41 | aiConceptsMap_cached_autoClearInterval = aiCacheInterval; |
42 | db(); |
43 | indexConceptField(CookieToConcept, 'cookie); |
44 | //loadAIConcepts_alwaysFromDisk = true; |
45 | aiConceptsMap_fastLoad = loadTruth_fastLoad = true; |
46 | setOpt(startAIConceptsHere(), grabImages := true); |
47 | startTruthTableHere(); |
48 | } |
49 | |
50 | html {
|
51 | // check host |
52 | |
53 | long time = sysNow(); |
54 | white.set(false); // !oneIn(10)); |
55 | S cookie = cookieFromUser(); |
56 | CookieToConcept ctc = cookieToConcept(); |
57 | |
58 | if (nempty(params.get("news"))) news.clear();
|
59 | |
60 | if (eq(uri, "/structure/comments")) |
61 | ret serveText(structure(list(Comment))); |
62 | |
63 | if (eq(uri, "/structure/concepts")) |
64 | ret serveText(structure(exportableAIConcepts())); |
65 | |
66 | new Matches m; |
67 | |
68 | if (startsWith(uri, "/structure/conceptsByTokens/", m)) |
69 | ret serveText(structure(exportableAIConcepts(aiConceptsByTokens(urldecode($1))))); |
70 | |
71 | if (startsWith(uri, "/structure/", m)) {
|
72 | if (possibleGlobalID($1)) {
|
73 | AIConcept c = getAIConcept($1); |
74 | if (c != null) |
75 | ret serveText(structure(exportableConcept(c))); |
76 | } |
77 | ret ""; |
78 | } |
79 | |
80 | if (eq(uri, "/structure/statements")) |
81 | ret serveText(structure(loadTruth_cached())); |
82 | |
83 | S s = hmobilefix() + |
84 | hcommentSafe("Cookie: " + cookie
|
85 | + (ctc != null ? ", concept: " + ctc.concept : "")) |
86 | + (white! ? "" : hcss("a:link, a:visited, a:hover, a:active { color: white; }"))
|
87 | + hbody(htmlImpl(uri, params), style := white! |
88 | ? "background: white" |
89 | : "text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black; color: white; background-color: #262626"); |
90 | // : "text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black; color: white; background-image: url(\"" + snippetImageGIFURL(#1007679) + "\"); background-repeat: no-repeat; background-position: 50% 0; background-color: #262626"); |
91 | // : "text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black; color: white; background-image: url(\"" + snippetImageGIFURL(#1007907) + "\"); background-repeat: no-repeat; background-position: 50% 0; background-color: #141414"); |
92 | ret s + p(hsmall((sysNow()-time) + " ms", style := "color: #EEEEEE"), style := "text-align: right"); |
93 | } |
94 | |
95 | static O htmlImpl(S uri, final SS params) {
|
96 | print("Wiki URI: " + uri);
|
97 | S vis = registerVisitor(); |
98 | uri = dropSuffix("/", uri);
|
99 | uri = dropPrefix("/", uri);
|
100 | S userConcept = userConcept(); |
101 | |
102 | processActions(params); |
103 | |
104 | if (eq(uri, "sleep")) {
|
105 | sleepSeconds(5); |
106 | ret "Slept 5, just for you."; |
107 | } |
108 | |
109 | S q = trim(params.get("q"));
|
110 | S qname = q, qcomment = ""; |
111 | new Matches m; |
112 | if (flexMatch("* [*]", q, m)) {
|
113 | qname = $1; |
114 | qcomment = $2; |
115 | } |
116 | if (nempty(q)) {
|
117 | cset(uniq(Search, +q, ip := getClientIP()), lastSeen := now()); |
118 | if (findAIConceptByNameAndCommentIC(qname, qcomment) == null) {
|
119 | S universe = or2(qname.startsWith("->") ? userConcept : null, searchQueriesUniverse);
|
120 | createAIConcept(qname, qcomment, universe); |
121 | //if (!loadAIConcepts_alwaysFromDisk) clearAICaches(); |
122 | } |
123 | } |
124 | |
125 | if (eq(uri, "import")) {
|
126 | triggerStandardAIImport(); |
127 | ret "OK" + hrefresh(1, "/wiki/"); |
128 | } |
129 | |
130 | if (eq(uri, "export")) {
|
131 | triggerStandardAIExport(); |
132 | ret "OK" + hrefresh(1, "/wiki/"); |
133 | } |
134 | |
135 | if (eq(uri, "searches")) {
|
136 | ret htitle_h2("Latest Searches")
|
137 | + htable(map(func(Search s) { litorderedmap(Query := dynamize(s.q),
|
138 | IP := dynamize(s.ip)) }, takeFirst(10, sortedByFieldDesc("lastSeen", list(Search)))), false);
|
139 | } |
140 | |
141 | clearAICaches(aiCacheInterval); |
142 | final Map<S, AIConcept> map = aiConceptsMap_cached(); |
143 | |
144 | if (possibleGlobalID(uri)) |
145 | ret renderConcept(uri, params); |
146 | |
147 | // Serve main page |
148 | |
149 | S results = ""; |
150 | |
151 | if (nempty(q)) {
|
152 | L<AIConcept> l = imSearch(q); |
153 | if (empty(l)) |
154 | results = h3("No search results for " + htmlencode(quote(q)));
|
155 | else |
156 | results = h3("Search results for " + htmlencode(quote(q)))
|
157 | + ul(map(f aiConceptToHTML, l)); |
158 | } |
159 | |
160 | L<AIConcept> l = withoutArrowConcepts(sortedByFieldDesc(values(map), "touched")); |
161 | |
162 | /*S question = ""; |
163 | pcall {
|
164 | question = makeQuestion(); |
165 | question = toUpper(conceptLanguageToEnglish_xyz_noquote(question)); |
166 | }*/ |
167 | bool didAddComment = eq("addComment", params.get("action"));
|
168 | S randomConcept = ""; |
169 | /*pcall {
|
170 | S id = randomNonTechnicalConcept(); |
171 | randomConcept = |
172 | hform( |
173 | hhidden(action := "addComment") |
174 | + hhidden(conceptID := id) |
175 | + "What do you think about " |
176 | + b(dynamize("\"" + conceptToName(id) + "\""))
|
177 | + "? " |
178 | + hinputfield("text", "", autofocus := didAddComment ? "1" : null, style := "text-align: center") + " " + hsubmit("Submit spontaneous comment"));
|
179 | }*/ |
180 | |
181 | S search = |
182 | h3("Search")
|
183 | + p("Search term, question or statement:")
|
184 | + hform( |
185 | htextinput("q", q, /*autofocus := !didAddComment ? "1" : null,*/ style := "text-align: center", onfocus := "this.select()") + " "
|
186 | + hsubmit("Go"),
|
187 | "accept-charset" := "UTF-8"); |
188 | |
189 | S auth = ""; |
190 | if (webAuthed()) |
191 | auth = " " + ahref("/wiki/import", "Import.")
|
192 | + " " + getExportSnippetID(aiConceptsProgram()) + "/" |
193 | + getExportSnippetID(truthTableProgram()) + ". " |
194 | + ahref("/wiki/export", "Export.");
|
195 | |
196 | S line = "See " + ahref("https://www.youtube.com/watch?v=gTlgZkc95IU", "Video") + ". " + ahref("http://ai1.lol/new", htmlencode("More videos & articles")) + ". " + ahref("http://tinybrain.de/x30.jar", "Download.")
|
197 | + auth; |
198 | |
199 | bool all = nempty(params.get("all"));
|
200 | L<AIConcept> conceptsToShow = all ? l : selectRandomUpTo(l, 20); |
201 | S concepts = ul(map(f aiConceptToHTML, conceptsToShow)); |
202 | |
203 | L<Statement> allStatements = reversed(loadTruth_cached()); |
204 | bool allRelations = nempty(params.get("allrelations"));
|
205 | L<Statement> statements = allRelations ? allStatements : takeFirst(nRelations, allStatements); |
206 | S relations = ul(map(f statementToHTML, statements)); |
207 | |
208 | bool showAllComments = nempty(params.get("allcomments"));
|
209 | L<Comment> allComments = sortedByFieldDesc(list(Comment), "created"); |
210 | L<Comment> lcomments = showAllComments ? allComments : takeFirst(nComments, allComments); |
211 | S comments = ul(map(f commentToHTML2, lcomments)); |
212 | |
213 | BigInteger[] ints = extractIntsFromString(vis); |
214 | BigInteger today = getBigInt(ints, 0), yesterday = getBigInt(ints, 2); |
215 | S load = formatDoubleFull(systemLoad(), 1); |
216 | S drive = iceil(userDirDriveFullness()) + "%"; |
217 | S s = ""; |
218 | if (nempty(userConcept)) |
219 | s = "You are: " + dynamize(userConcept) + " / "; |
220 | s += today + " : " + yesterday + " / " + load + " / " + drive; |
221 | S exp = "Visitors today: " + today + ", yesterday: " + yesterday + ", system load: " + load + ", drive use: " + drive; |
222 | S visBox = hdiv(hsmall(s), style := "position:absolute; top: 2px; right: 2px", title := exp); |
223 | |
224 | S latest = ""; |
225 | int nLatest = parseIntOpt(params.get("latest"));
|
226 | if (nLatest != 0) nLatest = min(nLatest, 1000); else nLatest = 3; |
227 | if (!all) {
|
228 | L<AIConcept> ll = takeFirst(nLatest, withoutArrowConcepts(sortedByFieldDesc(values(map), "created"))); |
229 | latest = h3("Latest concepts " + (nLatest < 100 ? ahref("?latest=100", "(more)") : ""))
|
230 | + ul(map(f aiConceptToHTML, ll)); |
231 | } |
232 | |
233 | long nc = numComputers(); |
234 | S slogan = p( |
235 | // span(l(l) + " Concepts", style := "font-size: 40px") |
236 | span( |
237 | //targetBlank("https://www.twitch.tv/stefan_reich", "LET'S TWITCH.")
|
238 | //targetBlank("http://all-computers.tinybrain.de", (nc == 0 ? "MANY" : str(nc)) + " COMPUTERS"),
|
239 | //+ "<br>" + targetBlank("http://ai1.lol/", "LET'S CHAT!"
|
240 | targetBlank("http://ai1.lol/", himg(snippetImgLink(#1009213), width := 394, height := 74, title := "BotCompany.de")),
|
241 | style := "font-size: 40px") |
242 | + "<br>" |
243 | + hsmall(b(ahref("http://ai1.lol/wiki/", "THE MACHINE")
|
244 | + " " + ahref(progLink(#1007674), "understands Fibonacci numbers") + ", " + ahref(progLink(#1007649), "letters to mom") |
245 | + ", " + ahref(progLink(#1007814), "Scandinavian breakfast") |
246 | + " and " + ahref(progLink(#1008300), "products") |
247 | + " :-)") + "<br>" + line) |
248 | + "<br><br>" |
249 | + "We're working on reducing the insanity. " + ahref("mailto:info@ai1.lol", "Mail.")
|
250 | + " " + ahref("https://www.meetup.com/Artificial-Intelligence-Meetup/", "Hamburg.")
|
251 | + " " + ahref("https://slides.com/stefanreich", "Presentations (German/English).")
|
252 | + "<br>" |
253 | + "Currently working on " + targetBlank(progLink(#1007924), "reading Wikipedia") + " & " + targetBlank(progLink(#1007987), "general super-parsing") + "." |
254 | // + b(ahref("http://tinybrain.de/1007649", "Demo 1.") + " "
|
255 | // + ahref("http://tinybrain.de/1007674", "Demo 2."))
|
256 | ); |
257 | |
258 | ret htitle("Intelligence Machine")
|
259 | + visBox |
260 | + hdiv(visitorsChart(""), style := "position:absolute; left: 2px; right: 2px; width: 150px; height: 110px;", title := "Visitors Chart")
|
261 | + hcenter2( |
262 | (white! ? "" : slogan) |
263 | + (white! ? p(ahref("http://ai1.lol/", hTBImage(white! ? #1007526 : #1002549, "title", "Intelligence Machine"))) : "")
|
264 | + (white! ? slogan : "") |
265 | //+ p("It seems we're moving towards actual applications. New contacts!")
|
266 | + news.get(func -> S { loadSnippet(#1008166) })
|
267 | + youtubeEmbedSideBySide("KXPLUaaVPIw", /*"wuz8yhnN9fs",*/ "UVMiYHeotFE")
|
268 | |
269 | //+ p(htbimg(#1008147)) |
270 | //+ p(htbimg(#1008146)) |
271 | |
272 | // + p(dynamize(question)) |
273 | + randomConcept |
274 | + search) |
275 | + results |
276 | //+ hcenter2(latestDrawing() + randomDrawing()) |
277 | + "<br>" |
278 | + htableRaw_valignTop(ll(ll( |
279 | latest + |
280 | hdiv(_defaultAd(), style := "float: left; margin-right: 30px; margin-bottom: 20px") + |
281 | h3( |
282 | (all ? "Concepts (" + lstr(l)
|
283 | : "Random concepts (" + l(conceptsToShow) + " of " + ahref("?all=1", l(l)))
|
284 | + ")") + concepts, |
285 | //hdiv(_defaultAd(), style := "float: right; margin: 10px") + |
286 | h3(showAllComments ? "All Comments (" + l(lcomments) + ")"
|
287 | : "Latest Comments (" + l(lcomments) + " of " + ahref("?allcomments=1", l(allComments)) + ") - YOU can comment too")
|
288 | + comments |
289 | + h3(allRelations |
290 | ? "All Relations (" + l(statements) + ")"
|
291 | : "Latest Relations (" + l(statements) + " of " + ahref("?allrelations=1", l(allStatements)) + ") - We should clean them up some time ^^")
|
292 | + relations)), "border", "0") |
293 | + hcenter2(htableRaw_valignTop(ll(ll(latestDrawing(), randomDrawing())), "cellspacing", 20)) |
294 | ; |
295 | } |
296 | |
297 | static S aiConceptToHTML(AIConcept c) {
|
298 | ret (nempty(c.imageMD5) ? "[w/image] " : |
299 | hasSuggestedImage(c) ? "[w/sugg. image] " : "") + |
300 | dynamize(c.globalID) + " - " + dynamize(aiConceptToString2(c)); |
301 | } |
302 | |
303 | static S statementToHTML(Statement s) {
|
304 | ret ahref("http://ai1.lol/" + s.globalID, "*") + " " + dynamize(or2(s.possibleEnglishTranslation, "?") + " - " + s.text);
|
305 | } |
306 | |
307 | static S commentToHTML(Comment c) {
|
308 | ret hsafeComment(c.commentID) + dynamize(c.user + " says: " + c.text); |
309 | } |
310 | |
311 | // for start page |
312 | static S commentToHTML2(Comment c) {
|
313 | ret ahref(intelligenceMachineLink(c.conceptID), dynamize(conceptToName(c.conceptID))) |
314 | + dynamize( |
315 | //c.user + " says on " + c.conceptID + ": " + c.text |
316 | ": " + c.text |
317 | ); |
318 | } |
319 | |
320 | sS renderConcept(S uri, SS params) {
|
321 | // Serve concept |
322 | |
323 | final Map<S, AIConcept> map = aiConceptsMap_cached(); |
324 | final AIConcept c = map.get(toLower(uri)); |
325 | Statement st = findWhere(loadTruth_cached(), globalID := toLower(uri)); |
326 | |
327 | if (st != null) ret renderStatement(c, st, params); |
328 | if (c == null) {
|
329 | pcall-short {
|
330 | loadPage_extraHeaders.set(litmap("X-Forwarded-For", clientIP()));
|
331 | ret loadPage(smartBotURL() + "/" + toLower(uri)); |
332 | } |
333 | ret "[Smart Bot Reloading]"; |
334 | } |
335 | |
336 | S html = htitle(c.name + " [" + |
337 | (nempty(c.comment) ? c.comment + " / " : "") + c.globalID + "]") |
338 | + h2(dynamize(aiConceptToString(c))); |
339 | |
340 | html += ul( |
341 | "Universe: " + dynamize(c.originatingUniverse), |
342 | eq(c.originatingUniverse, userConcept()) ? "You made this" : null, |
343 | //"Image MD5: " + htmlencode(c.imageMD5) |
344 | "Created: " + formatDateAndTime(c.created), |
345 | "Touched: " + formatDateAndTime(c.touched), |
346 | c.imported != 0 || nempty(c.importedFrom) ? "Imported: " + formatDateAndTime(c.imported) + " from " + dynamize(c.importedFrom) : null |
347 | ); |
348 | |
349 | if (nempty(c.imageMD5) && imageServerHas(c.imageMD5)) |
350 | html += p(himg(imageServerJPEGLink(c.imageMD5))); |
351 | |
352 | if (c.suggestedImage.has()) {
|
353 | print("PNG path: " + c.suggestedImage->pngPath);
|
354 | BufferedImage img = c.suggestedImage->getImage(); |
355 | if (img != null) {
|
356 | uploadToImageServerIfNotThere(img, aiConceptToString(c)); |
357 | if (empty(c.suggestedImageMD5)) |
358 | c.suggestedImageMD5 = imageMD5(img); |
359 | } |
360 | } |
361 | |
362 | if (nempty(c.suggestedImageMD5)) |
363 | html += h3("Suggested image (from Google search)") + p(himg(imageServerJPEGLink(c.suggestedImageMD5));
|
364 | |
365 | L<Statement> statements = [Statement s : loadTruth_cached() | containsIgnoreCase(s.text, c.globalID)]; |
366 | if (nempty(statements)) |
367 | html += h3("Statements about this") + ul(map(f statementToHTML, statements));
|
368 | |
369 | L<Comment> comments = conceptsWhere(Comment, conceptID := c.globalID); |
370 | html += h3("Comments") + ul(map(f commentToHTML, comments));
|
371 | |
372 | html += h3("Add comment") + hform(
|
373 | hhidden(action := "addComment") |
374 | + hhidden(conceptID := c.globalID) |
375 | + htableRaw_valignTop(ll( |
376 | ll("Your Comment", hinputfield("text")),
|
377 | ll("", hsubmit("Add comment"))
|
378 | ))); |
379 | |
380 | html += p(ahref("http://ai1.lol/wiki", "[Home]"));
|
381 | |
382 | ret html; |
383 | } |
384 | |
385 | sS hselectNode(Map<S, ? extends Node> map, O... params) {
|
386 | ret hselect(orderMapByValue(mapValues(f nodeToString, map)), params); |
387 | } |
388 | |
389 | sS renderStatement(AIConcept c, Statement st, SS params) {
|
390 | if (nempty(params.get("retranslate"))) {
|
391 | RemoteDB db = new RemoteDB(truthTableProgram()); |
392 | db.xset(db.rc(st.id), possibleEnglishTranslation := null); |
393 | db.close(); |
394 | st.possibleEnglishTranslation = null; |
395 | } |
396 | |
397 | bool hasTranslation = nempty(st.possibleEnglishTranslation); |
398 | S html = htitle_h2("Statement " + st.globalID)
|
399 | + ul( |
400 | "English (machine-generated): " + dynamize(or2(st.possibleEnglishTranslation, "?")), |
401 | "Computer Language: " + dynamize(st.text), |
402 | st.imported != 0 || nempty(st.importedFrom) ? "Imported: " + formatDateAndTime(st.imported) + " from " + dynamize(st.importedFrom) : null) |
403 | + (!hasTranslation ? "" : p(ahref("?retranslate=1", "Request retranslation")));
|
404 | html += p(ahref("http://ai1.lol/wiki", "[Home]"));
|
405 | ret html; |
406 | } |
407 | |
408 | svoid processActions(SS params) {
|
409 | S action = params.get("action");
|
410 | |
411 | if (eq(action, "addRelation")) {
|
412 | S id1 = params.get("concept1");
|
413 | S id2 = params.get("concept2");
|
414 | S rel = params.get("rel");
|
415 | if (nempty(id1) && nempty(rel)) |
416 | createStatement(conceptQuote(rel) + " " + conceptQuote(id1) + " " + conceptQuoteOpt(id2)); |
417 | } |
418 | |
419 | if (eq(action, "addComment")) {
|
420 | S conceptID = params.get("conceptID");
|
421 | S text = trim(params.get("text"));
|
422 | if (possibleGlobalID(conceptID) && nempty(text)) {
|
423 | S user = ctc->concept; |
424 | uniq(Comment, +user, +conceptID, +text); |
425 | } |
426 | } |
427 | } |
428 | |
429 | static S latestDrawing() {
|
430 | L metas = getDrawings(); |
431 | ret empty(metas) ? "" : |
432 | h3("Latest Drawing")
|
433 | + renderDrawing(first(metas)); |
434 | } |
435 | |
436 | sS renderDrawing(O meta) {
|
437 | ret p(renderMeta(meta) + "<br>" |
438 | + hsmall(ahref(progLink(#1009961), "Make your own.") |
439 | + " " + ahref("http://ai1.lol/images", "More drawings.")));
|
440 | } |
441 | |
442 | static S randomDrawing() {
|
443 | O meta = random(dropFirst(getDrawings())); |
444 | if (meta == null) ret ""; |
445 | ret h3("Random Drawing")
|
446 | + renderDrawing(meta); |
447 | } |
448 | |
449 | static L getDrawings() {
|
450 | pcall {
|
451 | O imageServer = getBot(#1004590); |
452 | L metas = cast call(get(imageServer, "mainConcepts"), "list", "ImageMeta"); |
453 | metas = [O meta : metas | startsWithIC(getString(meta, "name"), "Drawing ")]; |
454 | metas = sortedByFieldDesc(metas, "created"); |
455 | ret metas; |
456 | } |
457 | ret ll(); |
458 | } |
459 | |
460 | static S renderMeta(O meta) {
|
461 | S md5 = getString(meta, "md5"); |
462 | S jpg = imageServerJPEGLink(md5); |
463 | ret ahref(jpg, himg(jpg, |
464 | //style := "zoom: 50%" // works only on Chrome |
465 | onload := "this.width *= 0.7; this.onload=null;" |
466 | )); |
467 | } |
468 | |
469 | static L exportableAIConcepts(Collection<AIConcept> l) {
|
470 | ret map(f exportableConcept, l); |
471 | } |
472 | |
473 | static L exportableAIConcepts() {
|
474 | ret exportableAIConcepts(aiConcepts()); |
475 | } |
476 | |
477 | static Concept exportableConcept(AIConcept c) {
|
478 | Concept cc = unlisted(Concept); |
479 | cc.className = "AIConcept"; |
480 | cc.created = c.created; |
481 | copyConceptFields(c, cc, "globalID", "name"); |
482 | if (nempty(c.comment)) copyConceptFields(c, cc, "comment"); |
483 | ret cc; |
484 | } |
485 | |
486 | static S userConcept() {
|
487 | ret ctc! != null ? ctc->concept : ""; |
488 | } |
489 | |
490 | static long numComputers() {
|
491 | ret getLong(getBot(#1003253), "numComputers"); |
492 | } |
493 | |
494 | static CookieToConcept cookieToConcept() {
|
495 | S cookie = cookieFromUser(); |
496 | CookieToConcept ctc = null; |
497 | if (nempty(cookie)) {
|
498 | ctc = uniq(CookieToConcept, +cookie); |
499 | if (!hasAIConcept(ctc.concept)) |
500 | createAIConcept_listed(ctc.concept, "-> an anonymous cookie", "created automatically", searchQueriesUniverse); |
501 | } |
502 | main.ctc.set(ctc); |
503 | ret ctc; |
504 | } |
505 | |
506 | static S conceptIDForCookie() {
|
507 | CookieToConcept ctc = cookieToConcept(); |
508 | ret ctc == null ? null : ctc.concept; |
509 | } |
510 | |
511 | !include #1007812 // Question Maker |
download show line numbers debug dex old transpilations
Travelled to 14 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, onxytkatvevr, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1007510 |
| Snippet name: | Intelligence Machine [no longer live] |
| Eternal ID of this version: | #1007510/387 |
| Text MD5: | 3caefdf40c9c6af1bccc3f51fb620a6f |
| Transpilation MD5: | b497dae66ae059bf100c5ff84b2b34f9 |
| Author: | stefan |
| Category: | javax / a.i. / html |
| Type: | JavaX source code (desktop) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2019-07-02 15:04:45 |
| Source code size: | 18299 bytes / 511 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 2404 / 7814 |
| Version history: | 386 change(s) |
| Referenced in: | [show references] |