So we're going to start off here with an update from case cook on the Kernel self-protection project which Got a kind of formalized start last year at the Kernel summit case gave an overview and presented a whole bunch of information to the core kernel developers and the aim has been to try and bring some of the out-of-tree code and ideas of hardening the kernel into Linux and there's a number of technical and political social Psychological Psychiatric issues to deal with In case it's taken that on so I'll hand it over to him. Cool. Thanks. I Have a bunch of slides some of them are pretty dense So if you want to look at this stuff offline or along with me now, it's at that URL It'll be at the end again, too But yeah, this is the status of the kernel self-protection. So This is quickly this is about Linux kernel obviously and here's our agenda about what we're gonna be covering I'm gonna do some sort of rationale for why we're doing this and then Who's gotten involved what we've done other stuff we're looking at doing and the challenges that we faced a Lot of these things apply to sort of general software ecosystem, but this is very specific to Linux kernel And I'll just blaze ahead So this is like security summit security is a pretty loaded word it covers a lot of areas and For the context of this presentation I'm talking about things beyond access control beyond attack surface reduction beyond bug fixing Beyond protecting user space and even you know, it can be argued. This is even beyond simple kernel integrity This is about self-protection technologies, which is you know proactive Systems in the kernel to stop attacks a lot of that's wrapped up in kernel integrity But this is this is about though those pieces of self-protection of the kernel itself as opposed to things that the kernel to do The kernel implements to protect user space And then why are we doing this? I mean probably I don't need to cover this with most of the people here But there's a ton of stuff using Linux We're over a billion devices on Android. I mean it's it's got a huge penetration and Then I'll I'm going to come back to this point, but the vast majority of these devices are running effectively old software They're out in the world. They're they're running old stuff, and they may or may not receive patches So fixing bugs won't necessarily help those devices You know as we move forward we need devices that are actually protecting themselves a little bit more than they are now Because the lifetime of bugs that are discovered are even longer for devices that are out in the field because they're dependent on vendors actually issuing the bug fixes to the to the Release devices so even if upstream says oh sure we found that bug we fixed it like okay But what kernel version was it fixed in did it end up in a stable release did a vendor backport it did the carrier for the phone? Take that update from the vendor and push it out to phones. There's a very long lifetime Potentially and this is becoming an even greater problem with you know internet of things stuff where Maybe you have your phone, and you've had it for three years, and you're like wow this phone's getting really old And compared to servers that's kind of crazy, but with iot you're like well I installed I installed this thing in my door lock I'm probably just gonna leave it there for the next 15 years We end up with very long device lifetimes And I hear a lot of a lot of sort of blame shifting about where this problem needs to be solved You know upstream developers like well we've done everything we can we have the bug is you know the bug is fixed It's on to someone else to make sure it's rolled out and then the people Who've rolled out the fit you know the vendors are saying well, but the you know We can't get it out to these devices because they're not coming online or you know There's a lots of different things About that so the idea is to build in their protection technologies from the start And when a bug comes along we don't really care So getting into this a little bit more In 2010 John Corbett wanted to answer a similar question about you know, how long are these bugs really in In the upstream kernel What kind of lifetimes are we talking about our bugs in there for a couple months? Are they in there for a couple years and in 2010 he went back and looked through a lot of the the CVE You know bugs that were Associated with the CVE and saw that on average it took About five years for a bug to get fixed so it'd be introduced at some point and Then five years would go by before it was discovered and or fixed Which seemed huge and I thought well we should probably take a look and see if you know We've done such a good job with doing you know static analysis and trying to do all these tools for bug hunting So I looked through the Ubuntu CVE tracker Which has done a lot of the work already and trying to figure out where things were introduced versus where they were fixed so I can actually calculate bug lifetimes and so for From 2011 forward We're still seeing except for really critical stuff. We're still seeing this about five-year lifetime although the stuff that sort of marked as a High a high priority issue is starting to grow and to even longer lifetimes and This this summary is just a bunch of numbers and I didn't like just putting this slide up So I tried to visualize what we're looking at here. So this is 557 bugs that are associated with the CVE Red which you can barely see here Thankfully are the critical bugs and then orange or high priority bugs blue medium and low The most recent kernel is at the top and The start of git history is at the bottom so you can see the lifetime as it stretches from where it was introduced All the way to where it gets fixed Generally a lot of the stuff under medium and low tend to be very specific problems or Theoretical issues that don't really get hit so we can zoom in and look just at critical and high And we've still got giant bug lifetimes Even on critical, you know, this is from before 2011 I'm not sure when 2 6 31 came out, but it wasn't fixed until 3 14 So if you happen to release Software that depended on any of these kernel versions in between there You're running with a critical bug. I sure hope you've patched it That that kind of sucks A question I get a lot is well, okay, isn't this just theoretical, you know No one's actually finding these bugs to begin with so they're not actually, you know, there's no window of opportunity and that's You know demonstrably false people are finding People are finding these bugs Sometimes immediately when they're introduced this is a link to some some folks that found One of the one of the critical bugs and you know boasted that they found it when it was introduced and they used it for like two years before It was fixed and upstream but most attackers most the people that were interested in and protecting ourselves from are not Publicly boasting about the bugs they're finding so we have you know a couple data points about this But it's you know this lifetime this window of opportunity for attack is still large And it's not theoretical because we can actually we've actually seen demonstrations So As I mentioned earlier, we're we're definitely fighting bugs. We're fighting. You're using static checkers using dynamic checkers We're fixing them, but we're also accelerating the pace that we introduce bugs. So we're kind of on level and Another thing that that I try to convince people of is that the bugs exist whether we know about them or not This seems to be a big thing that people For some reason just can't accept mentally, you know like well, I have no open bugs in my bug tracker Everything's fine. It's like yeah, but you know when Go back to to this so from 2 6 32 until You know 3 out 13 everything was fine With a critical bug sitting on your system So the important thing, you know, the important thing to think about is sort of look at where things were introduced and try to gauge How many high priority and critical bugs? exist now in the software you are running today and to accept the fact that we We as a community don't know about it yet, but they're there so it's important for us to Act like there are bugs because they are there. So we have to create systems that expect bugs to be present And that ultimately, you know whack-a-mole is not a solution in the long term. We do want good, you know To have good clean code. So I'm not I'm not saying we need to stop doing all the bug finding we're already doing Last year was the keynote gave a sort of a comparison to the software ecosystem generally a 1960s car industry where cars were designed To run but not to fail. So it was very comfortable while you're going down the road But as soon as you crashed everyone died. So that's not That's not acceptable anymore like we laugh at it now and it's like cars are designed with all these safety features And in a similar fashion Linux kernel needs to deal with attacks in a manner where it actually is expecting them and actually handles Gracefully in some fashion the fact that it's being attacked And this is becoming more and more of an issue because Over time user space is actually becoming more and more difficult to attack There's a lot of access control and other, you know approaches being used in user space and That kernel layer is now one of the largest exposed attack surfaces generally and containers Have put kind of an even bigger target on the kernel because you've got you know How many different user spaces all running on one kernel? So that makes the kernel even more interesting to attack because you can jump around into other things and A thing I have also tried to remind people although not too much because it becomes upsetting is that it's not It's literal that lives depend on Linux and not just in the fact of how how the software is being used but You end up with situations where you know There was I think it was one of the higher critical bugs the few techs kernel bug from a little while ago Was turned into The tool called Tal route that was used to you know, root your Android phones or whatever but when the the blackhead organization Hacking team was exposed and all their tool sets were seen for the world It was noticed that Tal route was sort of reorganized again to be a Weapon for that group so that means if you're a dissident and activist somewhere else in the world and You're getting spied on You know your life is literally at risk because of these bugs and that's that's a bit heavy, but It's kind of true and it's something to keep in the back of your mind about how these things affect people in the real world I like I like this photo. This is a picture of a of a 1959 Belair crashing into a 2009 Chevy Malibu Where the 59 is just being utterly decimated the entire front end and Cabin passenger compartment is destroyed and the Chevy you can sort of see the person or the test dummy in there But the whole cabin is okay So it's like this is what we want to get to in our comparison from you know, 60s current industry to current and Current software ecosystems and Linux in general. We want to make it much more survivable Anyway, so as I've talked about killing bugs is nice But there is some truth in the complaint that well security bugs are just normal bugs. It's like yeah Some things are you know a bug security bug to me, but not to you But that's even more of a reason to have proactive systems in place because then we don't care what the classification is There it's not a security issue at all and in dealing with how to Accept responsibility for code that is running on devices that isn't in upstream if we can create proactive systems that work even with Unupstreamed software that's good because that's still the device someone is holding is this you know This consolidation of code that's upstream and not upstream and if we can make it safer Regardless of where the code comes from that's good Since we can't necessarily fix the bugs in out of stream out of tree code So again, it's we can't say it's not our problem But I want to kill bug classes If we can stop an entire class of bug from happening that would be best Make it so that out of tree code can't even hit these kinds of bugs But we'll never kill all of them.  What can we do to frustrate those attacks or totally make them impossible to to start? And the thing I try to convince a lot of developers about is we need to introduce these features Even when it makes development more difficult There is a you know There is a technical burden to supporting these kinds of features, but it's similar, you know It's the analogy falls apart eventually, but even with the car industry They have to work around the fact that you know, okay We've got these titanium bars and the side doors now and can I put the window there now? Okay No, I have to work around that but I have to work around that because those those reinforcements are in fact important for Running the safety of the vehicle and we're sort of in the same place here It's like okay We want to make it as easy as possible But there are going to be situations where there's going to be a trade-off to maintain ability or there's going to be a trade-off to performance or these other things and we have to sort of Accept that that is part of the development process. It's not just a thing to be avoided at all costs so when looking at at how we can defend the kernel there's sort of Areas of dealing with with typical exploits And this uncovers where we want to focus our protections Usually modern attacks are not just one bug and suddenly Everything comes apart. It's usually a series of bugs. So anytime we can close individual bugs We can break chains of attack But ultimately we need to know where the targets are You know as an attack you need to know where the target is somehow to inject what you want or find Code that you want to run Locate that code and redirect your execution. So anything we can interrupt in each of those pieces is important And at which point someone says, okay, so this is a big problem. What do we do? Washington Post had a nice article around this which Helped launch this self-protection project a bit like it was being worked on in pieces before that But a lot of this code already exists There it's either in out of tree Out of free repositories like packs and GR security or it's been researched and analyzed and they're in academic papers Or you know, there's a lot of stuff that's out there already that we don't have to invent We just have to figure out how to make it work with upstream And there's a large demand for having these kinds of protections in these you know These are the questions people are asking me and other people's like, how do we get these protections in? So that was the start of the kernel self-protection project We're using mostly this mailing list as as where we organize The second URL is where I announced it and sort of out detailed what we were doing We have put together Some wiki links to describe a lot of what's in these slides about what areas we're focusing on some The rationale of why we're doing it how to approach things stuff like that But this is mostly all about people interested in either writing the software doing testing writing documentation or just generally discussing the ideas that are going on and all sorts of related topics and There's there's also people on the same list working on all kinds of user space protections But that doesn't tend to be the focus. I'm looking at I'm looking at just kernel self-protection because it is a narrow It's a narrow enough scope With so much work to do already that I didn't want to really spend a lot of time working in on Things that the kernel can do to make user space Safer since there's already a lot of people working on those things It seemed that the self-protection concept didn't have a big driver behind it So I wanted to sort of bring attention to that and These numbers are getting much harder to actually Produce reliably since people will move in and out of working on projects and you know people shift between companies And what technology someone's interested in shifts around but I would say it's about ten organizations Working on twice as many technologies and the other piece that's important is This is a this is a really slow and steady Thing it's not a revolution of change It's just little pieces slowly making their way in Getting people to understand how they're used and we will grow from there. It's it's not It's not a fast process So I sort of put together a list of people who've been doing Code doing testing involved in discussions If if you feel like you're involved in the self-protection project, and I didn't put your name here I'm very sorry. My brain doesn't work very well I just wanted to try and get some List of of people and organizations that I could sort of recognize that people have been working on these the project If I have you listed under self-funded and I don't know where you work Sorry, if you've moved between companies between when I made this slide. I'm sorry, but I just wanted to sort of show that this is There's a lot of people actually paying attention to this which is extremely exciting for me I'm glad to have the help because a lot of these areas are extremely Technically deep and are not things I know very well myself So when I can say hey, we need we need attention here. Is there anyone who knows this area? Please step up. We need this desperately. It's really nice to have a pretty deep group of people to to pull from So to quickly look at bug classes like to look at areas we're interested in Stuff that's in bold. I would sort of say is Effectively done for what the protection describes if I didn't put someone's name near it Generally, it's because it happened before the Colonel cell protection project got rolling. So we you know I can't really take credit for Maybe the elevated attention that it's that it's bringing but This is bug class of stack overflows, which is both stack buffer overflow where you've overflowed the functions Allocated stack area and stack exhaustion where you have filled the entire stack segment and you're going past it One piece right now that Andy Ludomirski is working on is moving the Colonel stack into the V Malik area so that we can have guard pages So we can detect stack exhaustion Situations which also includes the removal of thread info, which is a common target But there's a couple other areas here that we don't necessarily have anyone paying attention to in upstream There is this entire bug class of integer overflow and underflow and I have examples of each of these classes as well We spent some time looking at the packs ref count which solves this pretty well It's it's being sort of slowly chipped away at We've got compiler Plug-in infrastructure now on the Colonel so we can start looking at more of the plugins that exist out of tree Let's see heap overflows so this is an examination of You know mostly bounds checking of reads and writes of common objects So a lot of that goes through the copy-to-user copy from user infrastructure and A bunch of people have been helping sort of chip away at the pieces that make up packs user copy Which actually is composed of about three? distinct protections and We've started to land the first of those three now and then also looking at Sort of metadata validation, you know If you're adding something to a linked list you can do very simple checking to see am I actually in a linked list Or have I been corrupted and I'm about to be used for an attack So some of that's going in as well We haven't had too many people look at sort of the concept of guard pages around around heap objects yet Format string injection another common bug class Removing percent n which was the right primitive that exists in format strings landed in 313 That was nice that just changed the entire attack surface from Having a potential right primitive to not having a right primitive. So suddenly it's now denial You know, it's it's you know memory exposures not memory writing, which is significantly nicer But we can do a lot better with some of our compiler checks on on format strings GCC gets very confused about the types of strings that are being used So the built-in protections are not the best, but I think we can improve that with some GCC plugins leaking Sorry exposing kernel Addresses becomes an issue when you're trying to hide where the kernel is or where targets within the kernel are So we had this k-pointer restrict Which was it's a little bit too weak in the fact that it requires a developer to know about it and to choose to use it And that really doesn't meet the bar for what we were designing in the kernel self-protection project Which is it should just work. You don't even need to know about it. It should just work So some of the pieces involved in the packs user copy in the later pieces that we are still working on Can support? Examining where are you about to write this kernel address? Is it going to target a buffer that will ultimately end up in user space? Well, then you can't do that so blocking some of that stuff we need some folks looking at that as well and While it is the bane of anyone trying to debug a kernel attempting to remove kernel symbols entirely from from a production build is another option with the hide sim stuff, but I sort of look at Exposures memory exposures as a much harder battle and not necessarily low-hanging fruit because you need a Strong way to describe what your threat model is and this one's a little tricky So I want to save it for later There's a bug class of uninitialized variables You can actually you know land exploits. I hadn't seen any good examples of this. So I made one but there's a couple different methods of clearing out memory so that you end up with fewer exposures and and You don't have something You know in an uninitialized state or an unknown or you know initialized by something else state Or any time you enter you're initializing everything, you know zeroing out everything you're cleaning up your stack as you exit There's a bunch of solutions here. No one's started to look at this too closely and upstream yet Another one which is usually strongly related with with integer overflow and underflow is used after free and again, we've got some some work done here on Clearing out memory after it's been freed so that there are certain classes of attacks aren't aren't good randomizing the heap free list Can frustrate certain types of attacks? there's There's a lot of opportunity here for people to work on more protections on use after free And then there's finding the kernel at all. Why don't we just move the kernel around and that's pretty good We've had we've had a lot of attention given to Kernel base address randomization Work done on x86 recently landed on arm64 and MIPS And now we've moved on to randomizing some of the static memory locations or not static necessarily But memory locations that are always the same at every boot on x86 is moving stuff like The page tables around moving the V malloc area around because there's a lot of very interesting targets in those in those memory areas That if they're randomized it it raises the bar for attack And then doing Per build structure layout randomization so every time you build the kernel Where the target function pointers and everything are actually get moved around so as as an attacker You have to know information about the build keep track of what version you're looking at It really frustrates things and a lot of this stuff is This is not a deterministic protection, but it's a you know, it's it's a randomization So it's it can be gotten around with memory exposure and other things But it does frustrate a lot of sort of automated attacks or makes it raises the cost of automated attacks Direct kernel overriding so if you get a right primitive and the kernel when you're attacking it You probably shouldn't be able to just write the kernels You know code area this shouldn't be possible. It is still possible on some architectures I You know getting getting this really really well done is Is strange to me like it's a 21st century. This is something that was known how to fix You know, this has been an idea for decades, but it just wasn't a priority because There's this expectation that again Oh, well, you can you can write to the kernel text that's strange. That must be because there's a bug Let's fix the bug like no we need to protect the kernel because there's always a bug This this is you know the simplest way of attacking a kernel once you've got a right primitive So so getting this getting this solve for all the architectures would be great so So once the kernel is no longer writable then you have to look at things that are Allocated more dynamically like function pointers and Julia talked about constifying tables of function pointers This is a similar thing is making sure that as much of the kernel is read only as possible Means you have very few or you know many fewer places where you can attack as an attacker Assuming the prior page has been taken care of as well Some little pieces to this infrastructure are that while we can do a lot of Static and even compile time analysis of things that we never touch we can trivially make const The next class of thing in the kernel that is still writable and has these kinds of function pointers are usually written to only during the init phase so we have This the idea that once a knit has finished then you can make all the memory that That was being written to their read-only again And will continue to run read-only so that's this read-only after a knit piece of the larger Larger idea behind the current exec pieces and the next step of this is Things that are updated only infrequently You effectively make it writable briefly write it and then make it unrightable again so that you know sort of by default It's unrightable and that's that's a kind of a huge infrastructure change to the kernel Even doing our after a knit took You know, I had to enlist the help of a couple people Took architectural support and a couple different architectures needed help on making it work on modules, etc And then getting more and more people to use the this tag Which unfortunately is opt-in, but so be it I move to exploitation this is If you've gained control the kernel if you run code that's living in user space That's by far the easiest mechanism to exploit a kernel So the idea is if your architecture supports a segregation between You know privileged memory and unprivileged memory it should enforce that And these you know this is introduced on a number of different architectures But I can call out x86 is SMEP and PXN on arm and arm64 But it's possible to emulate this protection in software and this has been done on arm now for things that don't have PXN, which is very modern And then there was a gap on arm64 where you couldn't use arms method of emulation But now it looks like we've got a solution for the arm The 8.0, which is most of arm64 now in the future. It'll be hardware segmentation I still need this on x86 though. So if anyone would like to work on that I'd like that emulation the next one is user space data So you didn't run code, but you might be accessing a structure that ends up Launching you back into doing bad things in the kernel So this is you can't even touch user space memory memory from the kernel without first saying you want to This looks very similar these two pages about the emulation look very similar to each other because ultimately if you have This protection you have the prior protection But again, I still want this on x86 Because we've got a long tail of hardware that does not support SMAP on x86 and it's this is a a Big deal like that. That is one of the major ways That we're gonna kill a lot of exploitation methods because this pushes exploitation into finding a place where you can write write and execute memory in the kernel which is very small it should be zero or You're gonna start generating Return-oriented programming style attacks against kernels this raises the bar quite quite a bit by having these kinds types of productions Which is why I want the emulation as well because not not everyone has last year's hardware Which gets us to Rob and at some point we can get to you know full Return-oriented programming protections. There's been a lot of research done in this There are some examples in in packs There's a lot of work being done on you know a control flow integrity Other things like that. We've had pieces You know I put the the jit hardening that was worked on recently here because that's It's similar in that you can you can instruct the kernel Please create the code I want to attack you with and put it in kernel memory and the colonel says okay, and then you run it That's not good So if we can harden that against attacks remove cons Relocate it randomize its position make sure you can't write to it once it's installed etc. Those protections have gone in so to Quickly reorganize the order of these features. I I like covering the rationale for why things certain things are getting worked on You know what it what those things provide what kind of protections they provide but usually I also get the reverse question is like Okay, so what actually made it into the kernel so I've turned this around and said okay in 4.3 The pan emulation and arm landed Ambient capabilities landed and I'm just marking that as notable. It's a user space protection But it changes a lot of how user space can think about operating and capabilities Removes the need frequently for file system capabilities or augments it in a way And sec comp on power PC I'm biased on the second maintainer 4.4 This was a static target in on x86 could be removed 4.5 Again another user space protection, but we were able to control the size of entropy of user space as a lot 4x6 got quite a bit of stuff KSLR on arm 64 Our data was enabled by default, which is what I was talking about for a lot of these You know most distro and and vendor products tend to turn on our our data already But to have it on by default is is good for anyone who's less familiar with what they're building on the kernel and On x86 our data is now mandatory. It is not possible to turn it off. There are no there's no config There are no config if deaths anywhere in the code anymore. So you just get proper memory protections on x86 zeroing of heat freeze If you enable the debug mode on the basic infrastructure for our after-net one end and Execute only memory on x86 for processors that no one can get yet landed But it's there so once someday we get that that'll be nice And that's more about memory exposures. So if you get a read primitive You can't read out the entire kernel and find your attack targets and other things So if you can only execute it that makes your life more difficult. It's an attacker 4.7 KSLR for MIPS slab free list randomization the jit constant Blinding landed 4.8. We got the slub free list randomization KSLR on x86 was expanded to cover the entire physical memory range instead of just the first couple gigs And the work has started on randomizing the various memory bases in the kernel on x86 the GCC plug-in infrastructure Finally made its way in with a couple example plug-ins that don't really have too much security relevance yet, but Those were it was kind of an invasive series of changes. So to have the infrastructure in place means it's now Trivially pos trivially possible to add GCC plug-ins You can you know pluck them out of packs and GR security and run them on a mainline kernel now Which is quite nice. Although usually for many of the Packs and GR security plug-ins.  I'll talk more about that tomorrow But that's been fixed and then my magic crystal ball predictions because who knows Hopefully the latent entropy GCC plug-in will go in and that that's designed to get us more like sort of More more state in the random number generator for usually embedded devices or things that don't have good hardware Random number generators the V malik stack on x86 List hardening that I talked about will land in there and it looks like pan emulation for arm 64 Which I'm extremely excited about should be in Hopefully in 4.9 as well, but again, I can never predict what's going to go in And I quickly cover The distinct challenges probably the biggest challenges culture on both sides of sort of the fence of out of tree and Upstream there's a lot here the upstream. There's quite a bit of conservatism on on code changes the example I like to give is that It's a user space protection, but still it's indicative of the of the problem is The idea of sim link restrictions in temps of these temp races on sim links, which has been you know plagued Linux and Unixy systems forever a Very simple clean solution was designed You know 16 years prior to it actually landing in the upstream kernel and there were Five or six people that made attempts over the decade and a half to get that in And it really takes a lot of persistence and patience so On top of that, you know, there's I feel like a lot of the upstream developers need to sort of Accept the responsibility of like okay, we do need to pay attention to this. This is important and We have to accept that it's gonna be It's gonna take work and we're gonna have to deal with the technical burden And then for the people who are trying to get this stuff in you need to get a lot more patience and understand How the kernel is developed and that it's not an instantaneous change and that things are evolutionary in their process And of course we have the technical challenge a lot of these protections are incredibly complex and So they are even harder to debug And There's a lot of innovation involved, you know things that exist already in the world are not necessarily suited for for what's how upstream does its work and You know, there's Collaboration on these changes is a big deal, you know, even if you have fantastic code If you can't describe why it's needed how it helps things why it does what it does You know really documenting these changes is can be a big challenge and understanding that developing against upstream Means you're not writing code for the kernel You're writing code for the kernel developers and other people are maintaining your code Other people need to understand your code and other people are not necessarily familiar with what you're doing So, you know having stuff really Understandable to other people that don't know this is is pretty critical and Of course resources getting more people to help so If your company is interested in it if you are interested in it Getting dedicated people on this and getting dedicated testers, which is which has been incredibly handy, you know, even if you're not You know big into writing really complex Technical things like this just taking a patch set Running it on the hardware you have and saying hey, this works for me or You're a moron you forgot this corner case and it blew up. Here's my dump. Please fix it That's incredibly handy like getting that silence is by far the worst thing on any upstream development So if you post a patch series and you see something like oh, yeah, I should I should really download that and try that That's that's really important and then ultimately We're gonna have to recognize it another major contribution of this is vendors will have released products that have old kernels so getting people to do back ports of Potentially complex and invasive changes and backport them is gonna be another big area of work And that was a lot of slides and I'm done. So that's where you can get Look at the wiki. That's the list. That's the slides I'm not sure how much time I have but If there are any questions I can try to take them now. Yes, I didn't hear the last part of an example of what? Sure, so Let's see the I Think probably a quick example. It's recent is this move to move the kernel stack Onto V malloc introduces limitations on I Mean there you're you weren't supposed to do it before but it did function if you were to use a stack buffer as a target for DMA It really doesn't work on V malloc. So it requires Requires changing the infrastructure of drivers that may be performing those kinds of things. So that that's sort of a one-time cost a ongoing maintenance burden might be if we get emulation of the memory segregation the infrastructure for that tends to be pretty invasive on per CPU on page tables on a bunch of other things and it complicates How those layouts work and how the code works and how task switching occurs? Yeah, okay Exactly, it's maybe not the best example, but but um the come usually it's complexity that's being introduced Yeah, it's it's easy to get a security fix or a security feature in when it has additional benefits This is not always true But that's the the V malloc stacks is a good example of that Of debugability and a couple other things I think I saw you first so I have tried cowardly enough to To avoid that as much as possible by hiding things behind config values so that We I use I sort of use the time frame of Introducing a feature that may have some performance impact but placating people by saying okay it's behind a config so only people are interested and we'll use it and then in a year or two when every single distro and Every major vendor of Linux has turned this config on I can turn around later and say Look, this needs to be default. Yes, because it's already default. Yes for the world in reality So I'm I sort of try to avoid that fight because it's an incredibly hard fight to have I simply have to say okay if it's worth it then everyone else in the world Interested in it will turn it on and we can prove that out later So I've sort of been collecting this long list of configs that I'd like to have config. Yes, but it's like that's not a battle I want to have We should wrap this I'll be around in the breaks people come see me ask questions. Thank you


