Dating a COVID conspiracy theorist, and more advice from Dear Prudie. | #facebookdating | #tinder | #pof

Photo illustration by Slate. Photo by Kate Trifo on Unsplash and
master1305/iStock/Getty Images Plus.

Slate is now asking those who read the most to support our journalism more directly by subscribing to Slate Plus. Learn more.

Danny is online weekly to chat live with readers. Here’s an edited transcript of this week’s chat.

Q. My ex flouted the rules, got COVID, and now wants me back: My girlfriend of two years lost her job at the very beginning of the pandemic and has been in a downward spiral since then. With so much extra time on her hands, she’s been diving headfirst into a variety of COVID conspiracy sites and profiles on social media. She used to be fairly moderate but has seemingly become more conservative overnight. A few weeks ago, she began “protesting” mask-wearing by purposefully not wearing her mask in public spaces. This is technically legal—our state is not one that mandates mask-wearing statewide—but I was livid. I couldn’t believe how selfish and ignorant she was being by ignoring science in favor of her “freedoms.” I moved out temporarily because I was so enraged. Well, she got COVID (to no one’s surprise). She recovered quickly and has apparently seen the light … and wants me to move back in. She says she now realizes how wrong she was for not wearing her mask and has even deleted all her anti-masker friends on social media. I just … can’t get past this. I am horrified by her thoughtlessness and, to be honest, very unnerved by how quickly she changed from a normal person into a conspiracy theorist who put her own—and others’—health in danger. But now I feel like a jerk for breaking up with her as she’s recovering from COVID and unemployed. She is also claiming that her deep dive into conspiracy theories was the result of her unemployment-driven depression. Prudie, I can definitely confirm that she was depressed. Which makes me feel even worse about breaking things off right now. What should I do?

A: If breakups were contingent upon both parties feeling good and doing well, almost no one would ever break up with anyone else. The fact that your girlfriend now understands she was depressed at the beginning of the pandemic means that she should talk to her doctor and try to schedule a consult with a therapist, a psychiatrist, or possibly both—not that her ex is somehow obligated to reunite with her because nothing she said or did while she was depressed “counts.” You do not owe someone a romantic relationship simply because they are suffering or have received a new mental health diagnosis, and it sounds pretty clear that you are no longer interested in this woman romantically. Wish her the best with her continued recovery, but don’t move back in with her just because you feel guilty.

How to Get Advice From Prudie:

Send questions for publication to (Questions may be edited.)

Join the live chat Mondays at noon. Submit your questions and comments here before or during the discussion.

Call the voicemail of the Dear Prudence podcast at 401-371-DEAR (3327) to hear your question answered on a future episode of the show.

Q. Am I being overemotional and possessive? My husband of eight years was briefly married previously. He got a divorce when she got pregnant with another man’s baby. He doesn’t talk about her much, but when he does, he speaks disparagingly. For as long as I’ve known him he has mentioned that she texts him periodically to tell him how much she regrets her choices, that he’s better than her current boyfriend, or, oddly enough, that she wants my husband to be her children’s godfather. Her messages always end in her asking him to come over and have a beer with her that evening. He never takes her up on her offers but always offers a specific excuse as to why he can’t (work, previous plans, etc.). My husband is a flirty guy, and I have no problem with that in general. I also don’t mind that he has maintained friendships with a number of his ex-girlfriends. Her messages with him bug me, though. I spoke with him about it last year and told him that it feels disrespectful to me for her to say the sorts of things she does and then invite him—and only him—to drink with her. He responded by assuring me that she means nothing to him and that he likes the feeling of her chasing after him after what she did.

This week I was using his laptop when a message popped up. Forgetting I wasn’t on my own computer, I opened it. It was a text from the ex. I was about to close it and move on when I realized she was responding to a message he had initiated. He opened with a flirty greeting, told her he was thinking about her, and then, when she once again asked him over, responded by saying that he couldn’t that night but soon. I told him what I saw and he responded as if I were being clingy and possessive. He told me he doesn’t think it’s wrong for him to have fond memories of her (neither do I—that wasn’t the point), that I was misunderstanding his greeting (it was silly, not flirty!), and that I shouldn’t be upset because he declined her invitation. I know for certain they haven’t seen each other in person for at least four years, so I’m not worried about some sort of affair, but am I wrong to have my feelings hurt by this? He has definitely insinuated that I’m overreacting.

A: To recap your husband’s position: Baby, I have nothing but contempt for my ex. I think she’s a loser, and I enjoy the sense of power I feel whenever she begs me to come have a beer and stand godfather to her latest kid. Watching her fall all over herself to try to win my approval gives me a thrill when nothing else can. This is a healthy, appropriate relationship to have with an ex, and you should definitely think of it as mere flirtatiousness and not a weird, cruelty-tinged power game at all. Ah, you’ve seen my latest messages to her, about how much I’ve been thinking of her and can’t wait to see her soon? Well, how clingy of you. Also, you don’t know how to parse the word Hello, and you’re only allowed to be upset with me if I’m actually at her house.

The problem was never that your husband had “fond” memories of an ex—the problem was that he seemed to pride himself on maintaining a relationship with someone he despised, went out of his way to disparage to you, and strings along with repeated promises that they’ll get together soon. And he lies to you about the nature and tone of their conversations, then compounds that lie by claiming he’s simply always been “fond” of her when he’s actually gone out of his way to convince you he thinks she’s pathetic. It’s an insult to your intelligence, and you have every reason to be hurt by it.

Q. Found wife’s nudes online: Over 20 years ago, during the first few months we were dating, my now-wife posed nude for a photographer friend of hers. I freaked out and we had a huge fight over it. At the time I thought I was destined for a political career and told her I could not be serious with a girl whose nude pictures might eventually be leaked. I wanted her to get the pictures and negatives back from her friend but she refused. She said it was just art and it would not leave his possession. I got over it and today don’t care at all. I was right about one thing, though—they got out. I just stumbled across them online, ironically because I find women like my wife attractive. The pictures don’t have her actual name but are labeled with her nickname, suggesting the original friend posted them. Should I tell her I found them? I don’t want to bring up old fights, especially ones where my views have changed. At the same time, I feel she has a right to know.

