helloadhavan/github_issues huggingface dataset:
Repository: nodejs/node
Pull request: src: ensure `v8::Eternal` is empty before setting it

V8 does not check this for us, but this is a requirement of the API.

<!--
Before submitting a pull request, please read:

- the CONTRIBUTING guide at https://github.com/nodejs/node/blob/HEAD/CONTRIBUTING.md
- the commit message formatting guidelines at
  https://github.com/nodejs/node/blob/HEAD/doc/contributing/pull-requests.md#commit-message-guidelines

For code changes:
1. Include tests for any bug fixes or new features.
2. Update documentation if relevant.
3. Ensure that `make -j4 test` (UNIX), or `vcbuild test` (Windows) passes.

If you believe this PR should be highlighted in the Node.js CHANGELOG
please add the `notable-change` label.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.
-->


Changed files:
filename: src/env-inl.h
patch: @@ -839,6 +839,7 @@ void Environment::set_process_exit_handler(
     return PropertyName##_.Get(isolate_);                                      \
   }                                                                            \
   inline void IsolateData::set_##PropertyName(v8::Local<TypeName> value) {     \
+    CHECK(PropertyName##_.IsEmpty());                                          \
     PropertyName##_.Set(isolate_, value);                                      \
   }
   PER_ISOLATE_TEMPLATE_PROPERTIES(V)
Repository: vercel/next.js
Pull request: fix missing flight-router-state-tree header normalization

When we pass the flight-router-state-tree header to the server, we should pass it through the normalizer to ensure we remove things that are client-specific (eg removing "refresh" markers and URLs, which are only used on the client)

Changed files:
filename: packages/next/src/client/components/segment-cache-impl/cache.ts
patch: @@ -71,7 +71,10 @@ import type {
   FlightRouterState,
   NavigationFlightResponse,
 } from '../../../shared/lib/app-router-types'
-import { normalizeFlightData } from '../../flight-data-helpers'
+import {
+  normalizeFlightData,
+  prepareFlightRouterStateForRequest,
+} from '../../flight-data-helpers'
 import { STATIC_STALETIME_MS } from '../router-reducer/prefetch-cache-utils'
 import { pingVisibleLinks } from '../links'
 import { PAGE_SEGMENT_KEY } from '../../../shared/lib/segment'