What's up? Welcome to my channel. So for today's video I am going to be trying on some new products that I bought while I went and visited the West Coast for like 10 days It's a really long vacation So I went to Los Angeles and Las Vegas and there's a lot of shopping over there and I went to a lot of cool places I went to KKW the morphe store that just opened Korea town so many cool places I got so many cool things. So if you want to check out the haul I did upload it before this video So I will put it in the cards and link it down below. Definitely check it out But here I am trying to use them for the first time basically so I'm going to zoom into my face and let's get started I'm actually going to start off with my eyes because I want to do a look with glitter So I'm going to try and use as many of my new morphe brushes as possible. I bought a crap ton Okay, so I'm going to do a pink glitter cut crease look so I'm going to use the Lime Crime Venus XL palette I know this was released a while ago, but I saw it in person and I was like this is insane I'm going to start off with some of scalloped on my morphe M504 and I'm going to put that all over the crease You hear like screaming in the background My neighbors are in their pool all day every day There's really no quiet time of day for me to do this So it looks a lot lighter in the pan But it's coming off pretty pink and really blend it out because I think I'm just going to use a wipe or something To clean it up. Honestly, I'm just going to go crazy and on a smaller brush. This is the morphe E27 I'm going to take Flora, which is a crazy Vibrance color and I'm just going to pop this in my crease Why not? I had plans to like wake up work out and then get filming immediately so I could get some nice pictures of my look 7 o'clock p.m And tomorrow I start work. I just got back and I'm all jet-lagged Oh, I really like this color. They're blending up beautifully. I'm also going to take some of blank canvas I'm just going to put that underneath my brow bone This is just going to set the concealer Okay, so to add some depth into this look I'm going to take some of Trump on a Mac 217 I didn't buy this but this is just near me and I'm going to put this into my outer corner Just add some depth. These colors are blending really beautifully. Oh my goodness. I love this palette All right, so I got some new brushes to try and do a cut crease with this is the Anastasia a 18 brush. I'm just going to take a random concealer and let's try it out I'm going to move the mirror close. I don't play around So sorry if I'm out of frame got to be close for this. This is kind of like a rough draft I'm not a cut crease queen. Okay, right, but I'm going to take the shade Goddess and I'm going to pat that right over the concealer okay, so to kind of Sharpen the cut crease. I'm going to take some of trying on the m507 and I'm just going to deepen where I cut Don't judge this cut crease too much. I'm just playing around with new makeup. I don't really I'm not trying to do like intricate look right now. Okay Hey, so I will say the goddess color pulled a lot darker than I thought it was going to But it's fine because I'm just gonna Cover this with glitter anyway So for now, I'm putting the Venus palette to the side and I picked up the eye candy liquid sugar I have no idea how to use this, but we gonna try and then I also got the eye candy glitter in Double bubbles. So double bubble is like a really pretty pink pink glitter So what are the directions say gently squeeze a small fell of liquid onto the lid dip your brush into the liquid sugar Slide a long rim to excess liquid Okay, sounds really complicated You know what? I'm it said put it in the lid But I'm actually gonna put it on my hand the biggest it on my cheek is really bothering me And then I'm gonna put the glitter So I'm just gonna kind of mix the glitter Wow, this is Guys, I don't know what I'm doing with this stuff. Okay, I've never used it before I think I just put too much on that was better, but it's peeling off my eye shadow. I Don't really like this right now, but it's totally completely 100% user error. I have no idea how to use it I'm gonna put some on my finger and like I'm gonna put more of the liquid sugar Assign I'm going to you're not people and it's like ruining my cut crease I'm going to look up how to use this because whatever I did it's not working I think this thing is good to like mix pigments in and kind of make it a liquid eyeliner But as a glitter glue, I don't get it.   I'm actually a little better at makeup Then it may seem once this gets cleaned up with some liner and lashes. It's gonna look fine But just because I know how it was supposed to look. I'm like, this is so terrible I'm wiping off the excess glitter with my shirt. Okay, so next I'm gonna take the Pat McGrath Primer precision that liquid eyeliner. This is just an eyeliner pen. I've used it before on my channel I just picked a new one up while I was on vacation.  So it's fine. It's fine So let's go out into my thing I picked up a few up Foundation for this video. I am going to use the Dior skin forever foundation I got mine in the shade 025 and I haven't used it yet I'm gonna use the morphe sponge as well, which I'm not crazy about This is like a perfect match for me. This isn't like a newly released foundation or anything It's been out for a while I just have been wanting to try it and so I used vacation as an excuse to pick it up This foundation is beautiful. I'm into this So I also went to the KKW pop-up shop when I was in Los Angeles And I waited in line for like an hour and a half, which apparently isn't that bad For how long people had been having to wait because I went on like the third day it was open So I got the concealer in the shade number four and for the fourth shade as you can see this is very light I'm using the M536 brush from morphe to blend it out. I haven't tried this brush yet I do like this concealer though I wore it for a couple of days and not too drying, which I like I hate the drying concealer That's why I don't like Tart shape tape at all. I hate tart shape tape to be honest I still think I prefer a sponge But this did a good job of keeping the coverage though I will say that and then now I'm going to use the loose setting powder and then The brightening powder though. My under eyes are already hella bright. So I got the two Brightening powders or the setting powder and the brightening powder for shade number one And more in the center of my face So my under eyes aren't like ridiculous looking I don't like the packaging of this though because the powder is just like Sitting on top of the sifter. So I have to keep this upright And then I'm gonna take the brightening powder and this is what everybody was loving when this came out and it's Nice, I like it Just for some added brightness, you know, it's kind of redundant if you ask me, but it is nice from the KKW store. I also picked up the Contour stick in the shade light number two. It's not too deep of a color. I didn't want it to be too deep I wanted it to be rather close to my skin tone so that I could blend it out And it'd be like a really natural and I'm using a morphe stippling brush I would tell you what brush it is But the numbers are all like messed up. It's a m5 o something But it's like a really loose and long Stippling brush and I just like to use these to blend out cream products And so that's just going to give my cheekbones a little bit of a lift because this foundation is matte I'm not going to set it because I do have dry skin I just learned that I've been able not to set my foundations I picked up the morphe bronzer in the shade celebutant So let's give this a try. I'm gonna take the bronzer side Which is right here on a morphe Y3 blush and bronze my face up This is pretty nice. It's really light on my skin I usually go a little deeper with bronzers usually, but this is actually very very nice It's not too warm. It's almost a little too Yellowy. That's weird, but it blended out very well so Yeah, that looks good, and then I'm gonna sculpt my face using the contour side Just a little bit though because I did use that KKW stick and I'm looking a little brown I want a little crazy. This is the Y9 brush. Oh, I like that I look chiseled I'm gonna take a little bit of Kodi airspun powder and I'm just gonna Clean up underneath because I am feeling like I look a bit too brown and this is just gonna Fix that so I know this is the first time I'm using Kodi airspun I bought it in Korea town of all places, but I like it because it's so affordable So doing things like this that require a lot of powder don't feel like I'm wasting product Okay, so blush. I picked up the perfect palette from morphe the 8c palette beautiful I'm gonna mix the shade it girl with a little bit of hot And I'm gonna put that on my cheek because I obviously wearing a pink look though So pink blush is gonna make this look really good my opinion on the morphe palette I've used it a couple times and I really like it. I love blush So I I mean the colors blend very well might put a little bit too much on but Okay, so for highlights. I picked up an artist couture highlight in the shade Illuminati I'm so pumped about this. I'm very very late on the bandwagon. I've been eyeing it for forever, but I never Wanted to spend like $27 on something I wasn't too sure about and it's just like one highlighter versus like a whole palette But so worth it you guys this shade's a little too Golden than what I would have wanted for this look, but I just wanted to show you guys how amazing this highlighter is So it's fine, and this is one of my favorite brushes. I picked up the y14 perfect highlighting brush Kind of wiping it off into my contour just to soften it a little bit I kind of just want to open my window.  All right, so we're going back into the lime crime palette I'm going to run goddess underneath my lash line and then I'm picking up a little bit of flora And then finally some of Trump I'm going to take a little bit of ethereal, which is this light Shimmery pink shade and that's what I'm going to use as my inner corner color It's not as bright as I normally would like And I'm gonna take my Sephora white liner as I always do And that's just bringing a lot of brightness into my look. All right, so really quickly I am going to apply some mascara and lashes and I'll be right back for the lips All right, so we're on to the finishing touches of this look the lip I am going to use the NYX suede matte lipstick in the shade dainty days I didn't pick up too much for lips. So I think this is probably the most appropriate one for this look that I have It's basically just gonna mute out my lips So the formula of these lipsticks upon application. They're amazing. They're so smooth. I think they're such an amazing matte lipstick I can see people who don't Like matte lipsticks liking less. However, it does not last long I'm just wondering now you're going to have to keep Reapplying this lipstick if you get it, but it does feel lovely on the lips It's not going to dry your lips out But there's a price you have to pay for that and it wears so fast And then I'm using the butter gloss by NYX in fortune cookie These two are a great combo And Yeah, that's it. This is the look I created. It's a really pretty glittery cut crease It's not really a cut crease anymore So this makeup I wore in my last video which was my haul So if you haven't checked it out, make sure you check it out. Thank you guys for watching this video Remember to subscribe to my channel and I will talk to you guys later