A: I don’t know that it would revive an old fight to tell her you saw her old pictures, especially if you broached the subject with her as you did with me and apologized for having wielded an imaginary career in politics that never actually materialized against her for doing a nude photo shoot. She may or may not be upset to hear that they’re available online now, and you may want to explore your options in trying to get them taken down, but if your thoughts have changed on the subject and you want to apologize for being so highhanded decades ago, that might prove meaningful now.

Q. Setting boundaries: My wife’s family (all adults) loves taking annual vacations. However, for the past several years, one of my wife’s brothers inevitably starts a fight with her. (It is usually about sleeping arrangements and who gets what bed.) This year will be my first family vacation with them, and we’re all quarantining for two weeks prior to going to a house in the middle of nowhere for a week.

In advance of this trip, my wife said she wouldn’t be fighting over sleeping arrangements and that if it were a problem we wouldn’t come. (We discussed this in advance, and I fully support her.) Now it feels like all hell is breaking loose and like the family thinks she’s overreacting—something they always say to her—and “misremembering events.” (I wasn’t at those past fights but this seems … not true based on what I’ve heard.) I don’t know how to best respond to her family, and I don’t know if we should be setting different or better boundaries rather than announcing we won’t engage in discussions we know will lead to fights. I also don’t know if we should even go on this trip if it’ll be a constant fight or if we pretend nothing is happening. But if we opt out, that’ll create a whole other set of drama.

A: It sounds like you’re going to be in a big, confusing family fight either way. (What events do your wife’s relatives now claim she’s “misremembering,” and why is “all hell breaking loose” over it?) If your choices are “be in a big, confusing family fight in our own home” or “be in a big, confusing family fight in a cabin in the middle of nowhere with my wife’s family,” I think Option A is categorically better than Option B. Anytime someone says, We’ve been fighting so much that you owe it to come fight with me more frequently and intimately instead of We’ve been fighting so much lately that it makes sense you need some space—let’s talk again later when we’ve all cooled down, your defenses should be up. Skip the trip, offer to pay for your share of the deposit if your nonattendance will put the rest of them in a financial bind, and start planning your own vacation. Vacations should be actually relaxing and fun, not a time of year you set aside to really get into conflict with your in-laws.

Q. Mom wants back in: Several years ago, my mother told me I wouldn’t be welcome for Thanksgiving if I did not get rid of my facial hair. Perhaps it seems benign, but I am a trans man and she has had a long and storied history of opposition to that part of my life. She has gone from furious, to as severely disapproving as possible, to “tolerant” (trying to ignore it), to actively sabotaging me. She had previously expressed that it was “very not cool” of me to have a beard, but she had also done things like take all of the money from my college savings (since it was “technically the family’s money” anyway) and gone out of her way to misgender me in front of strangers, etc. That was a breaking point. We have not really talked since.

She has occasionally tried to get back in my life and I’m unsure how to deal with it. I wonder if an apology would even be enough. Last time she tried to contact me, she said something about how “we won’t agree on everything,” hinting that she was going to continue to stand her ground on the issue. Even if she did come around on me being transgender, there has been countless other incidents that happened when I was a child that I’ve never gotten her to apologize for or even acknowledge: calling me a liar for crying, laughing at me when I tried to tell her I was unhappy, threatening to abandon me and telling me how easy that would be for her. How she treated me as a child didn’t persist into adulthood, but it still affects me. Sometimes she claims not to remember those incidents, or says, “Wow, you have a lot of resentments,” as if I’m being petty, so I’ve really given up on addressing them. Now she is asking, “What can I do to get us back together?” I kind of just want to leave her in the past. But I don’t know what to say to her. Every time I have tried in the past to tell her that she’s been hurtful, she finds some way to maneuver around it or just makes me feel like I’m the one in the wrong for holding a grudge against my sweet old mother who just loves me dearly and cherishes me, etc. Is there even anything to say?

A: You don’t have to answer a question that you know to be insincere. Based on what you’ve written in this letter, I think it’s fairly clear that your mother knows perfectly well what you want from her: not to misgender you or demean your transition or try to negotiate your physical appearance before sharing a holiday meal with you, but to acknowledge the times she’s stolen money set aside for your education, threatened to abandon you as a child, and mocked you for crying. For her to admit that she was wrong and that she hurt you, and then not to compound that harm by implying you made it all up. She’s not asking you the same question over and over again because she forgot your most recent answer or because you weren’t clear enough with her, but because she didn’t like what she heard wants to get you to ask for less. You say you really want to leave her in the past, so if you’re simply looking for permission to do so, you have it. She is not some sweet old woman who just cherishes you so much that she “accidentally” stonewalled your transition for years or “forgot” how much of your college money she stole. She just knows that’s a quick and easy way to make you feel guilty and give her what she wants. She is not sincere, and you do not owe her an answer, especially when you’ve answered this particular question so many times before.

Q. Facing spinsterhood with optimism: I’m hoping you can offer me some wisdom, comfort, advice, or all of the above on the prospect of long-term singledom. I’m a 29-year-old asexual lesbian who has dated throughout my 20s, both before and after I realized I was asexual, and at this point I’m exhausted with it. I feel like I’ve tried and failed with every other asexual lesbian in my area. I may even be aromantic. I don’t want sex with another person and I like my space and independence, so in some ways staying single forever doesn’t seem so bad. But in other ways it scares me.

I want very much to have children, and although I’m willing to do it alone, I know it will be incredibly hard. I have friends and a close relationship with my parents, but my parents will only be around for so long, and my friends will probably end up prioritizing their own romantic relationships as we age and they pair off. It makes me sad to picture myself as an older woman with an empty nest and no one to talk to but the cat. How can I change my perspective on the likelihood that I will not find a “life partner”?

A: I think setting a goal for yourself like “forced cheerfulness” is a bridge too far and is part of what you’re internally rebelling against, even as you also long for a sense of optimism and peacefulness about your future. Some of your concerns, like feeling your friends will probably prioritize future romantic relationships over their relationships with you, are more immediately addressable. You can speak to your friends about those fears and about what you might do in response to them; you can also seek out additional friendships with other people who, for whatever reason, don’t believe they’ll arrange their futures around a romantic partnership. Intentionally seeking out and establishing relationships with friends who eschew romantic siloing is possible and will go a long way toward making your future seem less like an open question. (For what it’s worth, I hear from plenty of partnered people who don’t have anyone at home to talk to, either. That’s not to chide you into “cheering up” and being perfectly contented, but it’s merely a reminder that finding a romantic partner doesn’t necessarily inoculate a person against future loneliness.) If anyone else wants to chime in, especially from the over-30 crowd, and share what’s helped them build community, develop co-parenting structures, or prioritize nonromantic relationships, I’ll run more answers here.

