Ashhar commited on
Commit
9a7b472
·
1 Parent(s): 53cbcf7

first working version

Browse files
.gitignore ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ .env
2
+ .venv
3
+ __pycache__/
4
+ .gitattributes
5
+ gradio_cached_examples/
6
+ app_*.py
.streamlit/config.toml ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ [client]
2
+ showSidebarNavigation = false
3
+
4
+ [theme]
5
+ base="dark"
app.py ADDED
@@ -0,0 +1,500 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import os
3
+ import time
4
+ import json
5
+ import re
6
+ from typing import List, Literal, TypedDict
7
+ from transformers import AutoTokenizer
8
+ from tools.tools import toolsInfo
9
+ from gradio_client import Client
10
+ import constants as C
11
+ import utils as U
12
+
13
+ from openai import OpenAI
14
+ import anthropic
15
+ from groq import Groq
16
+
17
+ from dotenv import load_dotenv
18
+ load_dotenv()
19
+
20
+ ModelType = Literal["GPT4", "CLAUDE", "LLAMA"]
21
+ ModelConfig = TypedDict("ModelConfig", {
22
+ "client": OpenAI | Groq | anthropic.Anthropic,
23
+ "model": str,
24
+ "max_context": int,
25
+ "tokenizer": AutoTokenizer
26
+ })
27
+
28
+ modelType: ModelType = os.environ.get("MODEL_TYPE") or "LLAMA"
29
+
30
+ MODEL_CONFIG: dict[ModelType, ModelConfig] = {
31
+ "GPT4": {
32
+ "client": OpenAI(api_key=os.environ.get("OPENAI_API_KEY")),
33
+ "model": "gpt-4o-mini",
34
+ "max_context": 128000,
35
+ "tokenizer": AutoTokenizer.from_pretrained("Xenova/gpt-4o")
36
+ },
37
+ "CLAUDE": {
38
+ "client": anthropic.Anthropic(api_key=os.environ.get("ANTHROPIC_API_KEY")),
39
+ "model": "claude-3-5-sonnet-20240620",
40
+ "max_context": 128000,
41
+ "tokenizer": AutoTokenizer.from_pretrained("Xenova/claude-tokenizer")
42
+ },
43
+ "LLAMA": {
44
+ "client": Groq(api_key=os.environ.get("GROQ_API_KEY")),
45
+ "model": "llama-3.1-70b-versatile",
46
+ "tools_model": "llama3-groq-70b-8192-tool-use-preview",
47
+ "max_context": 128000,
48
+ "tokenizer": AutoTokenizer.from_pretrained("Xenova/Meta-Llama-3.1-Tokenizer")
49
+ }
50
+ }
51
+
52
+ client = MODEL_CONFIG[modelType]["client"]
53
+ MODEL = MODEL_CONFIG[modelType]["model"]
54
+ TOOLS_MODEL = MODEL_CONFIG[modelType].get("tools_model") or MODEL
55
+ MAX_CONTEXT = MODEL_CONFIG[modelType]["max_context"]
56
+ tokenizer = MODEL_CONFIG[modelType]["tokenizer"]
57
+
58
+ isClaudeModel = modelType == "CLAUDE"
59
+
60
+
61
+ def __countTokens(text):
62
+ text = str(text)
63
+ tokens = tokenizer.encode(text, add_special_tokens=False)
64
+ return len(tokens)
65
+
66
+
67
+ st.set_page_config(
68
+ page_title="Mini Perplexity",
69
+ page_icon=C.AI_ICON,
70
+ # menu_items={"About": None}
71
+ )
72
+
73
+
74
+ def __isInvalidResponse(response: str):
75
+ if len(re.findall(r'\n((?!http)[a-z])', response)) > 3:
76
+ U.pprint("new line followed by small case char")
77
+ return True
78
+
79
+ if len(re.findall(r'\b(\w+)(\s+\1){2,}\b', response)) > 1:
80
+ U.pprint("lot of repeating words")
81
+ return True
82
+
83
+ if len(re.findall(r'\n\n', response)) > 20:
84
+ U.pprint("lots of paragraphs")
85
+ return True
86
+
87
+ if C.EXCEPTION_KEYWORD in response:
88
+ U.pprint("LLM API threw exception")
89
+ return True
90
+
91
+ # # json response without json separator
92
+ # if ('{\n "options"' in response) and (C.JSON_SEPARATOR not in response):
93
+ # return True
94
+ # if ('{\n "action"' in response) and (C.JSON_SEPARATOR not in response):
95
+ # return True
96
+
97
+ # # only options with no text
98
+ # if response.startswith(C.JSON_SEPARATOR):
99
+ # return True
100
+
101
+
102
+ def __matchingKeywordsCount(keywords: List[str], text: str):
103
+ return sum([
104
+ 1 if keyword in text else 0
105
+ for keyword in keywords
106
+ ])
107
+
108
+
109
+ def __getMessages():
110
+ def getContextSize():
111
+ currContextSize = __countTokens(C.SYSTEM_MSG) + __countTokens(st.session_state.messages) + 100
112
+ U.pprint(f"{currContextSize=}")
113
+ return currContextSize
114
+
115
+ while getContextSize() > MAX_CONTEXT:
116
+ U.pprint("Context size exceeded, removing first message")
117
+ st.session_state.messages.pop(0)
118
+
119
+ return st.session_state.messages
120
+
121
+
122
+ def __logLlmRequest(messagesFormatted: list):
123
+ contextSize = __countTokens(messagesFormatted)
124
+ U.pprint(f"{contextSize=} | {MODEL}")
125
+ # U.pprint(f"{messagesFormatted=}")
126
+
127
+
128
+ tools = [
129
+ toolsInfo["getGoogleSearchResults"]["schema"],
130
+ ]
131
+
132
+
133
+ def __showToolResponse(toolResponseDisplay: dict):
134
+ msg = toolResponseDisplay.get("text")
135
+ icon = toolResponseDisplay.get("icon")
136
+
137
+ col1, col2 = st.columns([1, 20])
138
+ with col1:
139
+ st.image(
140
+ icon or C.TOOL_ICON,
141
+ width=30
142
+ )
143
+ with col2:
144
+ if "`" not in msg:
145
+ st.markdown(f"`{msg}`")
146
+ else:
147
+ st.markdown(msg)
148
+
149
+
150
+ def __addToolCallToMsgs(toolCall: dict):
151
+ if isClaudeModel:
152
+ st.session_state.messages.append(toolCall)
153
+ else:
154
+ st.session_state.messages.append(
155
+ {
156
+ "role": "assistant",
157
+ "tool_calls": [
158
+ {
159
+ "id": toolCall.id,
160
+ "function": {
161
+ "name": toolCall.function.name,
162
+ "arguments": toolCall.function.arguments,
163
+ },
164
+ "type": toolCall.type,
165
+ }
166
+ ],
167
+ }
168
+ )
169
+
170
+
171
+ def __processToolCalls(toolCalls):
172
+ for toolCall in toolCalls:
173
+ functionName = toolCall.function.name
174
+ functionToCall = toolsInfo[functionName]["func"]
175
+ functionArgsStr = toolCall.function.arguments
176
+ U.pprint(f"{functionName=} | {functionArgsStr=}")
177
+ functionArgs = json.loads(functionArgsStr)
178
+
179
+ functionResult = functionToCall(**functionArgs)
180
+ functionResponse = functionResult.get("response")
181
+ responseDisplay = functionResult.get("display")
182
+ U.pprint(f"{functionResponse=}")
183
+
184
+ if responseDisplay:
185
+ __showToolResponse(responseDisplay)
186
+ st.session_state.toolResponseDisplay = responseDisplay
187
+
188
+ __addToolCallToMsgs(toolCall)
189
+
190
+ st.session_state.messages.append({
191
+ "role": "tool",
192
+ "tool_call_id": toolCall.id,
193
+ "name": functionName,
194
+ "content": functionResponse,
195
+ })
196
+
197
+
198
+ def __processClaudeToolCalls(toolResponse):
199
+ toolCall = toolResponse[1]
200
+
201
+ functionName = toolCall.name
202
+ functionToCall = toolsInfo[functionName]["func"]
203
+ functionArgs = toolCall.input
204
+ functionResult = functionToCall(**functionArgs)
205
+ functionResponse = functionResult.get("response")
206
+ responseDisplay = functionResult.get("display")
207
+ U.pprint(f"{functionResponse=}")
208
+
209
+ if responseDisplay:
210
+ __showToolResponse(responseDisplay)
211
+ st.session_state.toolResponseDisplay = responseDisplay
212
+
213
+ __addToolCallToMsgs({
214
+ "role": "assistant",
215
+ "content": toolResponse
216
+ })
217
+ st.session_state.messages.append({
218
+ "role": "user",
219
+ "content": [{
220
+ "type": "tool_result",
221
+ "tool_use_id": toolCall.id,
222
+ "content": functionResponse,
223
+ }],
224
+ })
225
+
226
+
227
+ def __dedupeToolCalls(toolCalls: list):
228
+ toolCallsDict = {}
229
+ for toolCall in toolCalls:
230
+ funcName = toolCall.name if isClaudeModel else toolCall.function.name
231
+ toolCallsDict[funcName] = toolCall
232
+ dedupedToolCalls = list(toolCallsDict.values())
233
+
234
+ if len(toolCalls) != len(dedupedToolCalls):
235
+ U.pprint("Deduped tool calls!")
236
+ U.pprint(f"{toolCalls=} -> {dedupedToolCalls=}")
237
+
238
+ return dedupedToolCalls
239
+
240
+
241
+ def __getClaudeTools():
242
+ claudeTools = []
243
+ for tool in tools:
244
+ funcInfo = tool["function"]
245
+ name = funcInfo["name"]
246
+ description = funcInfo["description"]
247
+ schema = funcInfo["parameters"]
248
+ claudeTools.append({
249
+ "name": name,
250
+ "description": description,
251
+ "input_schema": schema,
252
+ })
253
+
254
+ return claudeTools
255
+
256
+
257
+ def predict(model: str = None):
258
+ model = model or MODEL
259
+
260
+ messagesFormatted = []
261
+ try:
262
+ if isClaudeModel:
263
+ messagesFormatted.extend(__getMessages())
264
+ __logLlmRequest(messagesFormatted)
265
+
266
+ responseMessage = client.messages.create(
267
+ model=model,
268
+ messages=messagesFormatted,
269
+ system=C.SYSTEM_MSG,
270
+ temperature=0.5,
271
+ max_tokens=4000,
272
+ tools=__getClaudeTools()
273
+ )
274
+
275
+ responseMessageContent = responseMessage.content
276
+ responseContent = responseMessageContent[0].text
277
+ toolCalls = []
278
+ if len(responseMessageContent) > 1:
279
+ toolCalls = [responseMessageContent[1]]
280
+ else:
281
+ messagesFormatted = [{"role": "system", "content": C.SYSTEM_MSG}]
282
+ messagesFormatted.extend(__getMessages())
283
+ __logLlmRequest(messagesFormatted)
284
+
285
+ response = client.chat.completions.create(
286
+ model=model,
287
+ messages=messagesFormatted,
288
+ temperature=0.7,
289
+ max_tokens=4000,
290
+ stream=False,
291
+ tools=tools
292
+ )
293
+ responseMessage = response.choices[0].message
294
+ responseContent = responseMessage.content
295
+
296
+ if responseContent and '<function=' in responseContent:
297
+ U.pprint("Switching to TOOLS_MODEL")
298
+ return predict(TOOLS_MODEL)
299
+ toolCalls = responseMessage.tool_calls
300
+
301
+ U.pprint(f"{responseMessage=}")
302
+ U.pprint(f"{responseContent=}")
303
+ U.pprint(f"{toolCalls=}")
304
+
305
+ if toolCalls:
306
+ toolCalls = __dedupeToolCalls(toolCalls)
307
+ U.pprint("Deduping done!")
308
+ try:
309
+ if isClaudeModel:
310
+ __processClaudeToolCalls(responseMessage.content)
311
+ else:
312
+ __processToolCalls(toolCalls)
313
+ return predict()
314
+ except Exception as e:
315
+ U.pprint(e)
316
+ else:
317
+ return responseContent
318
+ except Exception as e:
319
+ U.pprint(f"LLM API Error: {e}")
320
+ return C.EXCEPTION_KEYWORD
321
+
322
+
323
+ def __generateImage(prompt: str):
324
+ fluxClient = Client("black-forest-labs/FLUX.1-schnell")
325
+ result = fluxClient.predict(
326
+ prompt=prompt,
327
+ seed=0,
328
+ randomize_seed=True,
329
+ width=1024,
330
+ height=768,
331
+ num_inference_steps=4,
332
+ api_name="/infer"
333
+ )
334
+ U.pprint(f"imageResult={result}")
335
+ return result
336
+
337
+
338
+ def __resetButtonState():
339
+ st.session_state.buttonValue = ""
340
+
341
+
342
+ if "ipAddress" not in st.session_state:
343
+ st.session_state.ipAddress = st.context.headers.get("x-forwarded-for")
344
+
345
+ if "chatHistory" not in st.session_state:
346
+ st.session_state.chatHistory = []
347
+
348
+ if "messages" not in st.session_state:
349
+ st.session_state.messages = []
350
+
351
+ if "buttonValue" not in st.session_state:
352
+ __resetButtonState()
353
+
354
+ st.session_state.toolResponseDisplay = {}
355
+
356
+ U.pprint("\n")
357
+ U.pprint("\n")
358
+
359
+ U.applyCommonStyles()
360
+ st.title("Mini Perplexity 💡")
361
+
362
+
363
+ for chat in st.session_state.chatHistory:
364
+ role = chat["role"]
365
+ content = chat["content"]
366
+ imagePath = chat.get("image")
367
+ toolResponseDisplay = chat.get("toolResponseDisplay")
368
+ avatar = C.AI_ICON if role == "assistant" else C.USER_ICON
369
+ with st.chat_message(role, avatar=avatar):
370
+ st.markdown(content)
371
+ if toolResponseDisplay:
372
+ __showToolResponse(toolResponseDisplay)
373
+
374
+ if imagePath:
375
+ st.image(imagePath)
376
+
377
+ # U.pprint(f"{st.session_state.buttonValue=}")
378
+ # U.pprint(f"{st.session_state.selectedStory=}")
379
+ # U.pprint(f"{st.session_state.startMsg=}")
380
+
381
+ if prompt := (
382
+ st.chat_input("Ask anything")
383
+ or st.session_state["buttonValue"]
384
+ ):
385
+ __resetButtonState()
386
+
387
+ with st.chat_message("user", avatar=C.USER_ICON):
388
+ st.markdown(prompt)
389
+ U.pprint(f"{prompt=}")
390
+ st.session_state.chatHistory.append({"role": "user", "content": prompt })
391
+ st.session_state.messages.append({"role": "user", "content": prompt})
392
+
393
+ with st.chat_message("assistant", avatar=C.AI_ICON):
394
+ responseContainer = st.empty()
395
+
396
+ def __printAndGetResponse():
397
+ response = ""
398
+ responseContainer.image(C.TEXT_LOADER)
399
+ responseGenerator = predict()
400
+
401
+ for chunk in responseGenerator:
402
+ response += chunk
403
+ if __isInvalidResponse(response):
404
+ U.pprint(f"InvalidResponse={response}")
405
+ return
406
+
407
+ if C.JSON_SEPARATOR not in response:
408
+ responseContainer.markdown(response)
409
+
410
+ return response
411
+
412
+ response = __printAndGetResponse()
413
+ while not response:
414
+ U.pprint("Empty response. Retrying..")
415
+ time.sleep(0.7)
416
+ response = __printAndGetResponse()
417
+
418
+ U.pprint(f"{response=}")
419
+
420
+ def selectButton(optionLabel):
421
+ st.session_state["buttonValue"] = optionLabel
422
+ U.pprint(f"Selected: {optionLabel}")
423
+
424
+ rawResponse = response
425
+ responseParts = response.split(C.JSON_SEPARATOR)
426
+
427
+ jsonStr = None
428
+ if len(responseParts) > 1:
429
+ [response, jsonStr] = responseParts
430
+
431
+ imagePath = None
432
+ # imageContainer = st.empty()
433
+ # try:
434
+ # (imagePrompt, loaderText) = __getImagePromptDetails(prompt, response)
435
+ # if imagePrompt:
436
+ # imgContainer = imageContainer.container()
437
+ # imgContainer.write(
438
+ # f"""
439
+ # <div class='blinking code'>
440
+ # {loaderText}
441
+ # </div>
442
+ # """,
443
+ # unsafe_allow_html=True
444
+ # )
445
+ # # imgContainer.markdown(f"`{loaderText}`")
446
+ # imgContainer.image(C.IMAGE_LOADER)
447
+ # (imagePath, seed) = __generateImage(imagePrompt)
448
+ # imageContainer.image(imagePath)
449
+ # except Exception as e:
450
+ # U.pprint(e)
451
+ # imageContainer.empty()
452
+
453
+ toolResponseDisplay = st.session_state.toolResponseDisplay
454
+ st.session_state.chatHistory.append({
455
+ "role": "assistant",
456
+ "content": response,
457
+ "image": imagePath,
458
+ "toolResponseDisplay": toolResponseDisplay
459
+ })
460
+ st.session_state.messages.append({
461
+ "role": "assistant",
462
+ "content": rawResponse,
463
+ })
464
+
465
+ if jsonStr:
466
+ try:
467
+ json.loads(jsonStr)
468
+ jsonObj = json.loads(jsonStr)
469
+ options = jsonObj.get("options")
470
+ action = jsonObj.get("action")
471
+
472
+ if options:
473
+ for option in options:
474
+ st.button(
475
+ option["label"],
476
+ key=option["id"],
477
+ on_click=lambda label=option["label"]: selectButton(label)
478
+ )
479
+ elif action:
480
+ pass
481
+ except Exception as e:
482
+ U.pprint(e)
483
+
484
+ if "counter" not in st.session_state:
485
+ st.session_state.counter = 1
486
+
487
+ st.session_state.counter += 1
488
+
489
+ import streamlit.components.v1 as components
490
+ components.html(
491
+ f"<p>{st.session_state.counter}</p>"
492
+ """
493
+ <script>
494
+ console.log("===== script running =====")
495
+ const input = window.parent.document.querySelector('.stChatInput');
496
+ console.log({input});
497
+ </script>
498
+ """,
499
+ height=0
500
+ )
constants.py ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ JSON_SEPARATOR = ">>>>"
2
+ EXCEPTION_KEYWORD = "<<EXCEPTION>>"
3
+
4
+ SYSTEM_MSG = f"""
5
+ => Context:
6
+
7
+
8
+ -----
9
+ => Key Points:
10
+
11
+ -----
12
+ => Format & Syntax:
13
+ Whenever any of the below rules are satisfied, then append this exact keyword "{JSON_SEPARATOR}" to your FINAL response, and only AFTER this, append a JSON as described in the matching rule below.
14
+ Apply at most one rule at a time, the most relevant one.
15
+ Do not write anything after the JSON
16
+
17
+ - Rule 1: If your response has multiple numbered options to choose from, append JSON in this format (alway check for this rule):
18
+ ```
19
+ {{
20
+ "options": [{{ "id": "1", "label": "Option 1"}}, {{ "id": "2", "label": "Option 2"}}]
21
+ }}
22
+ ```
23
+ Do not write "Choose one of the options below:"
24
+ Keep options to less than 5.
25
+
26
+
27
+ ------
28
+ => Task Definition:
29
+
30
+
31
+ """
32
+
33
+ SYSTEM_MSG = """
34
+ => Instructions:
35
+ You're a helpful assistant who tries to answer as accurately as possible. Always add supporting details wherever possible AFTER the primary answer.
36
+ If a query is in present tense, double check if it's correct and up-to-date.
37
+ --------
38
+
39
+ => Rules:
40
+ ## Rule 1:
41
+ - If you don't know an answer or are not sure if it's correct and latest, then you search google and collect search results.
42
+ - You then read through all the google search results, and generate the answer.
43
+ - Return final answer in this format (each point should be in a new line):
44
+ {Generated Answer}
45
+ "\n-------"
46
+ "References:"
47
+ (all below citations as different bullet points, max 5 citations)
48
+ - Citation 1 with URL
49
+ - Citation 2 with URL
50
+ - ...
51
+
52
+ ## Rule 2:
53
+ - If you know the answer and are sure that it's correct and up-to-date, return the answer with details supporting the answer.
54
+ --------
55
+
56
+ => Response Format:
57
+ - Don't tell how you arrived at the answer.
58
+ """
59
+
60
+ # """
61
+ # You can also use tools if needed.
62
+ # Always use the provided tools if you need to answer a question.
63
+ # If you think you don't know the answer, say "I don't know" or "I'm not sure".
64
+ # """
65
+
66
+ USER_ICON = "icons/man.png"
67
+ AI_ICON = "icons/survey.png"
68
+ TOOL_ICON = "icons/check.png"
69
+ IMAGE_LOADER = "icons/Wedges.svg"
70
+ TEXT_LOADER = "icons/balls.svg"
71
+ DB_LOADER = "icons/db_loader.svg"
icons/Wedges.svg ADDED
icons/answer.png ADDED
icons/balls.svg ADDED
icons/bars_loader.svg ADDED
icons/brush.gif ADDED
icons/check.png ADDED
icons/completed-task.png ADDED
icons/conversation.png ADDED
icons/correct.png ADDED
icons/db_loader.svg ADDED
icons/error.png ADDED
icons/google.png ADDED
icons/google_logo.png ADDED
icons/google_search.png ADDED
icons/magic-wand-1.png ADDED
icons/man.png ADDED
icons/ripple.svg ADDED
icons/settings.png ADDED
icons/solutions.png ADDED
icons/survey.png ADDED
requirements.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ python-dotenv
2
+ groq
3
+ openai
4
+ transformers
5
+ gradio_client
6
+ anthropic
7
+ supabase
soup_dump.html ADDED
@@ -0,0 +1,955 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en-IN">
3
+ <head>
4
+ <meta charset="utf-8"/>
5
+ <meta content="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image"/>
6
+ <title>
7
+ recent atomic bomb activity - Google Search
8
+ </title>
9
+ <script nonce="BaBBq4_VTqQ-VTCp2nwVhw">
10
+ (function(){
11
+ document.documentElement.addEventListener("submit",function(b){var a;if(a=b.target){var c=a.getAttribute("data-submitfalse");a=c==="1"||c==="q"&&!a.elements.q.value?!0:!1}else a=!1;a&&(b.preventDefault(),b.stopPropagation())},!0);document.documentElement.addEventListener("click",function(b){var a;a:{for(a=b.target;a&&a!==document.documentElement;a=a.parentElement)if(a.tagName==="A"){a=a.getAttribute("data-nohref")==="1";break a}a=!1}a&&b.preventDefault()},!0);}).call(this);(function(){window.google=window.google||{};var a=window.performance&&window.performance.timing&&"navigationStart"in window.performance.timing,b=google.stvsc&&google.stvsc.ns,c=a?b||window.performance.timing.navigationStart:void 0,d=google.stvsc&&google.stvsc.rs,f=a?d||window.performance.timing.responseStart:void 0;window.start=Date.now();var h=window,k=window.performance;k&&(c&&f&&f>c&&f<=window.start?(window.start=f,h.wsrt=f-c):k.now&&(h.wsrt=Math.floor(window.performance.now()-(google.stvsc&&google.stvsc.pno||0))));var l=function(g){g&&g.target.setAttribute("data-iml",String(Date.now()))};document.documentElement.addEventListener("load",l,!0);google.rglh=function(){document.documentElement.removeEventListener("load",l,!0)};}).call(this);(function(){window.google.erd={jsr:1,bv:2082,de:true};})();(function(){var sdo=false;var mei=10;
12
+ var g=this||self;var k,l=(k=g.mei)!=null?k:1,n,p=(n=g.sdo)!=null?n:!0,q=0,r,t=google.erd,v=t.jsr;google.ml=function(a,b,d,m,e){e=e===void 0?2:e;b&&(r=a&&a.message);d===void 0&&(d={});d.cad="ple_"+google.ple+".aple_"+google.aple;if(google.dl)return google.dl(a,e,d,!0),null;b=d;if(v<0){window.console&&console.error(a,b);if(v===-2)throw a;b=!1}else b=!a||!a.message||a.message==="Error loading script"||q>=l&&!m?!1:!0;if(!b)return null;q++;d=d||{};b=encodeURIComponent;var c="/gen_204?atyp=i&ei="+b(google.kEI);google.kEXPI&&(c+="&jexpid="+b(google.kEXPI));c+="&srcpg="+b(google.sn)+"&jsr="+b(t.jsr)+
13
+ "&bver="+b(t.bv);t.dpf&&(c+="&dpf="+b(t.dpf));var f=a.lineNumber;f!==void 0&&(c+="&line="+f);var h=a.fileName;h&&(h.indexOf("-extension:/")>0&&(e=3),c+="&script="+b(h),f&&h===window.location.href&&(f=document.documentElement.outerHTML.split("\n")[f],c+="&cad="+b(f?f.substring(0,300):"No script found.")));google.ple&&google.ple===1&&(e=2);c+="&jsel="+e;for(var u in d)c+="&",c+=b(u),c+="=",c+=b(d[u]);c=c+"&emsg="+b(a.name+": "+a.message);c=c+"&jsst="+b(a.stack||"N/A");c.length>=12288&&(c=c.substr(0,12288));a=c;m||google.log(0,"",a);return a};window.onerror=function(a,b,d,m,e){r!==a&&(a=e instanceof Error?e:Error(a),d===void 0||"lineNumber"in a||(a.lineNumber=d),b===void 0||"fileName"in a||(a.fileName=b),google.ml(a,!1,void 0,!1,a.name==="SyntaxError"||a.message.substring(0,11)==="SyntaxError"||a.message.indexOf("Script error")!==-1?3:0));r=null;p&&q>=l&&(window.onerror=null)};})();(function(){var c=[],e=0;window.ping=function(b){b.indexOf("&zx")==-1&&(b+="&zx="+Date.now());var a=new Image,d=e++;c[d]=a;a.onerror=a.onload=a.onabort=function(){delete c[d]};a.src=b};}).call(this);
14
+ </script>
15
+ <style>
16
+ a{color:#1a0dab;text-decoration:none;tap-highlight-color:rgba(0,0,0,.10)}a:visited{color:#4b11a8}a:hover{text-decoration:underline}img{border:0}html{font-family:arial,sans-serif;font-size:14px;line-height:20px;text-size-adjust:100%;color:#3c4043;word-wrap:break-word;background-color:#fff}.bz1lBb{background-color:#fff;height:93px;}.KP7LCb{background-color:#fff;padding-left:4px}.BsXmcf{position:absolute;height:1px;left:0;right:0;background-color:#dadce0}.cOl4Id{background-color:#fff}.bRsWnc{overflow:hidden}.N6RWV{height:51px}.Uv67qb{font-size:14px;line-height:20px;font-weight:bold;display:flex}.Uv67qb a,.Uv67qb span{color:#5e5e5e;height:20px;margin:4px 12px 1px;display:block;flex:none;text-align:center;}.OXXup{border-bottom:2px solid #1f1f1f}.Uv67qb .OXXup{font-weight:bold;color:#1f1f1f}a.eZt8xd:visited{color:#5e5e5e}.FElbsf{border-left:1px solid #dadce0}header article{overflow:visible}.Pg70bf{height:39px;display:box;display:flex;display:flex;width:100%}.H0PQec{position:relative;flex:1}.Pg70bf{height:26px}.hlm7Y{height:46px;margin-top:26px;border-radius:25px;width:auto;background:#fff;box-shadow:0px 2px 6px rgba(60,64,67,0.16)}.sbc{display:flex}.Pg70bf input{}.x{width:26px;color:#70757a;line-height:40px;margin-top:3px;font:27px/38px arial, sans-serif}#qdClwb{flex:0 0 auto;padding:0;height:33px;margin-top:5px;border-top-right-radius:25px;border-bottom-right-radius:25px;width:48px;background:#fff;border:0;border-left:1px solid #dadce0;background-repeat:no-repeat;background-image:url(data:image/gif;base64,R0lGODlhJAAjAOYAAP////7+//v8//b5//z9//H2//T4/9Xl/uTu/+ry/+zz/+/1/1GX+1aa+1mc+1+f+2ml+3eu/H6y/IK0/IO1/Iq5/JG9/ZG9/JfB/Z3E/Z7F/Z/F/ajL/anL/azN/bjU/rrV/b3X/sHa/sPb/sTc/sbd/svg/tDj/tfn/tzq/t/s/+bw/+ny/+vz//X5//r8/w9x+RV1+Rd2+Rh3+Rl3+Rp3+Rp4+Rt4+Rt5+Rx5+R16+R56+R96+R97+SB7+SF8+SJ8+SJ9+SN9+SR9+SV++SeA+Sh/+SmA+SqB+SuB+iuB+SyC+S2C+jKF+jKG+jSH+jWH+jWI+jqK+jyL+j+N+kSQ+kWR+kaR+keS+kmT+k6W+lOZ+1Sa+1ab+1eb+1ec+1ic+1md+1qd+1ue+1ye+12f+16f+2el+2mm+2un+26p/HSt+3au/IS2/IW3/Ia3/Iq6/JK+/JbB/JfB/JjC/JrD/KLI/anM/arN/b/Z/cHa/d/s/uLu/ufx//3+/////yH5BAUAAH8ALAAAAAAkACMAAAf4gACCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmAAJeXEUGyUEmYIBGlRENTE7S2UmohM8PVVoaw1OMlMjlwIWQUdvCoIDJV47UCiWKU02c4YFWDRnoZQXNmAuhyJHUXyVZDYViC5ZQCCVWjN4iH5hMXaVEDNyiAtXQyGVdDMPL4cmTE0qKp1Q4gODoRdfZES45MbGEwwGBh0wIwTKiksGIvjowYANHDVTcBSxUofFpQBtpOSgEePGDy4kwsAY0wLTngwS0mTQc82DER1igIkq1AGJDgc1hxLqkCSHgwRKCd1JoqNLn6iDOAjZchWroA8IvIodS7as2bOWAgEAOw==)}.sc{font-size:16px;position:absolute;top:48px;left:0;right:0;box-shadow:0 2px 5px rgba(0,0,0,.2);z-index:2;background-color:#fff}.sc>div{padding:10px 20px}.scs{background-color:#fafafa;}.noHIxc{display:block;font-size:16px;padding:0 0 0 8px;flex:1;height:35px;outline:none;border:none;width:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);overflow:hidden;padding:4px 0 0 20px}.sbc input[type=text]{background:none}html{background-color:#fff;}body{padding:0;}body{margin:0 auto 0 156px;max-width:652px;min-width:652px;padding:0 8px}.cOl4Id{letter-spacing:-1px;text-align:center;font:22pt Futura, arial,sans-serif;font-smoothing:antialiased;padding:32px 28px 0 24px;position:absolute;left:0;top:0;height:37px}.cOl4Id span{display:inline-block}.V6gwVd{color:#4285f4}.iWkuvd{color:#ea4335}.cDrQ7{color:#fcc934}.ntlR9{color:#34a853}.tJ3Myc{-webkit-transform:rotate(-20deg);position:relative;left:-1px;display:inline-block}footer{text-align:center;margin-top:18px}footer a,footer a:visited,.smiUbb{color:#70757a}.xeDNfc{margin:0 13px;display:inline-block}#EOlPnc{margin-top:36px}#EOlPnc>div{margin:20px}.Srfpq{color:#70757a}
17
+ </style>
18
+ </head>
19
+ <body jsmodel="hspDDf ">
20
+ <header id="hdr">
21
+ <script nonce="BaBBq4_VTqQ-VTCp2nwVhw">
22
+ (function(){
23
+ var k=this||self,l=function(a){var b=typeof a;return b=="object"&&a!=null||b=="function"},m=function(a,b){function c(){}c.prototype=b.prototype;a.l=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.s=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,g)}};var n=Array.prototype.indexOf?function(a,b){return Array.prototype.indexOf.call(a,b,void 0)}:function(a,b){if(typeof a==="string")return typeof b!=="string"||b.length!=1?-1:a.indexOf(b,0);for(var c=0;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};var p=function(a){return typeof a.className=="string"?a.className:a.getAttribute&&a.getAttribute("class")||""},q=function(a,b){typeof a.className=="string"?a.className=b:a.setAttribute&&a.setAttribute("class",b)},r=function(a,b){a.classList?b=a.classList.contains(b):(a=a.classList?a.classList:p(a).match(/\S+/g)||[],b=n(a,b)>=0);return b},v=function(){var a=t,b=u;a.classList?a.classList.remove(b):r(a,b)&&q(a,Array.prototype.filter.call(a.classList?a.classList:p(a).match(/\S+/g)||[],function(c){return c!=
24
+ b}).join(" "))};var w=function(a,b){this.type=a;this.target=b};w.prototype.g=function(){};var x=function(){if(!k.addEventListener||!Object.defineProperty)return!1;var a=!1,b=Object.defineProperty({},"passive",{get:function(){a=!0}});try{var c=function(){};k.addEventListener("test",c,b);k.removeEventListener("test",c,b)}catch(d){}return a}();var y=function(a){w.call(this,a?a.type:"");this.relatedTarget=this.target=null;this.button=this.screenY=this.screenX=this.clientY=this.clientX=0;this.key="";this.keyCode=0;this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1;this.state=null;this.pointerId=0;this.pointerType="";this.i=null;if(a){var b=this.type=a.type,c=a.changedTouches&&a.changedTouches.length?a.changedTouches[0]:null;this.target=a.target||a.srcElement;var d=a.relatedTarget;d||(b=="mouseover"?d=a.fromElement:b=="mouseout"&&(d=a.toElement));this.relatedTarget=d;c?(this.clientX=c.clientX!==void 0?c.clientX:c.pageX,this.clientY=c.clientY!==void 0?c.clientY:c.pageY,this.screenX=c.screenX||0,this.screenY=c.screenY||0):(this.clientX=a.clientX!==void 0?a.clientX:a.pageX,this.clientY=a.clientY!==void 0?a.clientY:a.pageY,this.screenX=a.screenX||0,this.screenY=a.screenY||0);this.button=a.button;this.keyCode=a.keyCode||0;this.key=a.key||"";this.ctrlKey=a.ctrlKey;this.altKey=a.altKey;this.shiftKey=a.shiftKey;this.metaKey=a.metaKey;this.pointerId=
25
+ a.pointerId||0;this.pointerType=a.pointerType;this.state=a.state;this.i=a;a.defaultPrevented&&y.l.g.call(this)}};m(y,w);y.prototype.g=function(){y.l.g.call(this);var a=this.i;a.preventDefault?a.preventDefault():a.returnValue=!1};var z="closure_listenable_"+(Math.random()*1E6|0);var A=0;var B=function(a,b,c,d,e){this.listener=a;this.proxy=null;this.src=b;this.type=c;this.capture=!!d;this.i=e;this.key=++A;this.g=this.j=!1},C=function(a){a.g=!0;a.listener=null;a.proxy=null;a.src=null;a.i=null};var D=function(a){this.src=a;this.g={};this.i=0};D.prototype.add=function(a,b,c,d,e){var f=a.toString();a=this.g[f];a||(a=this.g[f]=[],this.i++);var g;a:{for(g=0;g<a.length;++g){var h=a[g];if(!h.g&&h.listener==b&&h.capture==!!d&&h.i==e)break a}g=-1}g>-1?(b=a[g],c||(b.j=!1)):(b=new B(b,this.src,f,!!d,e),b.j=c,a.push(b));return b};var E="closure_lm_"+(Math.random()*1E6|0),F={},G=0,I=function(a,b,c,d,e){if(d&&d.once)return H(a,b,c,d,e);if(Array.isArray(b)){for(var f=0;f<b.length;f++)I(a,b[f],c,d,e);return null}c=J(c);return a&&a[z]?a.g(b,c,l(d)?!!d.capture:!!d,e):K(a,b,c,!1,d,e)},K=function(a,b,c,d,e,f){if(!b)throw Error("a");var g=l(e)?!!e.capture:!!e,h=L(a);h||(a[E]=h=new D(a));c=h.add(b,c,d,g,f);if(c.proxy)return c;d=M();c.proxy=d;d.src=a;d.listener=c;if(a.addEventListener)x||(e=g),e===void 0&&(e=!1),a.addEventListener(b.toString(),d,e);else if(a.attachEvent)a.attachEvent(N(b.toString()),d);else if(a.addListener&&a.removeListener)a.addListener(d);else throw Error("b");G++;return c},M=function(){var a=O,b=function(c){return a.call(b.src,b.listener,c)};return b},H=function(a,b,c,d,e){if(Array.isArray(b)){for(var f=0;f<b.length;f++)H(a,b[f],c,d,e);return null}c=J(c);return a&&a[z]?a.i(b,c,l(d)?!!d.capture:!!d,e):K(a,b,c,!0,d,e)},P=function(a){if(typeof a!=="number"&&a&&!a.g){var b=a.src;if(b&&b[z])b.v(a);else{var c=a.type,d=a.proxy;b.removeEventListener?b.removeEventListener(c,d,a.capture):b.detachEvent?b.detachEvent(N(c),d):b.addListener&&b.removeListener&&b.removeListener(d);G--;if(c=L(b)){d=a.type;if(d in c.g){var e=c.g[d],f=n(e,a),g;(g=f>=0)&&Array.prototype.splice.call(e,f,1);g&&(C(a),c.g[d].length==0&&(delete c.g[d],c.i--))}c.i==0&&(c.src=null,b[E]=null)}else C(a)}}},N=function(a){return a in F?F[a]:F[a]="on"+a},O=function(a,b){if(a.g)a=!0;else{b=new y(b,this);var c=a.listener,d=a.i||a.src;a.j&&P(a);a=c.call(d,b)}return a},L=function(a){a=a[E];return a instanceof D?a:null},Q="__closure_events_fn_"+(Math.random()*1E9>>>0),J=function(a){if(typeof a==="function")return a;a[Q]||(a[Q]=function(b){return a.handleEvent(b)});return a[Q]};var R=[9],u,t=document.documentElement,S;function T(){P(S);S=H(t,"mousedown",function(){v();U()},{capture:!0})}function U(){P(S);S=I(t,"keydown",function(a){if(R.indexOf(a.keyCode)!==-1){a=t;var b=u;if(a.classList)a.classList.add(b);else if(!r(a,b)){var c=p(a);q(a,c+(c.length>0?" "+b:b))}T()}})};u="zAoYTe";U();}).call(this);
26
+ </script>
27
+ <div class="cOl4Id">
28
+ <a href="/?sa=X&amp;ved=0ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQOwgC">
29
+ <span class="V6gwVd">
30
+ G
31
+ </span>
32
+ <span class="iWkuvd">
33
+ o
34
+ </span>
35
+ <span class="cDrQ7">
36
+ o
37
+ </span>
38
+ <span class="V6gwVd">
39
+ g
40
+ </span>
41
+ <span class="ntlR9">
42
+ l
43
+ </span>
44
+ <span class="iWkuvd tJ3Myc">
45
+ e
46
+ </span>
47
+ </a>
48
+ </div>
49
+ <div class="bz1lBb">
50
+ <form class="Pg70bf hlm7Y" id="sf">
51
+ <input name="sca_esv" type="hidden" value="57cb6114f464605f"/>
52
+ <input name="sca_upv" type="hidden" value="1"/>
53
+ <input name="ie" type="hidden" value="ISO-8859-1"/>
54
+ <div class="H0PQec">
55
+ <div class="sbc esbc">
56
+ <input autocapitalize="none" autocomplete="off" class="noHIxc" name="q" spellcheck="false" type="text" value="recent atomic bomb activity"/>
57
+ <input name="oq" type="hidden"/>
58
+ <input name="aqs" type="hidden"/>
59
+ <div class="x">
60
+ ×
61
+ </div>
62
+ <div class="sc">
63
+ </div>
64
+ </div>
65
+ </div>
66
+ <button id="qdClwb" type="submit">
67
+ </button>
68
+ </form>
69
+ </div>
70
+ <noscript>
71
+ <meta content="0;url=/search?q=recent+atomic+bomb+activity&amp;sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;gbv=1&amp;sei=jmTxZrq_Hpac0-kPyvDOwQk" http-equiv="refresh"/>
72
+ <style>
73
+ table,div,span,p{display:none}
74
+ </style>
75
+ <div style="display:block">
76
+ Please click
77
+ <a href="/search?q=recent+atomic+bomb+activity&amp;sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;gbv=1&amp;sei=jmTxZrq_Hpac0-kPyvDOwQk">
78
+ here
79
+ </a>
80
+ if you are not redirected within a few seconds.
81
+ </div>
82
+ </noscript>
83
+ </header>
84
+ <div id="main">
85
+ <div>
86
+ <div class="KP7LCb">
87
+ <div class="bRsWnc">
88
+ <div class="N6RWV">
89
+ <div class="Pg70bf Uv67qb">
90
+ <span class="OXXup">
91
+ All
92
+ </span>
93
+ <a class="eZt8xd" href="/search?q=recent+atomic+bomb+activity&amp;sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;tbm=isch&amp;source=lnms&amp;sa=X&amp;ved=0ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ_AUIBigB">
94
+ Images
95
+ </a>
96
+ <a class="eZt8xd" href="/search?q=recent+atomic+bomb+activity&amp;sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;tbm=nws&amp;source=lnms&amp;sa=X&amp;ved=0ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ_AUIBygC">
97
+ News
98
+ </a>
99
+ <a class="eZt8xd" href="/search?q=recent+atomic+bomb+activity&amp;sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;tbm=vid&amp;source=lnms&amp;sa=X&amp;ved=0ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ_AUICCgD">
100
+ Videos
101
+ </a>
102
+ <a href="/url?q=https://maps.google.com/maps%3Fq%3Drecent%2Batomic%2Bbomb%2Bactivity%26um%3D1%26ie%3DUTF-8%26ved%3D1t:200713%26ictx%3D111&amp;opi=89978449&amp;sa=U&amp;ved=0ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQiaAMCAkoBA&amp;usg=AOvVaw3vNnNhYrELPCQronq-LHZO">
103
+ Maps
104
+ </a>
105
+ <a href="/url?q=/search%3Fq%3Drecent%2Batomic%2Bbomb%2Bactivity%26sca_esv%3D57cb6114f464605f%26sca_upv%3D1%26ie%3DUTF-8%26tbm%3Dshop%26source%3Dlnms%26ved%3D1t:200713%26ictx%3D111&amp;opi=89978449&amp;sa=U&amp;ved=0ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQiaAMCAooBQ&amp;usg=AOvVaw2CFzLI_0Wa2-0WAKIi3maB">
106
+ Shopping
107
+ </a>
108
+ <a href="/search?q=recent+atomic+bomb+activity&amp;sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;tbm=bks&amp;source=lnms&amp;sa=X&amp;ved=0ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ_AUICygG">
109
+ Books
110
+ </a>
111
+ <div class="FElbsf">
112
+ <a href="/advanced_search" id="st-toggle" role="button" style="white-space:nowrap">
113
+ Search tools
114
+ </a>
115
+ </div>
116
+ </div>
117
+ </div>
118
+ </div>
119
+ </div>
120
+ <div class="Pg70bf wEsjbd Gx5Zad xpd EtOod pkphOe" id="st-card" style="display:none">
121
+ <style>
122
+ .wEsjbd{height:44px;white-space:nowrap}.coPU8c{height:60px;overflow-scrolling:touch;overflow-x:auto;overflow-y:hidden}.Xj2aue{height:44px;overflow:hidden}.RnNGze{margin:11px 16px}.wEsjbd div,.wEsjbd a,.wEsjbd li{outline-width:0;outline:none}
123
+ </style>
124
+ <div class="Xj2aue">
125
+ <div class="coPU8c">
126
+ <div class="RnNGze">
127
+ <style>
128
+ .PA9J5{display:inline-block}.RXaOfd,.tbcPJb{display:inline-block;height:22px;position:relative;padding-top:0;padding-bottom:0;padding-right:16px;padding-left:0;line-height:22px;cursor:pointer;text-transform:uppercase;font-size:12px;color:#70757a}.sa1toc{background:#fff;display:none;position:absolute;border:1px solid #dadce0;box-shadow:0 2px 4px rgba(0,0,0,.3);margin:0;white-space:nowrap;z-index:103;line-height:17px;padding-top:5px;padding-bottom:5px;padding-left:0}.PA9J5:hover .sa1toc{display:block}.mGSy8d a:active,.RXaOfd:active{color:#4285f4}
129
+ </style>
130
+ <div class="PA9J5">
131
+ <div class="RXaOfd" role="button" tabindex="0">
132
+ <style>
133
+ .TWMOUc{display:inline-block;padding-right:14px;white-space:nowrap}.vQYuGf{font-weight:bold}.OmTIzf{border-color:#909090 transparent;border-style:solid;border-width:4px 4px 0 4px;width:0;height:0;margin-left:-10px;top:50%;margin-top:-2px;position:absolute}.RXaOfd:active .OmTIzf{border-color:#4285f4 transparent}
134
+ </style>
135
+ <div class="TWMOUc">
136
+ Any time
137
+ </div>
138
+ <span class="OmTIzf">
139
+ </span>
140
+ </div>
141
+ <ul class="sa1toc ozatM">
142
+ <style>
143
+ .ozatM{font-size:12px;text-transform:uppercase}.ozatM .yNFsl,.ozatM li{list-style-type:none;list-style-position:outside;list-style-image:none}.yNFsl.SkUj4c,.yNFsl a{color:#70757a;text-decoration:none;padding:6px 44px 6px 14px;line-height:17px;display:block}.SkUj4c{background-image:url(//ssl.gstatic.com/ui/v1/menu/checkmark2.png);background-position:right center;background-repeat:no-repeat}.SkUj4c:active{background-color:#f8f9fa}
144
+ </style>
145
+ <li class="yNFsl SkUj4c">
146
+ <style>
147
+ .tbcPJb a{color:#70757a;text-decoration:none}
148
+ </style>
149
+ Any time
150
+ </li>
151
+ <li class="yNFsl">
152
+ <a href="/search?q=recent+atomic+bomb+activity&amp;sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;source=lnt&amp;tbs=qdr:h&amp;sa=X&amp;ved=0ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQpwUIDQ">
153
+ Past hour
154
+ </a>
155
+ </li>
156
+ <li class="yNFsl">
157
+ <a href="/search?q=recent+atomic+bomb+activity&amp;sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;source=lnt&amp;tbs=qdr:d&amp;sa=X&amp;ved=0ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQpwUIDg">
158
+ Past 24 hours
159
+ </a>
160
+ </li>
161
+ <li class="yNFsl">
162
+ <a href="/search?q=recent+atomic+bomb+activity&amp;sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;source=lnt&amp;tbs=qdr:w&amp;sa=X&amp;ved=0ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQpwUIDw">
163
+ Past week
164
+ </a>
165
+ </li>
166
+ <li class="yNFsl">
167
+ <a href="/search?q=recent+atomic+bomb+activity&amp;sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;source=lnt&amp;tbs=qdr:m&amp;sa=X&amp;ved=0ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQpwUIEA">
168
+ Past month
169
+ </a>
170
+ </li>
171
+ <li class="yNFsl">
172
+ <a href="/search?q=recent+atomic+bomb+activity&amp;sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;source=lnt&amp;tbs=qdr:y&amp;sa=X&amp;ved=0ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQpwUIEQ">
173
+ Past year
174
+ </a>
175
+ </li>
176
+ </ul>
177
+ </div>
178
+ <div class="PA9J5">
179
+ <div class="RXaOfd" role="button" tabindex="0">
180
+ <div class="TWMOUc">
181
+ All results
182
+ </div>
183
+ <span class="OmTIzf">
184
+ </span>
185
+ </div>
186
+ <ul class="sa1toc ozatM">
187
+ <li class="yNFsl SkUj4c">
188
+ All results
189
+ </li>
190
+ <li class="yNFsl">
191
+ <a href="/search?q=recent+atomic+bomb+activity&amp;sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;source=lnt&amp;tbs=li:1&amp;sa=X&amp;ved=0ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQpwUIEw">
192
+ Verbatim
193
+ </a>
194
+ </li>
195
+ </ul>
196
+ </div>
197
+ </div>
198
+ </div>
199
+ </div>
200
+ <script nonce="BaBBq4_VTqQ-VTCp2nwVhw">
201
+ (function(){var a=document.getElementById("st-toggle"),b=document.getElementById("st-card");a&&b&&a.addEventListener("click",function(c){b.style.display=b.style.display?"":"none";c.preventDefault()},!1);}).call(this);
202
+ </script>
203
+ </div>
204
+ </div>
205
+ <div class="BsXmcf">
206
+ </div>
207
+ <style>
208
+ .Gx5Zad{margin-bottom:30px;margin:0px 0px 8px;}.pkphOe{font-size:14px;line-height:22px;}.EtOod>*:first-child{border-top-left-radius:8px;border-top-right-radius:8px}.EtOod>*:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}.EtOod.avPKgf>*:last-child{border-bottom-left-radius:4px}.rl7ilb{display:block;clear:both}.egMi0{margin-bottom:-23px}.kCrYT{padding:16px 14px 12px}a.fdYsqf{color:#4b11a8}.sCuL3{position:absolute;width:100%;top:0;left:0;padding-top:1px;margin-bottom:-1px}.j039Wc{padding-top:28px;margin-bottom:-1px}.DnJfK{position:relative}.l97dzf{font-weight:400}.zBAuLc{line-height:normal;margin:0;padding:0}.BNeawe{white-space:pre-line;word-wrap:break-word}.vvjwJb{color:#1a0dab;font-size:20px;line-height:26px}a:visited .vvjwJb,.vvjwJb a:visited{color:#4b11a8}.vvjwJb.HrGdeb{color:#fff}a:visited .vvjwJb.HrGdeb,.vvjwJb.HrGdeb a:visited{color:rgba(255,255,255,.70)}.UPmit{font-size:14px;line-height:22px}.UPmit.HrGdeb{color:rgba(255,255,255,.70)}.UPmit.AP7Wnd{color:#202124}.lRVwie{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.Ap5OSd{padding-bottom:12px}.s3v9rd{font-size:14px;line-height:22px}.s3v9rd.HrGdeb{color:#fff}.s3v9rd.AP7Wnd{color:#202124}.mSx1Ee{padding-left:48px;margin:0}.v9i61e{padding-bottom:8px}.K8tyEc{padding-bottom:12px}.mEUgP{font-size:20px;font-weight:bold;line-height:26px;color:#1f1f1f;height:14px;padding:16px 14px 0px 14px;margin:0}.FCUp0c{font-weight:bold}.nRlVm .FCUp0c{background-color:#d3e3fd;color:#040c28}.C7GS5b{margin-left:12px;display:table-cell;vertical-align:middle}.rkGIWe{padding:14px}.rxk4ae{padding-top:6px;padding-bottom:6px}.xpc .hwc,.xpx .hwx{display:none}.iIWm4b{box-sizing:border-box;min-height:48px}.fLtXsc{padding:14px;position:relative}.NtmAdb{width:40px;height:40px;overflow:hidden;margin-top:-10px;margin-bottom:-16px;margin-right:8px;border-radius:4px}.xpc .NtmAdb{display:inline-block}.xpx .NtmAdb{display:none}.Lt3Tzc{display:inline-block;padding-right:26px;color:#474747;font-size:16px}.Lym8W{width:14px;height:20px;position:relative;margin:0 auto}.xCgLUe{position:absolute;margin-top:-10px;top:50%;margin-right:-4px}.Lym8W div{position:absolute;border-left:7px solid transparent;border-right:7px solid transparent;width:0;height:0;left:0}.IyYaEd{top:7px;border-top:7px solid #70757a}.ECUHQe{top:4px;border-top:7px solid #fff}.AeQQub{bottom:7px;border-bottom:7px solid #70757a}.YCU7eb{bottom:4px;border-bottom:7px solid #fff}.v7Y0Ge{background-color:#f7f8f9;padding:10px;width:14px;height:15px;right:14px;margin-top:-18px;top:50%;position:absolute;border-radius:50%}.WZP0ub{display:inline-block;margin-left:5px;margin-top:-6px}.qxDOhb{border-radius:0}.EtOod>.qxDOhb>*:first-child{border-top-left-radius:8px;border-top-right-radius:8px}.EtOod>.qxDOhb>*:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}.yStFkb .xpd{box-shadow:none;border-radius:16px;background-color:#f7f8f9;}.oTWEpb{padding-top:16px}.n1Qedd{overflow:hidden;text-align:center}.KMAGC{margin:0 auto;display:block}.ho0sdc{margin:0 -50%;display:inline-block}.PqksIc{font-size:16px;line-height:20px}.x54gtf{height:1px;background-color:#dadce0;margin:0 14px}.Q0HXG{height:1px;background-color:#dadce0;}.Xb5VRe{color:#1a0dab}a:visited .Xb5VRe{color:#4b11a8}.Xb5VRe.tr0dw{color:#fff}a:visited .Xb5VRe.tr0dw{color:rgba(255,255,255,.70)}.P1NWSe{display:table;width:100%;padding-top:16px;padding-bottom:16px;margin-bottom:-12px}.wOMIed{display:table-cell;vertical-align:top}.nkPlDb{vertical-align:middle}.JhFlyf{color:#3c4043;font-size:14px;text-align:center}.VQFmSd{display:block;white-space:pre-line;word-wrap:break-word}.JhFlyf.VQFmSd{line-height:22px}.f4J0H{padding:18px}.r0bn4c.tr0dw{color:rgba(255,255,255,.70)}.r0bn4c.rQMQod{color:#70757a}.gGQDvd{position:relative;padding:20px 14px 14px 14px;height:60px;}.Q71vJc{display:block;position:relative;width:100%}.kjGX2{position:absolute;vertical-align:bottom;display:inline-block;right:48px;left:0;color:#4d5156;}.Xe4YD{font-size:16px}.ieB2Dd{overflow:hidden;margin-top:-10px;margin-bottom:-16px;margin-right:8px;border-radius:4px;display:inline-block;border-radius:50%;padding:8px 7px 8px 9px;background-color:#f7f8f9;}.toMBf{position:absolute;right:0;margin-right:-8px;margin-top:-2px}.OEaqif{width:20px;height:20px;display:block}.RJI4s{vertical-align:middle}.sRN2ub,.OcpZAb{padding-top:16px;padding-bottom:12px}.MlK5cf{padding-left:14px;}.J094Fd,.OcpZAb,.ZXY5Ec,.RQNVx{padding-left:14px;padding-right:14px;}.ZXY5Ec{padding-bottom:12px}.RQNVx{padding-top:12px}.nMymef{display:flex}.G5eFlf{flex:1;display:block}.nMymef span{text-align:center}.EYqSq{margin:6px 4px 9px 0;border-radius:100%;display:inline-block;height:10px;vertical-align:middle;width:10px}.dfB0uf{color:#3c4043;font-weight:bold}.IffyKc{word-wrap:break-word}
209
+ </style>
210
+ <div>
211
+ </div>
212
+ <div>
213
+ <div class="Gx5Zad xpd EtOod pkphOe">
214
+ <div class="egMi0 kCrYT">
215
+ <a data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAsQAg" href="/url?q=https://www.trumanlibrary.gov/education/lesson-plans/re-thinking-dropping-atomic-bombs-lesson-2&amp;sa=U&amp;ved=2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAsQAg&amp;usg=AOvVaw2s6-UU-TgXb0CRpW9MZrwb">
216
+ <div class="DnJfK">
217
+ <div class="j039Wc">
218
+ <h3 class="zBAuLc l97dzf">
219
+ <div class="BNeawe vvjwJb AP7Wnd">
220
+ Re-Thinking the Dropping of the Atomic Bombs: Lesson 2
221
+ </div>
222
+ </h3>
223
+ </div>
224
+ <div class="sCuL3">
225
+ <div class="BNeawe UPmit AP7Wnd lRVwie">
226
+ www.trumanlibrary.gov › education › lesson-plans › re-thinking-dropping...
227
+ </div>
228
+ </div>
229
+ </div>
230
+ </a>
231
+ </div>
232
+ <div class="kCrYT">
233
+ <div>
234
+ <div class="BNeawe s3v9rd AP7Wnd">
235
+ <div>
236
+ <div>
237
+ <div class="BNeawe s3v9rd AP7Wnd">
238
+ In this lesson students will continue with their examination of the dropping of the atomic bombs, this time focusing on varying historical perspectives.
239
+ </div>
240
+ </div>
241
+ </div>
242
+ </div>
243
+ </div>
244
+ </div>
245
+ </div>
246
+ </div>
247
+ <div data-hveid="CAAQAA">
248
+ <div class="Gx5Zad xpd EtOod pkphOe">
249
+ <div class="K8tyEc">
250
+ <div class="mEUgP">
251
+ <span>
252
+ <div class="BNeawe">
253
+ <span class="FCUp0c rQMQod">
254
+ People also ask
255
+ </span>
256
+ </div>
257
+ </span>
258
+ </div>
259
+ </div>
260
+ <div>
261
+ <div class="rxk4ae xpc">
262
+ <div class="duf-h">
263
+ <div aria-expanded="false" class="fLtXsc iIWm4b" data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQuk56BAgAEAI" id="tsuid_1" role="button" tabindex="0">
264
+ <div class="Lt3Tzc">
265
+ When was the last time an atomic bomb was used?
266
+ </div>
267
+ <div class="v7Y0Ge">
268
+ <div class="Lym8W xCgLUe">
269
+ <div class="AeQQub hwc">
270
+ </div>
271
+ <div class="YCU7eb hwc">
272
+ </div>
273
+ <div class="IyYaEd hwx">
274
+ </div>
275
+ <div class="ECUHQe hwx">
276
+ </div>
277
+ </div>
278
+ </div>
279
+ </div>
280
+ </div>
281
+ <div class="qxDOhb" id="accdef_1">
282
+ </div>
283
+ </div>
284
+ </div>
285
+ <div class="x54gtf">
286
+ </div>
287
+ <div>
288
+ <div class="rxk4ae xpc">
289
+ <div class="duf-h">
290
+ <div aria-expanded="false" class="fLtXsc iIWm4b" data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQuk56BAgAEAk" id="tsuid_2" role="button" tabindex="0">
291
+ <div class="Lt3Tzc">
292
+ What was the most recent nuclear bomb used?
293
+ </div>
294
+ <div class="v7Y0Ge">
295
+ <div class="Lym8W xCgLUe">
296
+ <div class="AeQQub hwc">
297
+ </div>
298
+ <div class="YCU7eb hwc">
299
+ </div>
300
+ <div class="IyYaEd hwx">
301
+ </div>
302
+ <div class="ECUHQe hwx">
303
+ </div>
304
+ </div>
305
+ </div>
306
+ </div>
307
+ </div>
308
+ <div class="qxDOhb" id="accdef_3">
309
+ </div>
310
+ </div>
311
+ </div>
312
+ <div class="x54gtf">
313
+ </div>
314
+ <div>
315
+ <div class="rxk4ae xpc">
316
+ <div class="duf-h">
317
+ <div aria-expanded="false" class="fLtXsc iIWm4b" data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQuk56BAgAEBA" id="tsuid_3" role="button" tabindex="0">
318
+ <div class="Lt3Tzc">
319
+ Is there an atomic bomb today?
320
+ </div>
321
+ <div class="v7Y0Ge">
322
+ <div class="Lym8W xCgLUe">
323
+ <div class="AeQQub hwc">
324
+ </div>
325
+ <div class="YCU7eb hwc">
326
+ </div>
327
+ <div class="IyYaEd hwx">
328
+ </div>
329
+ <div class="ECUHQe hwx">
330
+ </div>
331
+ </div>
332
+ </div>
333
+ </div>
334
+ </div>
335
+ <div class="qxDOhb" id="accdef_5">
336
+ </div>
337
+ </div>
338
+ </div>
339
+ <div class="x54gtf">
340
+ </div>
341
+ <div>
342
+ <div class="rxk4ae xpc">
343
+ <div class="duf-h">
344
+ <div aria-expanded="false" class="fLtXsc iIWm4b" data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQuk56BAgAEBc" id="tsuid_4" role="button" tabindex="0">
345
+ <div class="Lt3Tzc">
346
+ Is Hiroshima still radioactive?
347
+ </div>
348
+ <div class="v7Y0Ge">
349
+ <div class="Lym8W xCgLUe">
350
+ <div class="AeQQub hwc">
351
+ </div>
352
+ <div class="YCU7eb hwc">
353
+ </div>
354
+ <div class="IyYaEd hwx">
355
+ </div>
356
+ <div class="ECUHQe hwx">
357
+ </div>
358
+ </div>
359
+ </div>
360
+ </div>
361
+ </div>
362
+ <div class="qxDOhb" id="accdef_7">
363
+ </div>
364
+ </div>
365
+ </div>
366
+ </div>
367
+ </div>
368
+ <div>
369
+ <div class="Gx5Zad xpd EtOod pkphOe">
370
+ <div class="egMi0 kCrYT">
371
+ <a data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAoQAg" href="/url?q=https://inquirygroup.org/history-lessons/atomic-bomb&amp;sa=U&amp;ved=2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAoQAg&amp;usg=AOvVaw3lYe4tPYrqV3aMfweOMx_H">
372
+ <div class="DnJfK">
373
+ <div class="j039Wc">
374
+ <h3 class="zBAuLc l97dzf">
375
+ <div class="BNeawe vvjwJb AP7Wnd">
376
+ The Atomic Bomb | Digital Inquiry Group
377
+ </div>
378
+ </h3>
379
+ </div>
380
+ <div class="sCuL3">
381
+ <div class="BNeawe UPmit AP7Wnd lRVwie">
382
+ inquirygroup.org › history-lessons › atomic-bomb
383
+ </div>
384
+ </div>
385
+ </div>
386
+ </a>
387
+ </div>
388
+ <div class="kCrYT">
389
+ <div>
390
+ <div class="BNeawe s3v9rd AP7Wnd">
391
+ <div>
392
+ <div>
393
+ <div class="BNeawe s3v9rd AP7Wnd">
394
+ In this lesson plan, students read four different accounts of the bombings and must decide for themselves how we should remember the dropping of the atomic ...
395
+ </div>
396
+ </div>
397
+ </div>
398
+ </div>
399
+ </div>
400
+ </div>
401
+ </div>
402
+ </div>
403
+ <div>
404
+ <div class="Gx5Zad xpd EtOod pkphOe">
405
+ <div class="egMi0 kCrYT">
406
+ <a data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAkQAg" href="/url?q=https://www.aljazeera.com/tag/nuclear-weapons/&amp;sa=U&amp;ved=2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAkQAg&amp;usg=AOvVaw1GeLiii9L_bWiZf2oTtB5H">
407
+ <div class="DnJfK">
408
+ <div class="j039Wc">
409
+ <h3 class="zBAuLc l97dzf">
410
+ <div class="BNeawe vvjwJb AP7Wnd">
411
+ Nuclear Weapons | Today's latest from Al Jazeera
412
+ </div>
413
+ </h3>
414
+ </div>
415
+ <div class="sCuL3">
416
+ <div class="BNeawe UPmit AP7Wnd lRVwie">
417
+ www.aljazeera.com › tag › nuclear-weapons
418
+ </div>
419
+ </div>
420
+ </div>
421
+ </a>
422
+ </div>
423
+ <div class="kCrYT">
424
+ <div>
425
+ <div class="BNeawe s3v9rd AP7Wnd">
426
+ <div>
427
+ <div>
428
+ <div class="BNeawe s3v9rd AP7Wnd">
429
+ North Korea fires short-range ballistic missiles for second time in a week · From: NewsFeed · North Korea reveals first photos of uranium enrichment facility.
430
+ </div>
431
+ </div>
432
+ </div>
433
+ </div>
434
+ </div>
435
+ </div>
436
+ </div>
437
+ </div>
438
+ <div>
439
+ <div class="Gx5Zad xpd EtOod pkphOe">
440
+ <div class="egMi0 kCrYT">
441
+ <a data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAIQAg" href="/url?q=https://www.britannica.com/event/atomic-bombings-of-Hiroshima-and-Nagasaki&amp;sa=U&amp;ved=2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAIQAg&amp;usg=AOvVaw0JhoSqd8fdJkhdiEw1n042">
442
+ <div class="DnJfK">
443
+ <div class="j039Wc">
444
+ <h3 class="zBAuLc l97dzf">
445
+ <div class="BNeawe vvjwJb AP7Wnd">
446
+ Atomic bombings of Hiroshima and Nagasaki - Britannica
447
+ </div>
448
+ </h3>
449
+ </div>
450
+ <div class="sCuL3">
451
+ <div class="BNeawe UPmit AP7Wnd lRVwie">
452
+ www.britannica.com › World History › The Modern World
453
+ </div>
454
+ </div>
455
+ </div>
456
+ </a>
457
+ </div>
458
+ <div class="kCrYT">
459
+ <div>
460
+ <div class="BNeawe s3v9rd AP7Wnd">
461
+ <div>
462
+ <div>
463
+ <div class="BNeawe s3v9rd AP7Wnd">
464
+ <span class="r0bn4c rQMQod">
465
+ 25 Aug 2024
466
+ </span>
467
+ <span class="r0bn4c rQMQod">
468
+ ·
469
+ </span>
470
+ The atomic bombings of Hiroshima and Nagasaki were American bombing raids on the Japanese cities of Hiroshima and Nagasaki during World War II, ...
471
+ </div>
472
+ </div>
473
+ </div>
474
+ </div>
475
+ </div>
476
+ </div>
477
+ </div>
478
+ </div>
479
+ <div>
480
+ <div class="Gx5Zad xpd EtOod pkphOe">
481
+ <div class="egMi0 kCrYT">
482
+ <a data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAgQAg" href="/url?q=https://www.cnn.com/2023/09/22/asia/nuclear-testing-china-russia-us-exclusive-intl-hnk-ml/index.html&amp;sa=U&amp;ved=2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAgQAg&amp;usg=AOvVaw3Y5wt_xAGha6O1gwHKREhw">
483
+ <div class="DnJfK">
484
+ <div class="j039Wc">
485
+ <h3 class="zBAuLc l97dzf">
486
+ <div class="BNeawe vvjwJb AP7Wnd">
487
+ Exclusive: Satellite images show increased activity at nuclear test ...
488
+ </div>
489
+ </h3>
490
+ </div>
491
+ <div class="sCuL3">
492
+ <div class="BNeawe UPmit AP7Wnd lRVwie">
493
+ www.cnn.com › asia › nuclear-testing-china-russia-us-exclusive-intl-hnk-ml
494
+ </div>
495
+ </div>
496
+ </div>
497
+ </a>
498
+ </div>
499
+ <div class="kCrYT">
500
+ <div>
501
+ <div class="BNeawe s3v9rd AP7Wnd">
502
+ <div>
503
+ <div>
504
+ <div class="BNeawe s3v9rd AP7Wnd">
505
+ <span class="r0bn4c rQMQod">
506
+ 23 Sept 2023
507
+ </span>
508
+ <span class="r0bn4c rQMQod">
509
+ ·
510
+ </span>
511
+ Russia, the United States and China have all built new facilities and dug new tunnels at their nuclear test sites in recent years, satellite images obtained ...
512
+ </div>
513
+ </div>
514
+ </div>
515
+ </div>
516
+ </div>
517
+ </div>
518
+ </div>
519
+ </div>
520
+ <div>
521
+ <div class="Gx5Zad xpd EtOod pkphOe">
522
+ <div class="egMi0 kCrYT">
523
+ <a data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAYQAg" href="/url?q=https://www.getty.edu/education/teachers/classroom_resources/curricula/headlines/lesson03.html&amp;sa=U&amp;ved=2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAYQAg&amp;usg=AOvVaw0Imw-Z5ZnnCrBO0VKkoIEv">
524
+ <div class="DnJfK">
525
+ <div class="j039Wc">
526
+ <h3 class="zBAuLc l97dzf">
527
+ <div class="BNeawe vvjwJb AP7Wnd">
528
+ Debating the Bomb (Education at the Getty)
529
+ </div>
530
+ </h3>
531
+ </div>
532
+ <div class="sCuL3">
533
+ <div class="BNeawe UPmit AP7Wnd lRVwie">
534
+ www.getty.edu › classroom_resources › curricula › headlines › lesson03
535
+ </div>
536
+ </div>
537
+ </div>
538
+ </a>
539
+ </div>
540
+ <div class="kCrYT">
541
+ <div>
542
+ <div class="BNeawe s3v9rd AP7Wnd">
543
+ <div>
544
+ <div>
545
+ <div class="BNeawe s3v9rd AP7Wnd">
546
+ In this lesson students research how the development of the atomic bomb affected people both during and since World War II.
547
+ </div>
548
+ </div>
549
+ </div>
550
+ </div>
551
+ </div>
552
+ </div>
553
+ </div>
554
+ </div>
555
+ <div>
556
+ <div class="Gx5Zad xpd EtOod pkphOe">
557
+ <div class="egMi0 kCrYT">
558
+ <a data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAUQAg" href="/url?q=https://www.khanacademy.org/humanities/us-history/rise-to-world-power/us-wwii/a/the-manhattan-project-and-the-atomic-bomb&amp;sa=U&amp;ved=2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAUQAg&amp;usg=AOvVaw0qVT5B8vfFNhaEIl8FIHLC">
559
+ <div class="DnJfK">
560
+ <div class="j039Wc">
561
+ <h3 class="zBAuLc l97dzf">
562
+ <div class="BNeawe vvjwJb AP7Wnd">
563
+ The atomic bomb &amp; The Manhattan Project (article) - Khan Academy
564
+ </div>
565
+ </h3>
566
+ </div>
567
+ <div class="sCuL3">
568
+ <div class="BNeawe UPmit AP7Wnd lRVwie">
569
+ www.khanacademy.org › us-history › rise-to-world-power › us-wwii › the-...
570
+ </div>
571
+ </div>
572
+ </div>
573
+ </a>
574
+ </div>
575
+ <div class="kCrYT">
576
+ <div>
577
+ <div class="BNeawe s3v9rd AP7Wnd">
578
+ <div>
579
+ <div>
580
+ <div class="BNeawe s3v9rd AP7Wnd">
581
+ The United States detonated two atomic bombs over the Japanese cities of Hiroshima and Nagasaki in August 1945, killing 210,000 people—children, women, and men.
582
+ </div>
583
+ </div>
584
+ </div>
585
+ </div>
586
+ </div>
587
+ </div>
588
+ </div>
589
+ </div>
590
+ <div>
591
+ <div class="Gx5Zad xpd EtOod pkphOe">
592
+ <div class="egMi0 kCrYT">
593
+ <a data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAQQAg" href="/url?q=https://study.com/academy/popular/atomic-bomb-lesson-plan.html&amp;sa=U&amp;ved=2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAQQAg&amp;usg=AOvVaw0EO5XbQvOten-bnmqodsy0">
594
+ <div class="DnJfK">
595
+ <div class="j039Wc">
596
+ <h3 class="zBAuLc l97dzf">
597
+ <div class="BNeawe vvjwJb AP7Wnd">
598
+ Atomic Bomb Lesson Plan | Study.com
599
+ </div>
600
+ </h3>
601
+ </div>
602
+ <div class="sCuL3">
603
+ <div class="BNeawe UPmit AP7Wnd lRVwie">
604
+ study.com › ... › World History Since 1900: Lesson Plans &amp; Resources
605
+ </div>
606
+ </div>
607
+ </div>
608
+ </a>
609
+ </div>
610
+ <div class="kCrYT">
611
+ <div>
612
+ <div class="BNeawe s3v9rd AP7Wnd">
613
+ <div>
614
+ <div>
615
+ <div class="BNeawe s3v9rd AP7Wnd">
616
+ Use a Study.com video about the history of the atomic bomb to support your instruction of the unit. Highlight and discuss key events and their corresponding ...
617
+ </div>
618
+ </div>
619
+ </div>
620
+ </div>
621
+ </div>
622
+ </div>
623
+ </div>
624
+ </div>
625
+ <div>
626
+ <div class="Gx5Zad xpd EtOod pkphOe">
627
+ <div class="egMi0 kCrYT">
628
+ <a data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAEQAg" href="/url?q=https://www.armscontrol.org/factsheets/nuclear-weapons-who-has-what-glance&amp;sa=U&amp;ved=2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAEQAg&amp;usg=AOvVaw1vfwNwy3YxB-cHdsrg9T4R">
629
+ <div class="DnJfK">
630
+ <div class="j039Wc">
631
+ <h3 class="zBAuLc l97dzf">
632
+ <div class="BNeawe vvjwJb AP7Wnd">
633
+ Nuclear Weapons: Who Has What at a Glance
634
+ </div>
635
+ </h3>
636
+ </div>
637
+ <div class="sCuL3">
638
+ <div class="BNeawe UPmit AP7Wnd lRVwie">
639
+ www.armscontrol.org › factsheets › nuclear-weapons-who-has-what-glance
640
+ </div>
641
+ </div>
642
+ </div>
643
+ </a>
644
+ </div>
645
+ <div class="kCrYT">
646
+ <div>
647
+ <div class="BNeawe s3v9rd AP7Wnd">
648
+ <div>
649
+ <div>
650
+ <div class="BNeawe s3v9rd AP7Wnd">
651
+ According to the March 2023 New START declaration, the United States deploys 1,419 strategic nuclear warheads on 662 strategic delivery systems ( ...
652
+ </div>
653
+ </div>
654
+ </div>
655
+ </div>
656
+ </div>
657
+ </div>
658
+ </div>
659
+ </div>
660
+ <div>
661
+ <div class="Gx5Zad xpd EtOod pkphOe">
662
+ <div class="egMi0 kCrYT">
663
+ <a data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAcQAg" href="/url?q=https://www.upcountryhistory.org/wp-content/uploads/2017/08/WWII-The-Atomic-Bomb-Classroom-Activity.pdf&amp;sa=U&amp;ved=2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAcQAg&amp;usg=AOvVaw00gi6k4s8VS7u0L8CBcAAN">
664
+ <div class="DnJfK">
665
+ <div class="j039Wc">
666
+ <h3 class="zBAuLc l97dzf">
667
+ <div class="BNeawe vvjwJb AP7Wnd">
668
+ [PDF] Classroom Activity WWII: The Atomic Bomb
669
+ </div>
670
+ </h3>
671
+ </div>
672
+ <div class="sCuL3">
673
+ <div class="BNeawe UPmit AP7Wnd lRVwie">
674
+ www.upcountryhistory.org › wp-content › uploads › 2017/08 › WWI...
675
+ </div>
676
+ </div>
677
+ </div>
678
+ </a>
679
+ </div>
680
+ <div class="kCrYT">
681
+ <div>
682
+ <div class="BNeawe s3v9rd AP7Wnd">
683
+ <div>
684
+ <div>
685
+ <div class="BNeawe s3v9rd AP7Wnd">
686
+ Discuss the role of the atomic bomb in ending the war in the Pacific. Explain that the making of the bomb took years, and thousands of people. • Ask students to ...
687
+ </div>
688
+ </div>
689
+ </div>
690
+ </div>
691
+ </div>
692
+ </div>
693
+ </div>
694
+ </div>
695
+ <div>
696
+ <div class="Gx5Zad xpd EtOod pkphOe">
697
+ <div class="K8tyEc">
698
+ <div class="mEUgP">
699
+ <span>
700
+ <div class="BNeawe">
701
+ People also search for
702
+ </div>
703
+ </span>
704
+ </div>
705
+ </div>
706
+ <div>
707
+ <div class="gGQDvd iIWm4b">
708
+ <a class="Q71vJc" data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ1QJ6BAgDEAI" href="/search?sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;q=Recent+atomic+bomb+activity+today&amp;sa=X&amp;ved=2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ1QJ6BAgDEAI">
709
+ <accordion-entry-search-icon class="toMBf">
710
+ <span>
711
+ <img alt="" class="OEaqif" data-deferred="1" id="dimg_1" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" style="max-width:20px;max-height:20px"/>
712
+ </span>
713
+ </accordion-entry-search-icon>
714
+ <div class="kjGX2">
715
+ <span class="Xe4YD">
716
+ <div class="BNeawe lRVwie">
717
+ Recent atomic bomb activity today
718
+ </div>
719
+ </span>
720
+ </div>
721
+ </a>
722
+ </div>
723
+ </div>
724
+ <div class="x54gtf">
725
+ </div>
726
+ <div>
727
+ <div class="gGQDvd iIWm4b">
728
+ <a class="Q71vJc" data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ1QJ6BAgDEAQ" href="/search?sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;q=Atomic+bomb+lesson+plan+PDF&amp;sa=X&amp;ved=2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ1QJ6BAgDEAQ">
729
+ <accordion-entry-search-icon class="toMBf">
730
+ <span>
731
+ <img alt="" class="OEaqif" data-deferred="1" id="dimg_3" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" style="max-width:20px;max-height:20px"/>
732
+ </span>
733
+ </accordion-entry-search-icon>
734
+ <div class="kjGX2">
735
+ <span class="Xe4YD">
736
+ <div class="BNeawe lRVwie">
737
+ Atomic bomb lesson plan PDF
738
+ </div>
739
+ </span>
740
+ </div>
741
+ </a>
742
+ </div>
743
+ </div>
744
+ <div class="x54gtf">
745
+ </div>
746
+ <div>
747
+ <div class="gGQDvd iIWm4b">
748
+ <a class="Q71vJc" data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ1QJ6BAgDEAY" href="/search?sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;q=Atomic+bomb+debate+questions&amp;sa=X&amp;ved=2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ1QJ6BAgDEAY">
749
+ <accordion-entry-search-icon class="toMBf">
750
+ <span>
751
+ <img alt="" class="OEaqif" data-deferred="1" id="dimg_5" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" style="max-width:20px;max-height:20px"/>
752
+ </span>
753
+ </accordion-entry-search-icon>
754
+ <div class="kjGX2">
755
+ <span class="Xe4YD">
756
+ <div class="BNeawe lRVwie">
757
+ Atomic bomb debate questions
758
+ </div>
759
+ </span>
760
+ </div>
761
+ </a>
762
+ </div>
763
+ </div>
764
+ <div class="x54gtf">
765
+ </div>
766
+ <div>
767
+ <div class="gGQDvd iIWm4b">
768
+ <a class="Q71vJc" data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ1QJ6BAgDEAg" href="/search?sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;q=Atomic+bomb+lesson+plan+middle+School&amp;sa=X&amp;ved=2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ1QJ6BAgDEAg">
769
+ <accordion-entry-search-icon class="toMBf">
770
+ <span>
771
+ <img alt="" class="OEaqif" data-deferred="1" id="dimg_7" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" style="max-width:20px;max-height:20px"/>
772
+ </span>
773
+ </accordion-entry-search-icon>
774
+ <div class="kjGX2">
775
+ <span class="Xe4YD">
776
+ <div class="BNeawe lRVwie">
777
+ Atomic bomb lesson plan middle School
778
+ </div>
779
+ </span>
780
+ </div>
781
+ </a>
782
+ </div>
783
+ </div>
784
+ <div class="x54gtf">
785
+ </div>
786
+ <div>
787
+ <div class="gGQDvd iIWm4b">
788
+ <a class="Q71vJc" data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ1QJ6BAgDEAo" href="/search?sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;q=Atomic+bomb+lesson+plan+High+School&amp;sa=X&amp;ved=2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ1QJ6BAgDEAo">
789
+ <accordion-entry-search-icon class="toMBf">
790
+ <span>
791
+ <img alt="" class="OEaqif" data-deferred="1" id="dimg_9" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" style="max-width:20px;max-height:20px"/>
792
+ </span>
793
+ </accordion-entry-search-icon>
794
+ <div class="kjGX2">
795
+ <span class="Xe4YD">
796
+ <div class="BNeawe lRVwie">
797
+ Atomic bomb lesson plan High School
798
+ </div>
799
+ </span>
800
+ </div>
801
+ </a>
802
+ </div>
803
+ </div>
804
+ <div class="x54gtf">
805
+ </div>
806
+ <div>
807
+ <div class="gGQDvd iIWm4b">
808
+ <a class="Q71vJc" data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ1QJ6BAgDEAw" href="/search?sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;q=Atomic+bomb+worksheet+pdf&amp;sa=X&amp;ved=2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ1QJ6BAgDEAw">
809
+ <accordion-entry-search-icon class="toMBf">
810
+ <span>
811
+ <img alt="" class="OEaqif" data-deferred="1" id="dimg_11" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" style="max-width:20px;max-height:20px"/>
812
+ </span>
813
+ </accordion-entry-search-icon>
814
+ <div class="kjGX2">
815
+ <span class="Xe4YD">
816
+ <div class="BNeawe lRVwie">
817
+ Atomic bomb worksheet pdf
818
+ </div>
819
+ </span>
820
+ </div>
821
+ </a>
822
+ </div>
823
+ </div>
824
+ <div class="x54gtf">
825
+ </div>
826
+ <div>
827
+ <div class="gGQDvd iIWm4b">
828
+ <a class="Q71vJc" data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ1QJ6BAgDEA4" href="/search?sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;q=Nuclear+bomb+News+today&amp;sa=X&amp;ved=2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ1QJ6BAgDEA4">
829
+ <accordion-entry-search-icon class="toMBf">
830
+ <span>
831
+ <img alt="" class="OEaqif" data-deferred="1" id="dimg_13" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" style="max-width:20px;max-height:20px"/>
832
+ </span>
833
+ </accordion-entry-search-icon>
834
+ <div class="kjGX2">
835
+ <span class="Xe4YD">
836
+ <div class="BNeawe lRVwie">
837
+ Nuclear bomb News today
838
+ </div>
839
+ </span>
840
+ </div>
841
+ </a>
842
+ </div>
843
+ </div>
844
+ <div class="x54gtf">
845
+ </div>
846
+ <div>
847
+ <div class="gGQDvd iIWm4b">
848
+ <a class="Q71vJc" data-ved="2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ1QJ6BAgDEBA" href="/search?sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;q=Latest+nuclear+bomb+attack&amp;sa=X&amp;ved=2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ1QJ6BAgDEBA">
849
+ <accordion-entry-search-icon class="toMBf">
850
+ <span>
851
+ <img alt="" class="OEaqif" data-deferred="1" id="dimg_15" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" style="max-width:20px;max-height:20px"/>
852
+ </span>
853
+ </accordion-entry-search-icon>
854
+ <div class="kjGX2">
855
+ <span class="Xe4YD">
856
+ <div class="BNeawe lRVwie">
857
+ Latest nuclear bomb attack
858
+ </div>
859
+ </span>
860
+ </div>
861
+ </a>
862
+ </div>
863
+ </div>
864
+ </div>
865
+ </div>
866
+ <footer>
867
+ <div>
868
+ <div class="Gx5Zad xpd EtOod pkphOe OcpZAb">
869
+ <div class="nMymef Va3FIb lVm3ye">
870
+ <a aria-label="Next page" class="nBDE1b G5eFlf" href="/search?q=recent+atomic+bomb+activity&amp;sca_esv=57cb6114f464605f&amp;sca_upv=1&amp;ie=UTF-8&amp;ei=jmTxZrq_Hpac0-kPyvDOwQk&amp;start=10&amp;sa=N">
871
+ Next &gt;
872
+ </a>
873
+ </div>
874
+ </div>
875
+ </div>
876
+ <div id="EOlPnc">
877
+ <div class="Srfpq">
878
+ <div>
879
+ <span class="EYqSq unknown_loc">
880
+ </span>
881
+ <span class="dfB0uf">
882
+ 560068, Bengaluru, Karnataka
883
+ </span>
884
+ </div>
885
+ <span>
886
+ From your IP address
887
+ </span>
888
+ <span>
889
+ -
890
+ </span>
891
+ <a aria-label="Learn more about this location" class="IffyKc" href="/url?q=https://support.google.com/websearch%3Fp%3Dws_settings_location%26hl%3Den-IN&amp;opi=89978449&amp;sa=U&amp;ved=0ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQty4Ibw&amp;usg=AOvVaw2Bn2cc39SOZjNLrO-PeFtL" tabindex="0">
892
+ Learn more
893
+ </a>
894
+ </div>
895
+ <div>
896
+ <a href="/url?q=https://accounts.google.com/ServiceLogin%3Fcontinue%3Dhttps://www.google.com/search%253Fq%253Drecent%252Batomic%252Bbomb%252Bactivity%26hl%3Den&amp;opi=89978449&amp;sa=U&amp;ved=0ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQxs8CCHA&amp;usg=AOvVaw3aIDLHqHeOryQ3orV8hovN">
897
+ Sign in
898
+ </a>
899
+ </div>
900
+ <div>
901
+ <a class="xeDNfc" href="https://www.google.com/preferences?hl=en-IN&amp;fg=1&amp;sa=X&amp;ved=0ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQ5fUCCHE">
902
+ Settings
903
+ </a>
904
+ <a class="xeDNfc" href="https://policies.google.com/privacy?hl=en-IN&amp;fg=1">
905
+ Privacy
906
+ </a>
907
+ <a class="xeDNfc" href="https://policies.google.com/terms?hl=en-IN&amp;fg=1">
908
+ Terms
909
+ </a>
910
+ <a class="xeDNfc" href="/setprefs?hl=en&amp;prev=https://www.google.com/search?q%3Drecent%2Batomic%2Bbomb%2Bactivity%26pccc%3D1&amp;sig=0_ormdN6sJC_ZeFAxY6kumZhU2dqo%3D&amp;cs=2&amp;sa=X&amp;ved=0ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQjcAJCHI">
911
+ Dark theme: Off
912
+ </a>
913
+ </div>
914
+ </div>
915
+ </footer>
916
+ <script nonce="BaBBq4_VTqQ-VTCp2nwVhw">
917
+ (function(){var hl='en-IN';(function(){var g=function(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}},k=typeof Object.defineProperties=="function"?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a},l=function(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("a");},m=l(this),n=function(a,b){if(b)a:{var c=m;a=a.split(".");for(var d=0;d<a.length-1;d++){var e=a[d];if(!(e in c))break a;c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&b!=null&&k(c,a,{configurable:!0,writable:!0,value:b})}};n("Symbol",function(a){if(a)return a;var b=function(h,f){this.g=h;k(this,"description",{configurable:!0,writable:!0,value:f})};b.prototype.toString=function(){return this.g};var c="jscomp_symbol_"+(Math.random()*1E9>>>0)+"_",d=0,e=function(h){if(this instanceof e)throw new TypeError("Symbol is not a constructor");return new b(c+(h||"")+"_"+d++,h)};return e});n("Symbol.iterator",function(a){if(a)return a;a=Symbol("Symbol.iterator");for(var b="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),c=0;c<b.length;c++){var d=m[b[c]];typeof d==="function"&&typeof d.prototype[a]!="function"&&k(d.prototype,a,{configurable:!0,writable:!0,value:function(){return p(g(this))}})}return a});var p=function(a){a={next:a};a[Symbol.iterator]=function(){return this};return a},r=function(a){return q(a,a)},q=function(a,b){a.raw=b;Object.freeze&&(Object.freeze(a),Object.freeze(b));return a},t=function(){for(var a=Number(this),b=[],c=a;c<arguments.length;c++)b[c-a]=arguments[c];return b};n("globalThis",function(a){return a||m});var u=function(a,b){a instanceof String&&(a+="");var c=0,d=!1,e={next:function(){if(!d&&c<a.length){var h=c++;return{value:b(h,a[h]),done:!1}}d=!0;return{done:!0,value:void 0}}};e[Symbol.iterator]=function(){return e};return e};n("Array.prototype.entries",function(a){return a?a:function(){return u(this,function(b,c){return[b,c]})}});n("Object.entries",function(a){return a?a:function(b){var c=[],d;for(d in b)Object.prototype.hasOwnProperty.call(b,d)&&c.push([d,b[d]]);return c}});
918
+ var v=globalThis.trustedTypes,x;function y(){var a=null;if(!v)return a;try{var b=function(c){return c};a=v.createPolicy("goog#html",{createHTML:b,createScript:b,createScriptURL:b})}catch(c){}return a}function z(){x===void 0&&(x=y());return x};var A=function(a){this.g=a};A.prototype.toString=function(){return this.g+""};function B(a){var b=z();return new A(b?b.createScriptURL(a):a)}function C(a){if(a instanceof A)return a.g;throw Error("e");};var D=function(a){this.g=a};D.prototype.toString=function(){return this.g+""};function E(a){var b=t.apply(1,arguments);if(b.length===0)return B(a[0]);for(var c=a[0],d=0;d<b.length;d++)c+=encodeURIComponent(b[d])+a[d+1];return B(c)}function F(a,b,c,d){function e(f,w){f!=null&&(Array.isArray(f)?f.forEach(function(Z){return e(Z,w)}):(b+=h+encodeURIComponent(w)+"="+encodeURIComponent(f),h="&"))}var h=b.length?"&":"?";d.constructor===Object&&(d=Object.entries(d));Array.isArray(d)?d.forEach(function(f){return e(f[1],f[0])}):d.forEach(e);return B(a+b+c)};function aa(a,b){if(a.nodeType===1){var c=a.tagName;if(c==="SCRIPT"||c==="STYLE")throw Error("e");}if(b instanceof D)b=b.g;else throw Error("e");a.innerHTML=b};function ba(a){a=a===null?"null":a===void 0?"undefined":a;var b=z();return new D(b?b.createHTML(a):a)};
919
+ var ca=r(["/complete/search"]),G=document.querySelector(".l"),H=document.querySelector("#sf"),I=H.querySelector(".sbc"),J=H.querySelector("[type=text]"),K=H.querySelector("[type=submit]"),L=H.querySelector(".sc"),M=H.querySelector(".x"),N=J.value,O=[],P=-1,Q=N,R,S,T;N||(M&&(M.style.display="none"),U(!1));function U(a){if(I.classList.contains("esbc")){var b=I.classList.contains("chsbc"),c=I.classList.contains("rtlsbc");a&&(L.style.display="block",b?(H.style.borderRadius="20px 20px 0 0",L.style.borderBottom="1px solid #DFE1E5",K.style.borderRadius=c?"20px 0 0 0":"0 20px 0 0"):I.style.borderRadius=c?"0 8px 0 0":"8px 0 0 0");a||(L.style.display="none",b?(H.style.borderRadius="20px",L.style.borderBottom="none",K.style.borderRadius=c?"20px 0 0 20px":"0 20px 20px 0"):I.style.borderRadius=c?"0 8px 8px 0":"8px 0 0 8px")}}function V(){H.querySelector("[name=oq]").value=Q;H.querySelector("[name=aqs]").value="heirloom-srp."+(P>=0?P:"")+"."+(O.length>0?"0l"+O.length:"")}
920
+ function W(){R=null;if(S){var a={client:"heirloom-srp",hl:hl,json:"t",callback:"hS",q:S};typeof ds!=="undefined"&&ds&&(a.ds=ds);var b=document;var c="SCRIPT";b.contentType==="application/xhtml+xml"&&(c=c.toLowerCase());c=b.createElement(c);b=E(ca);var d=C(b).toString();var e=d.split(/[?#]/),h=/[?]/.test(d)?"?"+e[1]:"";b=e[0];d=/[#]/.test(d)?"#"+(h?e[2]:e[1]):"";a=F(b,h,d,a);c.src=C(a);var f,w;(f=(a=(w=(f=(c.ownerDocument&&c.ownerDocument.defaultView||window).document).querySelector)==null?void 0:w.call(f,"script[nonce]"))?a.nonce||a.getAttribute("nonce")||"":"")&&c.setAttribute("nonce",f);document.body.appendChild(c);S=null;R=setTimeout(W,500)}}function X(){for(;L.firstChild;)L.removeChild(L.firstChild);O=[];P=-1;U(!1)}function Y(){var a=L.querySelector(".scs");a&&(a.className="");P>=0?(a=L.childNodes[P],a.className="scs",N=a.textContent):N=Q;J.value=N}J.addEventListener("focus",function(){G&&(G.style.display="none")},!1);J.addEventListener("blur",function(){X();G&&(G.style.display="")},!1);J.addEventListener("keyup",function(a){N=J.value;T=!1;a.which===13?V():a.which===27?(X(),G&&(G.style.display=""),N=Q,J.value=N):a.which===40?(P++,P>=O.length&&(P=-1),Y()):a.which===38?(P--,P<-1&&(P=O.length-1),Y()):(a=N)?(M&&(M.style.display=""),S=a,R||W(),Q=a):(M&&(M.style.display="none"),U(!1),X(),Q="",T=!0)},!1);K.addEventListener("click",V,!1);M.addEventListener("click",function(){J.value="";M.style.display="none";U(!1)},!1);I.addEventListener("click",function(){J.focus()},!1);window.hS=function(a){if(!T){X();a[1].length===0&&U(!1);for(var b=0;b<a[1].length;b++){var c=a[1][b][0],d=document.createElement("div");aa(d,ba(c));d.addEventListener("mousedown",function(e){e.preventDefault();return!1},!1);c=c.replace(/<\/?b>/g,"");d.addEventListener("click",function(e){return function(){P=e;V();Y();X();H.submit()}}(b),!1);d.addEventListener("mouseover",function(e){return function(){P!==e&&(P=e,Y())}}(b),!1);L.appendChild(d);U(!0);O.push(c)}}};}).call(this);})();(function(){function b(a){for(a=a.target||a.srcElement;a&&a.nodeName!=="A";)a=a.parentElement;a&&(a.href||"").match(/\/search.*[?&]tbm=isch/)&&(a.href+="&biw="+document.documentElement.clientWidth,a.href+="&bih="+document.documentElement.clientHeight)}document.addEventListener("click",b,!1);document.addEventListener("touchStart",b,!1);}).call(this);
921
+ </script>
922
+ </div>
923
+ <!-- cctlcm 5 cctlcm -->
924
+ <textarea class="csi" name="csi" style="display:none"></textarea>
925
+ <script nonce="BaBBq4_VTqQ-VTCp2nwVhw">
926
+ (function(){var e='jmTxZrq_Hpac0-kPyvDOwQk';var sn='web';var timl=false;(function(){function C(a){if(!a||D(a))return 0;if(!a.getBoundingClientRect)return 1;var c=function(b){return b.getBoundingClientRect()};return E(a,c)?0:K(a,c)}function E(a,c){var b;a:{for(b=a;b&&b!==null;b=b.parentElement)if(b.style.overflow==="hidden"||b.tagName==="G-EXPANDABLE-CONTENT"&&getComputedStyle(b).getPropertyValue("overflow")==="hidden")break a;b=null}if(!b)return!1;a=c(a);c=c(b);return a.bottom<c.top||a.top>=c.bottom||a.right<c.left||a.left>=c.right}
927
+ function D(a){return a.style.display==="none"?!0:document.defaultView&&document.defaultView.getComputedStyle?(a=document.defaultView.getComputedStyle(a),!!a&&(a.visibility==="hidden"||a.height==="0px"&&a.width==="0px")):!1}
928
+ function K(a,c){var b=c(a);a=b.left+window.pageXOffset;c=b.top+window.pageYOffset;var d=b.width;b=b.height;var f=0;if(b<=0&&d<=0)return f;var q=window.innerHeight||document.documentElement.clientHeight;c+b<0?f=2:c>=q&&(f=4);if(a+d<0||a>=(window.innerWidth||document.documentElement.clientWidth))f|=8;f||(f=1,c+b>q&&(f|=4));return f};var L=e,M=sn,N=typeof de==="undefined"?!0:de!==!1,O=[];function P(a,c,b){a="/gen_204?atyp=csi&s="+M+"&t="+a+("&lite=1&ei="+L+"&conn="+(window.navigator&&window.navigator.connection?window.navigator.connection.type:-1)+c);c="&rt=";for(var d in b)a+=""+c+d+"."+b[d],c=",";return a}function Q(a){a={prt:a};window.wsrt&&(a.wsrt=window.wsrt);return a}function R(a){window.ping?window.ping(a):(new Image).src=a}
929
+ (function(){for(var a=(new Date).getTime()-window.start,c=Q(a),b=0,d=0,f=0,q=document.getElementsByTagName("img"),r=N?"&biw="+window.innerWidth+"&bih="+window.innerHeight:"",F=function(){r+="&ima="+f;c.aft=b;R(P("aft",r,c))},y=0,S=function(g,t,u){var n=g.src;g.onload=function(){u&&n&&n===g.src||(d=(new Date).getTime()-window.start,t&&++y===f&&(b=d,F()),g.onload=null)}},T=0,h=void 0;h=q[T++];){var v=C(h),p=!!(v&1);p&&++f;var l=h.hasAttribute("data-ilite"),w=h.hasAttribute("data-deferred"),G=h.hasAttribute("data-src")||
930
+ h.hasAttribute("data-lzysrc"),z=!w&&!l&&G;O.push([v,w||l,z,h.id,l&&G]);l=(v=h.complete&&!w&&!(p&&z))&&Number(h.getAttribute("data-iml"))||0;v&&l?(p&&++y,l&&(h=l-window.start,p&&(b=Math.max(b,h)),d=Math.max(d,h))):S(h,p,w||z)}b||(b=a);d||(d=b);y===f&&F();google.rglh&&google.rglh();window.addEventListener("load",function(){window.setTimeout(function(){c.ol=(new Date).getTime()-window.start;timl&&(c.iml=d);var g=window.performance&&window.performance.timing;g&&(c.rqst=g.responseEnd-g.requestStart,c.rspt=
931
+ g.responseEnd-g.responseStart);for(var t=g=0,u=0,n=0,H=0,I=0,U=0,k;k=O[U++];){var m=k[0],A=k[1],J=k[2],x=k[3];k=k[4]||google.ldi&&x&&google.ldi[x];x=m==0;var V=m&8,B=m&1;m=!B&&m&4;B&&(A&&!k||++u,J&&++I);A&&(B&&k&&++g,m&&!k&&++t);x||V?J||++H:A||++n}r+="&ime="+u+"&imel="+I+("&imex="+n+"&imeh="+H)+("&imea="+g+"&imeb="+t);R(P("all",r,c))},0)},!1)})();}).call(this);})();(function(){window.google=window.google||{};window.google.ishk=[];function a(){return window.scrollY+window.document.documentElement.clientHeight>=Math.max(document.body.scrollHeight,document.body.offsetHeight)}function b(){a()&&window.google.ishk.length===0&&(window.google.bs=!0,window.removeEventListener("scroll",b))}a()?window.google.bs=!0:(window.google.bs=!1,window.addEventListener("scroll",b));}).call(this);
932
+ </script>
933
+ <script nonce="BaBBq4_VTqQ-VTCp2nwVhw">
934
+ window._setImagesSrc=function(k,e,n){function l(b){b.onerror=function(){b.style.display="none"};b.setAttribute("data-deferred","2");e.substring(0,5)!=="data:"&&b.setAttribute("data-defe","1");b.src=e;var g;((g=google.c)==null?0:g.di)&&b.decode()}function m(b,g){google.iir=google.iir||{};google.iir[b]=g}for(var d={},h=0;h<k.length;d={g:void 0},++h){var f=k[h];d.g=document.getElementById(f)||document.querySelector('img[data-iid="'+f+'"]');if(d.g){var c=void 0,a=void 0;if((a=google.c)==null?0:a.setup)c=
935
+ google.c.setup(d.g);c=c!=null&&c&1;a=void 0;((a=google.c)==null?void 0:a.doiu)!==1||c?(a=void 0,((a=google.c)==null?void 0:a.doiu)!==2||n||c?(a=void 0,((a=google.c)==null?void 0:a.doiu)!==3||c?l(d.g):(google.doid=google.doid||{},google.doid[f]=e)):m(f,e)):google.caft(function(b){return function(){l(b.g)}}(d))}else m(f,e)}};typeof window.google==="undefined"&&(window.google={});
936
+ </script>
937
+ <script nonce="BaBBq4_VTqQ-VTCp2nwVhw">
938
+ (function(){var s='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABAUlEQVR4AWMYesChoYElLjkzPj4lY3d8csZjIL4MxPNjUzPcSTYsISFLAqj5NBD/h+LPQPwbiT87NCuLh2gDgRr2QzXuT0jNMoBYksARn5zuHJ+UcR0kB6RXE2VYXHJGOlTDZmzyIJcB5e+D1CSkZDgQNBAaZv+jU1JkcKpJygiGeZ0I76a/Byq8jU9NZFqaCNTA48SE33/iDcw8TIyBt0GKQTFN0Msp6f2EIyUpo57YSIlLSrMhIg0WCIBcCfXSdlzJBsheTHQ6jEnOUgEFOLaEDbMIlhZBOYrorAdJk+nroVnvPsSgdGdoOF7HZyhZ2XPoGQoqjbCpIbt0AiejIQMArVLI7k/DXFkAAAAASUVORK5CYII\x3d';var i=['dimg_1','dimg_3','dimg_5','dimg_7','dimg_9','dimg_11','dimg_13','dimg_15'];_setImagesSrc(i,s);})();
939
+ </script>
940
+ <script nonce="BaBBq4_VTqQ-VTCp2nwVhw">
941
+ (function(){var e='jmTxZrq_Hpac0-kPyvDOwQk';(function(){var a=e;if((window.performance&&window.performance.navigation&&window.performance.navigation.type)===2){var b="",c=[],d=window.google!==void 0&&window.google.kOPI!==void 0&&window.google.kOPI!==0?window.google.kOPI:null;d!=null&&c.push(["opi",d.toString()]);for(var f=0;f<c.length;f++){if(f===0||f>0)b+="&";b+=c[f][0]+"="+c[f][1]}window.ping("/gen_204?ct=backbutton&ei="+a+b)};}).call(this);})();(function(){function b(){for(var a=google.drc.shift();a;)a(),a=google.drc.shift()};google.drc=[function(){google.tick&&google.tick("load","dcl")}];google.dclc=function(a){google.drc.length?google.drc.push(a):a()};window.addEventListener?(document.addEventListener("DOMContentLoaded",b,!1),window.addEventListener("load",b,!1)):window.attachEvent&&window.attachEvent("onload",b);}).call(this);(function(){var b=function(a){var c=0;return function(){return c<a.length?{done:!1,value:a[c++]}:{done:!0}}};
942
+ var e=this||self;var g,h;a:{for(var k=["CLOSURE_FLAGS"],l=e,n=0;n<k.length;n++)if(l=l[k[n]],l==null){h=null;break a}h=l}var p=h&&h[610401301];g=p!=null?p:!1;var q,r=e.navigator;q=r?r.userAgentData||null:null;function t(a){return g?q?q.brands.some(function(c){return(c=c.brand)&&c.indexOf(a)!=-1}):!1:!1}function u(a){var c;a:{if(c=e.navigator)if(c=c.userAgent)break a;c=""}return c.indexOf(a)!=-1};function v(){return g?!!q&&q.brands.length>0:!1}function w(){return u("Safari")&&!(x()||(v()?0:u("Coast"))||(v()?0:u("Opera"))||(v()?0:u("Edge"))||(v()?t("Microsoft Edge"):u("Edg/"))||(v()?t("Opera"):u("OPR"))||u("Firefox")||u("FxiOS")||u("Silk")||u("Android"))}function x(){return v()?t("Chromium"):(u("Chrome")||u("CriOS"))&&!(v()?0:u("Edge"))||u("Silk")}function y(){return u("Android")&&!(x()||u("Firefox")||u("FxiOS")||(v()?0:u("Opera"))||u("Silk"))};var z=v()?!1:u("Trident")||u("MSIE");y();x();w();var A=!z&&!w(),D=function(a){if(/-[a-z]/.test("ved"))return null;if(A&&a.dataset){if(y()&&!("ved"in a.dataset))return null;a=a.dataset.ved;return a===void 0?null:a}return a.getAttribute("data-"+"ved".replace(/([A-Z])/g,"-$1").toLowerCase())};var E=[],F=null;function G(a){a=a.target;var c=performance.now(),f=[],H=f.concat,d=E;if(!(d instanceof Array)){var m=typeof Symbol!="undefined"&&Symbol.iterator&&d[Symbol.iterator];if(m)d=m.call(d);else if(typeof d.length=="number")d={next:b(d)};else throw Error("b`"+String(d));for(var B=[];!(m=d.next()).done;)B.push(m.value);d=B}E=H.call(f,d,[c]);if(a&&a instanceof HTMLElement)if(a===F){if(c=E.length>=4)c=(E[E.length-1]-E[E.length-4])/1E3<5;if(c){c=google.getEI(a);a.hasAttribute("data-ved")?f=a?D(a)||"":"":f=(f=
943
+ a.closest("[data-ved]"))?D(f)||"":"";f=f||"";if(a.hasAttribute("jsname"))a=a.getAttribute("jsname");else{var C;a=(C=a.closest("[jsname]"))==null?void 0:C.getAttribute("jsname")}google.log("rcm","&ei="+c+"&tgtved="+f+"&jsname="+(a||""))}}else F=a,E=[c]}window.document.addEventListener("DOMContentLoaded",function(){document.body.addEventListener("click",G)});}).call(this);var w=function(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}};window.jsl=window.jsl||{};window.jsl.dh=function(a,b,m){try{var h=document.getElementById(a),e;if(!h&&((e=google.stvsc)==null?0:e.dds)){e=[];var f=e.concat,c=google.stvsc.dds;if(c instanceof Array)var n=c;else{var p=typeof Symbol!="undefined"&&Symbol.iterator&&c[Symbol.iterator];if(p)var g=p.call(c);else if(typeof c.length=="number")g={next:w(c)};else throw Error(String(c)+" is not an iterable or ArrayLike");c=g;var q;for(g=[];!(q=c.next()).done;)g.push(q.value);n=g}var r=f.call(e,n);for(f=0;f<r.length&&!(h=r[f].getElementById(a));f++);}if(h)h.innerHTML=b,m&&m();else{var d={id:a,script:String(!!m),milestone:String(google.jslm||0)};google.jsla&&(d.async=google.jsla);var t=a.indexOf("_"),k=t>0?a.substring(0,t):"",u=document.createElement("div");u.innerHTML=b;var l=u.children[0];if(l&&(d.tag=l.tagName,d["class"]=String(l.className||null),d.name=String(l.getAttribute("jsname")),k)){a=[];var v=document.querySelectorAll('[id^="'+k+'_"]');for(b=0;b<v.length;++b)a.push(v[b].id);d.ids=a.join(",")}google.ml(Error(k?"Missing ID with prefix "+
944
+ k:"Missing ID"),!1,d)}}catch(x){google.ml(x,!0,{"jsl.dh":!0})}};(function(){var x=false;google.jslm=x?2:1;})();(function(){(function(){google.csct={};google.csct.ps='AOvVaw3kq13t4CWnlRLUul3Ud4sG\x26ust\x3d1727182350535643';})();})();(function(){(function(){google.csct.rd=true;})();})();(function(){window.xp=function(b){function f(k,g,h){return"xp"+(g=="x"?"c":"x")+h}for(var c=/\bxp(x|c)(\d?)\b/,a=b;a;){var e=a.className,d=e.match(c);if(d){d=d[1]=="c";a.className=e.replace(c,f);b&&b.setAttribute("aria-expanded",d);if(d)for(b=a.getElementsByTagName("img"),c=0;c<b.length;++c)if(a=b[c],e=a.getAttribute("data-ll"))a.src=e,a.removeAttribute("data-ll");break}a=a.parentElement}};})();(function(){(function(){window.logVe=function(a){a&&a.attributes["data-ved"]&&window.ping("/gen_204?ved="+a.attributes["data-ved"].value)};}).call(this);})();(function(){(function(){var id='tsuid_1';var lve=true;(function(){
945
+ var e=typeof navigator!=="undefined"&&!/Opera/.test(navigator.userAgent)&&/WebKit/.test(navigator.userAgent),f={A:1,INPUT:1,TEXTAREA:1,SELECT:1,BUTTON:1},g={Enter:13," ":32},h={A:13,BUTTON:0,CHECKBOX:32,COMBOBOX:13,FILE:0,GRIDCELL:13,LINK:13,LISTBOX:13,MENU:0,MENUBAR:0,MENUITEM:0,MENUITEMCHECKBOX:0,MENUITEMRADIO:0,OPTION:0,RADIO:32,RADIOGROUP:32,RESET:0,SUBMIT:0,SWITCH:32,TAB:0,TREE:13,TREEITEM:13},k={CHECKBOX:!0,FILE:!0,OPTION:!0,RADIO:!0},l={COLOR:!0,DATE:!0,DATETIME:!0,"DATETIME-LOCAL":!0,EMAIL:!0,MONTH:!0,NUMBER:!0,PASSWORD:!0,RANGE:!0,SEARCH:!0,TEL:!0,TEXT:!0,TEXTAREA:!0,TIME:!0,URL:!0,WEEK:!0};document.getElementById(id).onclick=function(){window.xp(this);lve&&window.logVe(this)};document.getElementById(id).onkeydown=function(d){var c=d.which||d.keyCode;!c&&d.key&&(c=g[d.key]);e&&c===3&&(c=13);if(c!==13&&c!==32)c=!1;else{var a=d.target;!a.getAttribute&&a.parentNode&&(a=a.parentNode);var b;if(!(b=d.type!=="keydown")){if(b="getAttribute"in a)b=!((a.getAttribute("type")||a.tagName).toUpperCase()in l);b=!(b&&!(a.tagName.toUpperCase()==="BUTTON"||a.type&&a.type.toUpperCase()==="FILE")&&!a.isContentEditable)}(b=b||d.ctrlKey||d.shiftKey||d.altKey||d.metaKey||(a.getAttribute("type")||
946
+ a.tagName).toUpperCase()in k&&c===32)||((b=a.tagName in f)||(b=a.getAttributeNode("tabindex"),b=b!=null&&b.specified),b=!(b&&!a.disabled));if(b)c=!1;else{b=(a.getAttribute("role")||a.type||a.tagName).toUpperCase();var m=!(b in h)&&c===13;a=a.tagName.toUpperCase()!=="INPUT"||!!a.type;c=(h[b]%c===0||m)&&a}}c&&(d.preventDefault(),window.xp(this),lve&&window.logVe(this))};}).call(this);})();})();(function(){window.jsl=window.jsl||{};window.jsl.dh=window.jsl.dh||function(i,c,d){try{var e=document.getElementById(i);if(e){e.innerHTML=c;if(d){d();}}else{if(window.jsl.el){window.jsl.el(new Error('Missing ID.'),{'id':i});}}}catch(e){if(window.jsl.el){window.jsl.el(new Error('jsl.dh'));}}};})();(function(){window.jsl.dh('accdef_1','\x3cdiv\x3e\x3cdiv style\x3d\x22padding-bottom:12px;padding-top:0px\x22 class\x3d\x22hwc kCrYT\x22\x3e\x3cdiv class\x3d\x22yStFkb\x22\x3e\x3cdiv class\x3d\x22Gx5Zad xpd EtOod pkphOe\x22\x3e\x3cdiv class\x3d\x22kCrYT\x22\x3e\x3cdiv class\x3d\x22PqksIc nRlVm\x22\x3e\x3cdiv class\x3d\x22BNeawe\x22\x3e\x3cdiv\x3e\x3cdiv class\x3d\x22BNeawe\x22\x3eThe dangers from such weapons arise from their very existence. Although nuclear weapons have only been used twice in warfare\u2014\x3cspan class\x3d\x22FCUp0c rQMQod\x22\x3ein the bombings of Hiroshima and Nagasaki in 1945\x3c/span\x3e\u2014about 13,400 reportedly remain in our world today and there have been over 2,000 nuclear tests conducted to date.\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv class\x3d\x22x54gtf\x22\x3e\x3c/div\x3e\x3cdiv class\x3d\x22kCrYT\x22\x3e\x3ca href\x3d\x22/url?q\x3dhttps://disarmament.unoda.org/wmd/nuclear/\x26amp;sa\x3dU\x26amp;ved\x3d2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAAQBg\x26amp;usg\x3dAOvVaw2cMGKHv5wixPUa8E5Ny0Dt\x22 data-ved\x3d\x222ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAAQBg\x22\x3e\x3cspan\x3e\x3cdiv class\x3d\x22BNeawe vvjwJb AP7Wnd\x22\x3e\x3cspan class\x3d\x22rQMQod Xb5VRe\x22\x3eNuclear Weapons - UNODA\x3c/span\x3e\x3c/div\x3e\x3c/span\x3e\x3cspan\x3e\x3cdiv class\x3d\x22BNeawe UPmit AP7Wnd\x22\x3edisarmament.unoda.org \u203a wmd \u203a nuclear\x3c/div\x3e\x3c/span\x3e\x3c/a\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv\x3e\x3cdiv class\x3d\x22P1NWSe\x22\x3e\x3cdiv class\x3d\x22wOMIed nkPlDb\x22\x3e\x3cspan class\x3d\x22JhFlyf VQFmSd\x22\x3e\x3ca class\x3d\x22f4J0H\x22 href\x3d\x22https://www.google.com/search?sca_esv\x3d57cb6114f464605f\x26amp;sca_upv\x3d1\x26amp;ie\x3dUTF-8\x26amp;ei\x3djmTxZrq_Hpac0-kPyvDOwQk\x26amp;q\x3dWhen+was+the+last+time+an+atomic+bomb+was+used?\x26amp;sa\x3dX\x26amp;ved\x3d2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQzmd6BAgAEAc\x22 data-ved\x3d\x222ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQzmd6BAgAEAc\x22\x3eMore results\x3c/a\x3e\x3c/span\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e');})();(function(){(function(){var id='tsuid_2';var lve=true;(function(){
947
+ var e=typeof navigator!=="undefined"&&!/Opera/.test(navigator.userAgent)&&/WebKit/.test(navigator.userAgent),f={A:1,INPUT:1,TEXTAREA:1,SELECT:1,BUTTON:1},g={Enter:13," ":32},h={A:13,BUTTON:0,CHECKBOX:32,COMBOBOX:13,FILE:0,GRIDCELL:13,LINK:13,LISTBOX:13,MENU:0,MENUBAR:0,MENUITEM:0,MENUITEMCHECKBOX:0,MENUITEMRADIO:0,OPTION:0,RADIO:32,RADIOGROUP:32,RESET:0,SUBMIT:0,SWITCH:32,TAB:0,TREE:13,TREEITEM:13},k={CHECKBOX:!0,FILE:!0,OPTION:!0,RADIO:!0},l={COLOR:!0,DATE:!0,DATETIME:!0,"DATETIME-LOCAL":!0,EMAIL:!0,MONTH:!0,NUMBER:!0,PASSWORD:!0,RANGE:!0,SEARCH:!0,TEL:!0,TEXT:!0,TEXTAREA:!0,TIME:!0,URL:!0,WEEK:!0};document.getElementById(id).onclick=function(){window.xp(this);lve&&window.logVe(this)};document.getElementById(id).onkeydown=function(d){var c=d.which||d.keyCode;!c&&d.key&&(c=g[d.key]);e&&c===3&&(c=13);if(c!==13&&c!==32)c=!1;else{var a=d.target;!a.getAttribute&&a.parentNode&&(a=a.parentNode);var b;if(!(b=d.type!=="keydown")){if(b="getAttribute"in a)b=!((a.getAttribute("type")||a.tagName).toUpperCase()in l);b=!(b&&!(a.tagName.toUpperCase()==="BUTTON"||a.type&&a.type.toUpperCase()==="FILE")&&!a.isContentEditable)}(b=b||d.ctrlKey||d.shiftKey||d.altKey||d.metaKey||(a.getAttribute("type")||
948
+ a.tagName).toUpperCase()in k&&c===32)||((b=a.tagName in f)||(b=a.getAttributeNode("tabindex"),b=b!=null&&b.specified),b=!(b&&!a.disabled));if(b)c=!1;else{b=(a.getAttribute("role")||a.type||a.tagName).toUpperCase();var m=!(b in h)&&c===13;a=a.tagName.toUpperCase()!=="INPUT"||!!a.type;c=(h[b]%c===0||m)&&a}}c&&(d.preventDefault(),window.xp(this),lve&&window.logVe(this))};}).call(this);})();})();(function(){window.jsl.dh('accdef_3','\x3cdiv\x3e\x3cdiv style\x3d\x22padding-bottom:12px;padding-top:0px\x22 class\x3d\x22hwc kCrYT\x22\x3e\x3cdiv class\x3d\x22yStFkb\x22\x3e\x3cdiv class\x3d\x22Gx5Zad xpd EtOod pkphOe\x22\x3e\x3cdiv class\x3d\x22kCrYT\x22\x3e\x3cdiv class\x3d\x22PqksIc nRlVm\x22\x3e\x3cdiv class\x3d\x22BNeawe\x22\x3e\x3cdiv\x3e\x3cdiv class\x3d\x22BNeawe\x22\x3eThe most recent confirmed nuclear test occurred in \x3cspan class\x3d\x22FCUp0c rQMQod\x22\x3eSeptember 2017\x3c/span\x3e in North Korea.\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv class\x3d\x22x54gtf\x22\x3e\x3c/div\x3e\x3cdiv class\x3d\x22kCrYT\x22\x3e\x3ca href\x3d\x22/url?q\x3dhttps://en.wikipedia.org/wiki/Nuclear_weapons_testing\x26amp;sa\x3dU\x26amp;ved\x3d2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAAQDQ\x26amp;usg\x3dAOvVaw1P9zXePCpT1j5CnHbMa8Mu\x22 data-ved\x3d\x222ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAAQDQ\x22\x3e\x3cspan\x3e\x3cdiv class\x3d\x22BNeawe vvjwJb AP7Wnd\x22\x3e\x3cspan class\x3d\x22rQMQod Xb5VRe\x22\x3eNuclear weapons testing - Wikipedia\x3c/span\x3e\x3c/div\x3e\x3c/span\x3e\x3cspan\x3e\x3cdiv class\x3d\x22BNeawe UPmit AP7Wnd\x22\x3een.wikipedia.org \u203a wiki \u203a Nuclear_weapons_testing\x3c/div\x3e\x3c/span\x3e\x3c/a\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv\x3e\x3cdiv class\x3d\x22P1NWSe\x22\x3e\x3cdiv class\x3d\x22wOMIed nkPlDb\x22\x3e\x3cspan class\x3d\x22JhFlyf VQFmSd\x22\x3e\x3ca class\x3d\x22f4J0H\x22 href\x3d\x22https://www.google.com/search?sca_esv\x3d57cb6114f464605f\x26amp;sca_upv\x3d1\x26amp;ie\x3dUTF-8\x26amp;ei\x3djmTxZrq_Hpac0-kPyvDOwQk\x26amp;q\x3dWhat+was+the+most+recent+nuclear+bomb+used?\x26amp;sa\x3dX\x26amp;ved\x3d2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQzmd6BAgAEA4\x22 data-ved\x3d\x222ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQzmd6BAgAEA4\x22\x3eMore results\x3c/a\x3e\x3c/span\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e');})();(function(){(function(){var id='tsuid_3';var lve=true;(function(){
949
+ var e=typeof navigator!=="undefined"&&!/Opera/.test(navigator.userAgent)&&/WebKit/.test(navigator.userAgent),f={A:1,INPUT:1,TEXTAREA:1,SELECT:1,BUTTON:1},g={Enter:13," ":32},h={A:13,BUTTON:0,CHECKBOX:32,COMBOBOX:13,FILE:0,GRIDCELL:13,LINK:13,LISTBOX:13,MENU:0,MENUBAR:0,MENUITEM:0,MENUITEMCHECKBOX:0,MENUITEMRADIO:0,OPTION:0,RADIO:32,RADIOGROUP:32,RESET:0,SUBMIT:0,SWITCH:32,TAB:0,TREE:13,TREEITEM:13},k={CHECKBOX:!0,FILE:!0,OPTION:!0,RADIO:!0},l={COLOR:!0,DATE:!0,DATETIME:!0,"DATETIME-LOCAL":!0,EMAIL:!0,MONTH:!0,NUMBER:!0,PASSWORD:!0,RANGE:!0,SEARCH:!0,TEL:!0,TEXT:!0,TEXTAREA:!0,TIME:!0,URL:!0,WEEK:!0};document.getElementById(id).onclick=function(){window.xp(this);lve&&window.logVe(this)};document.getElementById(id).onkeydown=function(d){var c=d.which||d.keyCode;!c&&d.key&&(c=g[d.key]);e&&c===3&&(c=13);if(c!==13&&c!==32)c=!1;else{var a=d.target;!a.getAttribute&&a.parentNode&&(a=a.parentNode);var b;if(!(b=d.type!=="keydown")){if(b="getAttribute"in a)b=!((a.getAttribute("type")||a.tagName).toUpperCase()in l);b=!(b&&!(a.tagName.toUpperCase()==="BUTTON"||a.type&&a.type.toUpperCase()==="FILE")&&!a.isContentEditable)}(b=b||d.ctrlKey||d.shiftKey||d.altKey||d.metaKey||(a.getAttribute("type")||
950
+ a.tagName).toUpperCase()in k&&c===32)||((b=a.tagName in f)||(b=a.getAttributeNode("tabindex"),b=b!=null&&b.specified),b=!(b&&!a.disabled));if(b)c=!1;else{b=(a.getAttribute("role")||a.type||a.tagName).toUpperCase();var m=!(b in h)&&c===13;a=a.tagName.toUpperCase()!=="INPUT"||!!a.type;c=(h[b]%c===0||m)&&a}}c&&(d.preventDefault(),window.xp(this),lve&&window.logVe(this))};}).call(this);})();})();(function(){window.jsl.dh('accdef_5','\x3cdiv\x3e\x3cdiv style\x3d\x22padding-bottom:12px;padding-top:0px\x22 class\x3d\x22hwc kCrYT\x22\x3e\x3cdiv class\x3d\x22yStFkb\x22\x3e\x3cdiv class\x3d\x22Gx5Zad xpd EtOod pkphOe\x22\x3e\x3cdiv class\x3d\x22kCrYT\x22\x3e\x3cdiv class\x3d\x22PqksIc nRlVm\x22\x3e\x3cdiv class\x3d\x22BNeawe\x22\x3e\x3cdiv\x3e\x3cdiv class\x3d\x22BNeawe\x22\x3eToday, \x3cspan class\x3d\x22FCUp0c rQMQod\x22\x3ethe United States deploys 1,419 and Russia deploys 1,549 strategic warheads on several hundred bombers and missiles\x3c/span\x3e, and are modernizing their nuclear delivery systems. Warheads are counted using the provisions of the New START agreement, which was extended for 5 years in January 2021.\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv class\x3d\x22x54gtf\x22\x3e\x3c/div\x3e\x3cdiv class\x3d\x22kCrYT\x22\x3e\x3ca href\x3d\x22/url?q\x3dhttps://www.armscontrol.org/factsheets/nuclear-weapons-who-has-what-glance\x26amp;sa\x3dU\x26amp;ved\x3d2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAAQFA\x26amp;usg\x3dAOvVaw1HnfthCBFyqDAARQfr58KV\x22 data-ved\x3d\x222ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAAQFA\x22\x3e\x3cspan\x3e\x3cdiv class\x3d\x22BNeawe vvjwJb AP7Wnd\x22\x3e\x3cspan class\x3d\x22rQMQod Xb5VRe\x22\x3eNuclear Weapons: Who Has What at a Glance\x3c/span\x3e\x3c/div\x3e\x3c/span\x3e\x3cspan\x3e\x3cdiv class\x3d\x22BNeawe UPmit AP7Wnd\x22\x3ewww.armscontrol.org \u203a factsheets \u203a nuclear-weapons-who-has-what-glance\x3c/div\x3e\x3c/span\x3e\x3c/a\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv\x3e\x3cdiv class\x3d\x22P1NWSe\x22\x3e\x3cdiv class\x3d\x22wOMIed nkPlDb\x22\x3e\x3cspan class\x3d\x22JhFlyf VQFmSd\x22\x3e\x3ca class\x3d\x22f4J0H\x22 href\x3d\x22https://www.google.com/search?sca_esv\x3d57cb6114f464605f\x26amp;sca_upv\x3d1\x26amp;ie\x3dUTF-8\x26amp;ei\x3djmTxZrq_Hpac0-kPyvDOwQk\x26amp;q\x3dIs+there+an+atomic+bomb+today?\x26amp;sa\x3dX\x26amp;ved\x3d2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQzmd6BAgAEBU\x22 data-ved\x3d\x222ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQzmd6BAgAEBU\x22\x3eMore results\x3c/a\x3e\x3c/span\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e');})();(function(){(function(){var id='tsuid_4';var lve=true;(function(){
951
+ var e=typeof navigator!=="undefined"&&!/Opera/.test(navigator.userAgent)&&/WebKit/.test(navigator.userAgent),f={A:1,INPUT:1,TEXTAREA:1,SELECT:1,BUTTON:1},g={Enter:13," ":32},h={A:13,BUTTON:0,CHECKBOX:32,COMBOBOX:13,FILE:0,GRIDCELL:13,LINK:13,LISTBOX:13,MENU:0,MENUBAR:0,MENUITEM:0,MENUITEMCHECKBOX:0,MENUITEMRADIO:0,OPTION:0,RADIO:32,RADIOGROUP:32,RESET:0,SUBMIT:0,SWITCH:32,TAB:0,TREE:13,TREEITEM:13},k={CHECKBOX:!0,FILE:!0,OPTION:!0,RADIO:!0},l={COLOR:!0,DATE:!0,DATETIME:!0,"DATETIME-LOCAL":!0,EMAIL:!0,MONTH:!0,NUMBER:!0,PASSWORD:!0,RANGE:!0,SEARCH:!0,TEL:!0,TEXT:!0,TEXTAREA:!0,TIME:!0,URL:!0,WEEK:!0};document.getElementById(id).onclick=function(){window.xp(this);lve&&window.logVe(this)};document.getElementById(id).onkeydown=function(d){var c=d.which||d.keyCode;!c&&d.key&&(c=g[d.key]);e&&c===3&&(c=13);if(c!==13&&c!==32)c=!1;else{var a=d.target;!a.getAttribute&&a.parentNode&&(a=a.parentNode);var b;if(!(b=d.type!=="keydown")){if(b="getAttribute"in a)b=!((a.getAttribute("type")||a.tagName).toUpperCase()in l);b=!(b&&!(a.tagName.toUpperCase()==="BUTTON"||a.type&&a.type.toUpperCase()==="FILE")&&!a.isContentEditable)}(b=b||d.ctrlKey||d.shiftKey||d.altKey||d.metaKey||(a.getAttribute("type")||
952
+ a.tagName).toUpperCase()in k&&c===32)||((b=a.tagName in f)||(b=a.getAttributeNode("tabindex"),b=b!=null&&b.specified),b=!(b&&!a.disabled));if(b)c=!1;else{b=(a.getAttribute("role")||a.type||a.tagName).toUpperCase();var m=!(b in h)&&c===13;a=a.tagName.toUpperCase()!=="INPUT"||!!a.type;c=(h[b]%c===0||m)&&a}}c&&(d.preventDefault(),window.xp(this),lve&&window.logVe(this))};}).call(this);})();})();(function(){window.jsl.dh('accdef_7','\x3cdiv\x3e\x3cdiv style\x3d\x22padding-bottom:12px;padding-top:0px\x22 class\x3d\x22hwc kCrYT\x22\x3e\x3cdiv class\x3d\x22yStFkb\x22\x3e\x3cdiv class\x3d\x22Gx5Zad xpd EtOod pkphOe\x22\x3e\x3cdiv class\x3d\x22kCrYT\x22\x3e\x3cdiv class\x3d\x22PqksIc nRlVm\x22\x3e\x3cdiv class\x3d\x22BNeawe\x22\x3e\x3cdiv\x3e\x3cdiv class\x3d\x22BNeawe\x22\x3e\x3cspan class\x3d\x22FCUp0c rQMQod\x22\x3eThe radiation in Hiroshima and Nagasaki today is on a par with the extremely low levels of background radiation (natural radioactivity) present anywhere on Earth\x3c/span\x3e. It has no effect on human bodies.\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv class\x3d\x22x54gtf\x22\x3e\x3c/div\x3e\x3cdiv class\x3d\x22kCrYT\x22\x3e\x3ca href\x3d\x22/url?q\x3dhttps://www.city.hiroshima.lg.jp/site/english/9809.html\x26amp;sa\x3dU\x26amp;ved\x3d2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAAQGw\x26amp;usg\x3dAOvVaw1LbNHAdp2_guVpWELb3m-G\x22 data-ved\x3d\x222ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQFnoECAAQGw\x22\x3e\x3cspan\x3e\x3cdiv class\x3d\x22BNeawe vvjwJb AP7Wnd\x22\x3e\x3cspan class\x3d\x22rQMQod Xb5VRe\x22\x3eQ. Is there still radiation in Hiroshima and Nagasaki? - \u5e83\u5cf6\u5e02\x3c/span\x3e\x3c/div\x3e\x3c/span\x3e\x3cspan\x3e\x3cdiv class\x3d\x22BNeawe UPmit AP7Wnd\x22\x3ewww.city.hiroshima.lg.jp \u203a site \u203a english\x3c/div\x3e\x3c/span\x3e\x3c/a\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv\x3e\x3cdiv class\x3d\x22P1NWSe\x22\x3e\x3cdiv class\x3d\x22wOMIed nkPlDb\x22\x3e\x3cspan class\x3d\x22JhFlyf VQFmSd\x22\x3e\x3ca class\x3d\x22f4J0H\x22 href\x3d\x22https://www.google.com/search?sca_esv\x3d57cb6114f464605f\x26amp;sca_upv\x3d1\x26amp;ie\x3dUTF-8\x26amp;ei\x3djmTxZrq_Hpac0-kPyvDOwQk\x26amp;q\x3dIs+Hiroshima+still+radioactive?\x26amp;sa\x3dX\x26amp;ved\x3d2ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQzmd6BAgAEBw\x22 data-ved\x3d\x222ahUKEwi6vv3kjdmIAxUWzjQHHUq4M5gQzmd6BAgAEBw\x22\x3eMore results\x3c/a\x3e\x3c/span\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e');})();if (!google.stvsc){google.drty && google.drty(undefined,true);}
953
+ </script>
954
+ </body>
955
+ </html>
tools/tools.py ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import tools.webScraper as WS
3
+ import time
4
+
5
+ from dotenv import load_dotenv
6
+ load_dotenv()
7
+
8
+
9
+ def getGoogleSearchResults(query: str):
10
+ startTime = time.time()
11
+ results = WS.scrapeGoogleSearch(query)
12
+ timeTaken = time.time() - startTime
13
+ return {
14
+ "response": results,
15
+ "display": {
16
+ "text": f"Searched Google [{round(timeTaken * 1000)} ms]",
17
+ "icon": "icons/google_search.png",
18
+ }
19
+ }
20
+
21
+
22
+ toolsInfo = {
23
+ "getGoogleSearchResults": {
24
+ "func": getGoogleSearchResults,
25
+ "schema": {
26
+ "type": "function",
27
+ "function": {
28
+ "name": "getGoogleSearchResults",
29
+ "description": "Get google search results for a given query",
30
+ "parameters": {
31
+ "type": "object",
32
+ "properties": {
33
+ "query": {
34
+ "type": "string",
35
+ "description": "Query to search for"
36
+ }
37
+ },
38
+ "required": ["query"]
39
+ }
40
+ }
41
+ },
42
+ },
43
+
44
+ }
tools/webScraper.py ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from urllib.parse import parse_qs, urlparse
2
+ from bs4 import BeautifulSoup
3
+ import requests
4
+
5
+
6
+ def scrapeGoogleSearch(query):
7
+ finalResponse = []
8
+
9
+ searchUrl = f"https://www.google.com/search?q={query}"
10
+ response = requests.get(searchUrl)
11
+ if response.status_code == 200:
12
+ soup = BeautifulSoup(response.text, 'html.parser')
13
+ with open('soup_dump.html', 'w', encoding='utf-8') as file:
14
+ file.write(soup.prettify())
15
+
16
+ results = soup.find('body')
17
+ mainDiv = soup.find('div', attrs={'id': 'main'})
18
+ answerDiv = (
19
+ mainDiv.select_one('div.PqksIc')
20
+ or mainDiv.select_one('div.BNeawe.iBp4i')
21
+ )
22
+ if answerDiv:
23
+ citationDateDiv = answerDiv.select_one('sub.gMUaMb.r0bn4c.rQMQod')
24
+ citationDate = citationDateDiv.text if citationDateDiv else ""
25
+ answerText = answerDiv.text.replace(citationDate, '').strip()
26
+ citationText = f"Citation Date: {citationDate}" if citationDate else ""
27
+ finalResponse.append(f"Verified Answer:\n====\n{answerText}\n{citationText}\n====\n\n")
28
+
29
+ results = mainDiv.select('div.egMi0.kCrYT')
30
+ resultsDesc = mainDiv.select('div.BNeawe.s3v9rd.AP7Wnd .BNeawe.s3v9rd.AP7Wnd:last-child')
31
+
32
+ if results:
33
+ finalResponse.append("Search Results:\n====\n")
34
+
35
+ for (i, result) in enumerate(results[:10]):
36
+ title = result.find('h3').text
37
+ link = result.find('a')['href']
38
+ parsedUrl = urlparse(link)
39
+ urlParams = parse_qs(parsedUrl.query)
40
+ link = urlParams.get('q', [None])[0]
41
+ desc = resultsDesc[i].text
42
+ finalResponse.append(f"Title: {title}")
43
+ finalResponse.append(f"Description: {desc}")
44
+ finalResponse.append(f"Link: {link}\n")
45
+ else:
46
+ print("Failed to retrieve search results.")
47
+
48
+ return "\n".join(finalResponse)
utils.py ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import datetime as DT
3
+ import pytz
4
+
5
+
6
+ def applyCommonStyles():
7
+ st.markdown(
8
+ """
9
+ <head>
10
+ <link href="https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
11
+ </head>
12
+
13
+ <style>
14
+ h1 {
15
+ font-family: 'Raleway';
16
+ }
17
+
18
+ @keyframes blinker {
19
+ 0% {
20
+ opacity: 1;
21
+ }
22
+ 50% {
23
+ opacity: 0.2;
24
+ }
25
+ 100% {
26
+ opacity: 1;
27
+ }
28
+ }
29
+
30
+ .blinking {
31
+ animation: blinker 3s ease-out infinite;
32
+ }
33
+
34
+ .code {
35
+ color: green;
36
+ border-radius: 3px;
37
+ padding: 2px 4px; /* Padding around the text */
38
+ font-family: 'Courier New', Courier, monospace; /* Monospace font */
39
+ }
40
+
41
+ .large {
42
+ font-size: 15px;
43
+ }
44
+
45
+ .bold {
46
+ font-weight: bold;
47
+ }
48
+
49
+ div[aria-label="dialog"] {
50
+ width: 80vw;
51
+ height: 620px;
52
+ }
53
+
54
+ </style>
55
+ """,
56
+ unsafe_allow_html=True
57
+ )
58
+
59
+
60
+ def __nowInIST() -> DT.datetime:
61
+ return DT.datetime.now(pytz.timezone("Asia/Kolkata"))
62
+
63
+
64
+ def pprint(log: str):
65
+ now = __nowInIST()
66
+ now = now.strftime("%Y-%m-%d %H:%M:%S")
67
+ print(f"[{now}] [{st.session_state.ipAddress}] {log}")