A fiery horse with a speed of light, a cloud of dust, and a hearty hyosilver, the Lone Ranger. With his faithful Indian companion, Tonto, the daring and resourceful mask rider of the planes led the fight for law and order in the early western United States. Nowhere in the pages of history can one find a greater champion of justice. We turn with us now to those thrilling days of yesteryear. From out of the past come the thundering hoofbeats of the great horse, Silver. The Lone Ranger rides again. Come on, Silver. Let's go, big foe. I am Silver! Dan Reed, 14-year-old nephew of the Lone Ranger, was returning to Rock Hill after visiting friends some distance away. He sat in the railroad coach next to a nice-looking girl who was reading to pass away the time. Finally, she put the book down and with a friendly smile spoke to Dan. You seem quite young to be traveling alone. Oh, I'm not going far just to Rock Hill. Really? That's where I get off. I'm Jane Walters. My father and brother run a ranch near Rock Hill. My name's Dan Reed. Did you go east on a visit, Miss Walters? No, not exactly, Dan. Dad sent me to St. Louis six months ago to stay with my aunt. I really didn't want to go. Oh, you didn't? No. You see, there are a few sheep ranches near our place. Well, at first, Dad and Tom, that's my brother, tolerated them, so they didn't like them. Then things began to happen, such as fences torn down, cattle missing, and other happenings that Dad blamed on the sheep ranches. Dolly, then your father didn't want you to be there in case it was open trouble, I guess. Not exactly, Dan. You see, the man I promised to marry, Jim Fletcher, owns a sheep ranch. When I told Dad and Tom about Jim and me, they were furious, and Dad insisted I go to St. Louis at once. I see. He made me promise to stay six months, thinking I'd forget about Jim. Dad doesn't know, of course, that Jim and I have written regularly to each other, and it would feel just the same about things. How about Jim's a nice fella? I think so, Dan. I know you'd like him, and I know very well he's not to blame for what's happened at the ranch. I have Jim's word that none of the other sheep ranches are to blame either. No one can make Dad or Tom believe that. Gosh, then I wonder who is behind it all? No one knows, and things just continue to happen according to Dad's letters to him. I think we're getting into Rock Hill now. I'll get your suitcase down from the rack. Thank you, Dan. That's nice of you. Rock Hill! Rock Hill! Well, here we are. You were right, Dan. As the train came to a stop at the station in Rock Hill, Dan Reed followed Jane from the coach with her suitcase. He said her down was about to leave. When a pleasant-faced, dark-haired man about 25 broke through the crowd and approached Jane. Jane! Gosh, it's good to see you. Jim, I... Uh-oh. Here comes Tom. Hi, Jane. See, we weren't the only ones to get a letter saying you were coming in on this train. Howdy, Tom. Well, listen here, you wanna retire? I... I want you to meet Dan Reed. He was kind enough to carry my suitcase from the train. Glad to meet you, sir. Hi. Thanks for the help, Button. Here's a silver dollar for you. No thanks, sir. I... I didn't do it for pay. Well, have a joy, then. I'm Jim Fletcher, Dan. Sure was mighty nice of you to help Jane like that. I was glad to, Mr. Fletcher. Look, we can forget this kid a minute. Jane, you might as well make up your mind that you can't be seeing this no-good sheep herder. Either Dad or I are gonna stand for it. Tom, please. It's all right, Jane. Sorry, you feel that way about it, Tom, but... I don't reckon there's much you can do about the way we feel concerning each other, Jane and me. We'll do something about it, all right? I'm telling you right now to stay away from Jane, or you'll be plenty sorry. Come on, Jane, I'll take you to the book board. A short time later, after getting his horse Victor from the livery stable, Dan Reed arrived at the camp in the hills which he shared with Tonto and the Lone Ranger. Dan told them of his discussion on the train with Jane Walters and about the meeting at the station. Hmm. I've heard rumors that things weren't going well between the sheep ranchers and the Walters. That's right. I didn't know the happenings Jane spoke about. She was sure the sheep herders weren't to blame. Maybe not. In that case, someone has reason to create bad feeling between the Walters and the sheepmen. Ah, and it's not good. It may be mean range war. Yes, I know. Gosh, I'm sure Jim Fletcher wouldn't do any of those things, like stealing cattle and all. I see. Jim must be a likable fellow, Dan. Oh, he is. I didn't like Jane's brother Tom, though. He looks plenty mean to me. Hmm, him sound mean. He may be all right. The circumstances could make him act that way. Too bad for Jane, though. Golly, yes. I'll know after supper or I'll put on a disguise. Then we'll go into town and visit the cafe. You might hear something more about all this. If something isn't done soon, the Walters may get some cattlemen together and go gunning for the sheep ranchers. Meantime, in the back room of the cafe in town, Jeff Bacchus, the cafe owner, was talking to one of his men. Well, Sid, you said you had something to tell me. What is it? Jeff, I was at the station when the train came in. The Walters' girl got off and both Jim Fletcher and her brother Tom were there to meet her. You mean they went there together to meet her? Heck no. When Tom Walters saw Jim Fletcher there talking to his sister, Tom got sores all get out. Go on. Tom told Fletcher to stay away from the girl or he'd make him plenty sorry. You could see Jim Fletcher didn't like it much being called names and talked to that way in front of folks at the station. But because of the girl, he didn't say anything. He just walked away. Yeah, sure. Bad blood between those two hombres now. Yeah. And that's what gave me an idea. See, I come to talk it over with you. Yeah? What idea? What do you mean? Don't you see the chance it gives us? Hmm. You mean we could... cattle, eh? Yeah, I'm beginning to, Sid. Tom Walters comes in a café nearly every night. I'll be watching for him tonight. And when he comes in, I'll tell him a few things that'll really start the ball rolling. That'll leave the way wide open for us. Good idea. Come on, let's go inside. Right. That evening, the Lone Ranger and Tato stopped and dismounted in the shadows alongside the café. The Lone Ranger was disguised as a call-hand. We'll go stand at the back, Tato. Come on. Something for you, mister? Not right now, thanks. How are you, Tom? How are you? I'm Tom Walters. Yes, I know. Ready for trouble if more of it starts. Hi, Walters. Hello, Sid.  All he has to do is remember what I said to him. That's all. That is. I heard he was so sorry he said he was going to get eaten with you somehow and soon. Fletcher told you that? No, didn't say it to me. I just heard it as well. So if anything more happens around your ranch, you'll know who to blame for sure. Yeah. Thanks for the tip.  I wouldn't be too sure about that. Well, I got to go get a card game going. I'll see you later. Let's get out of here, Tom. I wonder if Jim Fletcher really did threaten to get eaten with Walters. I don't mean that. No. Well, let's go. Easy, easy. Come on.  The following morning, Jane Walters, with her father and Tom, had just finished breakfast when the foreman of the ranch came in. Hey, Tom. I just come from the North Range. What about it? Speak up, Hank. Is something happening out there? Not sure enough did, Mr. Walters. There's 20 of our best cattle missing. What? Rustled off the North Range during the night. Oh, Dad, that's too bad. Temptation. This sort of thing has got to stop once and for all. Yeah, Dad. And I'm the one who's going to stop it. This time, I know the honorary coyote is behind that rustling. We're always naming those sheepmen, Tom. We never get any proof. I know for sure Jim Fletcher planned that rustling job, Dad. He was going around town yesterday afternoon, saying he was going to get even with me for showing him up in front of folks at the station. And he said it would be soon, too. Oh, no, Tom. You can't blame Jim. I'm sure he wouldn't do such a thing. You don't see him like we do, Jane. He's just no good. And I'm going to see that this time he gets what's coming to him. What you aiming to do, Tom? I'm going over there and give him the chance to gun it out with me right in his own front yard. If he's got the nerve. No. No, you can't. Dad, don't let him. Nobody's going to stop me. Maybe you better think it over, Tom.  I know what I'm doing. Fletcher isn't at his place. I saw him riding the trail toward town when I was going out to the North Range. Then ride to town and tell him I'll be waiting for him when he gets home. If he don't show up, I'll burn down the place with the help of some of our rangehands. I'll go find him. All right, Tom. I'll ride to town right away. Tom, you can't do this. See here, Tom. Till you know for sure that he planned that rustling. I'm going through with it, Dad. This has become a personal matter between that yellow coyote and me. He'll skip the territory most likely. No, no. He won't. I know Jim too well. He'll go to meet you. But since you're my brother, I'm sure he won't draw against you. Tom, you can't do this. You can't. I'm going to get some of the rangehands and then I'm going over to Fletcher's place. See you later. Dad, don't let him go. I can't stop him, Jane. Tom's plenty headstrong. I'll go get my horse and ride along. Maybe he'll change his mind before Jim gets home. You'd better stay here, Jane. No. I'm going to town to find Jim. I don't know what good it'll do, but I can't let Tom force him into a gun battle. Meantime at their camp, the lone ranger, Toto and Dan were saddling their horses in the hidden glade where they had stayed when Toto spoke. Kimusabe, you listen. I don't hear anything, Toto. Yes, I hear hoofbeats coming along the trail. I hear them too now. Ah, someone riding fast and way to town. We see him through trees now. Yes, I wonder who. Toto, that's the man who spoke to Tom Walters in the cafe last night. Ah, that strange, him gambler cafe. Why him coming from that direction so early? That's what I'd like to know. I'm curious enough to try to find out the backtrack on his trail and find out where he came from, Toto. Ah. And maybe Dan go into town and get supplies. Yes. Dan can go into town alone for the supplies. Meet us here later. I'm still disguised as a cowhound, so I won't wear my mask. All right, let's go, Toto. Easy big foot. All yours, Dan. Bye, sir. We'll see you later, Dan. Once again. Come on, stop. The curtain falls on the first act of our lone ranger story. Before the next exciting scenes, please permit us to pause for just a few moments to continue our story. While Dan rode to town alone, the lone ranger and Toto followed the backtracks of the man whom they had recognized as Sid from the cafe. They rode for several miles, and then the trail led up the side of a ridge. As they reached the top, the lone ranger called a halt. Go away, Toto. What's going on here? Hold on there. Don't need to follow his tracks down the other side of this ridge. Must have left that small herd of cattle we see down there. That's right. Look, Kimusabi. You see two men guarding cattle over to the left. Yes. Strange that gamblers should be interested in that herd. That's right. And what we do? We go back to town and ask a few questions. There's something wrong about all this. All right, let's go. Come on, Toto, let's go. Jim Fletcher had arrived in town and went to the general store. He was still there when Dave the Foreman entered hurriedly. Hi, Dave. What brings you to town so early? You do, Jim. What do you mean I do? Just that. You see, Tom Waller sent me in to find you and give you a message. Well, what's the message? Tom's mad as a hornet, Jim. He's gunning for you. Tom gunning for me? I don't savvy this at all. Well, it seemed that you went around town yesterday shooting off your mouse saying you'd get even with Tom.  Stay now. Wait a minute. I left Tom before he did yesterday and didn't make any threats at all. Somebody lied. And I don't know about the cattle.  I see. All right, Dave. I'll ride out there to with you to meet Tom right now. Frankly, I'm sorry about the whole thing, Jim. Just remember, Tom's fasten the draw in a straight shot. I know all that, Dave.  Come on. There's no use keeping Tom Waller's waiting. A short time later, Dan Reed bought supplies at the store. As he prepared to mount, he saw Jane riding up the street. Hello, Miss Waller. Dan. You came to town rather early? Yes, Dan. I did. I can't stop to talk. Which way do you go? West on the trail a short distance that I turn off. Then mountain ride as far as the branch trail with me. I'm in quite a hurry. Come on, Victor. You seem upset, Miss Waller. I am very much, Dan. A small herd of our cattle was stolen last night, and Tom, my brother, blames Jim Fletcher. Oh, gosh. I came to town to find Jim. He rode in earlier, but I missed him. That's too bad. Yes, it is. Tom sent our foreman to tell Jim to go to his ranch, and that Tom would be waiting to face him with guns. Jim just won't draw against Tom. I know he won't, and he'll be killed. Dan, what can I do? Callie, I don't know. Maybe if my friends knew they could do something. Your friends? Yes, I haven't time to explain, but maybe if I were to... Then go after them, Dan. Somebody has to do something. I'm going to Jim's place now. I turn off just ahead. Where is Jim's ranch? About six miles up the west trail. Oh, they have to stop, Tom. Somehow they just have to. Goodbye, Dan. Get up there. Goodbye. I'll find my friends and bring them there. Come on, Victor. Whiting at breakneck speed, Dan passed the campsite where they had stayed for the night and continued on the branch trail in hopes of finding the Lone Ranger. After riding about two miles more, he sighted Toto and the Lone Ranger riding toward him. Gosh, there they are. Come on, Victor. Come on. In a few moments, Dan approached the Lone Ranger and Toto and pulled rain. Dan, what happened? We've been riding hard. I met Jane Walters coming out of town. She went to warn Jim Fletcher at least try to stop him from going to face her brother. That doesn't make sense, Dan. Somebody stole a small herd of cattle last night from the Walters. Go on. Tom Walters is waiting at Jim Fletcher's house for Jim to get home from town. He's going to make Jim face him with guns. That's not good. I feel sure now that Jim didn't steal those cattle. That's right, Kimosabi. Jane says Jim won't draw because Tom is her brother. She feels sure of that. Where is the Fletcher place, you know? On the west trail, about six miles from town. We can take shortcut from here, Kimosabi. Hello, let's take that shortcut real fast. We'll do it! A short time later at Jim Fletcher's place, Tom Walters stood waiting surrounded by a small group of ranch hands. His father was talking to him.  At least until we get some proof that Jim Fletcher took the cattle.  I've taken enough from that Jim Fletcher. And I don't need any more proof that he's behind that Ruslan. He's whoring town he'd get even, didn't he? Maybe he did, and maybe he didn't. I don't like the sheepmen any more than you do, Tom, but this is going too far. My fingers went crippled up with rheumatism.  I'd take it easy, Dan. This is my idea, and I'm going through with it. Even if I might be the one to take a bullet. Jane says maybe Jim won't slap Fletcher. You'll be in her brother. He'll draw if he isn't yellow. He's lucky I'm going to give him this chance. Hey, here comes Fletcher now with Dave. He sure is riding easy, like. Yeah, don't seem to be upset at all. Oh, he's better. Dave tells me you wanted me to come here. But you were waiting, Tom. I'm waiting and ready. You're sneaking low down, Ruslan. Right. Those are shooting words, Tom. Provided you weren't Jane's brother. You can just forget that. You made a mistake about those cattle. I didn't have anything to do with stealing them. You have my word on that. The word of a sheepherder? You make me laugh, Fletcher. The rest of you just stand back and give us room to face each other with guns. Tom, listen to me. Better stand back with the rest of them, Dave. Here comes Jane. She should have had more sense. But it isn't going to make any difference, Fletcher. Oh, there goes that easy. Jim. Oh, Jim. Jane. Jane, you don't seem much worried about whether your own brother gets a bullet or not. Tom, you know very well you're one of the best shots around here. And you know that Jim might not even... Tom, please, forget this crazy notion of yours. I know Jim didn't take the cattle. That's right, Jane. I didn't. I'm warning you, Jane. Get back with the others. Come along, Jane. No way to stop, Tom. It's gone kind of local about this. Come along. Oh, Dan. Why doesn't somebody do something? Ready, Fletcher? Since you're forcing me into this, I... I guess I'm as ready as I'll ever be, Tom. Then I'm walking away ten paces and turning. And we shoot when one of us sees the other go to make a draw.  All right, Fletcher. I'm ready. Oh, Dan, Jim won't draw when Tom does. Hey, look, we're now on the big white horse and an Indian coming in here. Wait, wait a minute, Dan. Who are you? What did you come here for? I heard what was taking place here.  What brought you here, mister? A friend of your daughter's told us what was going on. Dan sent you? That's right. Jim Fletcher didn't steal your cattle. Those cattle are hidden right now. Go with my friend, Tato, and you can capture the two men that are guarding them. I'll see here. How do I know you want... That's enough, Tom. It's only fair to find out what's the truth. That's right, Tom. Well... All right. But it better be the truth or... Or what? Nothing. Hit like a man. Jim Fletcher, you come with me. I think you'll be able to get the man who planned all this. Oh, Jim, go with you. Sure. Easy, boy. I'm ready, mister. I'll see you in town later, Tato. Maybe there. And we bring rustlers. Let's go, Jim. Come on, sir! Swinging back to the branch trail with Jim, the Lone Ranger picked up Sid's trail and followed it to the back door of the cafe. He and Jim dismounted quietly and approached the closed door. I'm in the owner's office. Yeah, and how do we get there? I'll listen to it. Yeah, your plan works, Sid. You've made plenty so far, by keeping those sheep herders and cattle living in each other's rooms. Hey, look, Caleb, you got last night. We'll be running across the border tonight. That's right. By that time, Fletcher will be dead. He can't stand up against Walters. As we've heard enough, come on. Reach, both of you!  I'll get you! No, you won't! No! Hey, what's your idea? You're going to the sheriff. Both of you. Yeah, we overheard you say you stole Walters' cattle. By now, Walters' men have captured your guards out there where we saw the cattle hidden. Hold it! That settles him. All right, let's get them to the sheriff. Later at the sheriff's office, the others had gathered after bringing in the two rustlers they had captured with Tato's help. Mr. Walters turned to Jim Fletcher and spoke. Well, Jim, now that we know the sheep herders went behind any of those happenings, I reckon we can manage to get along as sort of friends, eh? We sure can, Mr. Walters. Uh, now, about Jane... Well, I reckon that's between you and her, don't you think? Oh, guys, that's fine. Tom, I... I hope that we can forget and be friends. How about it? Look, Fletcher, maybe sometime we can. But right now, I still feel unfriendly to sheep men. Of course, if Jane wants to go ahead with her plans, it's all right with me. It'll take a while yet before I feel different. Come on. Tom's still hard-headed as all get-out. I'm sorry he feels that way. Oh, don't expect him to be all milk and honey right away. He don't change that quick.  I'd sure like to know who that ombre was who was responsible for bringing things out right. The one on the big white stallion who came to town with me and caught Jeff Bacchus and Sid. You mean he didn't tell you who he was? Nope, he didn't, Dave. And I'd sure like to know. Well, the Indian told us who that ombre is, and believe me, it almost knocked me right out of the saddle to hear that he's the Lone Ranger. The Lone Ranger. This is a feature of the Lone Ranger Incorporated, created and produced by George W. Trendle, directed by Charles D. Livingston, and edited by Fran Stryker. The part of the Lone Ranger is played by Bracebeamer.