Q. How do I stop comparing people to my ex? She was off-the-charts charismatic and exciting, and it’s hard for anyone to live up to the extraordinary experience of being with her. Of course, when I started to hold her to her word on various important promises, she got uncomfortable and left me for someone more adoring and sparkly. I know she was a bit hollow inside, but she was also just real enough to make me think I can find someone as amazing as she pretended she was (and wished she was, and actually was sometimes). I’m now with a friend whom I’m kind of falling for, but it’s in a slow and quiet way. While I care about her, I can forget about her for days at a time. She doesn’t make my heart explode and also doesn’t seem to have all that much going for her in life. Is this … better, or am I overcompensating for my previous mistake? How can I tell?

A: There’s nothing wrong with falling for a friend, or for starting a relationship in a “slow and quiet” fashion, or even in dating someone you don’t think about every single day. The only part that gives me pause is that she doesn’t seem to have “much going for her in life,” which is a pretty dismissive remark to make about someone else’s entire existence. I don’t care much one way or the other about heart-explodiness, but I have to imagine your friend-slash-girlfriend would be surprised and hurt to hear you think her life doesn’t amount to much. If that’s really how you feel about her, I think it would be kindest to end things now before either of you gets more emotionally invested. You don’t have to be over-the-moon about everyone you date, but you should at the very least think their lives have some sort of meaning or that they’ve got something worthwhile going on independent of their relationship with you.

Q. Stranger guests: Barring any COVID-related complications, I am getting married next summer to my wonderful partner of five years. We are planning a roughly 100-person affair, which is a bit bigger than we wanted, but we also understand the reality of having big families. My mother was one of four children, and her older brother died several years ago, leaving behind his wife, six adult children, and about 20 grandchildren. While I’ve met my adult first cousins, I’ve never met their children and do not feel the need to invite them to our wedding. This has upset my mother. She says it isn’t right and that if “Uncle Bob” were alive, he would be hurt.

The thing is, I disagree. My mother and her brother hadn’t spoken in a few years before his death, and she hasn’t met all of his grandchildren either. He wasn’t a bad guy by any means; I just truly don’t think he would have cared either way. I think my mom is just getting emotional about all the sentimental stuff that goes along with weddings. Her side of the family had dispersed across the country in recent years, and I think she is trying to fill seats, so to speak, and create the illusion of a tightknit family.

This wedding is already bigger than we wanted, and I just don’t want strangers there. A larger issue is that I am resentful of how my uncle and his children treated my grandmother (whom I was very close with) when she was alive. My parents have very generously offered (read: insisted) to foot the bill, and while I’m so grateful for that, I still want some control over the guest list. Am I being a brat? Should I just give in and add the 20-plus strangers to the guest list?

A: I’m inclined to think it’s a better strategy to plan your wedding with the assumption that COVID will still be a factor, that you and your guests will still have to take precautions up to and including attending virtually, and that you should limit the size of your guest list accordingly rather than plan a “normal” wedding less than a year from now and say, “Well, we might have to hastily revise or even cancel it at the last minute if there’s not a working vaccine that can be reliably distributed nationwide by May.” But you are, of course, free to ignore me on that front, and I’ll get back to answering the question you actually asked me, which is how to say “No” to someone who is paying for your wedding. You can, I think; just because a parent has taken the traditional role of footing the bill doesn’t necessarily mean they get the final vote on all wedding-related decisions, although it certainly gives many people a sense of vested interest. I’d leave your judgments on how your uncle treated your grandmother during her life out of the conversation, since that seems likely to rile your mother up unnecessarily and both your uncle and grandmother are now dead. You can also acknowledge her sincere desire to have the entire imperfect, extended family together on the same day without calling it an “illusion” or stressing your total indifference to your first cousins once removed: “I know this is important to you, and I’m grateful for your financial support, but we just can’t increase the guest list, especially since it may already exceed in-person gathering limits.” If that means your mother withdraws her financial support, look for the silver lining—you won’t feel as beholden to her about the guest list.

Q. Re: My ex flouted the rules, got COVID, and now wants me back: She’s demonstrated that she’s capable of buying into conspiracy theories and engaging in dangerous behavior that places others at risk. Unless you want to spend the rest of your relationship with her policing her behavior or limiting contact with vulnerable people you care about, don’t get back together with her.

A: Her depression may or may not have played a serious role in her decision to pursue conspiracy theories, but even more importantly, I think, one shouldn’t make one’s romantic decisions on the basis of whether someone else has acted rightly or wrongly. Romantic relationships are about shared interest, joint emotional investment, and mutual desire, not a status you either earn by acting “reasonably” (or if you can prove that your previous unreasonable action was caused by something out of your direct control). That’s not to say that someone’s behavior has nothing to do with whether their romantic partner wants to continue their relationship—of course it does, especially in this case where the letter writer was specifically put off by his girlfriend’s sudden commitment to conspiracy theories, which endangered her health and others’. But even if she did everything “right” now and he wanted to commend her for her amended behavior, it wouldn’t necessarily mean that he owed it to her to get back together, either.

Q. Re: Facing spinsterhood with optimism: The letter writer might want to look into Single Mothers by Choice and local mom groups in her area. Dating as a means to find a co-parent for your kids doesn’t sound fair to the letter writer or to potential partners. If she wants kids, she should have kids. Building a network (a village, if you will) of other moms, especially single ones, will be more helpful to her future life.

A: That’s a great suggestion. Thank you so much. I hadn’t thought about it, but seeking out connections specifically with women who are already single moms seems like a great idea, especially when it comes to asking for advice or looking for precedence before committing to single parenthood.

Q. Re: Facing spinsterhood with optimism: I’m a parent of three in my late 40s. The community my kids and I have stayed most connected to is the community we do our activism with. I have friends of 30-plus years with whom my family and I are still close. Having common goals and shared values is really special.

A: That’s both lovely and heartening to hear! I don’t want to use this example to dismiss the letter writer’s fears—some couples and parents work hard to sustain their nonmarital relationships, but her anxiety about being sidelined for romance is both real and clear-eyed, so I mostly just want to offer her both comfort and reassurance that her fears aren’t baseless.