@@ -1696,9 +1699,8 @@ export async function fetchSegmentPrefetchesUsingDynamicRequest(
   const nextUrl = task.key.nextUrl
   const headers: RequestHeaders = {
     [RSC_HEADER]: '1',
-    [NEXT_ROUTER_STATE_TREE_HEADER]: encodeURIComponent(
-      JSON.stringify(dynamicRequestTree)
-    ),
+    [NEXT_ROUTER_STATE_TREE_HEADER]:
+      prepareFlightRouterStateForRequest(dynamicRequestTree),
   }
   if (nextUrl !== null) {
     headers[NEXT_URL] = nextUrl
Repository: huggingface/transformers
Pull request: Remove skipped tests without parents

# What does this PR do?

Tensorflow tests that were still present! And a function not used anymore after https://github.com/huggingface/transformers/pull/41683 and https://github.com/huggingface/transformers/pull/41688


Changed files:
filename: tests/models/mpnet/test_modeling_mpnet.py
patch: @@ -242,10 +242,6 @@ def test_for_question_answering(self):
         config_and_inputs = self.model_tester.prepare_config_and_inputs()
         self.model_tester.create_and_check_mpnet_for_question_answering(*config_and_inputs)
 
-    @unittest.skip(reason="TFMPNet adds poolers to all models, unlike the PT model class.")
-    def test_tf_from_pt_safetensors(self):
-        return
-
 
 @require_torch
 class MPNetModelIntegrationTest(unittest.TestCase):

filename: tests/models/speech_to_text/test_modeling_speech_to_text.py
patch: @@ -600,10 +600,6 @@ def test_resize_embeddings_untied(self):
     def test_generate_without_input_ids(self):
         pass
 
-    @unittest.skip(reason="Test failing,  @RocketNight is looking into it")
-    def test_tf_from_pt_safetensors(self):
-        pass
-
 
 @require_torch
 @require_torchaudio

filename: tests/models/tapas/test_modeling_tapas.py
patch: @@ -520,10 +520,6 @@ def test_for_sequence_classification(self):
         config_and_inputs = self.model_tester.prepare_config_and_inputs()
         self.model_tester.create_and_check_for_sequence_classification(*config_and_inputs)
 
-    @unittest.skip(reason="tfp is not defined even if installed. FIXME @Arthur in a followup PR!")
-    def test_tf_from_pt_safetensors(self):
-        pass
-
 
 def prepare_tapas_single_inputs_for_inference():
     # Here we prepare a single table-question pair to test TAPAS inference on:

filename: tests/test_modeling_common.py
patch: @@ -1344,14 +1344,6 @@ def test_attention_outputs(self):
                     [self.model_tester.num_attention_heads, encoder_seq_length, encoder_key_length],
                 )
 
-    # This is copied from `torch/testing/_internal/jit_utils.py::clear_class_registry`
-    def clear_torch_jit_class_registry(self):
-        torch._C._jit_clear_class_registry()
-        torch.jit._recursive.concrete_type_store = torch.jit._recursive.ConcreteTypeStore()
-        # torch 1.8 has no `_clear_class_state` in `torch.jit._state`
-        if hasattr(torch.jit._state, "_clear_class_state"):
-            torch.jit._state._clear_class_state()
-
     def test_hidden_states_output(self):
         def check_hidden_states_output(inputs_dict, config, model_class):
             model = model_class(copy.deepcopy(config))
Repository: ollama/ollama
Pull request: fix: store accurate model parameter size

- add test for number formatting
- fix bug where 1B and 1M were not stored correctly
- display 2 decimal points for million param sizes
- display 1 decimal point for billion param sizes

This human conversion is displayed as the parameter size on ollama.com, so it should be in the standard format that model parameter sizes are measured.

Changed files:
filename: format/format.go
patch: @@ -13,12 +13,20 @@ const (
 
 func HumanNumber(b uint64) string {
 	switch {
-	case b > Billion:
-		return fmt.Sprintf("%.0fB", math.Round(float64(b)/Billion))
-	case b > Million:
-		return fmt.Sprintf("%.0fM", math.Round(float64(b)/Million))
-	case b > Thousand:
-		return fmt.Sprintf("%.0fK", math.Round(float64(b)/Thousand))
+	case b >= Billion:
+		number := float64(b) / Billion
+		if number == math.Floor(number) {
+			return fmt.Sprintf("%.0fB", number) // no decimals if whole number
+		}
+		return fmt.Sprintf("%.1fB", number) // one decimal if not a whole number
+	case b >= Million:
+		number := float64(b) / Million
+		if number == math.Floor(number) {
+			return fmt.Sprintf("%.0fM", number) // no decimals if whole number
+		}
+		return fmt.Sprintf("%.2fM", number) // two decimals if not a whole number
+	case b >= Thousand:
+		return fmt.Sprintf("%.0fK", float64(b)/Thousand)
 	default:
 		return fmt.Sprintf("%d", b)
 	}

filename: format/format_test.go
patch: @@ -0,0 +1,34 @@
+package format
+
+import (
+	"testing"
+)
+
+func TestHumanNumber(t *testing.T) {
+
+	type testCase struct {
+		input    uint64
+		expected string
+	}
+
+	testCases := []testCase{
+		{0, "0"},
+		{1000000, "1M"},
+		{125000000, "125M"},
+		{500500000, "500.50M"},
+		{500550000, "500.55M"},
+		{1000000000, "1B"},
+		{2800000000, "2.8B"},
+		{2850000000, "2.9B"},
+		{1000000000000, "1000B"},
+	}
+
+	for _, tc := range testCases {
+		t.Run(tc.expected, func(t *testing.T) {
+			result := HumanNumber(tc.input)
+			if result != tc.expected {
+				t.Errorf("Expected %s, got %s", tc.expected, result)
+			}
+		})
+	}
+}
Repository: ollama/ollama
Pull request: Add macai to list of Web & Desktop integrations

I'm not sure if there is some documented process of making changes in README.md - I was not able to find any instructions, so I'm sorry if I missed something. Please let me know if I should perform some extra steps to propose these changes. Thanks!

Changed files:
filename: README.md
patch: @@ -298,6 +298,7 @@ See the [API documentation](./docs/api.md) for all endpoints.
 - [Lobe Chat](https://github.com/lobehub/lobe-chat) with [Integrating Doc](https://lobehub.com/docs/self-hosting/examples/ollama)
 - [Ollama RAG Chatbot](https://github.com/datvodinh/rag-chatbot.git) (Local Chat with multiple PDFs using Ollama and RAG)
 - [BrainSoup](https://www.nurgo-software.com/products/brainsoup) (Flexible native client with RAG & multi-agent automation)
+- [macai](https://github.com/Renset/macai) (macOS client for Ollama, ChatGPT, and other compatible API back-ends)
 
 ### Terminal
Repository: ggml-org/llama.cpp
Pull request: llama-model : fix Nemotron V2 crash by moving MoE parameters calculation

### Motivation
This PR fixes a regression introduced in build b7418 (support for Nemotron Nano v3 MoE). 

When loading Nemotron Nano v2 (which is a dense Mamba-Attention hybrid, not an MoE), the application crashes with a floating point exception (SIGFPE).

The crash occurs because the code attempts to calculate `n_ff_exp` using `n_ff / n_expert_used` at the top of the `case LLM_ARCH_NEMOTRON_H_MOE` block. For dense models like Nano v2, `n_expert_used` is 0, resulting in a division by zero.

### Changes
- Moved the calculation of `n_ff_exp` and `n_ff_shexp` inside the `if (n_expert != 0)` block. This ensures the division is only performed when the model is actually an MoE architecture.

### Testing
Tested on WSL 2 with `nvidia_NVIDIA-Nemotron-Nano-9B-v2-Q4_K_S.gguf` on CPU. The model now loads correctly without crashing.

Fixes issue #18304

Changed files:
filename: src/llama-model.cpp
patch: @@ -5243,9 +5243,6 @@ bool llama_model::load_tensors(llama_model_loader & ml) {
                     const int64_t n_group    = hparams.ssm_n_group;
                     const int64_t d_in_proj  = 2*d_inner + 2*n_group*d_state + n_ssm_head;
 
-                    const int64_t n_ff_exp = hparams.n_ff_exp ? hparams.n_ff_exp : n_ff / n_expert_used;
-                    const int64_t n_ff_shexp = hparams.n_ff_shexp;
-
                     // embeddings
                     tok_embd = create_tensor(tn(LLM_TENSOR_TOKEN_EMBD, "weight"), {n_embd, n_vocab}, 0);
 
@@ -5297,6 +5294,9 @@ bool llama_model::load_tensors(llama_model_loader & ml) {
                             layer.bo = create_tensor(tn(LLM_TENSOR_ATTN_OUT, "bias",   i), {n_embd},         TENSOR_NOT_REQUIRED);
                         }  else {
                             if (n_expert != 0) {
+                                const int64_t n_ff_exp = hparams.n_ff_exp ? hparams.n_ff_exp : n_ff / n_expert_used;
+                                const int64_t n_ff_shexp = hparams.n_ff_shexp;
+
                                 layer.ffn_gate_inp    = create_tensor(tn(LLM_TENSOR_FFN_GATE_INP,  "weight", i), { n_embd, n_expert}, 0);
                                 layer.ffn_exp_probs_b = create_tensor(tn(LLM_TENSOR_FFN_EXP_PROBS_B, "bias", i), {n_expert         }, 0);
Repository: nodejs/node
Pull request: url: replaced slice with at

I replaced slice(-1) with at(-1) to avoid creating a new collection, since at() directly accesses the element without copying the array.
I did the same for a string in another place — replaced slice(-1) with at(-1) for consistency and simplicity.
<!--
Before submitting a pull request, please read:

- the CONTRIBUTING guide at https://github.com/nodejs/node/blob/HEAD/CONTRIBUTING.md
- the commit message formatting guidelines at
  https://github.com/nodejs/node/blob/HEAD/doc/contributing/pull-requests.md#commit-message-guidelines

For code changes:
1. Include tests for any bug fixes or new features.
2. Update documentation if relevant.
3. Ensure that `make -j4 test` (UNIX), or `vcbuild test` (Windows) passes.

If you believe this PR should be highlighted in the Node.js CHANGELOG
please add the `notable-change` label.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.
-->


Changed files:
filename: lib/url.js
patch: @@ -22,10 +22,12 @@
 'use strict';
 
 const {
+  ArrayPrototypeJoin,
   Boolean,
   Int8Array,
   ObjectAssign,
   ObjectKeys,
+  StringPrototypeAt,
   StringPrototypeCharCodeAt,
   StringPrototypeIndexOf,
   StringPrototypeReplaceAll,
@@ -919,7 +921,7 @@ Url.prototype.resolveObject = function resolveObject(relative) {
   // If a url ENDs in . or .., then it must get a trailing slash.
   // however, if it ends in anything else non-slashy,
   // then it must NOT get a trailing slash.
-  let last = srcPath.slice(-1)[0];
+  let last = srcPath[srcPath.length - 1];
   const hasTrailingSlash = (
     ((result.host || relative.host || srcPath.length > 1) &&
     (last === '.' || last === '..')) || last === '');
@@ -952,7 +954,7 @@ Url.prototype.resolveObject = function resolveObject(relative) {
     srcPath.unshift('');
   }
 
-  if (hasTrailingSlash && (srcPath.join('/').slice(-1) !== '/')) {
+  if (hasTrailingSlash && StringPrototypeAt(ArrayPrototypeJoin(srcPath, '/'), -1) !== '/') {
     srcPath.push('');
   }
Repository: vercel/next.js
Pull request: Revert "Fix flakey overlay feedback test"

Reverts https://github.com/vercel/next.js/pull/84662

The referenced failure was not flake but consistent failure:
```
    expect(received).toEqual(expected) // deep equality

    - Expected  - 1
    + Received  + 1

      Array [
    -   "/__nextjs_error_feedback?errorCode=E794&wasHelpful=true",
    +   "/__nextjs_error_feedback?errorCode=E209&wasHelpful=true",
```

-- https://github.com/vercel/next.js/actions/runs/18360376124/job/52302677520?pr=84500

The proper fix was in https://github.com/vercel/next.js/pull/84671


 If feedback is not registered immediately, we'd be looking at a severe perf regression that's worth investigating instead of hiding it behind `retry`.

Changed files:
filename: test/development/error-overlay/index.test.tsx
patch: @@ -1,5 +1,5 @@
 import { nextTestSetup } from 'e2e-utils'
-import { assertHasRedbox, retry } from 'next-test-utils'
+import { assertHasRedbox } from 'next-test-utils'
 
 describe('DevErrorOverlay', () => {
   const { next } = nextTestSetup({
@@ -33,17 +33,15 @@ describe('DevErrorOverlay', () => {
     await browser.elementByCss('button').click() // clicked "break on client"
     await browser.getByRole('button', { name: 'Mark as helpful' }).click()
 
-    await retry(async () => {
-      expect(
-        await browser
-          .getByRole('region', { name: 'Error feedback' })
-          .getByRole('status')
-          .textContent()
-      ).toEqual('Thanks for your feedback!')
-      expect(feedbackRequests).toEqual([
-        '/__nextjs_error_feedback?errorCode=E40&wasHelpful=true',
-      ])
-    })
+    expect(
+      await browser
+        .getByRole('region', { name: 'Error feedback' })
+        .getByRole('status')
+        .textContent()
+    ).toEqual('Thanks for your feedback!')
+    expect(feedbackRequests).toEqual([
+      '/__nextjs_error_feedback?errorCode=E40&wasHelpful=true',
+    ])
   })
 
   it('sends feedback when clicking not helpful button', async () => {
@@ -62,17 +60,15 @@ describe('DevErrorOverlay', () => {
     await browser.elementByCss('button').click() // clicked "break on client"
     await browser.getByRole('button', { name: 'Mark as not helpful' }).click()
 
-    await retry(async () => {
-      expect(
-        await browser
-          .getByRole('region', { name: 'Error feedback' })
-          .getByRole('status')
-          .textContent()
-      ).toEqual('Thanks for your feedback!')
-      expect(feedbackRequests).toEqual([
-        '/__nextjs_error_feedback?errorCode=E40&wasHelpful=false',
-      ])
-    })
+    expect(
+      await browser
+        .getByRole('region', { name: 'Error feedback' })
+        .getByRole('status')
+        .textContent()
+    ).toEqual('Thanks for your feedback!')
+    expect(feedbackRequests).toEqual([
+      '/__nextjs_error_feedback?errorCode=E40&wasHelpful=false',
+    ])
   })
 
   it('loads fonts successfully', async () => {
Repository: ggml-org/llama.cpp
Pull request: server: fix crash with model not having BOS/EOS

Fix https://github.com/ggml-org/llama.cpp/issues/18285

Spot this bug when I'm using `llama-server -hf THUDM/glm-edge-v-5b-gguf:Q4_K_M`

Changed files:
filename: tools/server/server-context.cpp
patch: @@ -2784,6 +2784,12 @@ server_response_reader server_context::get_response_reader() {
 
 server_context_meta server_context::get_meta() const {
     auto tool_use_src = common_chat_templates_source(impl->chat_templates.get(), "tool_use");
+
+    auto bos_id = llama_vocab_bos(impl->vocab);
+    auto eos_id = llama_vocab_eos(impl->vocab);
+    auto bos_token_str = bos_id != LLAMA_TOKEN_NULL ? common_token_to_piece(impl->ctx, bos_id, true) : "";
+    auto eos_token_str = eos_id != LLAMA_TOKEN_NULL ? common_token_to_piece(impl->ctx, eos_id, true) : "";
+
     return server_context_meta {
         /* build_info             */ build_info,
         /* model_name             */ impl->model_name,
@@ -2798,8 +2804,8 @@ server_context_meta server_context::get_meta() const {
         /* chat_template          */ common_chat_templates_source(impl->chat_templates.get()),
         /* chat_template_tool_use */ tool_use_src ? tool_use_src : "",
 
-        /* bos_token_str          */ common_token_to_piece(impl->ctx, llama_vocab_bos(impl->vocab), true),
-        /* eos_token_str          */ common_token_to_piece(impl->ctx, llama_vocab_eos(impl->vocab), true),
+        /* bos_token_str          */ bos_token_str,
+        /* eos_token_str          */ eos_token_str,
         /* fim_pre_token          */ llama_vocab_fim_pre(impl->vocab),
         /* fim_sub_token          */ llama_vocab_fim_suf(impl->vocab),
         /* fim_mid_token          */ llama_vocab_fim_mid(impl->vocab),
Repository: ollama/ollama
Pull request: types/model: fix parser for empty values

empty values were incorrectly seen as `\n` after parsing, formatting, and reparsing

Changed files:
filename: types/model/file.go
patch: @@ -249,10 +249,6 @@ func quote(s string) string {
 }
 
 func unquote(s string) (string, bool) {
-	if len(s) == 0 {
-		return "", false
-	}
-
 	// TODO: single quotes
 	if len(s) >= 3 && s[:3] == `"""` {
 		if len(s) >= 6 && s[len(s)-3:] == `"""` {

filename: types/model/file_test.go
patch: @@ -489,6 +489,10 @@ You are a store greeter. Always responsed with "Hello!".
 """
 MESSAGE user Hey there!
 MESSAGE assistant Hello, I want to parse all the things!
+`,
+		`
+FROM foo
+SYSTEM ""
 `,
 	}
Repository: huggingface/transformers
Pull request: Enable faiss-cpu on Windows

# What does this PR do?

The current faiss-cpu supports Windows. Therefore the PR enables that test case.

Changed files:
filename: setup.py
patch: @@ -67,7 +67,6 @@
 9. Copy the release notes from RELEASE.md to the tag in github once everything is looking hunky-dory.
 """
 
-import os
 import re
 import shutil
 from pathlib import Path
@@ -261,10 +260,7 @@ def run(self):
 extras["accelerate"] = deps_list("accelerate")
 extras["hf_xet"] = deps_list("hf_xet")
 
-if os.name == "nt":  # windows
-    extras["retrieval"] = deps_list("datasets")  # faiss is not supported on windows
-else:
-    extras["retrieval"] = deps_list("faiss-cpu", "datasets")
+extras["retrieval"] = deps_list("faiss-cpu", "datasets")
 
 extras["tokenizers"] = deps_list("tokenizers")
 extras["ftfy"] = deps_list("ftfy")
Repository: facebook/react
Pull request: [DevTools] Separate RDT Fusebox into single-panel entry points

## Summary

Separate function entry points for `react-devtools-fusebox` into `initializeComponents` and `initializeProfiler`. The motivation behind this change is to separate these tabs into top-level Chrome DevTools panels (aligned with web) in React Native.

## How did you test this change?

- Build `react-devtools-fusebox` and load into local [rn-chrome-devtools-frontend](https://github.com/facebookexperimental/rn-chrome-devtools-frontend) project with updated call sites.

<img width="1933" alt="image" src="https://github.com/user-attachments/assets/202d32a1-b8da-4936-b0e1-04875a30f256">

<img width="1949" alt="image" src="https://github.com/user-attachments/assets/39dbe154-989c-4f76-b103-aa19f07a3b9c">

✅ Tabs can be separately initialised in individual Chrome DevTools panels

Changed files:
filename: packages/react-devtools-fusebox/src/frontend.d.ts
patch: @@ -50,4 +50,5 @@ export type InitializationOptions = {
   canViewElementSourceFunction?: CanViewElementSource,
 };
 
-export function initialize(node: Element | Document, options: InitializationOptions): void;
+export function initializeComponents(node: Element | Document, options: InitializationOptions): void;
+export function initializeProfiler(node: Element | Document, options: InitializationOptions): void;

filename: packages/react-devtools-fusebox/src/frontend.js
patch: @@ -19,9 +19,10 @@ import type {
 } from 'react-devtools-shared/src/frontend/types';
 import type {FrontendBridge} from 'react-devtools-shared/src/bridge';
 import type {
+  CanViewElementSource,
+  TabID,
   ViewAttributeSource,
   ViewElementSource,
-  CanViewElementSource,
 } from 'react-devtools-shared/src/devtools/views/DevTools';
 import type {Config} from 'react-devtools-shared/src/devtools/store';
 
@@ -51,10 +52,11 @@ type InitializationOptions = {
   canViewElementSourceFunction?: CanViewElementSource,
 };
 
-export function initialize(
+function initializeTab(
+  tab: TabID,
   contentWindow: Element | Document,
   options: InitializationOptions,
-): void {
+) {
   const {
     bridge,
     store,
@@ -70,7 +72,8 @@ export function initialize(
       bridge={bridge}
       browserTheme={theme}
       store={store}
-      showTabBar={true}
+      showTabBar={false}
+      overrideTab={tab}
       warnIfLegacyBackendDetected={true}
       enabledInspectedElementContextMenu={true}
       viewAttributeSourceFunction={viewAttributeSourceFunction}
@@ -79,3 +82,17 @@ export function initialize(
     />,
   );
 }
+
+export function initializeComponents(
+  contentWindow: Element | Document,
+  options: InitializationOptions,
+): void {
+  initializeTab('components', contentWindow, options);
+}
+
+export function initializeProfiler(
+  contentWindow: Element | Document,
+  options: InitializationOptions,
+): void {
+  initializeTab('profiler', contentWindow, options);
+}