Hello and welcome to the session. Let's work out the following problem It says P is a point in the interior of triangle A, B, C, X, Y and Z are points on the lines P, A, P, B and P, C respectively So that X, Y is parallel to A, V and X, Z is parallel to A, C prove that Y, Z is parallel to B, C So this is the figure we need to refer we are given a triangle A, B, C and P is the interior point and X, Y and Z are the points on the line P, A, P, B and P, C respectively So that X, Y is parallel to A, V, X, Z is parallel to A, C and we have to prove that Y, Z is parallel to B, C So let's now move on to the solution Let's first write what is given to us A triangle A, B, C P is the interior point X, Y is parallel to A, B And X, Z is parallel to A, C Let's now write what we have to prove We have to prove that Y, Z is parallel to B, C Now we have to prove that Y, Z is parallel to B, C For that we will use the converse of the basic proportionality theorem Which says that if the ratio P, Y upon B, Y is equal to P, Z upon Z, C Then Y, Z is parallel to B, C So let's now start the proof Now in triangle A, P, B, X, Y is parallel to A, B This is given to us Therefore by the basic proportionality theorem That is, V, P, T, A, X Upon X, P Is equal to V, Y Upon Y, P Let's name this as one Now in triangle A, P, C X, Z is parallel to A, C Therefore A, X Upon X, P Is equal to C, Z Upon Z, P Let's name this as two Now A, X upon X, P is equal to B, Y upon Y, P And also A, X upon X, P is equal to C, Z upon Z, P So from one and two We have B, Y Upon Y, P Is equal to C, Z upon Z, P So this implies Y, Z is parallel to B, C By the converse of B, P, T Hence the result is proved So this completes the question Do remember to use the basic proportionality theorem And it's converse So bye for now, take care and have a good day