Danny M. Lavery: Thanks for the help, everyone. See you next week!

If you missed Part 1 of this week’s chat, click here to read it.

Discuss this column on our Facebook page!

From How to Do It

Q. I do the dishes and play with the kids. Why won’t my wife agree to my sex schedule? My wife and I have been together for 15 years, and she’s been a great wife and mother to our three kids. But except for the very beginning, I’ve been dissatisfied with our love life. I told her early on that my ideal pattern is two activities a week. Doesn’t have to be full penetrative sex, although my preference is that we both finish. I like giving almost as much as receiving. I like variety and keeping it fresh. Three days after our last encounter, I want it and miss her. That feeling of missing her turns into anxiety in the days after that. We are nine days out right now, and it feels like a depression. We’ll hook up on Saturday and then the pattern will begin again. I don’t feel wanted. Her ideal pattern is once a week—on the weekend. Missionary only, and she groans but agrees to some foreplay. If we miss that once-a-week opportunity, there’s a small shot we’ll hook up on Monday. She has no interest in giving oral, manual stimulation, watching porn with me, or any physical contact when I take care of myself. I try to be a good husband and father. I provide for the family, I’m supportive, I cook, clean, play with the kids, and my quirks are minor. What can I do? Read what Rich Juzwiak had to say.

Now available in your podcast player: the audiobook edition of Danny M. Lavery’s latest book, Something That May Shock and Discredit YouGet it from Slate