Road crashes have become a major problem in many countries around the world, with negative social and economic consequences. This paper examined the situation in Cluj County, Romania, focusing on four main aspects, causes, effects, injuries and deaths, occurrence by road type and location within and outside urban areas. The results showed a decrease in road crash incidents from 2019 compared to 2009, with the greatest decrease seen in the number of deaths, especially on national roads and urban streets. However, certain categories of triggering factors remained persistent, such as driver behavior and pedestrian behavior. To improve road safety, further measures are necessary to reduce the number of crashes and fatalities, including increased enforcement of traffic laws, improved driver education, and better road infrastructure. This article was authored by Vasile Zotic, Diana Elena Alexandru, and Estefan Oliver-Egreasy.


Welcome to module 35 of chemical kinetics and transition state theory. Today's contents are going to be somewhat different than what you will typically study in your courses. But I believe it is still very important to learn this point. Remember we are learning so that we can calculate rate constants for a general problem. What we have learned so far is we started with these rate theories. We looked at transition state theory in great detail. And in the last few modules, we looked at molecular dynamics as an alternate way to calculate rate constants. In the last module, we looked at how rolling spheres on potential energy surfaces can lead to more insights on chemical reactions. Today we will ask a different question. First thing is if I can run these molecular dynamics. Are rate theories really necessary? Well, they are. The reason is these molecular dynamics are very computationally expensive. Specifically, if rate constants are slow, if you let us say have a reaction that is happening on a millisecond time scale, running a molecular dynamic simulation for that longer time is extremely hard. Very few computers in the world can do that kind of simulation. And it is not needed necessarily. We have transition state theory or alternate rate theories if you wish that can calculate these rate constants anyway. So, if all that you want is to calculate a rate constant, then MD is not necessary. It is one of the tools. So, transition state theory is computationally cheap. It is effective. However, and we looked at how to use transition state theory to actually calculate rate constants as well. We can divide partition functions into translational, rotation and vibrational and then calculate a rate constant. However, there are situations when this separation of partition functions is not always possible. It is not always accurate. So, is there a way for me to use the power of molecular dynamics simulations to calculate transition state rate? Actually answer is of course, yes. And it is commonly being used. So, I wanted to give you a little glimpse of it in this module and the next module on how we can use the power of simulations to calculate a transition state rate. So, we will have to go back to a rather old expression I derived some time ago, almost 6, 7 modules ago. We derived transition state theory in two ways. And in the second approach that we looked at, this integral we had derived. If you do not remember, you can go back to your module 27. This is nothing but this integral is your forward flux. This is an integral over the dividing surface of e to the power of minus beta h. And this is nothing but your partition function of the reactant. So, this is going to be my starting point. I will manipulate this thing a little bit more. So, let me start with this. So, I will do the following. First thing, I will separate out all momentum integrals completely. In the denominator, I will take out the momentum term. So, I have taken out this term and h r I am saying is equal to p i square over 2 n plus v of r multiplied by all kind of other integrals d p 2. I am also assuming this h Ts is equal to sum over i p i square over 2 n plus v of transition state q comma. So, I will have to delete this thing because I will run out of space. I will just write it below for your convenience. And in the denominator, I will have the actually the exact same term, both of them having the same limits. You will notice I will have this for all 3 n integrals and then I will have the position integrals that I cannot do anything about, not yet. I will simplify this a little bit. What does this mean really? This term is really the potential of transition state at q comma p really means v of the reaction coordinate equal to q 1 dagger the transition state geometry comma all other coordinates. This is basically the definition of v PS that my v is set of q 1 is set at q 1 dagger which is my transition state geometry. So, this is q 1 equal to q 1 dagger comma q 2 to q n q 3 n sorry divided by an integral over q 1 to q 3 n e to the power of minus beta v q 1 to q 3 n. So, I have just written everything very very clearly every term explicitly. So, all the momentum terms here cancel. Let me just simplify this term. So, this term that I have well we have been doing this kind of integrals very frequently.  These you can look up your integration tables. The numerator is k B T and the denominator is going to be root 2 pi m k B T. So, these integrals are just looking up integral tables. Do not worry too much about them. So, this is nothing but root of k T over 2 pi m.  So, I end up with this equation now. The all the momentum integrals had cancelled except for p 1 and the p 1 integral gave me this term k T over 2 pi m square root and I am left with still the integrals over all other coordinates d q 2 to d q 3 n d q 1 to d q 3 n this this. Now, the fun will begin. I am going to define a function p of q 1 not to be this where instead of q 1 dagger I have written q 1 not here. So, just be careful here I have this is not a mistake I have consciously written this. So, q 1 not is some variable. It can take any value not necessarily only the transition state value some q 1 not call it x if you want call it y if you want I will call it q 1 not because that is what I want and the denominator is exactly the same.    So, let me just be clear average of any quantity o over reactant this I am defining to be 3 n divided by sorry operator o here e to the power of minus beta v r because that is how averages are defined that is how thermal averages are taken and here I am specifically taking thermal average with a denominator specified to only reactants that is how transition state theory does to you. So, I am saying that this p q 1 not is nothing but average of this function and I do not want to get into the technical nuances here this is called Dirac delta function, but if you do not know then no problem physically this is p of q 1 not is the probability thermal probability of finding q 1 equal to q 1 not. So, if I take this integral here and I think that q 1 is fixed there is no integral over q 1 q 1 is a specified q 1 is specified to q 1 not in the numerator then I will get exactly this this thing I do not worry about this I have included in my potential. So, do not worry about this part that much. So, p q 1 not effectively tells me if I am at thermal equilibrium what is the probability that q 1 is equal to q 1 not particularly it is a probability density to be more accurate. This p q 1 not is there any way we can calculate it. So, that is the question remember a rate constant my transition state theory rate constant is nothing but some constant that I anyway know I know temperature I know masses and all this into p. So, if I can tell you how to calculate p I can tell you how to calculate rate constant. So, actually molecular dynamics can calculate p that is the point.  But actually there are ways of solving equations that gives me NVT ensemble as well. I am not going into these details, but effectively you can add a thermal bath to your simulation it is at the same way as Brownian dynamics work you think of this system which is open which has been constantly being colliding from other particles at some temperature and that can be simulated there are many many different ways of doing that. So, for now just assume that I can simulate an NV2 ensemble as well. Well pq1 not then it is not that hard to find really pq1 not I can find using md using the following way run md simulation this NVT ensemble. So, you have some energy surface with you I do not even care about this energy surfaces I am trying to ask you what is the probability density of finding the particle at some q1 not well the idea is I define a very small distance here I asked so choose a small delta q. So, in my md simulation the point is how many times ratio of times that q1 was equal to q1 not divided by total simulation time. So, what I am saying is if I run let us say a 1 nanosecond simulation and out of that 1 nanosecond q1 was equal to my system was exploring this region for 1 picosecond then the probability that I am at that region is 1 picosecond divided by 1 nanosecond right or I explore this whole region in 1 nanosecond. And in that 1 nanosecond I was here only for this much time only for 1 picosecond only if I take the ratio I will get the probability density at that point. Well there is one little trick here in an md simulation you have discrete times so q1 equal to q0 mathematically might not happen you might come very close to q1 not but not exactly on top and that is a little just nuance and the way to solve that nuance is that we choose this small dt delta q and so we find this ratio. So, time when q1 is really close to q1 not instead of equal to q1 not so when q1 minus q1 not is less than delta q. So, q1 minus q0 q1 not is very small divided by simulation time and since I have included this delta q I have to divide by delta q because if delta q is large then well you will spend more time there. So, if I instead of choosing this box if I choose this box well of course you are going to spend relatively more time so we divide by delta q. So, this is the prescription using md you can actually find p of q1 not now and once you have p of q1 not you can also calculate p of q1 dagger and remember the transition state rate is proportional to this term multiplied by some root of kT over 2 pi m but we actually have another snag here another problem here. The problem is if the barrier height is quite large if this is much larger than kT then if you run an md simulation the time that you will spend here is extremely small most of the times you will be exploring this region or you are going to explore this region and once in a blue moon you will actually explore this region. So, if I run a 1 nanosecond simulation you might spend 1 femtosecond there so it is not very efficient we have not achieved much here so far we have to just hit this remove this little trouble that we have and there is a very clever way of doing it so I just wanted to show that and this is a very common trick we define a function now just bear with me you see this is going to be very beautiful minus kT ln of p of q1 not just bear with me and let me define this function for those who are familiar with a little bit more thermodynamics and statistical mechanics this is a definition of free energy this is how free energies are defined in stat mech but do not worry if you have not seen this you can take this as a definition all right this will give me p of q1 not to be e to the power of minus w of q1 not divided by kT fine that will give me p of q1 dagger to be e to the power of minus w q1 dagger over kT fine let me also define p of q1 reactant so I am thinking of this energy surface this is q1 dagger and let us say this is q1 r something that is close to a minima fine seems like I am doing some very stupid things I am trying to confuse you or fool you but I promise you I am not or I will take a divide these two so p of q1 dagger equal to p of q1 r into e to the power of minus w of q1 dagger minus w of q1 r over kT I just taken a ratio of these two terms still seems silly I have not achieved anything looks like my point is I will now figure out how to calculate this and this separately p of q1 r is easy q1 r is close to a minima so I can actually use md effectively to calculate p of q1 r why because your simulation is going to spend a lot of time close to the minima so if I run a 1 nanosecond simulation for more than half a nanosecond you will be close to a minima so you can get good statistics you can quickly calculate p of q1 r because trajectory spend more time close to q1 r good but what about that I still have to calculate this w and w is some weird the minus kT ln of whatever so now let us see what we can do this is a real brilliance it was originally given by Eyring and Keck Poliani these people developed this I have to calculate this quantity and Bennett and Chandler eventually made it very concrete in terms of a simulation I am going to write this difference as an integral you are rarely going to see this but I take a simple subtraction of two terms and convert it into a complex integration but it helps okay so you can quickly verify that this equation is true if I take the derivative and take this integral I will simply get w w at q1 dagger minus w of q1 r fine now the point is this del w over del q1 not let us try to calculate that so w was defined earlier like this here and p I had already defined like this if I want to take del w over del q1 not this is nothing but minus kT into 1 over p of q1 not into del p over del q1 not so I take the look at this p q1 not is only here so this is equal to minus kT over p of q1 not and I write all these integrals now and I take the derivative of this term the derivative of this term is e to the power of minus beta v q1 not q2 q3 n into derivative of the exponential so just differentiating by parts nothing fancy minus beta del v over del q1 not divided by the denominator is independent of q1 not so I leave the denominator alone now notice beta is nothing but 1 over kT for a minus here and a minus here becomes plus I have kT into beta divided by p so I take this p and write it again so I get let me write this term first sorry for a little confusing statements q3n into del v over del q1 not divided by you notice once I divide by the p here if I am going to divide by p like this this denominator is going to cancel this integral dq1 to dq3n is exactly written here so this exactly cancels and I am left with and I notice kT into beta is of course 1 beta is 1 over kT ok kT into beta is 1 ok so I am left with this integral so this integral is actually called that is w is called the potential of mean force what you have gotten is this is nothing but average of del v over del q1 not at q1 equal to q1 not so I am taking a thermal average and I am fixing q1 equal to q1 not both in numerator and denominator all right del v over del q1 not is nothing but minus of force so dw over dq1 not is nothing but average thermal force at q1 equal to q1 not so that is why it is called potential of mean force you are taking a mean force and you are converting a potential out of it ok ok so this dw over dq1 not actually can also be computed using an MD simulation ok so the point is in MD simulation there is another trick I can do that I am not covering in this course I can put constraints constraint q1 equal to q1 not use NVT ensemble so if you download any of these popular software like gromax or lamps which can run MD they all will be able to do these tricks for you ok so once that happens you can basically run MD simulation you have constrained q1 equal to q not and that can be any value that can also be the transition state value and once you have done that you can calculate average force so you calculate this derivative with respect to q1 run your simulation and fix q1 not q1 equal to q1 not and just run the simulation and just find this average and that will give you dw over dq1 not ok so now we have a full prescription pq1 dagger we had shown was pq1r into this exponential and we had written this exponential as an integral so this I have written as pq1r into e to the power of minus beta integral from q1r to q1 dagger del w over del q1 not dq1 not ok pq1r I can calculate directly from an MD simulation by using this kind of a trick and I do this integration numerically I start at q1 q1 not equal to q1r I calculate this value I shift q1 to q1r plus some dq I recalculate this so this integral itself now can be calculated numerically at using small grids of q1 so what I am again doing is I am setting q1 equal to q1r here I calculate dw over del q0 then I shift q equal to some q1r plus some del q and I recalculate this function here and I keep on calculating it till q1 dagger and this integration then is nothing but just f into del q sum over f into del q so this integral is nothing but sum over i fi del q and again this dw over del dq I can calculate using a constrained or NVT MD simulation so this was a quick summary today of how we can use an MD simulation to calculate a transition state theory rate so this is useful when partition functions are not easily available when you cannot separate let us say rotation and vibration or if the vibrations are not is harmonic then what do you do when you do this kind of potential of give force thank you very much


Hi, I am Oluwantumise Olatui. I currently work as a senior academic teacher and a data analyst at the Center for Distance Learning of Basinolo University in Leifeng. I got to know about the Deep Brown Consulting with Analysts Goodcom through a LinkedIn post. I clicked on it and then I got myself registered and it was interesting that I was able to pass the entrance test. And here I am. The Goodcom has been such an interesting experience, deep learning, interesting and amazing facilitators and it's been a good experience. My data analysis journey has gone away higher than it has been before the Goodcom. For everyone that wants to take their data analysis journey serious, I want to recommend the data analysis goodcom to you. A 110% you will never know the same way to this Goodcom. So, find a link and click on it and have a look.


Here's Mark Konder sneaking over the top here, bound in with a terrific ball over the top. Mark Konder sneaking through unseen and should have done better. Now Solanke, flag stays down, near side, edge of the box. Solanke onto his left, tries to bend it in the far corner. He's going to keep shooting and he's not at the moment finding the target. Good place, so it's took him back onto his, just couldn't get enough of a swab on him. Heading towards the hour on BBC Radio Solar, nil nil, but here's Jordan Zamora. This is a brilliant run and was inches away. Up to a phobia on half way. Ted Wallace is making a run down the right, but wasn't spotted. Terry's had three in red around him and it's Zamora again. But Zamora's run, mazy through. Let's have a look here as he knocks it to the left. Mark Konder's while Zamora's jumped over the ball below in front of the goalkeeper. And it runs out to the left-hand side of the box with Billing, a little bit of a chip in charge down the left side. That one's a throw in off Savill, who's out of position.


This study found that a recombinant adenovirus AD5-S armacran expressing the armacran BA.1 spike protein was able to generate both systemic and mucosal immune responses when delivered intranasally. These responses included neutralizing antibodies and T cells specific for armacran subvariants, as well as pre-armacran strains. Additionally, the AD5-S armacran vaccine was able to protect mice against armacran challenge. Based on these results, the authors suggest that this recombinant AD5-S armacran vaccine may be a promising candidate for use as a safe, effective, and user-friendly infection and transmission blocking vaccine. This article was authored by Qian Wang, Chen Chen Yang, Li Yin, and others.