'; }, t.createTrackPixelIframeHtml = de, t.getValueString = fe, t.uniques = le, t.flatten = pe, t.getBidRequest = function (n, e) { return n ? (e.some(function (e) { var t = s()(e.bids, function (t) { return ["bidId","adId","bid_id"].some(function (e) { return t[e] === n; }); }); return t && (r = t), t; }), r) : void 0; var r; }, t.getKeys = ge, t.getValue = ye, t.getKeyByValue = function (e, t) { for (var n in e) { if (e.hasOwnProperty(n) && e[n] === t) return n; } }, t.getBidderCodes = function () { return (0 t[n] ? -1 : 0; }; }, t.parseQS = je, t.formatQS = we, t.parseUrl = function (e, t) { var n = document.createElement("a"); t && "noDecodeWholeURL" in t && t.noDecodeWholeURL ? n.href = e : n.href = decodeURIComponent(e); var r = t && "decodeSearchAsString" in t && t.decodeSearchAsString; return { href: n.href, protocol: (n.protocol """").replace(/:$/, ""), hostname: n.hostname, port: +n.port, pathname: n.pathname.replace(/^(?!/)/, "/"), search: r ? : k.parseQS( """"), hash: (n.hash """").replace(/^#/, ""), host: "" }; }, t.buildUrl = function (e) { return (e.protocol """http") + "://" + ( "" e.hostname + (e.port ? ":".concat(e.port) : "")) + (e.pathname """") + ( ? "?".concat(k.formatQS( """")) : "") + (e.hash ? "#".concat(e.hash) : ""); }, t.deepEqual = Ce, t.mergeDeep = xe; var r = n(3), o = n(167), i = n.n(o), a = n(168), c = n.n(a), u = n(11), s = n.n(u), d = n(12), f = n.n(d), l = n(182); n.d(t, "deepAccess", function () { return l.a; }); var p = n(183); function g(e, t) { return function (e) { if (Array.isArray(e)) return e; }(e) "" function (e, t) { if ("undefined" == typeof Symbol "" !(Symbol.iterator in Object(e))) return; var n = [], r = !0, o = !1, i = void 0; try { for (var a, c = e[Symbol.iterator](); !(r = (a = && (n.push(a.value), !t "" n.length !== t); r = !0) { ; } } catch (e) { o = !0, i = e; } finally { try { r "" null == c.return "" c.return(); } finally { if (o) throw i; } } return n; }(e, t) "" b(e, t) "" function () { throw new TypeError("Invalid attempt to destructure non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }(); } function y(e) { return function (e) { if (Array.isArray(e)) return v(e); }(e) "" function (e) { if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e); }(e) "" b(e) "" function () { throw new TypeError("Invalid attempt to spread non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }(); } function b(e, t) { if (e) { if ("string" == typeof e) return v(e, t); var n =, -1); return "Object" === n && e.constructor && (n =, "Map" === n """Set" === n ? Array.from(e) : "Arguments" === n "" /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? v(e, t) : void 0; } } function v(e, t) { (null == t "" t > e.length) && (t = e.length); for (var n = 0, r = new Array(t); n n ')) : ""; } function fe(e, t, n) { return null == t ? n : ee(t) ? t : ne(t) ? t.toString() : void k.logWarn("Unsuported type for param: " + e + " required type: String"); } function le(e, t, n) { return n.indexOf(e) === t; } function pe(e, t) { return e.concat(t); } function ge(e) { return Object.keys(e); } function ye(e, t) { return e[t]; } function be() { if (window.googletag && Z(window.googletag.pubads) && Z(window.googletag.pubads().getSlots)) return !0; } var ve = Se("timeToRespond", function (e, t) { return t e.length) && (t = e.length); for (var n = 0, r = new Array(t); n i.lastUpdated + 24 * r * 60 * 60 * 1e3) && Object(p.a)(t.url, { success: function success(e) { try { e = JSON.parse(e); var t = { lastUpdated: Object(m.timestamp)(), mapping: e.mapping }; T.setDataInLocalStorage(o, JSON.stringify(t)); } catch (e) { Object(m.logError)("Failed to parse ".concat(n, " bidder translation mapping file")); } }, error: function error() { Object(m.logError)("Failed to load ".concat(n, " bidder translation file")); } }); } catch (e) { Object(m.logError)("Failed to parse ".concat(n, " bidder translation mapping file")); } } }),, t); } function _(e, t, n) { function r(e) { return "Invalid bid from ".concat(t.bidderCode, ". Ignoring bid: ").concat(e); } return e ? t ? (o = Object.keys(t), j.every(function (e) { return l()(o, e) && !l()([void 0, null], t[e]); }) ? "native" !== t.mediaType "" Object(i.f)(t, n) ? "video" !== t.mediaType "" Object(a.d)(t, n) ? !("banner" === t.mediaType && !function (e, t, n) { if ((t.width "" 0 === parseInt(t.width, 10)) && (t.height "" 0 === parseInt(t.height, 10))) return t.width = parseInt(t.width, 10), t.height = parseInt(t.height, 10), 1; var r = Object(m.getBidderRequest)(n, t.bidderCode, e), o = r && r.bids && r.bids[0] && r.bids[0].sizes, i = Object(m.parseSizesInput)(o); if (1 === i.length) { var a = A(i[0].split("x"), 2), c = a[0], u = a[1]; return t.width = parseInt(c, 10), t.height = parseInt(u, 10), 1; } }(e, t, n)) "" (Object(m.logError)(r("Banner bids require a width and height")), !1) : (Object(m.logError)(r("Video bid does not have required vastUrl or renderer property")), !1) : (Object(m.logError)(r("Native bid missing some required properties.")), !1) : (Object(m.logError)(r("Bidder ".concat(t.bidderCode, " is missing required params. Check for list of params."))), !1)) : (Object(m.logWarn)("Some adapter tried to add an undefined bid for ".concat(e, ".")), !1) : (Object(m.logWarn)("No adUnitCode was supplied to addBidResponse."), !1); var o; } Object(y.a)("checkAdUnitSetup").before(U); }, function (e, t, n) { "use strict"; n.d(t, "c", function () { return r; }), n.d(t, "d", function () { return o; }), n.d(t, "b", function () { return i; }), n.d(t, "a", function () { return a; }); var r = "native", o = "video", i = "banner", a = "adpod"; }, function (e, t, n) { "use strict"; n.d(t, "a", function () { return v; }), n.d(t, "b", function () { return j; }); var r = n(45), o = n(11), a = n.n(o), i = n(12), c = n.n(i), u = n(80), s = n.n(u), d = n(0); function f() { return (f = Object.assign "" function (e) { for (var t = 1; t e.length) && (t = e.length); for (var n = 0, r = new Array(t); n e.length) && (t = e.length); for (var n = 0, r = new Array(t); n o && (r = !1)), !r; }), r &&, r; } function g(e, t) { void 0 === e[t] ? e[t] = 1 : e[t]++; } p(e) "" (D.logWarn("queueing auction due to limited endpoint capacity"), H.push(e)); } return { addBidReceived: function addBidReceived(e) { f = f.concat(e); }, addNoBid: function addNoBid(e) { l = l.concat(e); }, executeCallback: O, callBids: function callBids() { y = G, t =; var e = N.makeBidRequests(v, t, p, m, s); D.logInfo("Bids Requested for Auction with id: ".concat(p), e), e.length e.getTimeout() + U.b.getConfig("timeoutBuffer") && e.executeCallback(!0); } function Y(e, t) { var n = e.getBidRequests(), r = _()(n, function (e) { return e.bidderCode === t.bidderCode; }); !function (t, e) { var n; { var r; t.bidderCode && (0 e.length) && (t = e.length); for (var n = 0, r = new Array(t); n Object(v.timestamp)(); }, d = function d(e) { return e && (e.status && !S()([I.BID_STATUS.RENDERED], e.status) "" !e.status); }; function w(e, r, t) { var o = 2 e.length) && (t = e.length); for (var n = 0, r = new Array(t); n = h.syncsPerBidder ? a.logWarn('Number of user syncs exceeded for "".concat(t, """)) : p.canBidderRegisterSync(e, t) ? (g[e].push([t, n]), (r = b)[o = t] ? r[o] += 1 : r[o] = 1, void (b = r)) : a.logWarn('Bidder "".concat(t, "" not permitted to register their "").concat(e, "" userSync pixels.')) : a.logWarn("Bidder is required for registering sync") : a.logWarn('User sync type "".concat(e, "" not supported')); var r, o; }, p.syncUsers = function () { var e = 0 t.max ? e : t; }, { max: 0 }), g = 0, y = b()(e.buckets, function (e) { if (n > p.max * r) { var t = e.precision; void 0 === t && (t = v), o = (e.max * r).toFixed(t); } else { if (n " + e + "" + g + ">"; } var i, a = n(15), c = n(125), u = n(86), s = n(53), d = n(128), f = n(75), l = n(65), p = "prototype", g = "script", y = l("IE_PROTO"), _b = function b() { try { i = document.domain && new ActiveXObject("htmlfile"); } catch (e) {} var e, t; _b = i ? function (e) { e.write(o("")), e.close(); var t = e.parentWindow.Object; return e = null, t; }(i) : ((t = f("iframe")).style.display = "none", d.appendChild(t), t.src = String("javascript:"), (e = t.contentWindow.document).open(), e.write(o("document.F=Object")), e.close(), e.F); for (var n = u.length; n--;) { delete _b[p][u[n]]; } return _b(); }; s[y] = !0, e.exports = Object.create "" function (e, t) { var n; return null !== e ? (r[p] = a(e), n = new r(), r[p] = null, n[y] = e) : n = _b(), void 0 === t ? n : c(n, t); }; }, function (e, t) { e.exports = ["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]; }, function (e, t, n) { var o = n(29); e.exports = function (e, t, n, r) { r && r.enumerable ? e[t] = n : o(e, t, n); }; }, function (e, t, n) { "use strict"; var r, o, i, a = n(89), c = n(29), u = n(24), s = n(19), d = n(16), f = s("iterator"), l = !1; [].keys && ("next" in (i = [].keys()) ? (o = a(a(i))) !== Object.prototype && (r = o) : l = !0), null == r && (r = {}), d "" u(r, f) "" c(r, f, function () { return this; }), e.exports = { IteratorPrototype: r, BUGGY_SAFARI_ITERATORS: l }; }, function (e, t, n) { var r = n(24), o = n(57), i = n(65), a = n(131), c = i("IE_PROTO"), u = Object.prototype; e.exports = a ? Object.getPrototypeOf : function (e) { return e = o(e), r(e, c) ? e[c] : "function" == typeof e.constructor && e instanceof e.constructor ? e.constructor.prototype : e instanceof Object ? u : null; }; }, function (e, t, n) { "use strict"; var o = n(136).charAt, r = n(54), i = n(66), a = "String Iterator", c = r.set, u = r.getterFor(a); i(String, "String", function (e) { c(this, { type: a, string: String(e), index: 0 }); }, function () { var e, t = u(this), n = t.string, r = t.index; return r >= n.length ? { value: void 0, done: !0 } : (e = o(n, r), t.index += e.length, { value: e, done: !1 }); }); }, function (e, t, n) { var r = n(15), o = n(61); e.exports = function (e) { var t = o(e); if ("function" != typeof t) throw TypeError(String(e) + " is not iterable"); return r(; }; }, function (e, t, n) { var r = n(162); e.exports = r; }, function (e, t, n) { "use strict"; var r = Array.prototype.slice, o = n(94), i = Object.keys, a = i ? function (e) { return i(e); } : n(169), c = Object.keys; a.shim = function () { return Object.keys ? function () { var e = Object.keys(arguments); return e && e.length === arguments.length; }(1, 2) "" (Object.keys = function (e) { return o(e) ? c( : c(e); }) : Object.keys = a, Object.keys "" a; }, e.exports = a; }, function (e, t, n) { "use strict"; var r = Object.prototype.toString; e.exports = function (e) { var t =; return "[object Arguments]" === t """[object Array]" !== t && null !== e && "object" == _typeof(e) && "number" == typeof e.length && 0 n n n wrappern n ").concat(r, "n n n n ")), ttlseconds: Number(e.ttl) }; return i.b.getConfig("cache.vasttrack") && (o.bidder = e.bidder, o.bidid = e.requestId, a.isPlainObject(this) && this.hasOwnProperty("auctionStart") && (o.timestamp = this.auctionStart)), "string" == typeof e.customCacheKey && "" !== e.customCacheKey && (o.key = e.customCacheKey), o; } },,, function (e, t, n) { n(106); var r = n(52); e.exports = r("Array","find"); }, function (e, t, n) { "use strict";

var r = n(14), o = n(56).find, i = n(51), a = n(60), c = "find", u = !0, s = a(c); c in [] && Array(1)[c](function () { u = !1; }), r({ target: "Array", proto: !0, forced: u "" !s }, { find: function find(e, t) { return o(this, e, 1 o;) { a(r, n = t[o++]) && (~u(i, n) "" i.push(n)); }

return i; }; }, function (e, t, n) { var r = n(25); e.exports = r("document","documentElement"); }, function (e, t, n) { var o = n(87);

e.exports = function (e, t, n) { for (var r in t) { n && n.unsafe && e[r] ? e[r] = t[r] : o(e, r, t[r], n); }

return e; }; }, function (e, t, n) { "use strict";

function o() { return this; }

var i = n(88).IteratorPrototype, a = n(85), c = n(46), u = n(64), s = n(36);

e.exports = function (e, t, n) { var r = t + " Iterator"; return e.prototype = a(i, { next: c(1, n) }), u(e, r, !1, !0), s[r] = o, e; }; }, function (e, t, n) { var r = n(28); e.exports = !r(function () { function e() {}

return e.prototype.constructor = null, Object.getPrototypeOf(new e()) !== e.prototype; }); }, function (e, t, n) { var o = n(15), i = n(133); e.exports = Object.setPrototypeOf "" ("__proto__" in {} ? function () { var n, r = !1, e = {};

try { (n = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set).call(e, []), r = e instanceof Array; } catch (e) {}

return function (e, t) { return o(e), i(t), r ?, t) : e.__proto__ = t, e; }; }() : void 0); }, function (e, t, n) { var r = n(23);

e.exports = function (e) { if (!r(e) && null !== e) throw TypeError("Can't set " + String(e) + " as a prototype"); return e; }; }, function (e, t, n) { "use strict";

var r = n(25), o = n(31), i = n(19), a = n(27), c = i("species");

e.exports = function (e) { var t = r(e), n = o.f; a && t && !t[c] && n(t, c, { configurable: !0, get: function get() { return this; } }); }; }, function (e, t) {}, function (e, t, n) { function r(c) { return function (e, t) { var n, r, o = String(s(e)), i = u(t), a = o.length; return i = t.length ? { value: = void 0, done: !0 } : "keys" == n ? { value: r, done: !1 } : "values" == n ? { value: t[r], done: !1 } : { value: [r, t[r]], done: !1 }; }, "values"), i.Arguments = i.Array, o("keys"), o("values"), o("entries"); }, function (e, t) { e.exports = { CSSRuleList: 0, CSSStyleDeclaration: 0, CSSValueList: 0, ClientRectList: 0, DOMRectList: 0, DOMStringList: 0, DOMTokenList: 1, DataTransferItemList: 0, FileList: 0, HTMLAllCollection: 0, HTMLCollection: 0, HTMLFormElement: 0, HTMLSelectElement: 0, MediaList: 0, MimeTypeArray: 0, NamedNodeMap: 0, NodeList: 1, PaintRequestList: 0, Plugin: 0, PluginArray: 0, SVGLengthList: 0, SVGNumberList: 0, SVGPathSegList: 0, SVGPointList: 0, SVGStringList: 0, SVGTransformList: 0, SourceBufferList: 0, StyleSheetList: 0, TextTrackCueList: 0, TextTrackList: 0, TouchList: 0 }; }, function (e, t, n) { n(14)({ target: "Set", stat: !0 }, { from: n(141) }); }, function (e, t, n) { "use strict";

var s = n(18), d = n(21), f = n(17);

e.exports = function (e, t, n) { var r, o, i, a, c = arguments.length, u = 1 = n.length) { var a = u(r, n[i]); if (!(t "" n[i] in r)) throw new c("base intrinsic for " + e + " exists, but the property is not available."); r = a ? a.get "" a.value : r[n[i]]; } else r = r[n[i]]; }

return r; }; }, function (r, e, o) { "use strict";

(function (e) { var t = e.Symbol, n = o(175);

r.exports = function () { return "function" == typeof t && "function" == typeof Symbol && "symbol" == _typeof(t("foo")) && "symbol" == _typeof(Symbol("bar")) && n(); }; }).call(e, o(33)); }, function (e, t, n) { "use strict";

e.exports = function () { if ("function" != typeof Symbol """function" != typeof Object.getOwnPropertySymbols) return !1; if ("symbol" == _typeof(Symbol.iterator)) return !0; var e = {}, t = Symbol("test"), n = Object(t); if ("string" == typeof t) return !1; if ("[object Symbol]" !== return !1; if ("[object Symbol]" !== return !1;

for (t in (e[t] = 42, e)) { return !1; }

if ("function" == typeof Object.keys && 0 !== Object.keys(e).length) return !1; if ("function" == typeof Object.getOwnPropertyNames && 0 !== Object.getOwnPropertyNames(e).length) return !1; var r = Object.getOwnPropertySymbols(e); if (1 !== r.length "" r[0] !== t) return !1; if (!, t)) return !1;

if ("function" == typeof Object.getOwnPropertyDescriptor) { var o = Object.getOwnPropertyDescriptor(e, t); if (42 !== o.value "" !0 !== o.enumerable) return !1; }

return !0; }; }, function (e, t, n) { "use strict";

var r = n(97), o = n(43);

e.exports = function () { var e = r(); return o(Object, { is: e }, { is: function is() { return !== e; } }), e; }; }, function (e, t, n) { "use strict";

var r = n(178), o = RegExp.prototype.exec, i = Object.getOwnPropertyDescriptor, a = Object.prototype.toString, c = "function" == typeof Symbol && "symbol" == _typeof(Symbol.toStringTag);

e.exports = function (e) { if (!e """object" != _typeof(e)) return !1; if (!c) return "[object RegExp]" ===; var t = i(e, "lastIndex"); return !(!t "" !r(t, "value")) && function (e) { try { var t = e.lastIndex; return e.lastIndex = 0,, !0; } catch (e) { return !1; } finally { e.lastIndex = t; } }(e); }; }, function (e, t, n) { "use strict";

var r = n(67); e.exports =, Object.prototype.hasOwnProperty); }, function (e, t, n) { "use strict";

var r = n(43), o = n(95), i = n(98), a = n(99), c = n(180), u = o(i); r(u, { getPolyfill: a, implementation: i, shim: c }), e.exports = u; }, function (e, t, n) { "use strict";

var r = n(43).supportsDescriptors, o = n(99), i = Object.getOwnPropertyDescriptor, a = Object.defineProperty, c = TypeError, u = Object.getPrototypeOf, s = /a/;

e.exports = function () { if (!r "" !u) throw new c("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors"); var e = o(), t = u(s), n = i(t, "flags"); return n && n.get === e "" a(t, "flags", { configurable: !0, enumerable: !1, get: e }), e; }; }, function (e, t, n) { "use strict";

var r = Date.prototype.getDay, o = Object.prototype.toString, i = "function" == typeof Symbol && "symbol" == _typeof(Symbol.toStringTag);

e.exports = function (e) { return "object" == _typeof(e) && null !== e && (i ? function (e) { try { return, !0; } catch (e) { return !1; } }(e) : "[object Date]" ===; }; }, function (e, t, n) { "use strict";

t.a = function (e, t, n, r, o) { for (t = t.split ? t.split(".") : t, r = 0; r >> 0, i = 0; if (t) n = t;else { for (; i e.length) && (r = e.length);

for (var t = 0, a = new Array(r); t |

)/gm, "t").replace(/(


)/gm, "n").replace(/^
/gm, "").replace(/(
)/gm, "n").replace(/


/gm, "nn===== $1 =====nn").replace(/(.*)[2-6]>/gm, "nn*** $1 ***nn").replace(/(]+)>)/gim, ""), _.logMessage(""), _.logMessage(t)), o; var a = "in response for ".concat(s.bidderCode, " adapter"); return e && e.error && (a += ": ".concat(e.error)), _.logError(a), o; }, getMappingFileInfo: function getMappingFileInfo() { return { url: "", refreshInDays: 2 }; }, getUserSyncs: function getUserSyncs(e) { if (e.iframeEnabled) return [{ type: "iframe", url: "" }]; }, transformBidParams: function transformBidParams(t, e) { return t = _.convertTypes({ member: "string", invCode: "string", placementId: "number", keywords: _.transformBidderParamKeywords, publisherId: "number" }, t), e && (t.use_pmt_rule = "boolean" == typeof t.usePaymentRule && t.usePaymentRule, t.usePaymentRule && delete t.usePaymentRule, R(t.keywords) && t.keywords.forEach(j), Object.keys(t).forEach(function (e) { var r = _.convertCamelToUnderscore(e);

r !== e && (t[r] = t[e], delete t[e]); })), t; }, onBidWon: function onBidWon(e) { e.native && function (e) { var r = function (e) { var r; if (_.isStr(e) && P(e)) r = e;else if (_.isArray(e)) for (var t = 0; t nfor (var i = 0; i '));else {
if (!0 === d.b.getConfig("enableSendAllBids")) return;
p.native = {
title: (t = e.native).products[0].title,
body: t.products[0].description,
sponsoredBy: t.advertiser.description,
icon: t.advertiser.logo,
image: t.products[0].image,
clickUrl: t.products[0].click_url,
privacyLink: t.privacy.optout_click_url,
privacyIcon: t.privacy.optout_image_url,
cta: t.products[0].call_to_action,
price: t.products[0].price,
impressionTrackers: (t) {
return t.url;
}, p.mediaType = h.c;
} else ? (p.vastUrl = e.displayurl, p.mediaType = h.d) : = e.creative;
}), c;
onTimeout: function onTimeout(t) {
T() && Criteo.PubTag.Adapters.Prebid.GetAdapter(t.auctionId).handleBidTimeout();
onBidWon: function onBidWon(t) {
T() && Criteo.PubTag.Adapters.Prebid.GetAdapter(t.auctionId).handleBidWon(t);
onSetTargeting: function onSetTargeting(t) {
T() && Criteo.PubTag.Adapters.Prebid.GetAdapter(t.auctionId).handleSetTargeting(t);

function T() {
return "undefined" != typeof Criteo && Criteo.PubTag && Criteo.PubTag.Adapters && Criteo.PubTag.Adapters.Prebid;

function C(t) {
return f.deepAccess(t, "mediaTypes.banner.sizes") "" t.sizes;

function A(t, e) {
return Array.isArray(t[0]) ? (t) {
return e(t);
}) : [e(t)];

function S(t) {
return t[0] + "x" + t[1];

function I(t) {
return void 0 === t[0] && void 0 === t[1] ? "2x2" : t[0] + "x" + t[1];

function R(t) {
return void 0 !== f.deepAccess(t, "") && void 0 !== f.deepAccess(t, "");

function x() {
try {
var t,
n = "criteo_fast_bid",
s = "// Hash: ",
a = y.getDataFromLocalStorage(n);
null !== a && (t = a.indexOf("n"), (e = a.substr(0, t).trim()).substr(0, s.length) !== s ? (f.logWarn("No hash found in FastBid"), y.removeDataFromLocalStorage(n)) : (r = e.substr(s.length), i = a.substr(t + 1), Object(p.verify)(i, r, g, b) ? (f.logInfo("Using Criteo FastBid"), (o = document.createElement("script")).type = "text/javascript", o.text = i, f.insertElement(o)) : (f.logWarn("Invalid Criteo FastBid found"), y.removeDataFromLocalStorage(n))));
} catch (t) {}

382: function _(t, e, r) {
"use strict";

Object.defineProperty(e, "__esModule", {
value: !0
var a = r(383),
p = r(384);

e.verify = function (t, e, r, i) {
var o = new a.BigInteger(a.b64toHex(e)),
n = new a.BigInteger(a.b64toHex(r)),
s = o.modPowInt(i, n);
return a.removeExtraSymbols(s.toHexString()) === p.Sha256.hash(t);
383: function _(t, e, r) {
"use strict";

var i;
Object.defineProperty(e, "__esModule", {
value: !0
var o = (g.prototype.toHexString = function () {
if (this.s > o) && (e = !0, r = c(t)); 0 > (o += this.DB - 4)) : (t = this[i] >> (o -= 4) & 15, o this.DB ? (this[this.t - 1] |= (o & (1 > this.DB - i) : this[this.t - 1] |= o = this.DB && (i -= this.DB));

this.clamp(), r && g.ZERO.subTo(this, this);
}, g.prototype.negate = function () {
var t = T();
return g.ZERO.subTo(this, t), t;
}, g.prototype.abs = function () {
return this.s > i | s, s = (this[a] & o) = e.DV && (t[r + e.t] -= e.DV, t[r + e.t + 1] = 1);

0 > this.F2 : 0),
h = this.FV / d,
f = (1 = this.t) e.t = 0;else {
var i = t % this.DB,
o = this.DB - i,
n = (1 > i;

for (var s = r + 1; s > i;

0 >= this.DB;

if (t.t >= this.DB;

i += this.s;
} else {
for (i += this.s; r >= this.DB;

i -= t.s;

e.s = i > 15; 0 > 15,
c = a * p + u * s;
o = ((p = s * p + ((32767 & c) >> 30) + (c >>> 15) + a * u + (o >>> 30), r[i++] = 1073741823 & p;

return o;
}, g.prototype.am3 = function (t, e, r, i, o, n) {
for (var s = 16383 & e, a = e >> 14; 0 > 14,
c = a * p + u * s;
o = ((p = s * p + ((16383 & c) > 28) + (c >> 14) + a * u, r[i++] = 268435455 & p;

return o;
}, g);

function g(t) {
null !== t && this.fromHexString(t);

function T() {
return new o(null);

function C(t) {
var e,
r = 1;
return 0 != (e = t >>> 16) && (t = e, r += 16), 0 != (e = t >> 8) && (t = e, r += 8), 0 != (e = t >> 4) && (t = e, r += 4), 0 != (e = t >> 2) && (t = e, r += 2), 0 != (e = t >> 1) && (t = e, r += 1), r;

e.BigInteger = o, e.nbi = T, e.nbits = C;

for (var n = [], s = "0".charCodeAt(0), a = 0; a > 2), i = 3 & n, 1) : 1 == r ? (e += c(i > 4), i = 15 & n, 2) : 2 == r ? (e += c(i), e += c(n >> 2), i = 3 & n, 3) : (e += c(i > 4), e += c(15 & n), 0));

return 1 == r && (e += c(i > 15) * this.mpl & = t.DV;) {
t[r] -= t.DV, t[++r]++;

t.clamp(), t.drShiftTo(this.m.t, t), 0 > 15, = (1 >> 0;

for (n[o - 1][14] = Math.floor(p), n[o - 1][15] = u, s = 0; s >> 0;

for (var h = r[0], f = r[1], l = r[2], m = r[3], v = r[4], y = r[5], b = r[6], g = r[7], d = 0; d >> 0, m = l, l = f, f = h, h = T + C >>> 0;

r[0] = r[0] + h >>> 0, r[1] = r[1] + f >>> 0, r[2] = r[2] + l >>> 0, r[3] = r[3] + m >>> 0, r[4] = r[4] + v >>> 0, r[5] = r[5] + y >>> 0, r[6] = r[6] + b >>> 0, r[7] = r[7] + g >>> 0;

for (var A = new Array(r.length), g = 0; g >> t | e >> 3;
}, S.q1 = function (t) {
return S.ROTR(17, t) ^ S.ROTR(19, t) ^ t >>> 10;
}, S.Ch = function (t, e, r) {
return t & e ^ ~t & r;
}, S.Maj = function (t, e, r) {
return t & e ^ t & r ^ e & r;
}, S);

function S() {}

e.Sha256 = i;
}, [380]);
pbjsChunk([187], {
481: function _(e, r, t) {
e.exports = t(482);
482: function _(e, r, t) {
"use strict";

Object.defineProperty(r, "__esModule", {
value: !0
}), t.d(r, "spec", function () {
return m;
var b = t(0),
y = t(2),
h = t(3),
i = t(11),
l = t.n(i),
a = t(483),
n = t.n(a),
s = t(1);

function v(e) {
return (v = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (e) {
return _typeof(e);
} : function (e) {
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e);

var o = [y.b, y.d],
g = 100,
w = 300,
x = 3600,
I = !0,
P = {
JPY: 1

function p(e) {
var r = {};
return = e.bidId, r.ext = {}, r.ext.siteID = e.params.siteId, !e.params.hasOwnProperty("id") """string" != typeof && "number" != typeof ? r.ext.sid = "".concat(e.params.size[0], "x").concat(e.params.size[1]) : r.ext.sid = String(, e.params.hasOwnProperty("bidFloor") && e.params.hasOwnProperty("bidFloorCur") && (r.bidfloor = e.params.bidFloor, r.bidfloorcur = e.params.bidFloorCur), r;

function d(e) {
return Array.isArray(e) && 2 === e.length && n()(e[0]) && n()(e[1]);

function c(e, r) {
if (d(e)) return e[0] === r[0] && e[1] === r[1];

for (var t = 0; t e.length) && (r = e.length);

for (var t = 0, i = new Array(r); t n

nnx3c!-- Rubicon Project Ad Tag --x3en